Okay, rant time. This one’s pretty minor in the scheme of things but I feel the need to vent.

One of my pet peeves is when people say something is “written in Visual Basic” or when something is referred to as being “all in Visual Basic” but then doesn’t go beyond that definition. Actually what really irks me is when people look at me like a space alien when I ask “Visual Basic what?”

So let’s clarify, shall we? Microsoft, as we’ve established, decided to kick start Windows development and go into Rapid Application Development with its Visual Basic programming tool/language. Visual Basic 1.0 was essentially a frontend for designing applications with a scripting language in the background. The language was based off of BASIC, but didn’t adhere to it strictly, mainly because BASIC had no standards bodies behind it (so you can’t say you’re ANSI compliant, like C++ compilers can).

Visual Basic was aimed at non-programmers and was fairly limited. Over the years it had six major version releases, with 1999’s Visual Basic 6.0 being the last. Each release added more power to the product, mostly through undocumented functionality (which had the interesting side effect of only the long-term programmers having access to them or the desire to use it). VB6 still retained the “only do what we thought of” mentality – it limited the users in ways that “to the metal” languages like C++ don’t. I’ve heard it referred to as the “glass cieling” of VB6 – at some point you’ll want it to do something that it simply cannot do. But in so far as being able to achieve a lot in a small amount of time, it couldn’t be beat.

But the language behind it was always kinda kludgey, and each release just grafted more onto it. What happened was – over time millions of people who weren’t considered programmers prior to VB’s release were now being considered programmers and these people demanded more from the product. Essentially Microsoft had created a beast – things they wanted to do with VB they couldn’t do without alienating their client base, and a number of things about VB never really worked, but the VB programmers worked around them anyway.

But then Microsoft hauled off and released Visual Basic .NET in 2002, as part of their .NET initiative. VB.NET changed a lot of things about the language, the environment, and the positioning of VB. Functions now had return types, VB could now power web pages, and everything written in VB to that point had to be redone. Additionally, while VB6 programmers were more or less standalone beasts, VB.NET programs ran in the .NET CLR meaning that the .NET Framework has to be loaded on the machine. Consequently, VB6 and VB.NET are considered two separate things, and a number of people have loudly decided that they will never move away from VB6 to VB.NET. Indeed, VB.NET is aimed at more advanced programmers and a number of VB6 programmers just don’t want to go there.

So that’s VB6 versus VB.NET. Then there’s VBScript. When Microsoft devised Active Server Pages, they conjured up a subset of VB functionality in scripting language (not compiled) format and called it VBScript.VBScript can run client side or servier side. Since ASP pages are server-based technology, the VBScript they use sprinkled within HTML is used to make the page more dynamic (for example, pulling things in from a database). ASP required an ASP-compatible platform, such as IIS running on Windows. Client-side, only Internet Explorer can do VBScript, which is why most web designers do VBScript on the server end and JavaScript on the client end. This practice of having pseudo-VB code running on web pages in the form of VBScript is the precursor to VB.NET’s running ASP.NET pages. VB.NET goes one step further, however, and can run the code in “code behind” – it’s in a separate file and is in fact compiled into a DLL tied to the individual ASPX page.

So that’s the three kinds of VB: VB6, VB.NET and VBScript. The part where it gets asinine is when the three get confused. Part of this is by design – Microsoft wanted the managerial staffs of the world to think VB.NET was a mere incremental upgrade on VB, which was only half right. If they knew the whole story they’d balk and not migrate, so the techies of the world played along since they wanted the upgrade. Same thing with ASP.NET and ADO.NET. But I’ve seen problems where people assume that VBScript is synonymous with all things VB and discount ASP.NET projects as “scripting”. This is nothing new – I hear of Java programmers being called to interviews where the person really needs a JavaScript programmer.

The rumor is that Microsoft secretly hates VB and would nothing more than to kill it off entirely – they’re rumored to be doing the majority of their future development in C#, including a complete rewrite of Office (though they have killed off previous efforts to do just that). Additionally, there’s word that with C# 2.0 (part of .NET 2.0), C# will get functionality that VB.NET will not – the two will fork off from each other. Why they would do that (since the MSIL would have to be updated and so therefore VB.NET could be upgraded as well) is puzzling (though for a C#-preferring language snob like myself it’s precious). The reason Microsoft came up with VB.NET to begin with is the fact that there’s some 3 million plus VB6 coders out there and they needed them to make their .NET push happen at all.

So that’s VB and the three faces of it. I don’t expect merely writing this to fix anything (since at least a few people who gave me the confused puppy look also happened to be seasoned programmers), but now at least anyone reading this knows another thing to be nitpicky over.