I must confess, gentle reader, that while I've always insisted that the language-agnostic world of .NET welcomes all comers with open arms, in my heart of hearts I have sometimes been a closet C# snob. I come from the angly-bracketed realm of Java and C++, and to me, C# just looks... natural;
Over the past two days I've had the opportunity to reconsider that view as members of the VB.NET product team demoed in Belfast and Dublin.
In his keynote yesterday morning, VB Program Manager Paul Yuknewicz responded to a question about run-time speed by explaining that the VB.NET and C# compilers (and indeed all .NET language compilers) emit the same IL bytecode, and so, for the vast majority of practical purposes, run-time speed shouldn't be the deciding factor for a .NET language choice.
But there's another angle here: the development scenarios for which a language and its tools are optimized.
C#, he was quick to note, targets a sweet spot for developers who seek more power and control over the hardware (me), and so it's no wonder (me) that if you want your .NET code to sit a little closer to the metal (me), then that language may offer a bit more flexibility.
But he then demoed some impressive VB.NET features that improve productivity for developers building business applications. Things like the My namespace, which acts like a dynamic index into both the .NET framework and your application. And Visual Studio's Background Compiler, which, with its VB compiler warnings, helps you catch and correct gotchas before you compile. And other IDE features like Autocorrect, that help those with thick fingers correct their mistakes as they go.
All of it emphasized how the VB.NET product team are making good on their aspiration: to evolve and differentiate VB.NET by making it the most productive language and environment (even in the .NET world) for business application development.
I even saw things I didn't know existed, like this free (and slick!) refactoring tool for VB.NET code in Visual Studio 2005. (Aside: I would love to hear of your favourite free productivity add-ins for Visual Studio, in any language!)
So -- fearful that I'm about to spark a religious debate, and conscious of oversimplifying -- I just want to say that I've been very impressed by what I've seen of VB.NET these past two days. I don't think you'll see me writing any elaborate apps in VB.NET any time soon. If you (or those in your workplace) have development skills in C++ or Java, then C# is probably going to look more natural, and may be your choice for productivity like it is for me. But if you have dev skills in VB6, then VB.NET will immediately be closer to home. And in either case, with .NET's many options for interop, having the two camps work together is far from a hassle.
My thanks Paul Yuknewicz and Todd Apley from the VB.NET product team, Alexander Holy from Microsoft EMEA, and Dominic Baier from DevelopMentor, for taking their time to visit, and especially (most sincerely) for shifting the perceptions of this died_in_the_wool C# developer!
(p.s. I will post links to the slides and demo material on my blog as soon as I can!!)