 |

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

|
 |