Is There a Future for VB.NET?
Many have wondered why Microsoft is giving a different treatment to VB.NET compared to C#, why VB.NET developers are paid less than C# ones and if they should worry for their future or not. In a podcast, Lisa Feigenbaum, PM in .NET Managed Languages Group, assures the VB.NET community that VB definitely has a future.
Lisa explained why VB.NET and C# used to have a different perception: it was a Microsoft strategic decision in the first place. Microsoft did not only want two different languages with two different syntaxes running on the CLR, but they wanted them to be different in their features, so the two languages went on quite different paths in the .NET world. Since most of the related documentation coming out from Microsoft contained C# samples and less VB.NET samples, everyone concluded that VB.NET is less favored and possibly it will die in time, not having enough support.
According to Lisa, in the beginning, Microsoft tried to differentiate the two languages by implementing different features in each of them, but many times the VB.NET customers requested to have C# features, while C# customers wanted VB.NET features, so in the end a decision was made to keep both languages in sync. Also, the number of VB.NET developers is slightly higher than C# ones and Microsoft won’t kill VB.NET because it is not in their interest to do so. This commitment was reinforced when the two design teams were joined together some 18 months ago in order to co-evolve the languages.
Anders Hejlsberg, Chief Architect for C#, oversees the development of both languages to make sure they both progress. After he is making a decision regarding some feature to be implemented by C# and VB.NET, the respective design teams split up in separate rooms to design the implementation of the feature according to the syntax and the overall design rules for the language. This process has two results: the languages keep adding the same set of features, and the languages maintain their personality and do not necessarily try to copy the way the other is implemented. This will ensure that VB.NET will not be eventually absorbed by C#.
The languages are converging rapidly. Currently, the only applications that can be done in C# but cannot be done in VB.NET are XNA games because there are no project templates for VB.NET. But Microsoft wants to completely close that gap so the two languages would be completely equal.
The results of the joined effort will be seen more clearly in the next version of Visual Studio. VS started initially in C, C++, but VS 2010’s editor and compiler will contain more managed code than before, and that means more C# and VB.NET code. Neither VS nor Office do not start having all managed code over night because there is a huge amount of valuable code already written, but new code is generally managed one.
The fact that some studies show VB.NET developers being 10-15% paid less than their C# colleagues may be due to the fact that the perception about VB.NET has still not changed that much and more time is needed to realize that those languages are equal and treated as equal by Microsoft.
The difference between a VB and C# developer...
Look to VB6 for the answer
Despite its many real deficiencies, VB6 continues to be a very widely used language.
I understand the desire for language feature parity, and I think it's a good decision for the framework and the community. But there are other factors to consider. Will the tooling and RAD support be equivalent between languages? Will the focus of MS be identical? For example, will the same GUI wizards exist for both languages, will SharePoint development be as easy in both languages, etc. I'm not implying either language is better for those tasks now; I'm merely saying that language features are only one part of what makes a language successful, especially in the Microsoft world.
I expect both languages to exist for a long time, with the demographics broken down mostly by where you're coming from. VB.NET will continue to be more popular with people coming from VB6 and MS Office programming, like Access or VBA scripting in Excel. C# will continue to be more popular with Java converts and polyglots who started not in .NET. I personally came to .NET from VB, but with 2.0 and especially 3.5, I find C# to have a much more expressive and clean syntax.
we missed vb6
Why use VB.NET since there are C# and Java?
VB was dead when microsoft abandoned VB6.
why you so shure that they have any difference?
Both of them build on MSIL - so they can be convertible with utilities like reflector.
Re: why you so shure that they have any difference?
Reflector doesn't translate everything perfectly. Last time I checked, VB.NET events and event handlers were still a problem, and there were some more (some obvious, e.g. comments and regions).