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 featuresa 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 frombut 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'syou guessed itcase 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 advantagein 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 kickeronce 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.