What Programming Languages Should You Know?
informit.com
informit.com
1. C
2. Python, perl, or ruby
3. Matlab or R
4. Common Lisp or Scheme
5. A fifth sufficiently different language, but with worthy concepts: Erlang, Haskell, O'caml, Prolog, Lua, Javascript, etc...
The choices in the first 4 don't matter too terribly much and the selection of a single language from #5 would largely be based on your own personal interests.
I wouldn't say you need to learn one of these, but I wouldn't say you need to know Matlab, or Lisp/Scheme either. Just that learning different programming styles will make you a better programmer. Prolog and Erlang reputedly have this property as well, but they're still in my to-learn queue, so I can't speak first hand about them.
Also, unless you never plan on going near the web, JavaScript is pretty much a necessity these days.
He explicitly states: Note that I’m not necessarily advocating using any of these languages for a real project, but I believe that learning them will make you a better programmer in whatever language you do use.
I do think the original list was better, since Erlang, Haskell, and Prolog shouldn't be lumped together in the "different" category, Javascript could be considered part of the Python/Ruby/Perl class, and I question the usefulness of learning MATLAB unless you actually need it.
I think its completely excessive for the average programmer to know Haskell AND Erlang AND Prolog AND Smalltalk. Do you think people should know all of those? I see advantages to learning each, but I think my list would take the average person a bit further.
List 1: Java, Python, Lua, and C, or C++
List 2: Java, Perl, Ruby, C or C++.
If you know well 3 out of 5 of those languages from each list, it will be easy to find employment anywhere.
Other languages to know for fun: Ada, Lisp, Haskell, Smalltalk....
Note that I’m not necessarily advocating using any of these languages for a real project, but I believe that learning them will make you a better programmer in whatever language you do use.
This is not meant to be a list of practical languages everyone should be writing applications in, or pad their resumes with.
That said, I really appreciate the benetfits of knowing at least how to read C, lisp, erlang and haskell. :P
And frankly I don't care to learn any of them. I have never been turned down for a job because I didn't have Lisp skills.
In fact, I think I can count on my fingers the number of jobs that have required any of them...
What happened was that all the programs were being written in C, so the chip makers optimized their chips for C-generated assembly language. So now if you want to write fast assembly language, you need to write it more like a C compiler does -- which means in many cases that you might as well write it in C.