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.
-
Javascript. The only way to create a rich UI in current web browsers.
-
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.
C, Ruby and Javascript are on the original eweek list. As for the other seven on there:
Maybe
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.
No
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.
Agree? Disagree? Think I’m a lunatic? Make a comment!