What programming language should I learn this year?
Friday, January 20th, 2006I think it was in the Pragmatic Programmers that said you should learn one new programming language per year. Not because you would use it, but just to keep your brain exercised. Ever since I read that book (in 2004) I think I’ve kept up and almost beat that. Not deliberately, it’s just turned out that way.
- 2004 Ruby As I joined ThoughtWorks everyone was raging about this “new” programming language. Martin Fowler had picked it up (from the Dave and Andy I suspect) and as the Fowlerbots we are everyone needs to fall in line. Wonderful language, reminds me of my Common Lisp days (I never was that much into Smalltalk).
- 2005 C# I started off the year on a .NET project so needless to say I picked up a lot of C#. I never got very passionate about C# as it’s too close to Java to be seriously interesting. It’s got some very odd quirks: properties are actually even more wordy than getters and setters and I think delegates are grossly underpowered compared to anonymous classes. Attributes rock though and it’s good that we’ve adopted them in Java, although in my opinion the C# version of them is a lot cleaner as attributes are just normal classes that can even have behaviour. (I understand the reasoning behind why attributes are the way they are in Java, I just don’t agree with it.) The next version of C# could become very interesting though as it supposedly supports anonymous closures and some other quite neat innovations.
- 2005 JavaScript Yeah, last year was really the year of JavaScript with the whole AJAX (aka “DHTML now works”) craze. As I’m a sucker for anything that is hot needlessly I dug right into JavaScript. To my defense my interest picked up slightly before the moniker as GMail just completely blew my mind. After the Prototype library I’ve reevaluated my previous standpoint on the language (that is “JavaScript sucks”) to “JavaScript is pretty neat but we really need a development environment that doesn’t suck”. (And if someone pulls that one off the step do support Ruby shouldn’t be too hard. I’ve heard Prague has some talent in this area.
) - 2006 (kinda) COBOL Ayup, I’ve kinda sneak started a bit on this one as I’m working with mainframe systems at my current project. COBOL is just terrible though so I’m not going to count this one in.
So what about 2006? What should I learn for this year? Here’s some of my options:
- OCaml Someone said it was going to be the language of the future so maybe I should check it out. I know very little of it except that it’s kinda functional.
- Haskell Just seems wonderfully intellectual. I know Standard ML and I’ve done a lot of functional programming before so shouldn’t be too hard. But I still can’t get my head around monads so it’s going to be a serious exercise to grok all this stuff.
- Objective-C/Cocoa I did a lot of MacOS development on pre-Mac OS X and I’d just love to get up to speed with producing Mac apps with all this sexy eye candy. Cocoa seems to be packed to the brim with interesting technologies like Core Data, Core Image and so on. I’m not sure I still have the discipline to handle manual memory allocation though.
- Io I finally met Ward Cunningham last OOPSLA and although he doesn’t do much coding at the moment he had been playing around with Io. Io seems to be a little bit too similar to languages I already know for it to be a real mental challenge so if I go for Io I probably need to learn something else as well.
Any recommendations?