Post

VB.NET vs "VB.Classic" or "VB.COM"

No wonder people give us VB guys a hard time… we even cause problems among ourselves. What’s it this time? Well, I just don’t get this whole keep VB6 thing.

Let’s look at a couple of things, shall we?

VB6 was released in 1998. Pretty much a run of the mill upgrade to VB5 which as released 1996. That’s nine (count them, 9) years since there was a major revision to the so-called VB.Classic or VB.COM as some people are starting to call it!

OK, so let’s rewind that time machine 9 years prior to VB5. What version of BASIC was available in 1987? 1987 gave us 3 different versions of QuickBASIC (yes, I said 3 different versions, 2.01, 3.00 and 4.00) and Microsoft BASIC 6.0. 1987 was also the year that ANSI issues the Standard BASIC specification (specification X3.113-1987). Windows hadn’t even reached 3.0 and VB was nowhere in sight. QB4.5 came out a few years later and contained some very significant changes… enough that I really think it should have been QB5, but that’s just my opinion and, besides, it’s not like they are going to change it now ;-)

Why am I bringing this up? Well, for a couple of reasons. The first being that, in technology, the only constant is that things continue to change. The move from DOS to Windows (ala VB, in 1991) was even more difficult than the move from VB6 to VB.NET could ever be. EVERYTHING had to be redone… sure, some code snippets that did some specific logic could carry forward, but for the most part it was a total rewrite. It was a platform shift. DOS to Windows. Moving from DOS BASIC to Windows, you had to learn completely new concepts and a whole new laundry list of things to worry about. No more worrying about DGROUP, instead had to wrap you mind around this concept of event oriented programming. All you 3rd-party libraries were obsolete, but there was this new thing called the Win16 api that you could dig into. There was also this thing called VBX.

So, the age of VB started in 1991 and lasted until the release of VB6 in 1998. Six versions in 7 years moving through the age of 16-bit Windows to 32-bit Windows and even starting to venture into the world of the Web. A few significant changes occurred along the way that caused difficulty in migrating existing applications. The move from 16-bit to 32-bit being one of the most significant. VB4 shipped with two distinct versions of the IDE… one for 16-bit development which still allowed you to use VBX components… the other was a 32-bit IDE that used this new thing called ActiveX (COM). All your old VBX components were obsolete and did not get carried forward. However, the 3rd-party product vendors did a pretty good job providing compatible components (although, in many cases, not 100% compatible). There was also an upgrade wizard, but since Microsoft didn’t change the existing elements of language in VB3 to VB4, most of the existing code would migrate forward. However, just because the applications would compile and run, that didn’t really make them VB4 applications. VB4 also introduced class based programming, the beginnings of BASIC’s move to true object oriented development. There were a lot of criticisms by others because VB wasn’t “truly” object oriented, but that didn’t stop people moving forward with learning all about Classes and Properties with their Let’s, Set’s, Get’s and the whole Set objSomeVariable = Nothing programming practice.

Now we are where we are at today… 3 years after the release of VB.NET, people are still complaining about the move forward. It is another platform shift, different things to consider and new programming practices to absorb. VB now is truly object oriented and on equal footing with ALL the other languages targeting this new platform. A few existing VB developers have jumped ship to C#, which is fine… considering that C# has a lot in common with VB, I don’t think it’s too far of a leap. And if they a really want to practice pinkie finger gymnastics, more power to them ;-) However, what is interesting is the fanaticism some people have in regards to staying with VB6. It’s over 7 years old guys…

As for the difficulty to migrate to VB.NET from VB6; it’s not really that difficult. I’ve migrated nearly every application to VB.NET shortly after release. Did I need to? Probably not, though I felt it was a good way to jump in and get my hands dirty and it was something that I thought would be necessary at some point in the future, so why delay in the inevitable. Did I do this because Microsoft said they were going to end support for VB6 and the fear that my existing VB6 applications wouldn’t run on Longhorn? Those thoughts never entered into my mind. VB.NET just made sense. It’s the logical step forward for BASIC. Is it perfect, by no means is it that, but it IS a step in the right direction. Hell, I’ve been waiting for bit shift operations in any version of Microsoft BASIC since the days of QB4, VB.NET 2003 finally introduced them into the language (somewhat useless since there’s no support for unsigned types, but that’s being remedied in VB 2005). Interoperating with Win32 has been seriously improved with VB.NET. Writing visual components in VB.NET is so simple, trying to compare it with VB6 is just plain impossible.

VB 2005 will be correcting a few of the deficiencies that I see in VB on the .NET platform, but that doesn’t mean I’m ready to say I’m satisfied with it. As a long time user of BASIC, I don’t think I’ll ever reach that point… OK, maybe when I retire… wait… I’m never going to retire.

So, what is spawning all of this dribble? Well, the whole petition to get Microsoft to bring a COM based VB into VS.next and to continue supporting it.

They say they are afraid that their VB6 applications are going to stop working with future versions of Windows. This isn’t going to happen and is just a scare tactic to get people to listen to their plea. I can show you several applications that I wrote back in 1991 that still run today under Windows XP SP2… these are DOS applications written in a version of BASIC that has fallen WAY off the radar of Microsoft. VB 1.0 applications still run today… not that you would want to run them, but the fact remains, they do still run today. The number of deployed applications developed using VB6 is large enough that Microsoft will continue to do their compatibility testing to ensure they still run in the future. This is no different than what they’ve already been doing.

As for a COM based version of VB… COM is DEAD… (OK, not dead, but why do you want to continue torturing yourself with DLL hell?) It’s time to move on.

Not having a natively compiled version of VB? OK, this one I would kind of like as a wish item… at least come up with a better way to protect my IP… included in the box… not something I have to go to a 3rd-party vendor for. However, because there is a 3rd-party product I can use to help protect my investment, I’m OK with it since the other benefits significantly outweigh the downsides.

To say the MVP’s are revolting against Microsoft… let me say for the record… I’M NOT ONE OF THEM! And because I don’t work for Microsoft like Paul Vick or a developer of a 3rd-party product targeting both platforms as Dan Appleman does… So I can say whatever comes to mind… well, the problem is that I just don’t know how to respond without using words that would just be plain insulting… and I think I’ll try to avoid doing that. ;-)

As it turns out, Scott Swigart has a few choice words to say and Scott Hanselman, unlike myself, is at a complete loss for words. (For the record, I was at that stage, but I had a few days to think about it.)

AND… here is your chance to counter their madness… consider this post an anti-petition… so comment away!

NOTE: I hesitated to add a link to the petition, but I decided it would be more appropriate for you to go there, read it yourself and formulate you own opinion. ;-)

NOTE: And, Yes, I have been programming that long ;-)

UPDATE: Found a couple more people with something to say on the subject: Duncan MacKenzie, David Totzke, Frans Bouma

This post is licensed under CC BY 4.0 by the author.