On the eve of my birthday, I realize that for those of us who program, we tend to get excited when we talk about the programming languages we’ve used over the course of our lives. These languages not only make us laugh at times, but they also give us cause to celebrate and make us nostalgic. We can even measure our own existence by the languages we’ve used—like the growth rings of a tree. I think it’s possible to approximate the age of the coder in question by asking them the first language they learned—and the answer can sometimes give clue to the age of the inquisitor.
My own personal journey started with Apple Basic, and then Apple Logo, followed by Atari Basic, Atari Logo, and then my first “real” language: Pascal. Soon to follow were Modula-2, 68000 Assembly, and DEC VAX-11 Assembly (thanks RIT). Next was C. C was a game changer for me. It was the first time I felt that I had the power of assembly but the convenience of a higher level language. Its terseness was seductive, although punishing at times. I still remember helping various classmates understand the concept of pointers. I guess C forever earned a place in my heart because soon after learning it, I had to write Cobol.
But life continues. C++ was breathing heavily on my neck and was a force to be reckoned with. OOP was not a concept taught formally at the time and the new powerful modes of expression took time to understand and then appreciate—much like wine, the air needs to let it breathe for a while for the full complexity and richness to develop. It was inevitable that Java would be along the path to maturity, but I fought it like an aging hippy fighting the establishment.
Even when I thought I had all the possible languages I would need, I learnt one more: Scala. I appreciated what Scala did for me—it removed the disdain I had for the JVM and made me feel oddly comfortable with a syntax that seems part Java and part C++.
I’ve probably forgotten a few languages—I know one or two are even languages per-se (some horrible report generation language from Cognos) and various scripting languages (Matlab, LUA, etc)—nowadays probably better known as DSLs. What will be in the next few years for me? C#? Objective-C? Go? R? Lisp?
I hope you, too, take a moment to think about the languages you’ve learned along the way. I hope you can laugh at some of them, too, just as I have.