A Brief History of BASIC
2.1 Dartmouth BASIC (1964)
John G. Kemeny and Thomas E. Kurtz created BASIC at Dartmouth College. The first programs ran on 1 May 1964 on a GE-225 computer through the Dartmouth Time-Sharing System (DTSS), which let many students use the computer at once from teletype terminals. The first edition had about 14 statements: LET, PRINT, END, FOR, NEXT, GOTO, IF...THEN, GOSUB, RETURN, DEF, READ, DATA, DIM, REM. Every line had a number, and IF could only jump to a line number. INPUT arrived in a later edition. Dartmouth BASIC was *compiled* (fast, for a time-sharing system), not interpreted.
2.2 Minicomputers and the spread of BASIC (late 1960s–1970s)
Time-sharing vendors and minicomputer makers (DEC, HP, Data General, Wang) shipped their own BASICs. DEC's BASIC-PLUS on RSTS/E was especially influential, adding string functions and other features that microcomputer BASICs later copied. David Ahl's *101 BASIC Computer Games* (1973) and *BASIC Computer Games* (1978) spread program listings everywhere.
2.3 Altair BASIC and Microsoft (1975)
Bill Gates, Paul Allen, and Monte Davidoff wrote Altair BASIC for the MITS Altair 8800 — Microsoft's first product, fitting an interpreter into 4 KB of memory. Microsoft BASIC was then licensed to almost every home-computer maker.
2.4 The home-computer era (1977–1990)
Apple II (1977) Integer BASIC (Wozniak), then Applesoft BASIC (Microsoft)
HGR hi-res graphics, HOME, HTAB/VTAB Commodore PET / VIC-20 / C64 (1982) Commodore BASIC V2 (Microsoft)
No graphics/sound commands — everything via PEEK/POKE (e.g., POKE 53280,0 sets the border color) Level I / Level II BASIC Level II by Microsoft ZX Spectrum (1982)
Single-key keyword entry, BORDER, INK, PAPER, BEEP, PLOT, DRAW BBC Micro (1981) BBC BASIC (Sophie Wilson, Acorn)
Named procedures DEF PROC/DEF FN, REPEAT...UNTIL, local variables, built-in assembler MSX, Amstrad CPC, Atari 8-bit
MSX BASIC, Locomotive BASIC, Atari BASIC Graphics and sound commands
A whole generation learned programming by typing listings from magazines and books into these machines.
2.5 PC BASICs: BASICA and GW-BASIC (1981–1983)
The IBM PC shipped with Cassette BASIC in ROM and BASICA on disk. Microsoft's GW-BASIC (1983) was the stand-alone version for PC compatibles running MS-DOS. Both were line-numbered interpreters with commands such as SCREEN, LINE, CIRCLE, PLAY, and SOUND. Microsoft open-sourced the GW-BASIC assembly source on GitHub in 2020 (for historical reference).
2.6 Structured BASIC: QuickBASIC and QBasic (1985–1991)
True BASIC (1985), by Kemeny and Kurtz themselves, answered critics who called BASIC unstructured.
Microsoft QuickBASIC (1985; 4.5 in 1988) brought a full-screen IDE, a compiler, optional line numbers, SUB/FUNCTION, block IF, SELECT CASE, DO...LOOP, and user-defined TYPEs.
QBasic (1991) was the interpreter-only version of QuickBASIC included with MS-DOS 5.0 and later (and Windows 95/98). It came with the games *Gorillas* and *Nibbles*. QBasic syntax is the foundation of QB64 and this course.
Microsoft PDS / BASIC 7.1 (Professional Development System) extended QuickBASIC for professionals.
2.7 Visual Basic (1991–1998)
Visual Basic 1.0 (May 1991) combined a forms designer (based on Alan Cooper's "Ruby" prototype) with an event-driven BASIC. You drew buttons and text boxes, then wrote code for their events (Command1_Click). VB became one of the most widely used languages of the 1990s. VB6 (1998) was the last classic version; its runtime still ships with Windows.
2.8 VBA (1993–today)
Visual Basic for Applications debuted in Excel 5.0 (1993) and spread across Microsoft Office (Word, Access, PowerPoint, Outlook). It is VB6's language embedded in a host application, and remains the standard way to write Office macros on the desktop.
2.9 Visual Basic .NET (2002–today)
Visual Basic .NET (2002) rebuilt VB on the .NET Framework: full object orientation, structured exception handling, generics, LINQ, Async/Await. It is not backward compatible with VB6. In 2020 Microsoft announced that VB will be supported on modern .NET but the language itself will not gain major new features (it is "stable").
2.10 Modern dialects
QB64 / QB64 Phoenix Edition QB64 ~2007 (Galleon); QB64-PE fork 2022
QBasic-compatible compiler (via C++), 32-bit graphics, images, fonts, sound, networking, cross-platform 2004 (Andre Victor and contributors)
QuickBASIC-like syntax, native compiler (GCC/GAS backends), pointers, OOP, inline asm, threads, -lang qb compatibility 1998 (Fantaisie Software)
Commercial, compact native executables, huge command library, cross-platform GUI BlitzBasic / Blitz3D / BlitzMax 1990s Amiga; BlitzMax 2004 (Mark Sibly) Game-oriented; now open source
Tiny cross-platform interpreter (desktop, Android) Microsoft Small Basic
14 keywords, Turtle graphics, for children and beginners BBC BASIC for SDL 2.0 Richard Russell (2010s)
Modern cross-platform BBC BASIC (Windows, Linux, macOS, Android, browser) 1999 (Benoît Minisini) VB-like IDE and language for Linux B4X (B4A, B4i, B4J, B4R) 2010 (Anywhere Software)
BASIC-like language for Android, iOS, desktop, Arduino Xojo (formerly REALbasic) 1998; renamed 2013
Commercial, object-oriented, cross-platform desktop, web, mobile