Martin Richards is currently a senior lecturer at the University of Cambridge Computer Lab, England. He is most famous for creating the grandfather of C, BCPL, although he has a number of other notable accomplishments under his belt.


It must be annoying to come up with a good idea, have someone build on it, and for them to eventually take all the limelight. This is exactly what happened to Martin Richards.

He was first exposed to language implementation while studying for a PhD in Cambridge, England, as for around three years he was a part of the team developing another of those "do everything well" languages, CPL. Like all the rest of those projects, CPL died a horrible death before long; it was bloated even before implementation started, and some more outlandish features were never included. However, Richards had gained valuable experience during his time with the CPL team, and realised that in those days of tiny computers with very little memory, a successful language would have to be much more basic than what CPL aspired to be.

In 1967, Richards' PhD came to an end, and he went to MIT to start developing his language design ideas. The result would be BCPL, a massively stripped down CPL, that preserved some of its powerful features such as pointers (and pointer arithmetic), structures and a clear syntax. BCPL was also indirectly descended from Algol 60, on which almost every successful modern language is based. However, most of the horrors of that language, such as dynamic free variables and the inability to compile separately, were adequately fixed by Richards.

BCPL was quite popular at MIT, due to its portability, suitability to compiler design (which was a hotbed of activity) and absolutely minimal size (it would run in 16K!). However, one of BCPL's fans, Ken Thompson, only had an ancient PDP-7 computer, and required a language to run in just 12K. He decided to implement a subset of BCPL, B, that had many of the attractive features of BCPL (such as structures), removed. As computing power increased, Thompson was able to re-include some of BCPL's features, and B became C.

Thompson, along with Dennis Ritchie, developed this language, and eventually created an entire operating system written in C, known as UNIX. It eventually became the most successful operating system for a while, and even today, almost every application is written in C or a C derivant. Today, Thompson and Ritchie are revered as demi-gods in the computer science circles, no matter how poor a language C really is.

In contrast, BCPL is relatively unknown nowadays, although it was fairly popular for a while in the 1970s. There were ports to many architectures, notably Acorn, and Ford's manufacturing plants are supposedly partly controlled by BCPL code running on VAX computers. However, the creator was never anywhere near as famous as Thompson or Ritchie.

Not content to watch his language be eclipsed by C, Richards devised O-code (Object-code), which was created from BCPL code, but ran on a virtual machine. Although things like this had been tried before, the O-code machine was truly a revolutionary idea, and its influence can be seen in the tradition of virtual machines we have today, including the Pascal P-code system and the Java Virtual Machine.

In fact, Richards continued to add bits and pieces to his language. When C++ added object-oriented semantics to C, Richards responsed with an attempt at object-oriented BCPL. Unsurprisingly, this never caught on, mainly because it was just a couple of extra features he cobbled on in a morning of coding, rather than a ground-up reworking of the compiler.

Today, Richards is a lecturer at the University of Cambridge Computer Lab. One of his courses, Comparative Programming Languages, gives a detailed comparison of BCPL, C and Algol 60 among others, and the bitterness he feels it still quite evident. When mentioning a feature of C, he will invariably add "like in BCPL...", or "which was taken from my language...". I suppose he was at the right place at the wrong time.


Sources:
BCPL - The Language and its Compiler - Martin Richards