So, JB told me I had to do the whole languages thing, even though no-one reads my blog because I don't ever post anything, so I'm going to! (I've gotten a bit carried away here. Some of these I haven't really written whole projects in. At least one line of code, definitely. But I can be self-indulgent, because no-one's looking. See above.)
- Some form of BASIC - I'm not sure which one it was. The one that came with my grandfather's actual IBM PC when we got it when he died.
- Logo, in an elective computer class - we didn't really explore it's LISPy qualities, unfortunately.
- Then QBasic in Computer Studies at high school.
- Then Pascal in Computer Science at a different high school (they had a much flasher computer faculty that had two streams - Computer Science people got to do all the fun stuff).
- A tiny bit of HyperCard (well, MVP Fuzzyman's telling me off because that's not a language, so I guess I mean HyperTalk), but not so much that I can remember it.
- Modula-2 in COSC-121. I liked Modula-2. Looking back on it, it seems like a much nicer language at the C level than C is.
- Haskell (in the form of HUGS) in COSC-122. Haskell is brilliant! I think I'm finally (13 years later) getting a bit of a grip on monads, although I still have to have a lie down when it comes to {Arrows, Comonads, Monad Transformers...}
- C in second year. Don't quite know what to say about C. I trashed memory walking backwards through an array in a loop using an unsigned index variable, like everyone has. I think I could probably do it again if I really needed to.
- Simula 67 - OO at last! I went back and had a look at Simula to see what it was all about. I remember being quite mystified by Call-By-Name semantics. Actually, reading it now it still seems very very weird.
- SPARC assembler - we had to do a few conversion routines. Floating point format is hard! Let's go shopping.
- TCL - used this to build the GUI for our end of year project.
- Java! Yuck! (I think we were trying out different thread-scheduling algorithms?)
- We did one project where we had to take an interpreter for a simple language (that the lecturer called PL-0) and extend the language. So I guess I know my variant, which had parameter passing and arrays.
- SQL - IngreSQL to start with. I still love SQL. I guess I like using sets in Python, too.
- Then I got a job, which was almost all PL/SQL. Which is a weird mix of Modula-2/Pascal and SQL. In retrospect, it's alright. I remember the compiler being fairly squirrely about the syntax, though.
- I got bored with PL/SQL. I really wanted to do something else, so I played around with VB (VB5, I think). Which I regret.
- Even worse, then I started experimenting with Perl!
- Luckily, I was talking to a (much cleverer) friend, and he said "Don't bother with Perl - you should look at Python. It uses indentation for block structure!" Which I thought was a brilliant idea. (I don't understand why people react so badly when they hear about it. Maybe they've seen it in Fortran first? I guess I saw it in Haskell first, so I was positively disposed theretowards.) So! Python! Still doing it now!
- I played around with WinForth - I love the syntax and bare-bones-ness, although I've never used it enough to really get the full building-your-whole-skyscraper-from-the-foundations-up experience.
- VBScript (in the form of ASP), which was like a much crappier version of Python. I tried to convince my workmates to use Python in ASP (via win32all). That didn't work.
- Squeak. I love Smalltalk, although learning it after Python meant it wasn't the amazing revelation it probably should've been.
- Javascript. I didn't get Javascript for a long time - that whole prototype-based OO thing wasn't clear to me at all (until I found a really good article explaining it), and spotty browser support just made it so painful. Now, it's probably my third-favourite dynamically typed language! I'm all ready to jump when it takes over.
- Erlang. This must have been about 6 years ago. I don't know how I started reading about Erlang, but it seems like it's been a very slow, quiet build-up, and now suddenly it's the other next big thing. Hopefully Reia or the Lispy one on the Erlang VM take off - I really like the concurrency ideas, but the syntax is a bit iffy. I'm all about immutability, though.
- VB.NET. Fairly yuck. Better than VB6. At least it has reasonable inheritance.
- C#. Like a much nicer Java. I still use C# occasionally now, and I guess, with LINQ and lambdas and type-inference and such, it could be a tolerable language. Still not quite Python.
- Some Common Lisp, mostly from reading along with Practical Common Lisp.
- Some Scheme, from following along with SICP lecture notes. Those long train rides to work just flew by!
- Oz - it turns out that CTM is quite a heavy book for bedtime reading. I keep falling asleep and then waking up because I can't breathe. Lucky really. (Unification FTW.)
- IronPython. Not quite another language, I guess.
- Factor? Still exploring at the moment. It's very dense (although I guess nowhere as bad as APL), and very powerful. I still get confused by stack-shuffling, and then when I look at code experts write in it, there's almost none! So I'm nowhere near competence, but I'm used to that.
- I've started using Emacs, so I could hardly avoid Emacs Lisp.
Whew. That was quite fun! Maybe I should vomit up more blog entries.
I've emboldened ones that I still use fairly frequently.