or a decade people have been predicting the demise of Visual Basic, and with VB.NET, nothing has changed. According to one recent report, the future of VB.NET is threatened competitively by its free cousin, C#. Even after all these years, some people still don’t understand that VB?and now VB.NET? will continue to be one of the world’s most popular programming languages. Sure, some VB programmers will switch to C#, Java, or Delphi, but the very fact that they would consider making the change highlights the fact that these languages have evolved over time to address issues of usability and functionality that Visual Basic invented. Whatever happens to VB, the language, the spirit of VB has conquered the programming world, and will live on. In fact, VB, as a concept, has never been more alive.
A Visible Success
The earliest releases of Visual Basic didn’t make a huge splash, but the language was innovative and attracted considerable attention as a new programming paradigm, because it let programmers build forms visually. For the first time, people could drag and drop controls onto a design surface and see how a program would look without going through the lengthy edit-compile-test cycles required by other languages.
VB further reduced the edit-compile-test cycle by performing an end-run around it. VB classic, like many earlier BASIC implementations, was an interpreted language; you could edit VB code at runtime. The VB IDE could apply most code changes immediately, even while the application was running, letting you step through a block of code in the debugger, find errors, fix them and then retest the code without stopping the program to recompile. Called “edit and continue,” this feature gave VB a major productivity boost over older edit-compile-test languages.
Programmers loved being able to drag and drop controls, but they weren’t completely satisfied with the built-in controls. Fortunately, Microsoft made the architecture for building those controls available to the programming community. Soon, enterprising developers created hundreds of “VBX” controls (and later, ActiveX controls), spawning an entire industry and taking the idea of reusable code to new levels.
VB was also the first popular general-purpose language to offer truly integrated database access. Via Microsofts Data Access Objects (DAO) technology, working with relational databases in VB became so simple that in many cases developers didn’t need to know anything about how the underlying relational databases worked; they could simply drag-and-drop database-aware controls onto forms. Even for more advanced developers, DAO (and its successors such as, RDO, ADO, and now ADO.NET) provided huge productivity increases.
By version three, VB was stable and fast. It had the best IDE available, and was accessible to millions of part-time programmers. VB rapidly became the world’s most popular application programming language, and it has maintained that position despite predictions of its demise and substantial changes to the language itself.
It has maintained its popularity because VB delivers the six things that corporate developers care most about.
- A BASIC-like, case-insensitive syntax
- Visual design capabilities
- A great IDE with an integrated debugger
- A variety of inexpensive, robust aftermarket controls
- Simple, integrated database support
Other languages have offered a subset of these features, but none have succeeded in capturing the huge market that VB enjoyed.
Other vendors have long been covetous of VB’s developer base, and made huge efforts to lure VB developers to other platforms. For example, Borland’s Delphi language offered everything that VB did except the BASIC-like syntax and edit-and-continue. In fact, Delphi provided more capabilities than VB. For example, it was much faster. Delphi code executes at speeds essentially identical to that of C++. Delphi also shipped with native data-aware controls for its DBase and Interbase desktop databases. In later versions Delphi even provided ADO wrappers.
But Delphi used an Object Pascal language base rather than a BASIC core and that single feature change helped prevent its widespread adoption. Despite being faster and offering true object-oriented programming (OOP) capability?in short, all the features of VB.NET in a COM-based package?Delphi was never a serious contender for VB’s popularity crown.
Will C# Replace VB?
Microsoft recognized some of the features that made VB popular, and included them in VB.NET. C# though, was never designed as a “VB killer.” Instead, C# is more likely to attract developers from C++ and Java. C# provides a C-like syntax similar to both C++ and to Java. Right off the bat, it’s missing the first of the six features?a BASIC-like syntax. While syntax is unimportant to some developers, it’s all-important to others.
In addition, VB, and now VB.NET, aren’t case-sensitive languages. For example, “Email” and “EMail” are the same variable. In C, C++, Java, JScript, and other C-like languages, changing capitalization is an error; EMail and Email are not the same variables.
C# does have visual design and simple, integrated database support, and will eventually have a large palette of aftermarket controls to choose from?but it’s the same palette that VB.NET developers will have.
C#’s IDE support leaves a lot to be desired. Even though C# shares an IDE with VB.NET, the IDE responds to each language differently. For example, Intellisense in VB.NET is considerably better than in C#, where it’s?you guessed it?case sensitive. Why anyone would implement case sensitivity in a search feature intended to help people find information they may not know and shouldn’t have to memorize is beyond me. Worse, it’s inconsistently case-sensitive.
There’s no denying that C# syntax is more concise. If you hate typing and don’t use Intellisense’s code completion capabilities, or you’re already working with a C-syntax language, C# is the language for you. But that doesn’t mean that C# will eventually replace VB.NET.
The bigger question is whether VB.NET will replace VB. One problem is that VB.NET doesn’t have all VB’s features yet. In particular, VB.NET is missing edit-and-continue, a long-promised, not-yet-delivered feature that will be key to getting many VB programmers to migrate to the .NET version.
Code incompatibility is another factor inhibiting migration. Microsoft hasn’t made code migration from VB to VB.NET easy enough. While VB.NET syntax is very similar to classic VB syntax, it’s not the same. In any case, it’s not just the syntax that’s changed, it’s the addition of the framework. The VB-to-VB.NET upgrade wizard is not now, and probably never will be sufficiently intelligent to migrate all applications seamlessly.
Still, most VB programmers don’t have large vertical applications to migrate; they either write smaller applications that aren’t prohibitively expensive to rewrite or plan to maintain existing applications in VB while creating new applications in .NET. For most of these programmers, the language differences are welcome, making VB.NET the only likely threat to classic VB.
VB.NET Beyond Windows?
Interestingly, certain advancements in the Java camp are likely to have an effect on Visual Basic programming. By neglecting to create a cross-platform version of its languages, Microsoft has failed to take full advantage of their popularity. Meanwhile, Sun’s Java leads in the cross-platform arena with its run-anywhere capabilities, which turned out to be a true business advantage?in the server space. In turn though, Sun failed to take advantage of Java’s popularity by neglecting to provide it with GUI development capabilities equal to those of VB. The upshot is that Java is king over a large portion of the server-side, non-GUI applications market, while VB, C++, and .NET languages rule the desktop.
But nothing lasts forever. Thanks primarily to IBM’s Eclipse project, Java developers can now create desktop Windows applications responsive enough to compete with those written in Microsoft’s languages. And Sun has announced a push to give Java developers simplified RAD features with Rave.
Combating this trend will be the various open and shared-source projects that are busy porting the .NET framework to Linux and Unix. If those projects bear fruit, .NET developers will eventually have cross-platform capabilities similar to those of Java. These changes will make for some interesting shifts and changes, but none of them threaten Visual Basic outright.
Keep Your Options Open
VB.NET is VB’s true successor because no other language currently matches VB’s feature set as well as VB.NET. But here’s the kicker?once you decide to leave VB classic behind, it doesn’t really matter which language you learn. If you make the move to VB.NET, you’ll find that it’s perfectly possible, if not quite as comfortable, to program in C# or in J#.
Even if you’ve decided to make a complete break with Microsoft and switch to Java or Delphi, you’ll find that after you learn those languages and frameworks, switching to .NET isn’t terribly difficult. The ideas behind programming in all those languages are, with few exceptions, identical. They’re differentiated by syntax and IDEs far more than they’re separated by concepts or capabilities.
VB doesn’t have an uncertain future. VB is a set of features. All the popular languages are mutating to adopt the features pioneered in classic VB and carried forward in VB.NET. The spirit of VB will live on, regardless of the syntax, platform, or framework.