> The second development concerned the language in which UNIX was written. By now it was becoming painfully obvious that having to rewrite the entire system for each new machine was no fun at all [0], so Thompson decided to rewrite UNIX in a high-level language of his own design, called B. B was a simplified form of BCPL (which itself was a simplified form of CPL, which, like PL/I, never worked). Due to weaknesses in B, primarily lack of structures, this attempt was not successful. Ritchie then designed a successor to B, (naturally) called C, and wrote an excellent compiler for it. Working together, Thompson and Ritchie rewrote UNIX in C. C was the right language at the right time and has dominated system programming ever since.
Tanenbaum doesn't say it, but it almost seems like B and C were designed for creating UNIX. I wonder to what extent the authors of B and C were designing the languages for creating UNIX.
[0] In one of the previous paragraphs, Tanenbaum mentioned that the first version of UNIX was written in assembly.
[1] Modern Operating Systems (ed. 4, p. 715)
As always on HN there is a certain amount of ... discussion about some of the finer points, generally about typing. I suspect that if you follow the refs in the WP article most of the usual bikeshedding here will resolve itself satisfactorily.
For me (50 year old bloke) I dimly recall C always being available https://en.wikipedia.org/wiki/C_(programming_language) - apparently 1972ish so I was 2 or 3 when C came out and replaced B which probably didn't do much ....
Oh look at this (wrt B): "However, it continues to see use on GCOS mainframes (as of 2014)"
C was needed because the byte-addressed PDP-11 was a bad fit for the word oriented B language. See https://archive.org/details/bstj57-6-1991 for details.
Although it appears their main business nowadays is a Windows-based application to manage maintenance requests for landlords, etc
http://progopedia.com/language/b/
>B is an interpreted programming language for mini-computers, a direct descendant of BCPL and ancestor of C.
http://www.catb.org/~esr/writings/taoup/html/c_evolution.htm...
>based on Ken Thompson's earlier B interpreter which had in turn been modeled on BCPL,
Iirc, and it’s been a while since I’ve read the history of Unix. B started as an interpreted language but evolved into C as types were added and it was switched to compiled to better interact with UNIX operating system internals (with Ritchie wanting to rewrite large portions of Unix in the new language.)
Here is a snippet from an interview of B's creator, Ken Thompson in 1989, explaining this:
"MSM: Did you develop B?
Thompson: I did B.
MSM: As a subset of BCPL
Thompson: It wasn't a subset. It was almost exactly the same. It was a interpreter instead of a compiler. It had two passes. One went into intermediate language and which one was the interpreter of the intermediate language. Dennis wrote a compiler for B, that worked out of the intermediate language."
~ https://www.princeton.edu/~hos/mike/transcripts/thompson.htm
This seems like a biggie.