Today I came across the article What Programming Languages Should You Know? by David Chisnall. David’s list of essential programming languages include C, Smalltalk, Lisp, Erlang, Haskell and Prolog.
Of these, I know only Lisp (Scheme, to be precise). Eric S. Raymond’s famous quote (David also quotes it):
Lisp is worth learning for 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.
influenced me to try the language. Reading SICP and EoPL was useful. I also worked through most parts of PCL also.
I did some C during college, but I never learned the language well enough (I know enough to know that I don’t know it well enough)
. Tom Drake, who works as a senior architect with Tavant, once advised me that learning C is important whatever language you actually work with. Tom should know – he has worked with lots of different languages and systems in his career. I haven’t followed that advise so far, largely because you don’t come across articles saying “How C cured cancer!” on reddit.
One these days, I should go learn some C, I guess.
I am trying to learn Haskell – I have been following tutorials on the web, and have been making some progress. A friend who is returning from US is bringing a copy of Programming in Haskell, and I should get it by next month. I had worked through a draft copy of the book, and I found it lot more approachable than other tutorials I found – so I am looking forward to reading the actual book. Erlang also looks to be an interesting language, and I am curious to understand what all the cool kids are talking about its concurrency primitives. I haven’t read much about Smalltalk and Prolog (except some videos I watched about the Seaside web framework in Smalltalk).
It amuses me to note that both programing languages I have used extensively in my professional career – Java and JavaScript – do not make the list. But things I have learned in other languages had helped me understand these two languages better. Knowing Lisp, in particular, has helped me understand JavaScript. I have briefly dabbled with Ruby, Python and Groovy too. I have to agree with David on:
The more languages you learn, the easier it is to pick up a new one. Eventually, you start thinking of every new language as just a set of modifications to a language you know already.
So, what are the languages have you learned or are planning to learn?