eweek.com’s article on ten programming languages you should learn right now is the most ill-informed pieces I’ve read in a while. Here’s my (hopefully better) attempt.
Five Programming Languages
Scheme. If you come from a “curly braces” background you should learn a functional language. As Eric Raymond says about the very similar Lisp:
LISP is worth learning for a different reason — the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot.
I prefer Scheme because it is purer (no need for funcall).
Erlang. Another functional language. Concurrency done right. In the multiprocessor future this could be very important indeed.
Ruby. A conscious attempt to make a programming language that is a joy to use. String handling from Perl, OO from Smalltalk, closures from Lisp/Scheme.
C. For when things must be fast. Use with Ruby, Python and many other languages when you need to optimize a section of your code for performance.
PHP - Quick and dirty. Yes, it’s quick, but it’s dirty.
Python - Dynamic, fairly intuitive, list comprehensions are great. But explicit self? No ternary if? Significant whitespace? The OO feels tagged on.
VB.NET - Hidebound, moribund offering from equally hidebound and moribund company. Plus it is inferior to it’s sibling C# in every conceivable way.
C# - Java with a little extra syntactic sugar. Not worth paying the Microsoft price for.
Perl - Somewhat deserved reputation as “write only”. Other languages (Ruby) have absorbed the lessons of perl (mainly - have brilliant regex support) and moved on. Once important, but less so every day.
Java - Bruce Tate wrote “Bitter Java” (2002), then he wrote, “Better, Faster, Lighter Java” (2004), then he wrote, “Beyond Java” (2005). You get my point.