Hacker News new | ask | show | jobs
by AlexErrant 917 days ago
> the book "The programmer's brain" says that spaced repetition is the best way to learn the syntax, idioms, caveats of a programming language

Unfortunately, hard disagree. The best way to learn a Lisp is to write Lisp. You can look at code all you want, but you won't get used to the syntax/parens until you start writing it. Same applies to non-Lisps.

> I think a lot of people program in Python but programming in Python is not their main occupation. These people struggle to accumulate knowledge, because they may encounter concepts or APIs only from time to time, and by that time they already forgot.

This is a great point. Static typing is great for API discovery, which Python sadly lacks. However, I wonder how much LLMs are eating this "low-code" market. Also, if Python is non-critical to their jobs, I suspect that they won't feel motivated to explicitly study Python over the long term. Doing spaced repetition is famously hard, and non-motivated people will likely give up and just do "JIT learning".

> Also, I want to cover some "unorthodox" topics for which spaced repetition may be specially well suited. For example, I'm building a deck called "A tour of the standard library", where you can learn all the modules that are available, just so you know what is out there, without going deep into it.

FWIW I'm learning Rust, and to "learn what's out there" I've just been binging random Rust videos on Youtube at 2x over lunch. Granted I'm an experienced dev and I have an intuition as to what "should" be out there, so perhaps this story is of limited use.

2 comments

Python is great for API discovery. `dir()` and `help()` are builtins. Use the REPL.
Sadly, hard disagree. I programmed Clojure professionally for ~2 years, and its REPL is significantly better than Python's. Despite that, nothing compares to "dot" autocomplete and being certain that a method can take a certain object type. Like, I could type dir/help and then the token in question then parse the output with my eyes, remove the help/dir and type in what I wanted... or I can hit dot and scroll the available methods/properties. It's not even close.
You may be interested in rust.cards, which I'm also working on :D
LOL I'll check it out.