RegisterLog In/Log OutView Cart
O'Reilly Ron's VB Forum Ron's VB Forum
BooksSafari BookshelfConferencesO'Reilly NetworkO'Reilly GearLearning Lab
 


Traveling to
a tech show?

Hotel Search
Hotel Discounts
Discount Hotels
Chicago Hotels
Canada Hotels
California Hotels
Hotels




Date: Oct 13 1999
From: Dan Hodgson
To: ron@oreilly.com
Subject: VB origins

Ron,

I'm doing a study on the origins of computer languages, and am particularly interested in VB. I'm not so much interested in HOW it was developed but WHY. I wonder if you can help me or point me in the right direction.

-- Dan


Dan,

Visual Basic for Applications, the language component of Visual Basic, is a relatively straightforward variation on the BASIC language (which is presumably an acronym for Beginner's All-Purpose Symbolic Instruction Code) first introduced by John Kemeny and Thomas Kurtz at Dartmouth College in 1964. Its most immediate predecessors are two language products from Microsoft, QBASIC (which was included with every copy of Windows 3.x and Windows 95) and QuickBasic (a more full-featured language product that produced a compiled executable). The core Visual Basic for Applications programming language is documented in our book VB & VBA in a Nutshell: The Language, written by Paul Lomax.

Actually, the language component of Visual Basic came to be known as VBA only after Microsoft released Visual Basic for Applications, a hosted development environment that first appeared in Microsoft Project and Microsoft Excel. Up to that point, no one really thought of drawing any clear separation between the language component of Visual Basic and its controls component; only after Visual Basic was released and the paradigms for application development underwent significant change did that distinction become significant. Nevertheless, that separation was very real from the outset, when Microsoft grafted their QBASIC programming language onto a graphical interface design program that they had bought from Alan Cooper.

So why Basic/VBA as the core language of Microsoft's pioneering rapid application development product? I think that were two clear and rather closely related reasons. The first relates to the state of Windows programming in 1991, when (if I recall my dates correctly) Visual Basic 1.0 was released. The second relates to the Basic language itself.

It was immediately clear that Windows 3.0, which Microsoft released in May 1990, would be an enormously successful operating system, as sales far exceeded Microsoft's most optimistic expectations on a consistent basis. However, from the vantage point of 1990, there were some real questions of whether Microsoft would be able to sustain interest in and support for Windows over a longer period of time; many thought that Windows might just be a flash in the pain. Two issues were especially troublesome:

  • Although developers had created a large number of applications that ran under Windows, there were not nearly enough to support a major operating system. In fact, one of Windows' major advantages -- that it allowed you to run DOS applications -- was a two-edged sword: why bother with Windows (with its greater hardware requirements and drag on system performance) when most users spent most of their time running applications in a "DOS box" anyway? And for the most part, many users spent significant amounts of their time using DOS within Windows, since Windows versions of their favorite commerical and corporate software applications and utilities simply weren't available.

  • While there was a compelling need for more Windows software, developers were very slow to respond to meet that demand. Windows development required that you know C or C++ and be familiar with event-driven programming (something foreign to most programmers in 1990) and the Windows Software Development Kit (SDK). (If you want to take a look at what's involved in writing a Windows program in C, take a look at my column entitled VB a Toy Language.) Those able to try Windows programming had to be very patient to contend with both a rather steep learning curve and the sometimes ideosyncratic behavior of Windows itself.

The long-term success of Windows, in other words, depended on a small number of elite, highly skilled programmers. From Microsoft's viewpoint, this situation was absolutely unacceptable for two major reasons, one practical and one ideological:

  • Practically, the fact that Windows' success depended on a small number of developers who could produce applications only very slowly threatened to slow and perhaps even completely undermine the success of Windows. If applications couldn't be developed easily and in abundance, both developers and users might eventually turn away from the Windows platform in favor of some alternative.

  • Ideologically, Microsoft's (and Bill Gates') vision of computing has always been one that emphasizes empowerment and inclusion rather than elitism and exclusion. From this point of view, the fact that Windows development rested in the hands of an elite -- and, without some dramatic change in the way in which Windows applications were developed, was likely to remain in the hands of that elite -- was clearly undesirable.

Visual Basic -- and the VBA language -- represented a partial solution to this dilemma. From its inception, BASIC had been developed as an easy-to-learn, easy-to-use language that would be accessible to anyone who wanted to learn to program. And in fact, the contempt that most professional programmers felt toward Basic offers eloquent testimony to its success.

But although VBA is easy enough to learn and use, it was not the central or the really innovative component in Visual Basic. Instead, its centerpiece -- particularly in the early versions of Visual Basic, which lacked the flexibility and power of today's product -- was its interface design component and its controls. This made it possible to create windows without writing any code (a window or form was automatically added to any project), and to populate them with interface elements by simply selecting a control from a toolbox, dragging it, and dropping it onto a form. In a variation of their "Basic is a toy language" offensive, critics derisively labeled Visual Basic a drawing program: programmers with absolutely no knowledge of Windows could "draw" an interface and get it to do something useful (or perhaps not so useful) by writing tiny snippets of code.

In some respects, critics were quite right: by combining Basic and a form and controls design package, Microsoft had significantly lowered the barrier to Windows programming. Programmers lacking the extensive knowledge demanded by the Windows SDK could now produce surprisingly professional applications in an amazingly short period of time. So revolutionary was Microsoft's Visual Basic product that it marked the emergence of an entirely new category of programming package, the rapid application development (or RAD) tool.

Since 1990, Visual Basic has continued to evolve. Currently in it's sixth version, it's now used less as an interface design program for building Windows clients (although that is still an important use) than as a tool for building assorted middle-tier components in n-tier applications. The core VBA language has been enhanced, but it remains remarkably similar to the language included in Visual Basic 1.0. In that sense, as I argued in my article Scripting & the Universal Batch Language, VBA is merely the glue that can be used to tie together any of a variety of components -- user interface components, database access components, business logic components, messaging componets, web server components -- in a single application or software component.

-- Ron

Return to: Ron's Archive



O'Reilly Home | Privacy Policy

© 2007 O'Reilly Media, Inc.
Website: | Customer Service: | Book issues:

All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.