By George Mack,
4th edition revision 3, copyright January 2002 - January 2011
This page last updated on January 24 2011.
Home General Information Index
Preface
The Origins
Microsoft and the IBM PC
The Microsoft Windows Graphical Operating Environment
Visual Basic is Born
The Evolution of Visual Basic
Visual Basic .NET
Visual Basic Version Summary
A Note on Syntax
Having taught Computer Science off-and-on for over 25 years, I concluded some time ago that it's not enough for a scholar to merely understand the state of the field today. It is also useful, and sometimes necessary, to be aware of the history and origins of today's science. When I decided to begin publishing some of my course material on the Web, it seemed appropriate to begin with this little monograph on the history of Visual Basic. So here it is, much as I would have presented it in the first lecture of an introductory course on the subject, expanded somewhat in its most recent editions.
As I find the time to search further afield using the Web, I discover other sites presenting complementary information. Too, Microsoft has continued to evolve the Visual Basic products, leading to revisions resulting in this the 4th edition. Check back for further updates from time to time.
Caveat:
The information contained in this article was garnered from many sources and researched over a period of several years. Any errors or omissions are entirely my own.
Feedback:
Should you have any comments or
questions, or wish to contribute further information, please email me
at
George Mack, Montreal, April 28 2004.
Dartmouth College, of Dartmouth NH, USA, made a commitment in 1963 to make all its computers easily available to students. To this end, they developed the first fully functional time sharing system, running on a General Electric mainframe computer. At the same time, mathematics professors John G. Kemeny and Thomas E. Kurtz developed the Beginner's All-purpose Symbolic Instruction Code (BASIC) language as an instructional tool for training novice programmers in an interactive environment. Kemeny's distinguished career included service as an assistant to both John von Neumann and Albert Einstein, and chairing the commission that investigated the Three Mile Island nuclear power plant accident.
Among the design goals of BASIC were
These features of BASIC made it easy and cheap to implement, and thus it quickly became the first (and sometimes the only) high level language made available on new mini- and microcomputers. BASIC also rapidly became available on newer time-sharing mainframe and super-computers. During the heyday of business minicomputers, much application programming was done in BASIC.
In later years, Kemeny and Kurtz devoted considerable energy to the promotion of structured BASIC.
In 1975, Microsoft launched its first product: a BASIC compiler for the MITS Altair, an early kit microcomputer.
When IBM launched its Personal Computer (PC), the software supplied included small ROM- and disk-based versions of BASIC. IBM's PC-DOS (written by Microsoft) included an expanded, disk-based version of BASIC called BASICA (advanced BASIC). Microsoft's MS-DOS for PC compatibles included a similar program called GWBASIC. The difference between BASICA and GWBASIC was that BASICA required the built-in ROM BASIC to be present.
Both BASICA and GWBASIC were interpreters that translate and execute one instruction at a time. Interpreters are easier to implement and require no memory for object code, but the code runs much slower than compiled programs.
QuickBASIC was a BASIC compiler launched around 1983 for commercial programmers who wanted to write larger programs in BASIC on PC's. Programs compiled with QuickBASIC ran four to ten times faster than under BASICA or GWBASIC. Microsoft claimed that, on an 8-MHZ IBM PC-AT, the QuickBASIC compiler could translate code at 150,000 lines per minutes (fast compared to many compilers for other languages). Furthermore, QuickBASIC was upwards compatible from the BASIC interpreters. QuickBASIC went through several upgrades, ending with version 4.5 released in 1988.
In 1987, IBM launched the PS/2 personal computers. Newer IBM and compatible PCS stopped including ROM BASIC with the hardware. Other factors, including the rapid development of applications software and increasingly sophisticated compiled languages, combined to make the original BASIC interpreters obsolete. Microsoft shipped a replacement, called QBASIC, with MS-DOS versions 5 (May 1991) and 6 (March 1993). QBASIC is a disk-based interpreter system that also shipped with Windows 95. QBASIC implements the same language as QuickBASIC, but does not include some of the advanced debugging commands. Internal memory management is also different.
A number of improvements distinguish QuickBASIC and QBASIC (together, QBs) from earlier BASIC interpreters. Source files are saved in ASCII format, whereas earlier BASIC systems stored compressed encoded source files. Both QBs include a full screen, menu-driven editor. The newer languages allow a maximum program/data space of 160K, where the previous limit was 64K. New data types were added for increased computing power.
Although not the first to do so, Xerox Corporation's Palo Alto Research Center (Xerox PARC) demonstrated Graphical User Environments/Interfaces (GUIs) on small computer systems the around 1975. Located in Silicon Valley, near one of the world's leading schools of computer science (Stanford University), and founded in 1970, Xerox PARC was responsible for many stellar innovations in computing and electronics. Xerox went on to introduce products featuring GUIs in the early 1980's. It is certain that neither Apple nor Microsoft had anything to do with the original conception of GUIs.
The Apple Computer company introduced two machines featuring GUIs in the 1980s. The first, named the Lisa (1983), was an evolutionary advance for Apple although not a commercial success. The second model was the Macintosh (1984), first in a product line that has continued to this date.
In 1985, four years after the introduction of the IBM PC, Microsoft launched version 1 of its Windows interface. Early versions of Windows were add-ons that ran “on top of” the MS-DOS operating system. Versions 1 and 2 of Windows included a primitive user interface similar to the Windows Explorer. To run a program under these systems, one located the file and double-clicked it.
Windows 3.0, introduced in 1990, included the first predecessor of the “desktop” of today's Windows systems. An updated version, Windows 3.1, was launched in April 1992, and included some key technological advances, including the powerful TrueType font system licensed from Apple. This was the version that “caught fire” and began a revolution in PC-compatible software markets. Windows 95 was the first version that stood alone and did not require the DOS operating system to run. It was also the first version to run code in the 32-bit “native” mode of newer Intel processors such as the 486 and Pentium families. Windows 1, 2 and 3.x ran code in a slower 16-bit “compatibility” mode.
From the late 1990's, the pace of
Windows releases accelerated with the shipment of Windows NT, Windows
98 and 98SE, Windows ME, Windows 2000, Windows XP (in October 2001) and
Windows Server 2003.
Alan Cooper is considered the father of Visual Basic. In 1987, the then Director of Applications Software for Coactive Computing Corporation wrote a program called Ruby that delivered visual programming to the average programmer/user.
The increasing popularity and sophistication of graphical user interfaces (GUIs) led Microsoft to introduce Visual Basic (not spelled with capitals) in 1991. Tom Button, Group Product Manager for Applications Programmability at Microsoft, headed the team that produced QuickBASIC and QBASIC. This same group developed Visual Basic by combining Ruby with QuickBASIC.
On June 15 th 2001, a page on Microsoft's Web site entitled “Visual Basic 10th Birthday” included the following paragraph, entitled “Thunder”.
Initially, Visual Basic 1.0 was intended to be a very tactical product. Microsoft had several initiatives in development leading up to Visual Basic 1.0, all of which were intended to develop into long-term, strategic, graphical, object oriented programming tools. As is typical with version 1.0 products, however, the Visual Basic 1.0 product team was forced to cut features from its long list of ideas in order to actually deliver the product to market. As a result, the first Visual Basic offering included little more than the Embedded Basic technology that had originally shipped in Microsoft QuickBasic 4.0 (Microsoft's threaded p-code and incremental compiler) and a simple shell design tool originally licensed for but never used in Windows 3.0. Approximately 12 months after development on version 1.0 began, Microsoft released this “placeholder” development tool, code-named “Thunder”.
The Visual Basic (VB) system is a fourth generation programming system which produces much of the code itself as the programmer designs the interface for his or her application. Microsoft surveys in the late 1990's showed that roughly two thirds of all business applications programming on PCs was being done in Visual Basic.
At one time Visual Basic could produce code for both DOS and Windows applications. Today, however, Microsoft considers DOS to be obsolete and promotes the Windows environment exclusively. QBASIC continued to ship on the Windows CD-ROM up to (at least) version 98SE and so, at the time of writing, may still be available or usable.
When Visual Basic 1.0 was released, Bill Gates, Chairman and CEO of Microsoft, described it as 'awesome'. Steve Gibson in Infoworld said Visual Basic is a 'stunning new miracle' and would 'dramatically change the way people feel about and use [Microsoft] Windows.' Stewart Alsop was quoted in the New York Times as saying Visual Basic is 'the perfect programming environment for the 1990's'.
VB's success may be largely due to the simplification that it brought to Windows application programming. Prior to Visual Basic, Windows applications programming required mastery of huge subroutine libraries and hundred of lines of code to create even simple screen elements. VB eliminates the need to write code for GUI input/output, thus reducing by orders of magnitude the length of code and time to develop an application. Charles Petzold, author of many of the standard reference works on Windows programming in C, was quoted in the New York Times as saying “For those of us who make our living explaining the complexities of Windows programming to programmers, Visual Basic poses a real threat to our livelihood”.
However, successful programming in this system requires an understanding of asynchronous event-driven multi-programming, networked, client-server and database architectures, and therefore it was suggested that QBASIC and other third generation languages still better met the design goals that Kurtz and Kemeny originally set, i.e. to be easy to learn and rapidly useful for a wide range of simple programming problems.
Visual Basic 1.0 for Windows was first released on May 20, 1991 at the Windows World convention in Atlanta Georgia. In September 1992, Microsoft announced Microsoft Visual Basic for MS-DOS in Standard and Professional editions. Like Visual Basic for Windows, this version combined the ease of graphical design with the power and versatility of traditional programming. Developers simply drew the user interface and attached code that responded to events. However, following the release of Windows 3.1 in March 1992 it became apparent that the DOS environment had come to the end of its useful life. The last version of MS-DOS, 6.22, was released in 1994.
VB version 2.0 for Windows (November 1992) was faster, more powerful and easier to use than version 1. VB 2 was also available in a freeware student release called the Primer edition. Visual Basic 3.0 (1993) added tools to access and control databases and Object Linking and Embedding (OLE) version 2. It came in Standard and Professional versions.
A superset of VB, called Visual Basic for Applications (VBA), was released as part of Microsoft Excel 5 and Microsoft Project 4 in 1993. Designed to supplant macro programming facilities in various products, it has since become the internal programming language of the Microsoft Office family of products, and is available for license by other software companies.
Visual Basic 4 was released in 1995 and supported the new Windows 95 family of 32-bit operating systems. The Professional Edition could also compile code to run on the older 16-bit Windows 3.x systems. Visual Basic Scripting Edition (VBScript) was also announced in 1995. VBScript is used to write embedded code for inclusion in web pages, although not all web browsers will run VBScript.
With the introduction of Visual Basic version 5 in early 1997, 16-bit systems were no longer supported. Between versions 4 and 5, significant changes were made in the user interface. Visual Basic 5 added, among other things, the ability to create true executables and to create your own custom controls. It also supported Microsoft's Active-X technology.
Visual Basic 5 was available in Standard (Learning), Professional and Enterprise Editions. A free edition, called Control Creation Edition, could be downloaded from www.microsoft.com, and was included with many textbooks. Visual Basic 5 was also included as part of a package known as Visual Studio 97.
Visual Basic 6 (VB6) was introduced in 1998 and was included as part of a package known as Visual Studio 6.0 that also included Microsoft's Visual C++ development system. VB6 added new capabilities in the areas of data access, Internet features, controls, component creation, language features and wizards. To quote Microsoft's web site, “Visual Basic 6.0 features provide graphical, integrated data access to any ODBC or OLE DB data source, and additional database design tools for Oracle and Microsoft SQL Server™-based databases. New Web development features bring the easy-to-use, component-based programming model of Visual Basic to the creation of HTML- and Dynamic HTML (DHTML)-based applications.” Many organizations are still using this version today.
Following these rapid releases, there was a hiatus of almost six years, during which time Microsoft's vision of systems architecture underwent radical changes. The effects of these changes were seen in the release of Visual Basic 7, sometimes referred to as VB7 or Visual Basic .NET, in February 2002. This product was conceived as a part of Microsoft's .NET software initiative, designed to produce XML-based applications for the Microsoft Internet environment. Section 1.0 - Introduction - of the Visual Basic .NET Language Specification (MSDN Library, April 2003) summed up Microsoft's then-current vision of VB nicely:
From Visual Basic 1.0, which
radically
simplified writing Windows applications, to Visual Basic 4.0, which
helped establish COM2 as the standard Windows object architecture, the
Visual Basic language has been a cornerstone of the Windows platform
for (more than) a decade.
Now, as applications are evolving from a standalone executable sitting
on a user's hard drive to a distributed application delivered by a Web
server across the Internet, Microsoft is expanding away from simply
providing an operating system: Microsoft is providing XML Web services
as well. A key part of Microsoft's thrust into this new XML Web
services space is the .NET Framework, designed from the ground up to
allow developers to write and deploy complex Web applications easily.
Visual Basic .NET is a pillar of the .NET Framework, and yet another
step forward in evolution of the language. It is a high level
programming language for the .NET Framework, and provides the easiest
point of entry to .NET.
The Language Specification continued with Section 1.1 - Design Principles of Visual Basic .NET - as follows:
Visual Basic .NET reflects the following design principles:
These principles complement the original design principles of Visual Basic:
The Visual Studio development system underwent major revisions with this release. More importantly, Microsoft re-engineered Visual Basic from the ground up, including full object-based programming facilities and complete integration with the .NET Framework Common Language Runtime (CLR). Another major change was the separation of the forms designer features into a package called Windows Forms that could be used with other Microsoft languages such as C++ and J#.
In this author's opinion, some re-training will be required for existing VB programmers making the switch to .NET. The amount of this retraining will vary considerably depending on the student. Furthermore, to fully understand and make the best use of VB .NET will require knowledge of object oriented programming concepts and techniques.
A 2002 Microsoft Web article said, “At first glance, it may appear to you that Visual Basic .NET is so radically different from what you know that you will have to learn it all over again.” This author's experience has been that the basic concepts of programming Windows forms and the basic event model have not changed. Many of the Visual Basic and BASIC language features are also still available, often in improved forms.
On the other hand, much of the syntax and many of the (names and semantics of) objects, properties, methods and events have changed. The data types have been reworked to align them with other major languages and with the .NET CLR, thus guaranteeing interoperability between languages with type safety. The addition of an optional Strict typing compiler mode can be considered a major improvement which, in this author's opinion, should be used in every project. And the existing language runtime features now coexist with an entire class library that provides equivalent and augmented features across all .NET languages.
The .NET Framework also provides new and improved models for software security and installation/deployment. For more information on changes in Visual Basic .NET, see the article Upgrading from Visual Basic 6.0 on the Microsoft Web site.
With the separation of Windows Forms and the addition of a Console class for line oriented input/output, Microsoft has revived the BASIC language. Visual Basic .NET is in fact an object oriented BASIC language which can be programmed in a line oriented environment. Thus, the complaint voiced by some that VB, because of its event-driven nature, is not suitable for a first course in programming, is no longer valid. This also means that the QBASIC product is no longer required.
A second version of the VB .NET product (version 7.1, also known as Visual Basic .NET 2003) was released in April 2003. This version features programming tools for Pocket PCs and other mobile devices; better XML features; support for Windows Server 2003; better Framework runtime performance; a better VB 6 upgrade wizard; an improved debugger; better IDE startup and run performance; new ADO.NET managed data providers for Oracle 7i, Oracle 8i, and ODBC data sources; and reliability improvements.
In the 18 months following VB .NET's release, Microsoft continued to ship VBA version 6 with its Office 2000 and Office XP suites. The company also released packages called Interop Assemblies that permitted .NET programmers to use Microsoft Office and other existing products from within .NET code. Then, in October 2003, Microsoft released its Office 2003 products, which were the first to include Visual Basic .NET for Applications.
Addendum – February 16 2009.
On November 7, 2005, Microsoft released Visual Studio 2005, which included Visual Basic 8 and the .NET Framework version 2. On February 27th, 2008, Microsoft launched Visual Studio 2008 including Visual Basic 9 and the .NET Framework version 3.5 (it was actually released in November 2007).
Addendum - January 2011
On April 12, 2010, Microsoft released Visual studio 2010 and the .NET Framework version 4. It had been in pre-release since November 2008.
The evolution of Visual Basic can be summarized by the following table:
Version 1 (for Windows) – May 20, 1991 |
Version 1 (for MS-DOS) – September 1992 |
Version 2 – November 1992 |
Version 3 – 1993 |
VBA (VB for Applications) – 1993 |
Version 4 – 1995 – 16- and 32-bit support |
Version 5 – 1997 – no 16-bit support |
Version 6 – 1998 (part of Visual Studio) |
Version 7 (.NET) – February 2002 |
Version 7.1 (.NET 2003) – April 2003 |
VBA .NET for Office 2003 – October 2003 |
Version 8 (.NET 2.0, Visual Studio 2005) – November 2005 |
Version 9 (.NET 3.5, Visual Studio 2008) – released November 2007 |
Version 10 (Visual Studio 2010 and .NET Framework 4.0) – released April 12 2010 |
The words BASIC, GWBASIC, BASICA, QuickBASIC, QBASIC and Visual Basic are all written using the original capitalization of their creators.