My language zoo

» A short overview of the programming languages I am currently using.

Just for the hell of it, an overview of the programming language I am currently using, or have used fairly recently. (Yes, some big players are missing here... and... I'm kinda glad.)

Python: The language I use most, and the one I am (currently) the most comfortable with. I use it for work (almost 100% of the time; it's been ages ago since I last wrote something in Delphi) and for most of my personal projects. Has lost much of its luster since I started using it around 1996-97. Still, this is the language I compare all other languages against, and my language of choice for many things. In fact, I only stray from it when I'm looking for a different point of view, or when I'm forced to. :-)

Delphi: [actually: ObjectPascal] I used to wrangle this for a living, and I still could, but 5 years ago I was hired as a Python programmer... the rest, as they say, is history. So is much (though not all) of my Delphi knowledge. As it is, I rarely use this anymore, neither for work nor personal stuff. While the GUI builders is fun and powerful, hacking a statically typed language is no longer my cup of tea (although see below).

OCaml: I don't use this a lot, but it's interesting, being a strongly, statically typed functional language. A few months ago I wrote a toy language interpreter in it (maybe I'll write about that someday, there should be some interesting things to say about OCaml and the language itself). Has some weird quirks, and it takes a while, IMHO, before the language stops getting in your way and starts becoming helpful. Has some cool features too, like pattern matching.

Io: The language I am currently the most interested in. It has a lot of goodies... prototype-based OO, flexible syntax, coroutines... Unfortunately, it isn't in very good shape; documentation is lacking, and the language is still prone to changes that break existing code. As a pet peeve, I don't like the way operators are handled. All this makes me a bit reluctant to try and write non-trivial programs in it. Still, worthy of attention.

Lisp [as in, the Lisp family of languages]: I've used various dialects and implementations over time... Common Lisp, DrScheme, Scheme-48, and I now have my eye on newLisp. None of these have been used for anything serious, really. Scheme seems cleaner, but CL seems more of a language that is used for actual programming, rather than demonstrating computer science concepts.

Ruby: Doesn't see a lot of play in between Python and Io. I tinkered with Rails for a while, and will probably do so again.

Javascript: Is becoming increasingly interesting now that it's possible to write Javascript that works in all major browsers, on all major platforms. (Although there are still issues...) This website uses a tiny bit of it. I will probably use it again for an effect or two in future websites.

Erlang: Strange but interesting (although those words pretty much mean the same thing to me ;-). I need to find a decent Mac implementation. [Update: Bill Mill writes that he successfully compiled Erlang from source, without much hassle. I tried it as well today, and whaddya know, it works (although the build takes forever to finish). I haven't really tested it though, so I don't know if there is any hidden breakage. We'll see.]

C: Almost forgot this one. I don't actually write software in C, but I run across it every now and then when I want to (or have to) hack someone else's code. (Like, for example, when compiling the Astrolog source.) I am comfortable enough with C to edit existing code, but rarely ever use it to write something new. Unsurprisingly, I like its low-levelness and power, but loathe pointer wrangling and the lack of real strings, to name a few things.

And in the waiting room we find:

Prolog: Again, I will need to find a decent implementation that works on the Mac. I haven't looked very hard yet, though, but logic languages are very interesting. [Update: GNU Prolog compiles cleanly on OS X.]

6510 assembly: When I decide to get myself a Commodore 16 or Plus/4 again. :-)