Is VB.NET Really Visual Basic?

VB.NET is a very different animal to any of the previous versions of Visual Basic. There have been major changes in the past. Version 4 introduced some major changes with the ability to write 32 bit code, and the replacement of the old .vbx controls with .ocx controls. This, in itself, fixed a huge problem for programmers who used different versions of the controls. The most notorious example was the threed.vbx which came in two incompatible versions.

Version 5 saw a complete re-design of the IDE and along with Version 6 the beginning of object oriented programming in VB.

While this was going there were other changes taking place. The COM was introduced and VB programmers could now participate in the universal Windows problem known as DLL Hell.
And databases weren’t left alone. We started with DAO, briefly flirted with RDO and finally settled on ADO.

Then along came VB.NET. Databases are now connected with ADO.NET, the Component Object Model, while still supported, is discouraged. And we now have a whole new set of acronyms to learn. CLR, FCL, CTS.

About the only thing VB-like in VB.NET is the syntax. And I suppose that is what makes a language look like a language. But the words comprising the language have, to a large extent, changed their meaning. VB.NET is also complete object oriented programming language. The OO gurus and academics might disagree. But in order to program efficiently in VB.NET you need to use objects and understand OO concepts like encapsulation, inheritance, polymorphism and instantiation.

For example, in the current version of VB.NET, and I understand that this might change in future versions, you must instantiate a form in order to show it. In previous versions of VB you would create a form in the IDE and call it with formname.show. Now you need to create an instance with

   Dim newform as new formname
   newform.show

There are a host of other changes. Variables can be declared within blocks in a subroutine or function. So that if you declare a integer within a For…Next block its scope is restricted to that block. If it is declared within the subroutine but outside the block its scope is the entire subroutine. This is much more like the scoping rules in C. In fact, I found much of the new language reminded me of C but with the VB syntax.

Making the move from VB6 to VB.NET is not a trivial exercise. Using much of the same “language” but it having a different meaning made for a steep learning curve. In some respects it might be easier to come to VB.NET from a non-VB background. There are many other examples that I could mention.

However, the point is that VB.NET is such a major departure from all previous versions of VB that it is a bit confusing to call it VB. It is definitely not an upgrade along the old VB path.

The other point is whether it should be called Basic. The same question could have been asked, certainly of version 5, maybe earlier. BASIC is an acronym – Beginners All Purpose Sympolic Instruction Code – and the BASIC language has been much derided, probably because of that word Beginners. I don’t think VB.NET is any longer a language for beginners.

Comments are closed.