Tuesday, June 3, 2008

Change is Good

I think being a programmer means loving the challenge of always having to learn something new. Programming languages evolve, new languages appear, new paradigms emerge, and we as programmers need to learn, grow, and evolve along with them.

Still, even though new languages appear, the old ones never quite seem to go away. There are enough active programs out there written in older languages that still need to be maintained to support a whole fleet of programmers, and it's quite possible to have a long, healthy career without ever writing a program in C#, Java, or any object-oriented language. But for the rest of us, change is a part of our lives and we need to embrace it to survive.

So, what's changing?
Well, languages for one have certainly evolved, even since I started programming. I cut my teeth on computers by programming in BASIC on the Apple IIe and Commodore 64. In college, I learned Pascal and got a much better grasp of procedural programming. Later, I got my first introduction to object-oriented programming in C++ and never looked back. Granted, object-oriented programming existed long before I ever touched a keyboard. Simula was first developed in the 1960s and is considered the first object-oriented language. Smalltalk came along in the late 70s and helped spread the paradigm, but object-oriented programming didn't seem to become popular until the 1990s.

As is often the case in life, there have been detours along the way. My first programming assignments in the real world were writing VBA applications in Microsoft Access (starting back with Access 2.0) and maintaining an accounts-receivable application written in dBase II!

From VBA it was a small jump into Visual Basic and Microsoft's halfhearted attempt at slapping object-oriented features onto the procedural BASIC language. Still, it had classes (even if you couldn't truly inherit from them) so I did what I could to encapsulate my applications' behavior in objects and wired those objects together through events and messages passing. My current employer finally made the plunge into .NET a couple years ago, but there are still a number of VB6 applications that still need support (or migration). I hope to eventually have them all migrated to a more modern platform, but by the time I'm done we may be on .NET 10.0!

As if that's not enough, .NET itself is undergoing a rapid evolution. Between .NET 1.1 and the current .NET 3.5 there have been a number of significant additions to both the VB and C# languages as well as the framework. But more on that next time...