1 Comment

Reading ArsTechnica this morning I learnt of the passing of Dennis Richie.

Several readers there pointed out that while programming geeks might ‘get’ why his passing is of note, the general public might not.

K&R-cover-250pxLet me try to enlighten you.

All the software you use, the operating system, the applications, the web browser you’re reading this with are written using a programming language.

Programming languages are designed to offer a human-readable script for programmers to create products. They’re programmer’s essential tool.

Dennis Richie is best known as the designer of the C programming language. He’s the ‘R’ in K&R of the well-known book describing the language.[1]

If there is a ‘foundation’ programming language, on which the computing world sits, it’ll be C.

Unix is a foundation operating system in the computing world. Dennis Richie was involved in the development of that, too. It was written in C.[2]

The software that processes the programming languages, compilers and interpreters, that we use today have to be themselves written in a programming language. Spot the chicken before the egg problem? To get a new programming language you have to start with something else, usually another language, often C. If not C, the language used will likely ultimately depend on C if keep looking back to find what that language depended on.[3]

Much fuss is made about open-source programming projects. If there is a core project that all these ultimately rest on, it’ll be the C compiler (gcc).

C will have given many programmers their first taste of programming.

It isn’t the ‘best‘ language. Programmers squabble wildly over what is best in their eyes, but there isn’t really such a thing as different languages suit different purposes and approaches.

But whichever way you look at it C is a foundation stone that so much of the computing world sits on top of.

Footnotes

For geeks: like all good long-time geekery, C developed it’s own trivia – for example The Ten Commandments for C Programmers (I’ve linked to an annotated version).

1. While Brian Kernighan (BK) was the first author, he has explained that he had no role in the design of C, this from an interview for Linux Journal (LJ):

LJ: What was your part in the birth and destiny of the C language?

BK: I had no part in the birth of C, period. It’s entirely Dennis Ritchie’s work. I wrote a tutorial on how to use C for people at Bell Labs, and I twisted Dennis’s arm into writing a book with me. But, if he had been so motivated, he certainly could have done it without help. He’s a superb writer, as one can tell from the C reference manuals, which are his prose, untouched. I’ve profited a great deal from being part of the book, and I treasure Dennis as a friend, but I didn’t have anything to do with C.

The interview is excellent – well worth reading.

As for the book, personally I prefer Harbison & Steele’s C: A Reference Manual, but then I’m not in need of being taught it, but have use for a reference in the finer points of the current implementations. (Reviews can be found at Amazon.com and elsewhere.)

2. Small portions of code may have been written in assembler, notably (parts of) the (early) kernels.

3. I’m glossing over stuff here to convey the essence of the thing. Compilers translate high-level languages written in human-readable code into instructions the computer works with. Interpreters do the same, but on-the-fly rather than ahead of time. Before you can create a compiler written in the language that it compiles–a self-hosting compiler–you have to start with something else. One approach is to write the initial compiler in C (or some other language – it’ll almost certainly trace itself back to C if you follow what each language in turns depends on).

Related tricks are done for interpreters.


Other articles on Code for life:

Sinclair ZX envy

Research project coding v. end-user application coding

Literate and test-driven programming (in bioinformatics)

Developing bioinformatics methods: by who and how

You still have to know how the tools work