To understand how and why C was created, we need to go back in time, back to the EDSAC to be precise. How programming looked in those days:
To really get into the inner workings of the EDSAC, Olve wrote FizzBuzz for it (so cool!) That you can try out in an emulator. This gives us a sense of how it was to work on those types of machines, very low level. John Backus was working on those machines, and he came up with Fortran in 1957, which could be considered the first real programming language. It has higher level concepts like an IF, but this was still implemented as/with jumps: IF (expr) linetogotowhentrue, linetogotowhenfalse. After Fortran, Algol 60 was created, but it was criticized for many reasons.
In the sixties, they needed a new machine at Cambridge, because the programmers got more requests than the EDSAC could handle. So, a new language was ‘needed’ This was common thinking at the time, that for each new machine, a new language was needed and CPL was going to be that language. The language needed to be strict(er than Algol60), and sufficiently general such that machine-code was not needed anymore. It was way more extensive than Algol, it had more datatype, supported call by name, call by value and call by reference, and polymorphic operators, closures and lambdas and run time garbage collection (in 1963!!) IIt was like a pill that could cure any type of disease. Unfortunately, it proved too hard to make a compiler for it and was never used in practice.
Inspired by this, Martin Richards wanted to create a language that was simple to compile and assumes the programmer knows what he is doing (the programmers is not restricted by “petty restrictions”) Now we are getting to the spirit of C and C++, says Olve. This became BCPL, on which, a bit later B was based. Ken Thompson, creator of B wanted to make BCPL smaller (should fit into 8K words of memory) He admitted that B was a redo of BCPL, and their reference manuals have many similarities as Olve has found:
Looking at the syntax of B, we can already see C-like patterns.
Then came C, the topic of this talk. It was designed, of course, by Dennis Richie, when he was porting Unix to run on the PDP-11 machine. This happened in 1969, while standardization starter a lot later (in 1983) which is interesting as many of the earlier languages were created by a committee, so came standardized from the start, and Dennis Ritchie was not involved.
This was a cool talk with insight into history. I heard a similar talk by Guido van Rossum on the history of Python once, and it is always fun to hear how languages influence each other.
Update: Olve will do this talk again at NDC Oslo.