There are some programmers who claim they can program in any language, from C to Forth to Haskell, and that a language is just a language. I disagree. Language shapes thought, and that's as true of programming languages as it is of Orwell's "newspeak". If programming languages didn't matter, there wouldn't be so many of them. They're all good at different things.
However, some of them are flexible enough to be useful for lots and lots of things, and since having to change languages is a nuisance, most programmers (including myself) grow to have favourite languages.
Now, I've been around. I've used over 20 different programming languages, some of them just for a class project at university and others for major software development contracts. Over the years, I've learned what I like. Not just like -- love.
You see, I think we form relationships with programming languages.
There are all kinds of relationships -- family relationships, work relationships, romantic relationships. The same is true with programming languages.
My first true love, back in high school, was C. I had used BASIC, of course (who hadn't), and an odd little language called IITRAN, but C was the first language that made me really feel like a programmer. It was great. I was there with her as she grew up and became C++, though we lost touch shortly after that since she had become set in her ways and kept insisting I do her memory management for her. I really thought she would have outgrown that.
I was looking for something really different. I found it -- APL. I was smitten! The affair didn't last long, but I had a wild time. After her came Forth. Again, that initial rush of excitement... enough that I was able to ignore all my friends who said "what are you thinking?". Now I look back on Forth as that crazy girl I dated in high school.
At university, I hung out a lot with Perl. She was fun, but it was like dating an exchange student whose English isn't very good. Around the same time, I got down and dirty with assembly language (Z-80, 6502, 6809...), and I enjoyed being able to do literally anything I want. However, it turned out to be one of those "high maintenance" relationships that left me exhausted and drained.
I've had family relationships too, of course. Pascal, Cobol, Fortran, Watfiv... sort of like distant relatives you occasionally have to spend time with, but you manage to avoid them as much as possible.
I've had a good working relationship with PHP recently. She used to be a bit of a ditz, but she's getting much better organized as she gets older, and is now surprisingly easy to spend time with (Zend helps with that).
More recently, Java was my language of choice. The relationship was strictly platonic -- I would see her at work, but she just wasn't much fun to hang around with after hours. I imagine I'll continue working with her, since she's very competent and easy to work with.
However, all of those languages pale in comparison to Python.
I love Python. It's clean, concise, readable, and it gives me the power to do everything I need. I've looked at Ruby and Lua, and they seem nice enough, but my heart is still with Python. All my system administration tools at the university are written in Python, some of them translated from earlier versions I did in Perl. A lot of my 3D graphics work is done using Python (see the Python-Ogre project to see how that works -- they're doing great stuff over there). Whenever I need to get something done quickly, I know Python will be there for me.
I recently got an Android phone. Aside from the good design, open architecture, Google integration and the thousands of applications available for it, one of the big draws for me was the fact that I could write my own software for it. I downloaded the SDK, picked up a couple of Android programming books, and was about to launch Eclipse when I thought "I wonder if I can just use Python?".
I did a search, and sure enough -- there it was! ASE -- the Android Scripting Environment, with support for multiple languages including.... Python! I was ecstatic! It was like going to a city you'd never visited before and running into your old girlfriend.
In my next post, I'll talk about my first Python application on the Android platform.