3 ms·
I broadly agree with you here. I believe what you're saying is that once you're economically productive in your first language, you get the most bang out of yo
by KMag 7y ago
I broadly agree with you here. I believe what you're saying is that once you're economically productive in your first language, you get the most bang out of your second language by picking a second language that encourages concepts and idioms not encouraged by your first language. In this way, your second language is really there to improve the way you think about your first language.
However, I would word (2) a bit differently, otherwise tons of people will be learning INTERCAL and BrainFuck. For a second language, consider only languages that are at least popular enough to have good learning resources. (This is a pretty low bar... there are probably hundreds of such languages.) Look at which concepts and idioms are encouraged by each language, ignore those concepts and idioms encouraged by your first language, and try and score the usefulness of the remaining concepts and idioms. Do a bit of research reading up on the pros/cons of the idioms and concepts to help you score them.
The goal here is to pick up concepts and idioms by learning your second language, which will then diversify the way you think about your first language.
I would absolutely look at the machine code generated by one of your languages (or bytecode, if none of your languages compile to native code or have a JIT that can dump out assembly) to understand what's going on, but I wouldn't suggest learning to write assembler as one of your two first languages. Most of the usefulness of assembler can be gained from learning to read it.