WWMD? What Would Microsoft Do?

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…)

10 thoughts on “WWMD? What Would Microsoft Do?

  1. Luciano Evaristo Guerche

    I have a dream. A dream of Microsoft Products (office products, backoffice products, etc) developed using managed code (.NET Framework) and VBA replaced by managed code (VB, C#, etc).

    What do you think about? Is it this dream coming to reality soon or shall we expect it a bit longer?

    Reply
  2. Arild

    I think one of the biggest problem with VB.Net (or VB for that matter), is the B. Lots of non-VB programmers are focusing on the word *Basic* and not the laguage itself. So maybee Microsoft should change the name? Here is my suggestion: "VIP.Net" – Visual Integrated Programming.net.

    Well, not all dreams come true. Btw, I love VB.NET and the .NET framework.

    Reply
  3. Tom Bowen

    >I think the work the C++ group is doing for VS 2005 is just great.

    It just dawned on me that I’ve never really considered there being a "C++ group" doing much up there. I guess I thought C++ .Net was kinda like FORTRAN .Net or COBOL .Net: a quaint, almost token recognition. Maybe it’s because C# and VB generate the lion’s share of the chatter.

    >>So maybee Microsoft should change the name? (of VB)

    Someone somewhere suggested B#. I think that would have been a great idea if it had happened in VS 2002. Yes, I know that "B" has a history, but it’s so far removed it would have been ok.

    Reply
  4. Anand

    Paul, I would say it is more of perceptions that you need to change. It has something to do with history of VB being the non-programmers language etc. and I dont see a serious effort from MS to change that perception.

    When .NET came out and VB became as powerful and any of the other .NET language, I would have expected a big noise being made by MS, but there was none. So C#, which was like C++, was taken to be the real language. And of course, being a new language, people were more interested in learning it.

    Reply
  5. WQ Graham

    (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 is exactly the thought I had as I was reading through the WWMD do article. In my own particular case from early this year I was trying to get familiar with the CryptoAPI. I had already used CAPICOM with success. In particular I was trying to call "CryptGetProvParam". The example C code on MSDN CD works fine and I was able to compile it. But I am not a C programmer and I could not figure out how to make this most basic call work from VB. I kept getting an error return on the call. I’ve temporarily abandoned my attempt. But a VB example for this and the other Crypto calls would really help me.

    Bill

    Reply
  6. Varad

    I being a VB programmer (those VB6 days!), never liked to code in C++ or even VC++ (mainly because of complexity). But did some ATL COM stuff for sometime.

    So in that case VB6 is more easy to code and maintain compared to C++.

    But in case of C# and VB.NET, I feel both are having the same essence. Guys developing on VB.NET can also code efficiently on C# as well, as our .NET Framework never make anyone to feel the complexity of C++ in C#.

    But in today’s eWorld, VB.NET is not talked that much as that of C#, I wonder why?

    Reply
  7. Mike Schinkel

    >> 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.

    Bravo! As most advanced developers know, one of the best ways to ensure a language is really robust and can handle anything is to write the language and libraries in itself. I hope to see a lot more of this in the future! (Maybe you can even get the C# team to implement parts of "Microsoft.CSharp" in VB.NET. hehe. 🙂

    Reply
  8. Bill Booth

    >>If there are areas where you feel we’re too >>unbalanced, let us know!

    Have you had a look at MSDN magazine lately?

    The July issue is just about 100% C# except for the Advanced Basics column, which I think is a great column by the way.

    This is a magazine that calls itself “the official Microsoft magazine for developers.”

    Reply
  9. Chris Sihon

    I think C# simply inherited the popularity of the C-family languages (C, C++). The fact that is syntax and code structure is very similar to that of Java, it is easy for Java programmers to move to C#. Therefore you have a bunch of ex C/C++, and a bunch of ex Java gurus converting over to C# more than VB.NET. Hence the popularity of C#. Most VB.NET programmers are nothing but VB4, VB6, VBA converts, and there were never as many of them as they were C++ and Java programmer anyway.

    Reply
  10. aaron kempf

    microsoft inherited the popularity of C languages? are you kidding me? there was no popularity… VB was _ALWAYS_ more popular than C.. and it still is.

    Reply

Leave a Reply