VB.NET is the Proverbial Red-Headed Step-Child of CLR Languages (alternate title: Things that make you think that Microsoft doesn’t treat VB.NET as a first-order language)

I’ve only started using VB.NET in the past year and a half on client projects. Prior to that it was always C#. I now consider myself fluently bi-lingual in either language as I make VB.NET syntax errors in my C# code as well as still making C# syntax errors in my VB.NET code.

Since using VB.NET I’ve noticed that, though VB.NET is supposedly a "first order" language in the Microsoft stable, there are a few things that make that facade seem fairly thin:

  • Create a new project (File > New > Project) in Visual Studio (full installation) and you’ll notice that Visual C# is a root node element in the Project types tree where Visual Basic is buried under the "Other Languages" node.
  • MSDN documentation for tasks as routine as sending an email will include sample code for C#, C++, and even J# while noticeably omitting a VB.NET sample.
  • New language features of C# often take at least one point release of the framework to become available within VB.NET. Case in point: InternalsVisibleTo (now available).

I am sure the list is endless. These are just the top ones that stick in my mind at the moment.

Advertisements

2 thoughts on “VB.NET is the Proverbial Red-Headed Step-Child of CLR Languages (alternate title: Things that make you think that Microsoft doesn’t treat VB.NET as a first-order language)

  1. The reason that VB is hidden when creating a new project is because when you first started the IDE you selected "C# development settings". If you had selected VB.NET then the C# node would be hidden.As for language features, MS has now merged the C# and VB.NET team into a language team so hopefully a feature will come out in both languages and be similarly implemented too! Also there are some things in VB that you don’t see in C# like the with statement and the "My" namespace which would sometimes be nice to see in C#.

  2. Nestling the language into "Other Languages" because another one  was termed the ‘default’ is a cop-out. Unnecessary management of an additional node, introducing unnecessary complexity…. have I mentioned unnecessary? Still = (== ?) mistreated language that is supposedly first-order.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s