Microsoft recently extended “It Just Works” compatibility for Visual Basic 6 applications through the full lifetime of Windows 8 (see this month’s Editor’s Note, “Old Soldiers Never Die”). Visual Basic 6 first shipped in 1998, so its apps will have at least 24 years of supported lifetime. Contrast that with the Microsoft .NET Framework 1.0 (2002), which is incompatible with Windows 7 (2009).
A student of mine named Eric once joked that Visual Basic 6 was “the un-killable cockroach” in the Windows ecosystem. That analogy goes deeper than you might think. Cockroaches are successful because they’re simple. They do what they need to do for their ecological niche and no more. Visual Basic 6 did what its creators intended for its market niche: enable very rapid development of limited programs by programmers of lesser experience. It was never meant for heavy-duty coders developing complex applications.
Visual Basic 6 accomplished its goals by abstracting away the complexity of the underlying Windows OS. Simple things were very simple to accomplish. On the other hand, complex things, such as dealing with threads, were impossible. My rule of thumb for Visual Basic 6 was: if I couldn’t do it within 10 minutes, I couldn’t do it at all.
Another key to the success of Visual Basic 6 was the much shorter learning curve demanded by its limited feature set. Learning to drive a bus takes much less time than learning to fly a fighter jet. Becoming a good Visual Basic 6 programmer took much less time than becoming a good C++ programmer, the primary alternative at the time.
When Microsoft made Visual Basic .NET “a full-fledged language,” the company loaded it up with all the power and concomitant complexity that C# has—threads, background operations and inheritance, to name just a few. It therefore required the same skill set as C# programming, the same learning curve and the same experience.
The people at Microsoft did that because that’s what they thought they heard the Visual Basic 6 community demanding. But Visual Basic 6 programmers epitomize the “silent majority,” a term popularized by U.S. President Richard Nixon in 1969 to describe his non-protesting, non-counterculture supporters in those turbulent years. Almost all Visual Basic 6 programmers were content with what Visual Basic 6 did. They were happy to be bus drivers: to leave the office at 5 p.m. (or 4:30 p.m. on a really nice day) instead of working until midnight; to play with their families on weekends instead of trudging back to the office; to sleep with their spouses instead of pulling another coding all-nighter and eating cold pizza for breakfast. They didn’t lament the lack of operator overloading or polymorphism in Visual Basic 6, so they didn’t say much.
The voices that Microsoft heard, however, came from the 3 percent of Visual Basic 6 bus drivers who actively wished to become fighter pilots. These guys took the time to attend conferences, to post questions on CompuServe forums, to respond to articles. Not content to merely fantasize about shooting a Sidewinder missile up the tailpipe of the car that had just cut them off in traffic, they demanded that Microsoft install afterburners on their busses, along with missiles, countermeasures and a head-up display. And Microsoft did.
But giving Visual Basic .NET to the Visual Basic 6 community was like raising a coyote as a domestic dog, then releasing him into the woods, shouting, “Hunt for your dinner as God intended, you magnificent, wild creature!” Most of them said, “Heck with that. I’m staying on my nice warm cushion by the fire while you open me a can of Alpo.” And Visual Basic 6 kept right on going.
Visual Basic 6 was not without faults, of course. OnError Resume Next? If one thing croaks, just keep right on going and see what happens? Probably not the best idea. But the rapid (and therefore cheaper) development of limited (and therefore cheaper) applications by lower-skilled (and therefore cheaper) personnel is an important solution to a very large class of problems.
LightSwitch is now trying to fill this niche, with mixed reviews (see bit.ly/n9crJj). It is, at best, a decade late.
The things that Visual Basic 6 did still need doing. Until and unless Microsoft brings out another tool that does these things, Visual Basic 6 will keep scuttling around. I’ll bet you a beer that Microsoft has to extend Visual Basic 6 support through Windows 9 and 10.
David S. Platt teaches Programming .NET at Harvard University Extension School and at companies all over the world. He’s the author of 11 programming books, including “Why Software Sucks” (Addison-Wesley Professional, 2006) and “Introducing Microsoft .NET” (Microsoft Press, 2002). Microsoft named him a Software Legend in 2002. He wonders whether he should tape down two of his daughter’s fingers so she learns how to count in octal. Contact him at rollthunder.com.
In my WP7.1 app I am trying to access a wcf web service which has implemented SSL.But the certificate is of self signed.Now when I try to access the service a I am getting exception of remote server not found.The same service is running fine with other platform's app.Please help me.
Sorry to digress from the main article, do we need to call flush and close on StreamWriter outside of using block. I thought that dispose would do the same thing.
More MSDN Magazine Blog entries >
Browse All MSDN Magazines
Subscribe to MSDN Flash newsletter
Receive the MSDN Flash e-mail newsletter every other week, with news and information personalized to your interests and areas of focus.