Page 2 of 3
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 (the inventor of LISP) said to the pair
"Why don't you guys do time sharing"
Kemeny simply said
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.
The General Electric 225 computer filled the basement of College Hall.
Photo Credit:Dartmouth College
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.
There were fifteen statement types in the original BASIC.
- LET Introduces the assignment statement, and is required
- PRINT Provides free-form output
- END Is required
- READ Assigns values to variables from internal data
- DATA Introduces internal data
- GOTO Does just that, transfers to another line-numbered statement
- IF Gives a conditional GOTO
- FOR Introduces the looping construct
- NEXT Terminates the looping construct
- GOSUB Does a GOTO to a subroutine
- RETURN Returns from the end of the subroutine
- DEF Introduces programmer-defined functions
- DIM Allows dimensioning arrays
- REM Provides comments
- STOP Same as reaching the END statement
BASIC variables were always a single letter followed by a single digit - A1 for example but it did have one and two dimensional arrays and a raise to a power operator.
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.
John Kemeny looks over a program written by his daughter Jennifer - having a computer terminal at home was unheard of luxury at the time!
Photo Credit:Dartmouth College
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 or the need to be academically respectable. 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. There is no doubt that BASIC was modelled on Fortran both in its simple language constructs and in its approach to data. It's main driving force was ease of use and simplicity.
BASIC democratized computing - Tom Kurtz shows Prof George Sitbitz how to program in BASIC.
Photo Credit:Dartmouth College
For whatever reasons BASIC spread to mini-computers world wide while mainframes still tended to offer just Fortran. BASIC tended to be regarded as a small machine language. A language for machines that couldn't quite manage to run a real language like Fortran.
What could be more natural then that when the smallest of all computers appeared on the scene, the microcomputer, someone should think in terms of Basic as a suitable language.
Bill Gates had programmed in BASIC at high school and so he and Paul Allen implemented it for the Altair 8080 machine in 1977. However it is worth saying that they weren't the only people thinking that BASIC was just what was needed - it was a fairly obvious step but they got there first and convincingly.
A Downhill Slide?
The start of the "street Basics" as Kemeny and Kurtz called them also marked the start of their worries about the way the language was developing.
Back at Dartmouth they had improved the language with the aim of making it simpler and more elegant. The original primitive BASIC was developing into a sophisticated modern language. It absorbed the lessons of structured programming by including indenting and subroutines with parameters.
In 1977 Stephen Garland produced SBASIC - a fully structured language - just one year before Gates and Allen's version of the original BASIC hit the streets.
All was not well in the world of BASIC.
The first broadside came from a letter - "GOTO considered harmful" in an academic journal by Edsger Dijkstra, one of the pioneers of structured programming.
Put bluntly this claimed that students who learned to program via BASIC were irrevocably brain damaged and could never reform their ways and learn a structured language. At the time this claim was taken seriously and few people had the courage to stand up and point out the flaw in Dijkstra's attack.
It is and should have been obvious that it is the programmer and his style that is structured and not the language. There is also plenty of evidence that BASIC is a fine first language as long as it is taught properly and no language carries with it the guarantee that it will not or cannot be misused.