Microsoft Visual Basic has the largest user base of any development language in the world, and the ranks are growing. Estimates put the number of users of Visual Basic at about 3 million. Once considered a hobbyist's language, Visual Basic has quickly gained the respect of serious developers and is now widely used in corporate and other commercial environments. Visual Basic .NET further raises the bar, as it now shares the common language runtime used by Visual C# .NET and other Microsoft .NET languages. It also shares the same IDE, debugging tools, and much more. In the past, there were many arguments about the utility of Visual Basic in building enterprise solutions. Much of this debate pitted the RAD attributes of Visual Basic against the power attributes of C++. Visual Basic was capable of doing amazing things, but often you had to resort to API calls and third-party components to get "under the hood" of Microsoft Windows. Now, the playing field is truly level. Visual Basic .NET's generous flexibility, combined with its focus on maintaining backward compatibility, has always made it an extremely powerful language. Unfortunately, these attributes also seem to encourage sloppy programming, and that simply won't do in today's fast-paced development environments.
For example, Visual Basic .NET will actually let you create what I call voodoo variables. A voodoo variable is a variable created on the fly simply by its name being referenced. If you haven't included the Option Explicit statement in a module or set it at the project level, you can create a voodoo variable by referencing the name of a variable not already declared or in use. Voodoo variables are often created by mistake, and they can be very difficult to debug. Visual Basic .NET shouldn't even allow you to turn off the requirement to explicitly declare variables. This feature is available for backward compatibility, but it has no place in modern programming—not in applications written for fun and certainly not in distributed applications.