Page 2 of 3
Kemeny and Kurtz both learned Share Assembly Language and very soon after realised that this was no way to teach computing! It was obvious that a new language was needed and they wasted no time in trying to invent one. DARSIMCO (1956) - DARtmouth SIMplified COde - was just a system of templates, each one corresponding to a small number of assembly language commands. Fortunately Fortran became available the following year and provided a rather more advanced model of what a high-level language should be like and what it could achieve.
Computing really came to Dartmouth when an LGP-30 machine with 4K 30-bit words provided by a magnetic drum and a 16-instruction set was installed.
The LGP-30 (Librascope General Precision) was described as a desk computer and was manufactered from about 1956.
A beginner's language
None of the languages available at the time solved the problem that both Kemeny and Kurtz were really interested in, but they served as a rich source of experience. They needed a language and a computer system that could be used by a complete beginner without the complexities and irritations of punched cards and batch processing systems. Can you imagine how long it takes to learn to program if it takes a week to get the results back?
Kemeny and Kurtz needed something much better than the facilities offered by the LPG-30. After a visit to a time-shared PDP-1 at MIT, John McCarthy said to the pair "Why don't you guys do time sharing" - Kemeny simply said "OK".
Along with the time sharing system came the new language which they decided to call BASIC. At first it was going to be a subset of Fortran but they decided that no subset of any existing language would be complete enough.
In 1964 Dartmouth acquired, with the help of grants and discounts acquired a GE-255 computer. Kemeny and a group of students worked over the summer of 1963 on a compiler for a draft version of BASIC. They got so far ahead that the first BASIC program ran within months of the machine's arrival - at 4 o'clock in the morning on May 1, 1964. The student programmers were debugging the time sharing operating system and they were trying to get the whole thing working long enough to run a program - when it happened they hardly noticed. As Kurtz put it, "no photographers there, nothing".
This first version of BASIC was very simple - very similar to the early microcomputer BASICs of the sort that Bill Gates would implement over ten years in the future. It was an amazing success - three ASR33 teletypes in May grew to 11 by June and 20 by the autumn. The compiler was a fast single-pass design but it had an integral editor and behaved much like an interpreter from the user's point of view. The operating system was an integral part of the whole and was designed to be as easy to use as BASIC. Commands such as HELLO, NEW, OLD, SAVE, LIST, RUN and GOODBYE made the operating system seem easy.
BASIC commands had to be typed in with line numbers which were used to determine the sequence of execution, as labels for GOTO instructions and for the line editor. Operating system instructions were typed in without line numbers and that's the only difference users noticed.
From this starting point it is difficult to know exactly how or why BASIC spread. In a different universe perhaps it would have simply been another of the many minor languages that are developed within universities and then vanish. What made BASIC different is debatable but it is obvious that by providing an open access time shared program development system it was sheer luxury. Combine this with a simple programming language that didn't complicate anything that could be made simple and luxury must have seemed like paradise. Just imagine students at other universities, for 10 years or more after the first BASIC program ran, students punching card and at best waiting 4 to 8 hours to see the results. Compare this to the lucky ones at Dartmouth sitting down in front of a teletype and seeing the results of their errors instantly.
It is also worth emphasising that the ease of use of BASIC was the prime concern. Kemeny and Kurtz never made a choice about language design that was influenced by the needs of the implementation. If you look at that other famous teaching language Pascal, then you have a prime example of what happens when the efficiency and simplicity of the compiler is taken into consideration in the design of the language.