What programing languages should one know
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?
Any and every, for the most part
Why isn’t C# in the list ?
My languages-to-learn list includes Ruby and Lisp in the long run and JavaScript in the short run (because I will need it for work soon).
BTW, I really think that one should start from Assembly language. My first programming language was C++ but I really got interested in programming while learning about Microprocessors and Assembly language. Maybe its just me but I like to know what really happens to the code I write, how things really work and how all these complex programs finally do everything they do in a black and white world of 0 and 1. For that, I believe, you need to know Assembly language.
@Pradeep => C#? F#, maybe!
PHP is very important as well
Did not know about your blog!..
AFAIC my list is,
[Joy http://www.latrobe.edu.au/philosophy/phimvt/joy.html%5D
- Based on combinatory calculus rather than L-calculus. You can see how powerful a language can get when you simplify the core.
Self|Smalltalk: – same reason as yours,
TCL Rebol and Scheme : – for the pure joy of syntax
due to the homoiconicity.
Erlang, Haskell – I will add Oz/Mozart to it. (Concepts Techniques and Tools has the same standing as SICP)
Lucid|Lusture – Dataflow.
Occam – because of Pi calculus.- (I have not learnt it yet though).