Wednesday, January 26, 2011

Review: Language Grubbing

Yet another interesting reading from Steve Yegge: Language Grubbing.

He reviewed several programming languages (C, C++, Java, Perl, Python, Ruby, Smalltalk, Lisp family, ML family, Haskell, Erlang). He mentioned pros and cons for each of them, criticized some of them (Perl, Common Lisp). Also told that Lua, Tcl, Prolog, Pascal wouldn't be in his learning "backlog".

I looked at a lot of other languages: JavaScript, Lua, Tcl, Prolog, Eiffel, Pascal, and a bunch of others. None of them really stood out as being "special" like the others I've talked about.

For instance, you can do Prolog-like logic/constraint programming in Lisp or OCaml pretty easily, and they're both broader/better languages than Prolog. Pascal gives you nothing that C doesn't already do better. ... Lua is a cleaned-up Tcl, but neither one of them is as interesting (to me, anyway) as Python for doing embedded languages, unless you really need to strip it down to practically nothing, in which case Lua is useful.

IMHO, reasonable comments.
He mentioned about language groups:
  • Java, C# and C++ (I would add Objective-C and Smalltalk)
  • Haskell, SML, OCaml (I would add F#, Scala)
  • Common Lisp, Emacs Lisp, Scheme (I would add Clojure)
  • Perl, Python, Ruby (I would add PHP)
  • Erlang (I would add Prolog, Oz)
  • Lua, Tcl, JavaScript (I would add Io, Ioke, R, REBOL)
  • C, Pascal

I wrote about this but I'll repeat again. I time wasting if you learn several languages from the same group. E.g. Python and Ruby, or Java and C#.
So, just a pick the "major" language from each group and learn it. E.g.: Java, Haskell, Clojure, Ruby, JavaScript and C.

C language is like Latin for the plain developer. JavaScript is must be know by anyone involved in web-related development.

For myself I formed the next language priority list:
  1. Java
  2. JavaScript
  3. Ruby or Python (I haven't decided yet)
  4. Clojure, Scheme or Common Lisp (I haven't decided yet)
  5. C