As you may remember, last year I moved from VB.NET to C#. This year, it looks like I will be doing a lot of work in VB.NET. Some of the people I told this to acted like I said I was forsaking my family and joining a wacky cult in Nepal or something. If it was coming from Java or Ruby or PHP folks, I could understand — VB.NET is sufficiently different in philosophy and style from those languages for there to be a point of contention — but the people who seem to hate VB.NET the most are C# developers. I just don't understand.
When I made the move to C#, the final motivator was not a deficiency with VB.NET, it was the fact that I was working on customizing a product that was already written in C#. Re-reading that article from June 2008, even then I had no overwhelmingly good reason to stop using VB.NET; on the whole, it was meeting my needs. Most of the pressure that I was feeling to start using C# was social pressure from other developers. In the .NET world, it feels like VB.NET people are often considered to be less capable or less experienced than C# developers, or that C# is a substantially better language than VB.NET.
Don't mistake me here; I know where the anti-VB sentiments traditionally come from. The VB family up through VB6, VBA, VBScript, and the other variants is a wretched language on all technical fronts. As far as I can tell, the only good thing about VB was that it was easier to get things done in it than the alternative at the time, which was C++. I always was baffled that VB beat Delphi, which was just as easy to use and much better on a technical level.
But folks, pinning the sins of VB on VB.NET is factually unsupportable. Remember the stink that VB developers made when VB.NET came out? It's because VB and VB.NET are truly two entirely different languages that happen to share enough common syntax to be visually identical at a casual glance. I am not going to enumerate all of the differences between VB and VB.NET here; it would take a book to list all the differences. It is safe to say that, other than syntactic similarities, VB and VB.NET are different languages.
In fact, the language that most resembles VB.NET from a technical (not a syntactic) standpoint is C#. Thanks to the .NET Framework, VB.NET and C# have identical libraries; this means that anything you can do in one language can be done in the other in terms of library calls. At a functionality level, C# offers a few things that VB.NET does not (multi-line lambdas are a big one), and VB.NET has some features that C# does not (like optional and named parameters, which are important). In .NET 4.0 (which is coming out next year, if not sooner), most of these gaps will be closed. The typical business developer will probably never use something in C# that is not in VB.NET, or vice versa.
At the end of the day, the practical differences between VB.NET and C# are items that fall under the category of personal opinion. There is nothing wrong with that; some developers prefer a more verbose language like VB.NET, while some like one that is a bit more terse. There are pros and cons to each viewpoint. But to act like VB.NET is some pariah language and C# is the bee's knees... that just does not make sense.
J.JaDisclosure of Justin's industry affiliations: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides. ———————————————————————————————————————————————————————- Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!
Justin James is the Lead Architect for Conigent.