The Rise Of People Power - Computer Languages in the 1970's
Written by Harry Fairhead   
Thursday, 31 December 2020
Article Index
The Rise Of People Power - Computer Languages in the 1970's
The BASIC/Pascal Wars
C - The Language That Lasted

The Rise (and fall?) of BASIC

While Dartmouth BASIC was a success in the late 60s and early 70s the real boom years for BASIC were the late 70s when the personal computer posed an interesting problem for language designers.

The original personal computers had typical memory capacities of 4KBytes or even less. At first it looked like a return to the old days of assemblers and even hand assembled machine code because the high level language compilers of the time took hundreds of KBytes and this was way beyond the pockets of the personal computer pioneers. However there was one exception to the memory hungry compilers - BASIC.

Because it was intended as a teaching language many compact implementations, both interpreter and compiler based, had been constructed for mini-computers, i.e cheap hardware, that would fit into 8-16KBytes. BASIC's simplicity made it possible to design these compact implementations and so it was a natural choice for any one trying to produce a high level language for a personal computer.

Paul Allen and Bill Gates surrounded by machines
that would all run Microsoft Basic.

Paul Allen and Bill Gates had just completed a BASIC interpreter for a PDP 8 (a mini-computer) as a high school project when the first personal computer, the Altair from MITS, appeared. The pair of them recognised the opportunity and managed the amazing feat of squashing a BASIC interpreter into 4KBytes with just enough space left over to actually run a small program.

brekeraltair

Bill Gates states that it took three and a half weeks to produce the first version and about eight weeks to polish it. Even he and Allen they felt dissatisfied enough to rewrite the whole thing. To give you some idea of how difficult it was to get the interpreter into 4KBytes they changed the traditional READY prompt to OK to save three bytes!

This 4K BASIC was the first version of Microsoft BASIC and Bill Gates went on to convert and expand the code for a wide range of new machines. There were many other small implementations of BASIC for micros - Li Chen Wang's Tiny BASIC, Steve Leininger's TRS-80 BASIC, Steve Wozniak's Apple integer BASIC, Gordon Eubanks' EBASIC and CBASIC and Robert Uiterwyk's 6800 BASIC to name just the more popular products - but Bill Gate's Microsoft BASIC had more influence than any other.

Gates managed to persuade most of the personal computer manufacturers that they needed his BASIC and developed customised ROMable versions for all and sundry. Even the Japanese bought Microsoft BASIC in ROM and the final seal of approval must have been the inclusion of the BASICA ROM in the IBM PC. Microsoft carried on developing BASIC into the 90s with the final version being the Quick BASIC compiler a fully structured language that still possessed BASIC's simplicity.

Paul Allen and Bill Gates surrounded by machines
that would all run Microsoft Basic.

Because of its association with the personal computer, BASIC became the dominant language in terms of number of people actually using it.

Pascal

A little after BASIC was developed, Niklaus Wirth at ETH Zurich in Switzerland was thinking the same sort of thoughts as Kemeny and Kurtz. He wanted to produce a language suitable for teaching but for teaching computer science. This meant that his new language had to be simple enough to work on a mini-computer but it also had to embody the ideals of the computer science community. In short, it had to be like Algol. In 1972 he produced the language Pascal, named in honour of the 17th century French mathematician Blaise Pascal.

NiklausWirth

Niklaus Wirth

Pascal is best described as a simplified version of Algol. It was simplified both to make it easier to learn and to make it easier to compile. For example, if supported functions and procedures but these had to be defined at the start of the program before they were used so as to make it possible to use a single-pass compiler.

Many programmers criticise Pascal for not really being fully practical and in its original form this was justified. In response to this many extra facilities have been added to produce slightly different dialects of Pascal.

Pascal was taken up very rapidly by the computer science community as a good language to teach and to program in. Wirth came up with a very clever way of making Pascal available on a wide range of machines without having to write compilers from scratch. Instead of writing a compiler that produced machine code for the target machine he wrote a compiler that produced machine code for an imaginary machine - the p machine.

This may sound silly but all you have to do to make p code run on a target machine is to write a small p code interpreter which is a much simpler job than writing a Pascal compiler. 

Of course today the idea of using a virtual machine or VM to run a programming language is much more well known - Java for example runs on the Java VM.  

ucsdmanual

 

The real take off point for Pascal was the development of the University of California at San Diego Pascal system - known as UCSD Pascal - by Kenneth Bowles.

This wasn't just a Pascal compiler but a complete operating system plus utilities in p code. The UCSD p system made its appearance in 1976 and an article in Byte the following year made its fame and fortune in the personal computer market. It was so influential that it was one of the alernative operating systems offered on the IBM PC when it was first introduced. 

The BASIC/Pascal War

Although things were happening in other areas of computing the 70s were notable for the start of a battle for dominance between BASIC and Pascal.

The people using BASIC were generally happy about their choice but the people using Pascal felt that they should be using Pascal instead. This was a continuation of the "Algol is better for you than Fortran or Cobol" attitude held by the computer science establishment.

The strange thing is that the creators of Cobol - Grace Hopper in particular - felt that their language was badly treated by the computer science 'establishment'. I dare say that had they thought about it, the Fortran people would have similarly felt left out of the establishment'.

The amusing thing is that from the point of view of the BASIC people both the Algol and the Cobol people were very much the `establishment' and even Fortran had too much of a pedigree for them to be entirely comfortable with it.

The personal computer revolution had created a fourth force in computing - people power - and this was very threatening to the existing order. Seen in this light the attacks on BASIC are more understandable. For example, Edsger Dijkstra is famously quoted as saying

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."

The pressure to adopt Pascal in preference to BASIC took on the nature of a holy war to come to fruition in the next decade! It is amusing to look back and see how instead of the violent criticism of BASIC it was the introduction of really high quality versions of Pascal - notably Turbo Pascal that made a significant number of people abandon BASIC.

 

turbopascalcover

 

A red herring that occurred all to often in the BASIC/Pascal war was the idea that BASIC was inherently slow. This is a crazy idea because a language doesn't have any particular speed associated with it. It is the implementation of the language that makes it fast or slow.

Because of the memory shortages in the situations in which BASIC was used, its implementation was via an interpreter. Interpreters are inherently slower than true compilers and this is how BASIC got the reputation of being slow. Today you can find BASIC compilers that run programs as fast as any Pascal or any other language compiler. It just demonstrates how any apparent weakness can be used as propaganda against a language.

<ASIN:0340645881>

<ASIN:0818677392>

<ASIN:0992777410>

<ASIN:1974277070>



Last Updated ( Thursday, 31 December 2020 )