As some of you know, I’m starting a one year sabbatical in September. There’s a lot to say about that, but for today, I’m going to limit myself to one of the plans.
I’d like to get to a point that I can teach CMPT 383 (Comparative Programming Languages). One of the things I’d like to do for that is expand my own breadth of experience with programming languages. I have worked with a bunch, but there are a lot more out there, and most programmers don’t give them enough thought. My goal for the year is to learn one language per month.
Of course, I wouldn’t have time to do a huge project in each. I’d like to get to the point that I could write some small (but functional) programs and know “the way” of the language. Here are some of the languages that come immediately to mind:
- Haskell: I have used Miranda (which is similar), and took a functional programming course at SFU that used Haskell, but that was all a long time ago. I’d like to go through for a refresher.
- Prolog: Again, I used Prolog back in the 383-like course I took in my undergrad, but it has been a long time.
- OCaml: People who like OCaml really like it. That’s the kind of thinking that brought me to Python a few years ago, so it might be worth a look.
- Lua: A lightweight scripting language that also seems to have some rabid fans.
- Lisp: I find it a little odd that I’ve gotten this far in life and never written any Lisp. Time to right that wrong.
- C#: The only language on the list that’s widely considered “practical”. I know it’s kind of just MS Java, but there might be something good in there. Plus, the Mono implementation seems to be working now, so I wouldn’t have to use Windows to do it.
- Matlab or Octave: I like the array-based thing, and want to try some real stuff with it.
- Erlang: You could say that Erlang is Just Another Functional Language, but it was developed by Ericsson for real practical stuff. That distinguishes it as interesting.
- D: People like it, and it comes after C, right? That’s some good marketing.
- Some esoteric programming language. These are mostly conceived as jokes, but that doesn’t mean there isn’t something to learn from them.
That’s ten without even thinking too hard. There’s a really great list of programming languages by category in Wikipedia.
I think the way to go about this is to create something like an informal Programming Language Study Group. That way, there would be other people hounding me to keep going (and vice versa). We could have a few little exercises for each language, maybe.
Who’s with me?
February 25th, 2008 at 2:14 pm
Yay languages! Right now I’m working on getting deep enough into Python that I’m naturally writing idiomatic Python rather than C-in-Python.
All of these languages should be worth learning, but let me know what you think of Erlang. Not having string handling would make it too hard for me to spend much time with. I’m string-obsessed.
What I’m *really* interested in is D. I like writing the kind of apps that are usually done in C++, but I don’t like writing C++.
February 25th, 2008 at 2:16 pm
As a side note, sometimes your math question spam filter triggers even when you do the math right (I know, I checked the contents of my POST with FireBug!)
June 5th, 2008 at 10:49 am
[…] opportunity to have a big block of free time. Nobody in the industry has the opportunity to just take 6 months off and do something interesting, do they? That’s […]
July 29th, 2008 at 12:06 am
I’m going to add Pike to the list as well: http://en.wikipedia.org/wiki/Pike_(programming_language)
August 20th, 2008 at 7:10 pm
I’d consider Smalltalk, the Source of OO. Or whatever.
My language to-do is Lisp, Python, C (including Cuda), Haskell, Smalltalk, ECMAScript. Not necessarily in that order.
Lua’s just Python, more or less. D sounds boring. Screw C#… it’s probably got some good stuff, because it’s Java-with-less-history (i.e. less cruft), but so what? Everything else on your list is paradigmatic!
August 23rd, 2008 at 9:53 am
[…] To get to the “more about programming languages” stuff (and because it will be interesting), I intend to learn a programming language a month. […]