A little after BASIC was developed Niklaus Wirth 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.
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 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.
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 wars
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.
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.
The C alternative
While all of the BASIC/Pascal violence was going on there was an infiltrator preparing to enter the battle.
In the early seventies the Bell Labs was remarkably productive in the area of practical computing. This was the birthplace of the Unix operating system and the C computer language.
One of the drawbacks of all of the existing popular computer languages was that for many applications they were too high level. For example, if you wanted to write an operating system you needed to deal with many low level features of the hardware directly and this is exactly what a high level language is designed to stop you from doing.
As a result the Cambridge University Mathematical Laboratory and the University of London Computer Unit created a new language for systems programming - Combined Programming Language or CPL. The only problem with CPL was that it was too large for many applications and so a variant BCPL (Basic CPL) was derived by Martin Richards at Cambridge. BCPL was moderately successful but only in small groups and mainly in the UK.
The fame of BCPL spread sufficiently to reach the other side of the Atlantic and Ken Thompson at the Bell Labs produced an even smaller version of CPL than BCPL and called it B. At the time the Bell group were working on Unix in assembler and B was intended to be the language they used for the rest of the development.
Kenneth Thompson & Dennis Ritchie
Dennis Ritchie reworked some of Thompson's ideas to produce the language C, as in the language that comes after B! C is a language that combines low level features with the sort of structure that you find in Algol. Indeed it is reasonable to call C a structured assembly language.
Almost as proof that C was a powerful language the bulk of Unix, all apart from a small assembly language kernel, was rewritten in C. At first the success of C and Unix went hand in hand and C was thought of by many as the systems programming language for Unix. However its fame spread and it eventually turned up under other operating systems and started to produce a reputation for itself as a general purpose language.
Even so it is more accurate to see C as a seed that was planted in the 70s to grow in importance in the 80s. In that decade C became the language of the software professional but it would have been difficult to guess at this role at its inception.
Other languages in the 70s
For Fortran and Cobol the 70s were a time for revision. Fortran added structured statements borrowed from Algol to produce Fortran 77.
Cobol however was more static and only submitted to slight revision in 74.
For Algol the decade was a bad one because it was almost completely wiped out by its offspring Pascal.
The popularity of the personal computer and the perceived inadequacies of BASIC sent people in search of the ideal language. This was a time of enthusiasm, some might say more enthusiasm than knowledge. Less common languages such as Forth and APL were dragged up and there virtues extolled. Well known languages such as BASIC were modified into languages such as COMAL. There were even personal computer implementations of Fortran 66!
In the main however the decade belonged to BASIC even though the academics would have it belong to Pascal.
For the development of other computer languages see the other parts of this series covering the 1950s and onwards
In May 2014 it is 50 years since the invention of the BASIC language and of time sharing. Is there another language that can claim to have done more to change the way we use computers? You may not lik [ ... ]