Friday, June 13, 2008

Change is Good (redux)

The three faces of .NET
Sorry for the long delay in this follow-up post... it's been a busy week. As I was saying last time, being a programmer means having to accept working in a field that's constantly changing: new technologies, new languages, changes to existing languages, etc. Even .NET is changing. The first .NET applications I maintained were written in .NET 1.1. While a perfectly fine language, .NET 2.0 was just coming out. VB.NET 1.1 finally made Visual Basic a "real" object-oriented language with inheritance, polymorphism, and Java-style exceptions. And I was looking forward to spending some time getting to know it.

Then along comes .NET 2.0. .NET 1.1, I barely knew ya! With generics (one of my favorite additions to .NET and Java in years), anonymous delegates (a handy copy from Java, but only for those of you lucky enough to be programming in C#; VB.NET doesn't support them), and a whole slew of other features calling their siren song, I abandoned .NET 1.1 like a jilted bride and never looked back. Unless there's a compelling reason to do otherwise, any new project I've written has been in .NET 2.0. Mostly VB.NET since most people in our IT department are more comfortable with Visual Basic, but there are times when I've used C# instead because it was the better fit.

And along with .NET 2.0 came Visual Studio 2005. Can I stress enough how much better VS2005 is over VS2003? Just being able to edit code while debugging again is a compelling enough reason to upgrade! Trying to work in the VS2003 debugger almost, almost, made me want to switch back to VB6.

And now there's .NET 3.5. Well, .NET 3.0 came along between 2.0 and 3.5, but it got ugraded to 3.5 so fast I almost got whiplash watching it. With the additions of LINQ, lambda expressions (added, along with a bunch of other enhancements such as implicitely typed variables, anonymous types, and extension methods mainly to make LINQ possible), Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), and Windows Workflow Foundation (WF), .NET 3.5 is already starting to make .NET 2.0 look a little stodgy. I'm already sure I'll be switching to .NET 3.5 for future development eventually... the question is just how soon I take the plunge.

Oh, BTW, does anyone know why Windows Workflow Foundation got the short-shrift in the acronym department? The other .NET 3.5 "foundations" were abbreviated as WPF and WCF... why not WWF? Was Microsoft afraid of getting sued by the World Wildlife Fund like the World Wrestling Foundation (now World Wrestling Entertainment) was?

I'd probably switch over to .NET 3.5 right now if it weren't for one thing: my CI build server doesn't support it yet. Oh, I'm sure I can probably get it to work, I just haven't had the opportunity to look into it yet.