Visual Basic 2005 may be the latest incarnation of the 15 year old programming language, but an ongoing survey of SerachVB.com readers indicates that more developers are still coding in VB6 that in VB.NET. On top of that Visual Basic 9, code named Orcas, is due for release at the end of 2007. Each new release brings productivity enhancements but also questions about performance and migration.
VB 9 code-named Orcas, is slated for release with the next version of Visual Studio. Steven Lees, group program manager of VB at Microsoft, indicated at Tech Ed that VB9 will likely appear “sometime late” and that Microsoft will nail down a timetable for Orcas later.
Perhaps the biggest enhancement VB9 brings to the table is its ability to work with data. This is accomplished with features like object initializes, anonymous types, and full integration with LINQ, integration with LINQ, or the Language Integrated Query. As Mike Gunderloy wrote in “Let’s think about LINQ”:
“LINQ is designed as a general purpose query facility that will be baked right into the .Net framework. It allows traversal, projection, and filtering operations to be expressed in a declarative syntax in any .NET language, with benefits including compile-time syntax checking, static typing, and IntelliSense.”
In a Tech Ed session called Visual Basic today and tomorrow”, Lees described LINQ as an extensible system that works with “pretty much anything that can represent itself as a CLR type.” LINQ uses SQL-like syntax, Lees continued, “but there’s no database in sight.” LINQ technology supports five data domains –LINQ to DataSet, LINQ to SQL, LINQ to Entities, LINQ to XML and LINQ to objects. LINQ to SQL, which will bring raw SQL objects into LINQ, was previously referred to as DLINQ. In addition, LINQ to XML, which supports direct XML coding, used to be called XLINQ.
Entities refers to ADO.NET Entities, which is data mapping tool the ADO.NET group plans to have in preview form by the end of the year, Microsoft corporate vice president of development Soma Somasegar announced. This is much noise about the features in LINQ, but the reality is that a vast majority of VB developers know very little about it. A quick show of hands during Lees’ session showed that nearly everyone had used VB 6, about half had used VB 2005 and only a handful had even heard of LINQ.
VB 6 developers, and the VB 6 applications they built, will have a home in Vista. In a document entitled Support Statement for Visual Basic 6.0 on Windows Vista, Microsoft states “The Visual Basic 6.0 IDE will be supported on Windows Vista as part of the Visual Basic 6.0 Extended Support policy until March 2008?”
The document also indicates that runtime support that key VB 6 runtime files will ship as part of Vista and will be supported for the lifecycle of the OS, five years of mainstream support and five years of extended support. A list of key runtime files is included with the document. Binaries that will not be shipped with Vista are going to follow their planned support schedule.
As for VB 6 applications, Microsoft says the goal of the Visual Basic group is that VB 6 apps that work with Windows XP will wok with Vista. According to the document, “A set of applications written on the Visual Basic 6.0 runtime are being tested for compatibility between Windows XP and Windows Vista with a goal that applications work similarly on both operating systems.”
VB 9.0 is the version for “Orcas”, the codename for the version of Visual Studio that will follow Visual Studio 2005 at some as yet unannounced future date (maybe yearly 2008).
Keeping track of Microsoft’s doings is so important that we tend to seize on any little tidbit of information and try to build an entire story on it, whether there’s really enough these to justify a story or not. Microsoft recently made available for download the complete session abstracts for this year’s Professional Developer’s Conference (PDC), coming up in Los Angeles.
Here's the entire abstract, which is literally all of the information that Microsoft has so far released on VB 9.0:
“Visual Basic 9.0 will offer radical improvements in its ability to work with data in all its forms: as objects, as XML, as relational data. Join the language architects for a detailed discussion of features such as query comprehensions, object initializes and anonymous types that enable querying data in a more flexible, natural way than ever before. Also, get a glimpse into the future of dynamic programming in VB with coverage of new features intended to radically simplify working with dynamically typed data on the .NET platform.”
For a decade people have been predicting the demise of Visual Basic, and with VB.NET, nothing has changed. According to some specialists, 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. It is 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 Microsoft’s 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
- Edit-and-continue
- 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.
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.
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.
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 aren’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.