I’ve just come across an inspiring blog entry with the thought-provoking title You don’t know that programming language. The authors argues that knowing a programming language is very different from knowing of a programming language.
Personally, I know of C, C++, Java, Python, Ruby, LISP, Scheme and Objective-C. But do I really know them perfectly? The answer is a big NO. For instance:
- I don’t know about setjmp in C.
- Ditto about partial template specialization in C++.
- Ditto about the Classloader in Java.
- Ditto about accumulation loops in Python.
- Ditto about advanced metaprogramming techniques in Ruby.
- Ditto about macros in LISP.
- Ditto about continuations in Scheme.
- Ditto about posing in Objective-C.
But this is not a big problem according to the blogger. What is important instead is to have the right aptitudes to learn those things if ever the need arises. He mentions that one only has to master the essentials like algorithms, design patterns, etc. and the rest will follow (if needed.)
I believe he is right.