In this reprint from the August 2012 issue of Game Developer magazine, writer John Szczepaniak celebrated the 48th anniversary of BASIC programming language by asking its creators and early advocates about its inception, history, and influence on the modern game industry. BASIC turns 50 this year, and in honor of the occasion we've taken the liberty of reprinting Szczepaniak's extensive article. The BASIC programming language, or Beginner's All-purpose Symbolic Instruction Code, turned 48 this year. That's an extraordinarily long life for tech -- even longer than the commercial video game industry has been around. Since its inception, BASIC has proliferated from a single source to include now over 280 variations and growing. Just about every single model of computer (including a few game consoles) has had at least one variant. Many veteran game developers got started working with BASIC out of their bedrooms on early personal computers, and BASIC remains popular with hobbyist coders. The fathers of the original Dartmouth BASIC are Dr. Thomas Kurts and the late Dr. John Kemeny, who died in 1992. Kurtz, who turned 84 this year, spoke with absolute clarity as he recounted BASIC's launch. "That first BASIC saw the light of day on May 1, 1964, at 4 a.m. We were a team, but [Kemeny] was always the team leader. He did the politicking and the money-raising that was always necessary while I attended to the details. But he was always careful to give me full credit for my share of the project, whatever the project. I had already used the word BASIC for a statistics text I wrote several years earlier [Basic Statistics, 1963]. John Kemeny liked acronyms, and so we settled on BASIC, for which he devised the expansion "Basic All-purpose Symbolic Instruction Code.' By the way, it has always been 'Symbolic' and never 'Simplified.'"
Basic Beginnings
Kurtz was first introduced to computers in 1951, when he spent the summer at the Institute for Numerical Analysis at UCLA, which was in the process of building the Standard Western Automatic Computer [SWAC], a clunky contraption that used both vacuum tubes and Williams tubes for internal memory. He created a program that used SWAC to deal with tail probabilities for statistical distributions. Five years later he met Kemeny. "Although John Kemeny had been at Princeton while I was a grad student there, I didn't meet him until he was recruiting for Dartmouth in 1956," Kurtz said. "I was recruited to teach statistics, among other things, and it turned out that IBM, MIT, and UCLA were establishing regional computer centers in the East and the West. To earn extra money I was made a "research associate" in this effort and, even before I showed up at Dartmouth for my first class, I attended a course at MIT on Share Assembly Language (SAP) for the IBM-704." Dr. Thomas Kurts (left) and the late Dr. John Kemeny, progenitors of Dartmouth BASIC, seen above in an early promotional photograph for True BASIC. But SAP was complicated, and Kemeny wanted to make programming accessible for students without a science background, because those students often become future decision-makers in business and government. "In some of my talks in those early days, I called programming in BASIC a 'learning machine,'" Kurtz said. "I've always felt that being able to program meant that one had to develop the ability to abstract, to construct 'mental models' of something or other. I feel that this ability leads to being able to make contributions in fields other than the sciences." So they needed a programming language that was more accessible than Assembly. "To make SAP more palatable to nonprogrammers at Dartmouth, John Kemeny devised DARSIMCO, Dartmouth Simplified Code, by presenting SAP in terms of three-instruction sequences," Kurtz explained. For example, to perform A + B = C, you would write: LDA A FAD B STO C DARSIMCO and SAP were both abandoned in 1957, when FORTRAN arrived at Dartmouth.
"BASIC was the only widely available interactive language. Smalltalk? Lisp? Logo? MUMPS? They didn't stand a chance against BASIC."
Although higher-level languages were generally believed to be inefficient compared to assembly language, Kurtz discovered that coding in higher-level languages saved both computer usage time -- which was a valuable and limited commodity -- as well as his personal time. So he continued to work with higher-level languages that would inform BASIC's development later on. In 1959, an undergraduate student without a computer background, influenced by FORTRAN, prepared a higher-level language and compiler he called DART for the LGP-30 computer (a rotating drum machine), which caught Kurtz's attention. Around 1961, Kurtz and several students worked on an ALGOL compiler for the LGP-30, which was later modified to be self-contained and named SCALP. This new language was subsequently taught to hundreds of students until BASIC replaced it. Meanwhile, Kemeny worked on one more important language in 1962 before BASIC, again for the LGP-30. As Kurtz explained: "John Kemeny devised a simplified language for that environment he called DOPE, 'Dartmouth Oversimplified Programming Environment,' which anticipated BASIC in having one instruction per line and having instructions such as: 5 + A B C to indicate 'Add A + B and put the result in C.' This naturally led to the BASIC form 5 LET C = A + B." DARSIMCO, DART, ALGOL 30, SCALP, and DOPE didn't last long enough and weren't massively successful, but they all influenced Kemeny and Kurtz with regard to BASIC's fundamental principles, which he explained as: A) We made no distinction between floating-point arithmetic; we used only double precision floating-point internally, and adopted several strategies to make loop termination come out right. B) No format-control on INPUT and default format for printed output. C) One line, one statement. D) Since we needed line numbers to facilitate editing (this was before WYSIWYG screen editors), we used these line numbers as GOTO targets. E) The word LET came from our mathematics background, because we are always saying things like "Let G be an Abelian Group." Furthermore, LET was required for assignment statements so that all statements started with a keyword. This made understanding things like X = Y + Z easier for nonscientists. For logical expressions, we used IF X = Y + Z THEN... while for assignments we used LET X = Y + Z. F) No nonobvious punctations, like the ALGOL semicolon to terminate statements, or the mysterious FORTRAN IF (A) 100, 200, 300. There is no comma allowed after the (A). Along the same line; we used ordinary-sounding English words for the commands to the time-sharing system. HELLO rather than LOGON, GOODBYE rather than LOGOFF, NEW to create a new program, OLD to retrieve an existing program, and so on. Interestingly enough, BASIC didn't support the INPUT statement until its third version, meaning that for the first two years it wasn't actually an interactive language -- obviously making game creation rather difficult!
Basic Time Sharing
The other major factor in BASIC's widespread adoption was the development of time sharing. With a batch computing system, it could take hours, or even days, for a program's results to arrive. Less-intuitive languages were easier to make mistakes with, and those mistakes would waste precious computer access. Time sharing allowed several people to work on one computer simultaneously, maximizing computer time. Kurtz described the first time-sharing operating system at Dartmouth thusly: "Two Dartmouth students, Mike Busch and John McGeachie, developed a time-sharing operating system for the combination General Electric GE-235 computer and the GE Datanet-30 front-end communications controller. This was done simultaneously with the development of BASIC and, in many ways, was more fundamental to our goals at Dartmouth than BASIC itself. GE immediately took what we had done and developed a nationwide time-sharing network. They used regionally located centers, as the cost of long-distance communication at that time was too expensive. It was in one of these centers in Seattle that Bill Gates was first introduced to computing and BASIC. My best guess is that he was about 13 years old at the time." Kurtz and the Dartmouth team continued to refine BASIC, adding INPUT, RANDOMIZE, and ON-GOTO statements among many other revisions, until it hit its sixth edition in 1971, which remained largely unchanged for several years. Since BASIC was included with General Electric's time-sharing systems, it continued to spread until it became the most widely used programming language in the world. According to Kurtz, "At one point, around 1974, when ANSI initiated a standards effort for BASIC, it was used on more time-sharing networks, of which there were over a hundred at the time, than any other language -- my recollection is more than 80." It was around the time of the sixth edition that David Ahl, author of the influential book 101 Basic Computer Games, was introduced to BASIC. "I accepted a position at Digital Equipment Corporation in late 1969 in the PDP-8 Group and soon got involved in marketing minicomputers to schools and colleges," he said. "At the time, the only high-level language on DEC's smallest computers was FOCAL. However, because of the pioneering work at Dartmouth by John Kemeny and Tom Kurtz in developing BASIC and related educational applications, most colleges and high schools wanted a computer that spoke BASIC." Unlike other programming languages, BASIC was completely unregulated, which Kurtz believes was crucial to its success. "Dartmouth always took the point of view that what we did was public, and thus we never made any attempt to control or direct the results of our research," he said. Ahl agreed, adding, "DEC's FOCAL language was equal to BASIC in most aspects and even better in some, but it had one huge drawback: DEC was unwilling to license it to other computer manufacturers. FOCAL was fighting an uphill battle against BASIC, which was available on GE, Honeywell, HP, and other computers."
Games: BASIC's Killer App
The early 1970s saw BASIC move away from mainframes and time-sharing systems and to the burgeoning microcomputers of the day. Ahl recalled how quickly they sprang up: "DEC took the unusual step of contracting with outside vendors to develop four versions of BASIC, one for a 4K stand-alone PDP-8 (EduSystem 10), one for a small multiuser 8K PDP-8 (EduSystem 20), one for the Timeshared-8 (EduSystem 50), and one for a batch processing PDP-8 with a card reader (EduSystem 30). The most limited version was that for the 4K PDP-8 as the BASIC interpreter used 3.5K of memory, so programs had to fit in the remaining 500 12-bit bytes." To Ahl, games were critical to BASIC's spread. "We needed to demonstrate that such a limited configuration could run real programs, so I started converting FOCAL demo programs to this low-end BASIC," he explained. "We also encouraged users who wrote programs, especially games, to submit them. In 1972 I collected together a bunch of games that I had written from scratch or converted from FOCAL along with submissions from users and published it as 101 BASIC Computer Games. The book was later revised and, in 1983, total sales topped 1 million, and it became the first million-selling computer book." As the book included type-in listings for BASIC games, it was likely a major catalyst in BASIC's proliferation. A large base of games would appeal to anyone considering incorporating a language into a new piece of hardware -- like Gates and Altair BASIC, for example. Ahl recalls meeting Gates: "When I left DEC in July 1974 and started Creative Computing magazine...I used all my vacation time to attend computer shows and conferences in order to promote Creative Computing. One fascinating show was the Altair Conference in Albuquerque in 1975 where I met Bill Gates and learned of his intention to write a BASIC language for the Altair." Sure enough, in 1975, MITS released Altair BASIC, which was developed by Gates and Paul Allen as the "Micro-Soft." It was an interpreter, as opposed to Dartmouth and GE's implementation of a BASIC compiler, but it suited the limitations of the Altair hardware. Despite his influence, Ahl is reluctant to take credit for BASIC's hobbyist popularity. "Did
" I sniffed the wind. There was a book out, 101 BASIC Computer Games, and Bill Gates had written in BASIC. So I said: You've got to have these games; it's going to be the heart of a computer that's worth anything to people."
my book popularize the spread of BASIC? Maybe, but the great libraries of BASIC programs at Dartmouth, the Minnesota Educational Computer Consortium, and Huntington Computer Project along with books like Bob Albrecht's What To Do After You Hit Return were equally infuential. BASIC was the only widely available interactive language. Smalltalk? Lisp? Logo? MUMPS? They didn't stand a chance against BASIC." BASIC continued to spread as Microsoft ported its version to new microcomputer platforms and other people developed their own BASIC variant. Apple cofounder Steve Wozniak recalls writing Integer BASIC for the first Apple computers: "I didn't program in BASIC, but I sniffed the wind. There was a book out, 101 BASIC Computer Games, and Bill Gates had written in BASIC. So I said: You've got to have these games; it's going to be the heart of a computer that's worth anything to people...The microprocessor I used only had machine language. I'd never had any training in writing a computer language, so I pulled out a manual at work, which was Hewlett-Packard, and read through making notes of all the commands. I didn't realize their BASIC was very different from Digital Equipment's BASIC, which the 101 Games had been written for. They were very different regarding strings." Technically, Wozniak was probably the only one to hand write a new version of BASIC, explaining: "I could not afford a time-share assembler. That's where you take a terminal, call a local phone number, connect to some faraway computer, and type your programs in using machine language. So I wrote my programs in machine language on paper, and then I looked at little charts to figure out what ones and zeroes would be created by them. I would write the ones and zeros down in base-16, or hexadecimal, and type that into the computer I had built. It would take me 40 minu
No tags.