Has Visual Basic Lost Its Way?


Desktop-as-a-Service Designed for Any Cloud ? Nutanix Frame

A director of information technology at an insurance company in the Midwest, who had more hair care products on his desk than you'd find at a Fantastic Sams, once fired me because one or two his permanent employees said I didn't know VB6. The reason they said I didn't know VB6 is because I told them that the Hungarian notation was ugly and I dared try to use VB6 like an object-oriented (OO) language.

I tell you this for a couple of reasons. First, I have used almost every flavor of BASIC since ROM BASIC, including BASICA, GW-BASIC, Quick Basic, Basic for DOS, Visual Basic for DOS, VBA, and so on. Secondly, having grown up with BASIC and having made a lot of money over the years working with BASIC, I remember two distinct events: Visual Basic for DOS and Visual Basic for Windows. Some people made money programming in PIC BASIC or BASIC for DOS (like me), but BASIC didn't come into its own until Alan Cooper had his epiphany and invented VB for DOS. Then, VB really took the world by storm with VB for Windows.

How do I know these things for sure? I was programming with other things when these VB events occurred, and VB made things dramatically easier.

Visual programming is Visual Basic's legacy. Object-oriented programming (OOP) is not VB's legacy.

What Have You Done for Me Lately?

The last time VB was really innovative was when it made IDL seem to be a ridiculously hard way to use COM. VB made COM easy, but that is not nearly as important as visual programming for DOS and Windows.

A huge division seems to exist in the VB community right now between people who love VB.NET because it is finally a full-fledged, object-oriented language and people who hate VB.NET (and refer to it as Visual Fred) because, well, it is now just another full-fledged object-oriented language. And, face it, many VB6 programmers are not computer science majors or formally trained software engineers, and they don't have the time, energy, or desire to master OOP.

Consequently, Microsoft has to endure a malaise from its VB6 customers that would get a Microsoftie fired in two seconds.

I have published two books on VB.NET. Today, few publishers are that interested in doing any more VB.NET books, because VB.NET isn't selling. It makes me wonder whether VB6 programmers are lazy, stupid, indifferent, mean-spirited, poor, old, retarded, illiterate, or what.

The answer, I think, is mostly none of the above.

Microsoft gave VB6 programmers something many of them never asked for, OOP, but VB's legacy is innovating software development by quantum leaps and bounds, not OOP. If you weren't programming 10 or more years ago, you probably don't remember a world of ANSI character-based screens or know what is at B800:0000 or where CGA memory is and why you needed to know, but VB for DOS elevated us to a level where we no longer needed to know how to draw boxes with ANSI escape characters or where CGA memory was. VB for Windows made it possible to put together a running Windows application in minutes—nothing fancy, but working nonetheless—instead of days. This is VB's legacy: significant innovation in the way we develop software, period.

Did Microsoft Drop the Ball?

If I ran the Microsoft's VB team, I'd ask what's next for VB. If they told me, "operator overloading," I'd respond with the infamous Trumpism: "You're fired!"

Don't misunderstand me. I love VB.NET. But, I also love OOP, C++, Java (a little), and Object Pascal. I love OOP languages, but VB was—and is not supposed to be—just more OOP noise in the world. VB is about shaking things up. Wondering whether Microsoft dropped the ball is a fair suspicion.

Where Do We Go from Here?

I suspect that, down in some armpit-like dungeon under Chairman Bill's office, VB builders are madly working on the newest of the new, the next huge leap in software development.

I don't think rectilinear, tri-chromatic, two-dimensional forms assembled painstakingly with reams of code is the end of the line. I think we are on the cusp of something new, and VB.NET is a necessary lily pad on the pond of innovation.

What will this new thing be? I don't know. (If I knew, I'd build it.) It might be three-dimensional forms. It might be multimedia-laden, shaped forms, rich in color, content, and dynamism. The newest of the new might be a blurring of the lines between Windows and Web programming. (Why should we care whether our applications are local or distributed?) Even better, it might be bigger, more complex building blocks that move us from an age of rapid application programming to rapid application building, based on application blocks, or instead of components and controls, something I'll call aspects for now. Perhaps the next quantum leap will be applications that generate additional code based on patterns of use, or maybe the next version of Visual Basic will be all of those things and more or something totally different.

I am just not sure what the next cool VB thing will be, but I smell it coming just like my dog senses an imminent rainstorm. I also think that Bill Gates is too smart not to be cooking up something in the dungeons of Redmond.

I really don't know if anyone sees beyond rectangles and buttons. Maybe no one at Microsoft has even asked yet. I do know one thing though: The next huge paradigm shift will be based on .NET. This shift may not originate at Microsoft—although it has a high probability of doing so—but Microsoft's implementation of the newest of the new will be based on .NET. And if you don't know .NET, you won't be ready.

What I Know For Sure

VB hasn't lost its way. It is just in between the last paradigm and the next one. VB.NET is that mid-way point between Visual Basic for Windows and what's coming. The battle is not about full-blown OOP (VB.NET) versus partial OOP (VB6) or a subjective debate about which is better. OOP is better than non-OOP. It's not about which is easier—already having mastered a disjointed API, set aside your ego, and invested in learning a highly organized framework—the framework is better. VB.NET is better. It is about being prepared for the next quantum leap in VB and in programming.

If you do not master OOP, when VB makes the next VB-like quantum jump, you will be left in the dust. History will relegate your skill set to the same ash heap where those who stopped at FoxPro, Quick Pascal, or RBase reside.

What will this quantum leap be? I don't quite see it yet, but I know it's coming just like a thunderstorm after a green Michigan sky. It's coming, and it will be big.

About the Author

Paul Kimmel is the VB Today columnist for www.codeguru.com and has written several books on object-oriented programming and .NET. Look for his upcoming books UML DeMystified from McGraw-Hill/Osborne (Spring 2005) and Expert One-on-One Visual Studio 2005 from Wiley (Fall 2005). Paul is also the founder and chief architect for Software Conceptions, Inc, founded 1990. He is available to help design and build software worldwide. You may contact him for consulting opportunities or technology questions at pkimmel@softconcepts.com.

If you are interested in joining or sponsoring a .NET Users Group, check out www.glugnet.org.

Copyright © 2005 by Paul Kimmel. All Rights Reserved.


  • Microsoft Has a Habbit of Pulling the Carepte out from under developers

    Posted by RoyK on 03/11/2005 10:32pm

    To say you can port VB 6 to VB.net is absurd. It's a different language. For example, they took away the ability to use pointers. Big mistake. That forces you to hunt and hunt and hunt some more for the way you used to do something. So you are left with the felling like you had the carpte pulled out from under you. Not only that, but you can't even get the examples to install correcly under Win XP SP2. So you are left with very few books and very few examples.

    • VB6 had pointers?

      Posted by Clearcode on 03/14/2005 05:58pm

      VB6 never had pointers. It had undocumented functions (objPtr, VarPtr) which you could use to get pointers to objects but there was no type safety at all. VB.Net has the whole System.Interop namespace to make marshalling (pointers) so much better.

  • Very Nice Article

    Posted by RITIK on 02/28/2005 09:19am

    Very touching article.

  • It is safer to go for C# thats the .NET standard.

    Posted by akomarov on 02/28/2005 04:23am

    Why should I continue with VB.NET? Why should I continue even with Managed C++? With its Framework Microsoft killed all the language differences. We will be converted to very high level developers no low level stuff any more. This reminds me IBM AS400 - there is not assembly language any more in their operating system. You want more freedom and variety then go for Linux!

  • Interesting article

    Posted by Brad Jones on 02/24/2005 09:50pm

    It will be interesting to see the comments and the replies to the comments on this article!

  • You're fired

    Posted by Clearcode on 02/22/2005 09:34pm

    Many good points. However I think VB.Net offers a lot more than just OO though. Tracing, easy XML, asynchronous execution, multithreading,docking controls, etc. etc.

    • Vb-Vbnet

      Posted by Cimperiali on 02/24/2005 06:27pm

      VbNet is not an evolution of Vb, it is a different thing with a similar name. As someone else stated, why ever bother to learn VbNet if you can with even less effort learn C#? Because matter is exactly this: to a vb developer, VbNet confuses, trying to appear similar and being enough different to make you scream for the simplest piece of code. Going with C# at least, a Vb developer can think it is something of new and different, and does not expect to be able the same as with his well know old language

    • VB6 is elusive

      Posted by Ajay Vijay on 02/23/2005 04:38pm

      Although VB6 is easy to use and not necessary to declare variables, the dot operator may behave dynamically, and the issues like that. But as projects become some little larger, it sucks rapid development and system development halts, or may go back. One more thing VB being elusive is inconsistency in itself. Some object (controls etc.) have array started at 0, some at 1. There is no defined (at least upto my knowledge) method to detect if object is empty (IsEmpty, IsNull, = Nothing..). VB.NET makes the thing clear, more maintainable. I also worked on GwBasic, QBasic and other flavours of BASIC.

    • change

      Posted by ahoodin on 02/23/2005 03:53pm

      The only thing constant for better or for worse.

    • OOP is good but...

      Posted by Magallo on 02/23/2005 02:11pm

      The point is not that VB.NET is not good. VB.NET is good. Also Tracing, easy XML, asynchronous execution, multithreading,docking controls, etc. etc. is good, bu VB.NET is not VB. At least is not VB as we want it to be. VB must be easy, simple and clear. In fact, now I use C#. What is the reason to use VB.NET instead of C# now? There are no reasons! VB.NET must became more simple, more transparent, more 'for dummies'. Only thus VB will regain its role! (Sorry for my poor english).

  • You must have javascript enabled in order to post comments.

Leave a Comment
  • Your email address will not be published. All fields are required.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date