I was interested in this podcast with a member of the Visual Basic team at Microsoft, Lisa Feigenbaum, as I ask myself the same question.
Unfortunately the questioning from Joe Stagner (who also works for Microsoft) is tame. Nevertheless, there are a few points of interest.
“The things that come out of Microsoft, it is C# biased” admits Feigenbaum, which she says is because so many at Microsoft have a C or Java background.
That is part of the reason (though more C than Java) but I doubt it is that simple. If you go back to the beginnings of .NET, Microsoft designed C# and what was then the new framework and runtime together. VB on the other hand was hauled into the new world and still bears the scars.
Let’s answer the question first. Microsoft cannot afford to abandon VB, which remains popular, especially (though certainly not exclusively) at the less professional end of the market. VB isn’t going away.
Further, there’s really very little difference in the capabilities of the two languages, so there is little incentive for anyone to switch. Microsoft has attempted to differentiate them, but these attempts generally fail. “Any time we do something cool in one language, the other folks want it” says Stagner in the podcast.
As I see it, that’s part of the problem. It begs the question: what is the point of VB, other than to keep existing VB developers happy? In what circumstances would you advise a new programmer to learn VB rather than C#?
I dip in and out of both VB and C#, and of the two I prefer C#. I find VB’s slightly increased verbosity annoying, and I dislike the statement continuation character which is unnecessary in C#, because statements end with semicolons. I prefer case-sensitive languages, which give more flexibility when naming variables. If you want to do XNA games programming, currently only C# is supported.
VB’s dynamic features are useful in some scenarios, particularly Office automation, though this advantage is removed in C# 4.0 which has dynamic variables.
The original attraction of BASIC, its English-like syntax, is nearly lost in today’s VB.
Well, choice is good; and the existence of VB alongside C# proved the cross-language credentials of the “common language” runtime from the get-go.
Nevertheless, I’m expecting VB usage to decline gradually. An external factor is the rise of the JavaScript family, which is more like C# than VB.
Incidentally, Feigenbaum threw in a comment about Visual Studio that I found interesting. After talking about the managed code editor in Visual Studio 2010, she remarks “In the release after 1010 we’re rewriting the compilers in managed code.”
Remember thinking the same 10 years ago. I guess it will always hang around for the non-software engineers who dabble. For someone serious about development then C#,Java or C/C++ have to be the choices.
Or Delphi of course.
> I dislike the statement continuation character which is unnecessary in C#
In VB 10, you don’t need the statement continuation character any more. And you still don’t need semi-colons.
> If you want to do XNA games programming, currently only C# is supported.
I find that to be the most frustrating thing about VB. Supposedly VB 9 was supposed to fix that, but nothing seems to have happened.
> Nevertheless, I’m expecting VB usage to decline gradually. An external factor is the rise of the JavaScript family, which is more like C# than VB.
That should be happening, but VB is beating out C# for downloads of the VS Express edition.
Thanks Jonathan.
The statement continuation feature in VB 10 is partial, see:
http://blogs.msdn.com/vbteam/archive/2009/03/27/implicit-line-continuation-in-vb-10-tyler-whitney.aspx
I agree though, should be less annoying.
Tim
I’m not entirely sure that’s a bad thing.
In C languages you can have a line break just about anywhere. This leads to needless debates about coding standards.
And I certainly don’t want people to do things like place “End” and “Function” on separate lines.