I realized today that since 1998 I’ve learned at least one new programming language every year. I consider myself as “knowing” a language if either of the following is true:
- I used it to complete a non-trivial project
- I spent the majority of my day in it for over a year
- Means I have to have actually gotten into the guts of it and made it work for me. For example, while I had toyed with Python several times while in grad school, it wasn’t until I integrated it into Angel that that I could really say I knew it, thus it gets a date of 2008.
- allows me to include languages I learned for games that haven’t shipped. :-)
- 1998: TI-BASIC
- 1999: Visual Basic
- 2000: AppleScript
- 2001: C and C++
- 2002: x86 Assembly
- 2003: Objective-C and PHP
- 2004: Cg
- 2005: ActionScript, Java, JavaScript, and C#
- 2006: Unreal Kismet (yeah, I’ll call it a programming language)
- 2007: Ruby
- 2008: Python
- 2009: Whatever we call the game scripting language we use at Bethesda
So now the question is… what should I learn this year? Everything else has been inspired by a project (either personal or professional), and I don’t have anything on the horizon that would necessitate learning something new.
So I ask you, internet, what is worth learning? What new paradigm should I consider? What will expand my mind and my programming chops?
-
Oh man. I remember the TI-Basic stuff. Well, not remember. Just remember using it.
I’d almost say go back to one of the older ones (C, C++, PHP, Obj-C) and learn it really well. Unless you use them from day to day still. In which case, I don’t know.
-
As I said via Twitter, I’m still up for running through Structure and Interpretation of Computer Programs with you, and learning some scheme along the way. I’ve also been interested in OCaml (and by association, F#). In my mind, I’m also interested in evaluating Erlang as a replacement for C++ in certain MMORPG server processes, but in actuality, that ain’t happenin’ here.
I heartily endorse watching this talk by Rob Pike (http://video.google.com/videoplay?docid=810232012617965344#) and then picking up Stackless Python. The threadlet-and-channel model for doing Hoare’s Communicating Sequential Processes is, I think, the programming abstraction of the future. I’m still skeptical of some basic things about Google’s Go, though, so I’ll stick to Stackless. I’m honestly still trying to get the knack of thinking that way, but I think it can be incredibly powerful.
-
COBOL! It’s the wave of the future!
Actually I have absolutely no idea, but I do enjoy reading about programming and such so keep me updated, especially if you come up with any fun projects to do with whatever you decide on.