Interview with Greg Whitten conducted by Ethan Winer, published in QuickTALK volume 1, number 1 (1987) — To put it in context, this interview took place some time between the release of QuickBASIC 3.0 and 4.0. It was around the time QuickBASIC became more than a simple successor to BASCOM (released five years earlier) thanks to a reworked IDE and updated BASIC dialect.
If you've ever wondered where the "GW" in GWBASIC comes from, wonder no more — some of the real genius behind the development of Microsoft BASIC, BASCOM, and QuickBASIC is Greg Whitten. Greg was kind enough to take time away from his busy schedule as Director of Languages R&D at Microsoft to speak with us. Crescent owner Ethan Winer conducted this interview, in which Greg discusses his involvement in the development of BASIC, and shares his insight on the current state of the art in compilers.
Ethan Winer: Greg, tell us about your background with Microsoft, and how you came to be involved with BASIC.
Greg Whitten: I started with BASIC in 1970, working with the systems software on an HP-2000 BASIC timesharing system. I eventually re-wrote about half the entire system, and at the same time it paid my way through undergraduate school. While I was in graduate school at Harvard working on a PhD in numerical analysis, I bought an Intelligent Systems CompuColor 8001 microcomputer. That's how I got started in micro computing. I taught computer science for a year at Vanderbilt University, and then I joined Intelligent Systems as director of software.
That was in 1978, and we ported a number of the Microsoft products to the operating system that was running on their machines. We converted the CP/M versions of BASIC, FORTRAN, and the macro assembler and linker. I went to work for Microsoft in 1979 and finished the 8080 version of their BASIC compiler. Then we got the contract for the IBM BASIC compiler. Tim Patterson — author of the original MS DOS — and I worked on the BASCOM 1.0 compiler and runtime system. The first version of this compiler was fairly limited, really just a slight superset of BASICA.
EW: What aspect of the BASCOM development did you find the most difficult?
GW: Well, the runtime environment is very complex, because it is essentially a simulation of BASICA. BASICA is of course a total programming environment for BASIC. When you enter BASICA you could be in one of a variety of different screen modes, and it has to operate correctly from that state.
The compiler environment has to simulate this, unlike programs written in, say, FORTRAN or Pascal that have little interaction with the actual hardware. Those languages do everything through the operating system. But when you start up a BASIC program, it has to find out what stale the machine's in. There's a lot of hardware querying to find out where you're starting from.
EW: What about QuickBASIC — was that a total rewrite of BASCOM?
GW: No, it has really gone through a series of transformations. When we created IBM BASCOM 2.0 we added subprograms, some new graphics support, and we added large arrays. From that product we produced QuickBASIC 1.0, which is essentially a compiler without an environment. Then we did QuickBASIC 2.0, adding an editing environment written in C, which served as a shell to the compiler and runtime kept in memory. The compiler was not changed substantially for that release, aside from the ability to generate object code directly to memory.
QuickBASIC 3 is essentially another revision of that product. We added some more language features, and integrated debugging, as well as inline 8087 code generation.
EW: But QB 4 is obviously very different from the earlier versions.
GW: Yes, with QuickBASIC 4 we added quite a few language features. We added data types, recursion, long integers, true functions, the interlanguage calling convention, and we significantly speeded up performance in other areas.
I think it's pretty easy to see that BASIC is a very popular applications programming language. We added these features to make BASIC an easier language to program in. We extended the control structures, for example adding Select/Case and Do statements, which are ANSI constructs. QuickBASIC 4 is a pretty major investment in manpower.
EW: How many are people involved?
GW: If you count me, there are nine of us. I'm not the project leader, though I occasionally do some of the compiler work when not managing the rest of Languages development. There's one person working on the compiler, three people developing the runtime package, and four more doing work on the interpreter.
Lisp — the two other languages you'd consider in the same vein in terms of their execution speed. The ability to do an edit and then continue was a very difficult feature to implement, but once you've used it, you can't live without it!
EW: What advances do you envision for QuickBASIC in the future?
GW: We would like to make it easier to write applications programs, and to provide more expressiveness in the language. Of course supporting new operating environments is also important, and there is already a version of QuickBASIC 4 that runs under OS/2. Microsoft is definitely committed to making QuickBASIC the best BASIC available.