Fifty Years of BASIC, the Programming Language That Made Computers Personal

Fifty Years of BASIC, the Programming Language That Made Computers Personal

A very comprehensive history of BASIC from Time magazine.

Invented by John G. Kemeny and Thomas E. Kurtz of Dartmouth College in Hanover, New Hampshire, BASIC was first successfully used to run programs on the school’s General Electric computer system 50 years ago this week–at 4 a.m. on May 1, 1964, to be precise.

Edit: Dartmouth is celebrating Basic at 50.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Nice

Nice article. My perspective is presumably affected by BASIC being my first programming language, back in the 1970s (on a teletype whose clone I saw in a display case at the Computer Museum, that you started listing your program and then went to another room because it was too noisy to stay near while it printed).

Although,

“Eskimo has several hundred words for snow,” says technologist and entrepreneur Philippe Kahn[.]

<facepalm>

10 Print "Ehud"20 Goto 10

10 Print "Ehud"

20 Goto 10

1982!

10 Print "Marco"
20 Goto 10

I tried this, seems to be an

I tried this, seems to be an infinite loop I there somewhere that you might want to fix.

Intractable

It's going to be tough to figure that one out, what with all those GOTOs. Classic spaghetti code.

I suspect the 20 goto 10 is

I suspect the 20 goto 10 is causing problems, but maybe we should try to prove some properties about it with Coq first.

Let's add a debug print in

Let's add a debug print in line 15.

No debugger needed

No need for a debugger, converting the program to a pure, monad-free subset of Haskell fixes the bug!

let goto = id
    l10 = "Ehud"
    l20 = goto l10 
in  l10

Of course, a more faithful translation needs to mimic BASIC's strange habit, which surely must have driven E.W. Dijkstra crazy, of ensuring that every line ends in a GOTO, implicitly if necessary:

let goto = id
    l10 = "Ehud" : goto l20
    l20 = goto l10 
in  l10

Now the bug is back, but at least the mutual recursion is apparent!

P.S. My favorite BASIC machines were this one and this one.

Favourite BASIC macine

My favourite basic machine is the BBC Microcomputer. If you remember it, and the Sinclair ZX Spectrum then you really should watch Micro Men.

I remember BBC BASIC as being quite advanced compared with other basics, having functions, procedures and looping constructs, it encouraged structured programming.

Translation into BBC BASIC:

10 WHILE TRUE
20    PRINT "Keean"
30 ENDWHILE

Compiler in BASIC

This was my introduction to programming languages: Practical programs : for the BBC computer and Acorn Atom

It includes a complete compiler for a small language written in BBC Basic making use of its built in 6502 assembler. That small piece of code had a big impact on my career.

The one with every line

The one with every line ending in a gogo is snobol. In fact, two gotos.

original BASIC

Two immediately fascinating excerpts from the original BASIC manual:

‘The name of a defined function must be three letters, the first two of which are FN.’

‘The user must be very careful not to write a program in which a GOSUB appears inside a subroutine which itself is entered via a GOSUB; it just won't work.’

Kemeny and Kurtz's True BASIC (mentioned in the Time magazine article) is kept alive and sold as a modern programming system by someone at truebasic.com. The language is deficient (e.g., no boolean or equivalent type of values, only conditions within IF, WHILE and UNTIL), the IDE (which is the only way to compile and run programs) is awkward and, at least as of several years ago, rather buggy. Oh, and the product is ridiculously pricey.