Live data from Hacker News

Memorizing a programming language using spaced repetition software (2013)

sivers.org

31–40 of 44 posts

Re: Memorizing a programming language using spaced repetition software (2013)

#31
post #18

Earlier quoted context omitted.

> SRS shines when it comes to memorizing decontextualized, atomic information (e.g. countries and capitals, the periodic table of elements or writing Japanese kanji), but not for learning a language in general. I have acquired >3,000 words from daily anki usage in Korean. Not only is it possible, it's the only way for me because inputting words into anki (or any SRS system) takes so long. I interleave two decks: a pr…

3,000 words is barely a start! You need much more vocabulary than that to get to a very functional level. You absolutely don't need Anki to learn that many words (which your comment originally claimed before you edited it). FWIW, I still couldn't comfortably read Chinese when I had 3,000 characters and closer to 25,000 words under my belt. That said, I think using Anki as a scaffold for the first few thousand words i…

> You absolutely don't need Anki to learn that many.

No, but anki makes retaining them much easier. There are a great many words that I've learned that come up infrequently enough that it's easy to start forgetting them. In fact, a great many of the more niche words that I learn through tv shows, etc, are easy to forget unless I'm retaining them via anki.

> After even 1k, I'd advise getting graded readers

Yes, but there aren't really any for Korean. Also 1k is really nothing at all, almost all content at that point will be excruciating to read.

I am not arguing to use anki -alone-. Obviously one needs to be reading material as well, but that's tertiary to this discussion on anki and its usecases.

> This is stuff you don't pick up from flashcards,

No, this is stuff not picked up from poorly made flashcards. I.e., most flashcards. Mine include tidbits like this when applicable. Each of my cards has several fields like hanja/grammar type/notes that I fill out, hence it taking a while to make them.

Re: Memorizing a programming language using spaced repetition software (2013)

#32
post #29

While Anki is great, I don’t see much value in using it for programming. I personally use it for equations and find it works very well. While remembering an equation is super useful, remembering APIs and stuff just isn’t. Intellisense solves the problem and even if you don’t have access to it (Python cough cough), it’s not that big a deal to just look up the documentation. Looking up the “documentation” (hah!) for eq…

> it’s not that big a deal to just look up the documentation.

Imagine you don't know the language and are trying review a few thousand lines of code.

Well, you wouldn't be doing that if you don't know the language, right? But that's just it; maybe spaced repetition can be a good way to get there, especially if you're already an experienced programmer.

Re: Memorizing a programming language using spaced repetition software (2013)

#33

  var a = new Array('5');
  // what is a?

  var a = 5 + '5';
  // what is a?
It's sad that many languages force people to memorize trivial stuff like this.

This is one of the things that really impressed me about Smalltalk/Pharo syntax when I started learning it recently. The language itself encourages you to name things in a way that labels all the parameters. E.g. you can have a constructor like this:

  OrderedCollection ofSize: 5.
And method names are composed of parameter names:

  array insert: 11 before: 2.
Instead of

  array.insertBefore(11, 12);

Re: Memorizing a programming language using spaced repetition software (2013)

#34
post #9

If you're memorizing very specific information that's going to be presented to you in exactly the way you've memorized it, this is great. I am a little skeptical, however, about how well the specific information you've memorized generalizes to knowledge of the principles behind what you've memorized. Taking one example from the article, if the front of the flashcard is: var a = 5 + '5'; // what is a? And the back is:…

If you're memorizing very specific information that's going to be presented to you in exactly the way you've memorized it, this is great. I am a little skeptical, however, about how well the specific information you've memorized generalizes to knowledge of the principles behind what you've memorized. Difficulty in generalizing things is a common problem from learning. Unfortunately, from what I know from research, th…

No, the best way is to read a proper explanation and understand the concept and the apply what you learnt writing some code in a different context. If you are trying to understand a programming language just by reverse engineering it and memorising the keywords in Anki then probably is not going to work.

Re: Memorizing a programming language using spaced repetition software (2013)

#35

I just started a new job and have been learning Spark + Scala with Anki. Whenever I need to Google something, I make sure to make a flash card for it. Its working well so far.

Probably you are memorising it rather than learning it unless I misunderstood what you are saying...

Re: Memorizing a programming language using spaced repetition software (2013)

#36
post #9

Earlier quoted context omitted.

If you're memorizing very specific information that's going to be presented to you in exactly the way you've memorized it, this is great. I am a little skeptical, however, about how well the specific information you've memorized generalizes to knowledge of the principles behind what you've memorized. Difficulty in generalizing things is a common problem from learning. Unfortunately, from what I know from research, th…

No, the best way is to read a proper explanation and understand the concept and the apply what you learnt writing some code in a different context. If you are trying to understand a programming language just by reverse engineering it and memorising the keywords in Anki then probably is not going to work.

No, the best way is to read a proper explanation and understand the concept and the apply what you learnt writing some code in a different context. If you are trying to understand a programming language just by reverse engineering it and memorising the keywords in Anki then probably is not going to work.

What make this difference from generating and creating your own examples, as I suggested?

As I said, this is a common problem in learning, not just programming.

Conceptual explanation is not enough, and neither is a single example. Otherwise, you will get surface level misunderstanding instead of deeper understanding.

Re: Memorizing a programming language using spaced repetition software (2013)

#37
If anyone's interested - I've written a guide to Anki and spaced repetition. I've used it for about 5-6 years and my deck is about 12,000+ cards. Much of it is based in software engineering.

https://senrigan.io/blog/everything-i-know-strategies-tips-a...

Re: Memorizing a programming language using spaced repetition software (2013)

#38
post #24
post #14

What's the point? Programming language rigmarole is well on its way to being automated. It's better to memorize algorithms. Make flashcards of Knuth, not stuff that IDEs autocomplete for you anyway.

I just returned to Java after 3 years away, IntelliJ IDEA syntax highlighting, auto-completion, code-formatting, and "code analysis/inspection with suggested improvements" made it easy.

It's only going to get better. There's just so much code out there to learn from. PL grammar is a lot more machine-readable than natural language.

https://ai.facebook.com/blog/aroma-ml-for-code-recommendatio...

https://visualstudio.microsoft.com/services/intellicode/

Re: Memorizing a programming language using spaced repetition software (2013)

#39
post #7
post #3

Is there a benefit to trying to actively memorize the syntax/semantics of a language rather than just looking it up when you need to know something, and then passively memorizing the parts you use often? Also a huge component of memory is contextual cues, which is why people find it so hard to code on a whiteboard vs. being at their normal computer/keyboard.

Is there a benefit to trying to actively memorize the syntax/semantics of a language rather than just looking it up when you need to know something, and then passively memorizing the parts you use often? This is akin to looking up words you don't know in a foreign language and hoping through repeated exposure that you learn the right words to use. It's very slow and frustrating. It is much more efficient to just know…

You misunderstood the point of my question. I don't think it's worth memorizing any of those things when you could be learning deeper concepts than names of standard library functions or something.

Re: Memorizing a programming language using spaced repetition software (2013)

#40
post #14

What's the point? Programming language rigmarole is well on its way to being automated. It's better to memorize algorithms. Make flashcards of Knuth, not stuff that IDEs autocomplete for you anyway.

Did you forget the sarcasm tag? Algorithms and code in books will be the first things to be automated... you have to learn how to create the algorithm that you need, not to memorise algorithms...

Yes, the point is to create your own algorithms. It's hard to create something you don't know anything about or know how other people created them before you. Imagine this in another field, say an engineer who doesn't want to study how other bridges were designed because those aren't the bridges she's going to make. Eventually algorithm and data structure design will be automated and everyone will be programming in declarative English, but that's a lot more general intelligence than predicting your next line of code is a foreach. That's why I say learn computer science not programming languages because machines already speak programming languages.
Post reply on HN