7 ms·
Definitely give C and Scheme a try. Both are simple, compact languages with strong philosophy and history. I think that most of the languages we have today co
by ndl 16y ago
Definitely give C and Scheme a try. Both are simple, compact languages with strong philosophy and history. I think that most of the languages we have today compromise between C style and Lisp style.
One of my favourite books is called, "Write Great Code: Volume 1: Understanding the Machine". This book gave me a real intuition for why the computer behaves the way it does given a piece of code. If like that kind of stuff, you might also take compiler design to see what happens on the low level.
On the higher level, "Code Complete" is a classic. Once you've started, the "Dive Into" series is pretty good for picking up more languages.
I think the best way to really learn a language is to do something weird with it. I once tried to use Python in as purely functional a style as it would allow. I got far better at C by learning GPGPU and CUDA. I learned the motivations for C++ by implementing vtables in C. Doing odd things that push the limits of a language can reveal deep truths about how the pieces really fit together.
- Female-hacker 16y agoIs there a benefit to learning multiple languages? Or would you recommend trying to truly "master" one of the starting (Java or Python) and then branching out after completely comfortable in one? Should I learn them in a specific order? I just picked up Code Complete at the lib today but will start with "Write Great Code" as you suggested. Thanks!
- lsc 16y agoif you are a manager or business owner (which it sounds like you are? "my programmers") a broad but shallow education may serve you better than one that is deep but narrow. Even if you do decide to focus primarily on one language, I think there is a lot of value to learning several languages. (also, after your second or third, picking up another becomes really easy.) Also +1 on "Code Complete"
- ndl 16y agoI'd advise branching out in the beginning. I learned too much Java in the beginning and wish I'd tried Python earlier. I also think that some languages (especially Lisp) will teach you things about other languages.
- dbingham 16y agoI think doing odd things that push the boundaries of a language is a great way to become a great programmer, but isn't something to try when you are just learning your first language. That's someone you do once you understand where those boundaries are.