2008 Programming Language Plan
I’ve learned a number of programming languages since I began programming 25 years ago. Earlier in my career, my choice of which programming language to learn was largely driven by external factors such as a class or job requirement, or the expectation of job demand in the future.
More recently I’ve enjoyed learning new programming languages both for the joy of learning something new, and for an increase in productivity.
While it’s true that no programming language is a silver bullet, I’ve found that the choice of programming language can provide a dramatic increase in productivity – much more so than many have asserted. The benefit can be direct, by allowing the creation of a solution to a particular problem with less time and effort than it would take using another language, or it can be an indirect by providing new ways to think about a solution.
Do you think language affects how we think?
The Past
In 1982, I spotted a Radio Shack Color Computer in a store window and immediately applied for a Radio Shack credit card which had a credit limit ($500) sufficient to purchase the computer which had 4K of RAM (I later upgraded to 16K) and no external storage (unless you count the ability to hook up a cassette recorder). Contrast the 16K RAM of that early machine with my current 2,097,152K RAM.
That was the beginning of a life long interest in programming.
In the language list below, bold indicates a more significant professional involvement, and the year indicates when I first learned the language. I’ve also likely forgotten a few:
- 1982 – Radio Shack Extended Color BASIC
- 1983 – 6809e Assembler
- 1983 – Pascal
- 1984 – HP 48SX RPL
- 1984 – S/360 Assembler
- 1985 – COBOL
- 1985 – dBase III / Metafile
- 1985 – C
- 1985 – 8088/8086 Assembler
- 1986 – C++
- 1996 – Java
- 1997 – Perl
- 2002 – C#
- 2004 – Python
- 2005 – JavaScript
- 2006 – Ruby
- 2007 – PHP
The Present
Currently, I program primarily in Ruby, followed by JavaScript and the occasional PHP script. Ruby is the most productive programming language I’ve used thus far. The combination of power, pragmatism & pleasure in programming is hard to beat. If it also had performance, it would be a truly great language.
I’ve also begun learning Logo as I teach my daughter how to program. Logo is a great introduction to the Lisp family, so I hope to leverage it as I learn Scheme and Common Lisp later this year.
The Future
After completing the Logo course with my daughter, I plan on moving on to Scheme as I go through Structure and Interpretation of Computer Programs which some have called the greatest computer science text ever written.
After Scheme I plan on learning Common Lisp which has the potential to replace Ruby as my primary programming language.
Beyond Logo/Scheme/Common Lisp, the following languages are of interest:
- Haskell
- Erlang
- Lua
- ML
- OCaml
If you know of candidates for a future programming language, feel free to add it in a comment.
You may notice that Smalltalk is lacking from the lists above. Despite its prominence in programming language history, I currently don’t feel that Smalltalk is sufficiently better/different than Ruby to warrant an investment in learning it.
After focusing on object oriented for twenty years, I have more of an interest in the functional world of programming languages (and multiple dispatch is cool).
Update: I was just over at Hacker News and saw something I’ve seen many times before. In a nutshell, some guy was stating that Paul Graham’s success with ViaWeb had little to do with his choice of programming language (Lisp) and more to do with him just being a good hacker. In other words, he could’ve written it in any language. I’m so glad Paul responded because his response confirms my thoughts on the matter:
What a weird situation. I keep trying to tell people Lisp is great, and they say, no, no, you guys were just really good programmers. But if I’m such a good programmer, why don’t they believe me?
Paul Graham has written a lot on Lisp and is one of the main factors in me becoming interested in Lisp (along with the fact that Ruby pulled a lot of good ideas from it), but the simple quote above communicates volumes IMO.