>>7
Programming in a language is more than just syntax. Just look at this http://gist.github.com/289467
Exactly.
He who thinks that learning to program in a language is merely learning its grammar is utterly and miserably wrong.
There are maybe 3 distinct levels of "knowing" a language:
1. Knowing the syntax so you can write stack-overflowing factorial, simple DB apps, utilities for your own (likely one-time) use and the like.
2. Knowing most popular idioms and why they are applied so you can read and modify existing code easily.
3. Knowing how your compiler/interpreter works, what it does optimize and what it does not. You can't write a decent module for Emacs without knowing that your Emacs Lisp implementation doesn't do TCO. The more complex the language the more you have to know about compilers for it to write effective and robust code.