In the continuing discussion on language choice, Sriram has a comment:
I’m a big VB guy myself. But it is easy to see why this myth is perpetuated. Check out Microsoft itself. Of all the teams using managed code, how many teams are using VB.NET for development? […] If you want more people to take Vb seriously, Microsoft has to show that they trust it enough to use with their own products
I’ve heard this one a lot, too, so I think it’s worth taking a moment to address it as well. Or, really, expand on the comments that yag made.
The interesting part about all this is that, in many ways, nothing has changed with .NET. If you cast your mind back to the antediluvian time before .NET came onto the scene (i.e. VB1 – VB6), you’ll remember that all major products written by Microsoft were not written in VB, they were written in C or C++. Now, that was more of a matter of necessity than choice in most cases because VB had limitations that prevented it from being used to write, say, Word or Windows. But the fact of the matter was that even though Microsoft wrote no product in VB, VB was no less important or significant to the company. Similarly, to the degree that Microsoft groups do or don’t use VB on .NET has nothing to do with how important or significant VB is to the company.
When people ask me “should I use VB or C#?”, the first question I ask them is “What are you programming in right now?” If the answer is VB, then I tell them to use VB .NET as it seems to me to be a no-brainer. If the answer is C or C++ or Java, however, I start plumbing deeper because in many cases the right answer is going to be to start by using C# because that’s going to give them a much more familiar experience. (In other cases, I recommend C++ and I think the work the C++ group is doing for VS 2005 is just great.) By moving to C# from those other languages, they retain the familiarity with the syntax, the semantics and the IDE – C# is really optimized in many, many ways for the migrating C-derived language programmer. Given that, I am untroubled by the fact that much of the base class libraries, for example, are written in C#. Most of the programmers who worked on those libraries were moving from – yes, you guessed it – C++ or Java, so by my own logic, C# was a logical choice for them.
However, that doesn’t mean that Microsoft is just going to be a C# shop and that’s it. The wonderful and important thing about .NET is that it provides a very level playing field for languages that support it. Whereas I wouldn’t have suggested writing Word in VB prior to .NET, now there isn’t any great reason why new applications need to be written C# rather than VB. So we’re definitely starting to evangelize VB within Microsoft, starting with our own team. In VB 2002, we wrote our runtime (Microsoft.VisualBasic.DLL) in VB, which was a first for us. In VB 2005, more libraries and several of the pieces of managed code in the IDE are going to be written in VB. And beyond VB 2005, we’re pushing for even more managed code to be written in VB.
Now, is Longhorn going to suddenly switch all their developers over to VB en masse? I’m not holding my breath. But it’s actually an exciting sea change to be able to make inroads into a world that was, up until .NET, exclusively a C-derived language domain.
(Sriram raised one other point that got elided above – Microsoft has had an issue in the past with demos and sample code being too heavily weighted towards C#. This issue has been taken very seriously at high levels and we’ve been working to balance this out, because it has both a symbolic and practical value. If there are areas where you feel we’re too unbalanced, let us know! I can tell we’re doing better because we’re starting to hear complaints from people that “too many of the demos/samples were in VB!” If everyone’s unhappy then we’re probably starting to strike a more reasonable balance…)