Of all the articles I have written in this “Library” section, this has been by far the most difficult to write of them all. It is extremely hard to summarize in a thousand words the major achievements of a person that has defined the way our modern world and our industry work, in the most unfathomable ways.
Because, to be honest, it is hard to find a starting place when talking about those who have such long resumés as Mr. Kernighan. Let us try to find some starting points and see where this takes us.
Let us pick one major milestone: this is the person who gave UNIX its name. The operating system architecture that ate them all, spreading into computers of all sizes. And the one that even inspired a large chunk of code in the Windows codebase, as Bill Gates himself explained at the Unix Expo in October 9th, 1996:
And through Windows NT, you can see it throughout the design. In a weak sense, it is a form of Unix. There are so many of the design decisions that have been influenced by that environment. And that’s no accident. I mean, we knew that Unix operability would be very important and we knew that the largest body of programmers that we’d want to draw on in building Windows NT applications would certainly come from the Unix base.
We have mentioned Bill Gates enough times in this issue I think.
Brian Kernighan also invented “Hello, World!” programs; his first was for the B programming language, direct ancestor of C. How would programming books look like without such introductions, anyway? That first “Hello, World!” program is available online.
Then there’s AWK; the programming language that anyone using the “Unix way” in the command line, piping the stdout of a command into the stdin of another, has used at some point. The cornerstone of oh so many duct tape bash scripts that enable the modern world, in one way or another.
And finally, books. Mr. Kernighan is a prolific author, with a bibliography including major titles whose mere existence have defined our craft. The books chosen for this article show three major stepping stones: Unix, C, and Go.
First, let’s talk about “Unix, A History and a Memoir,” a short essay self-published last year. The word that describes it best is humble.
In spite of the tremendous privilege of having been part of the birth of a whole industry, Mr. Kernighan takes a step back. His writing is full of anecdotes, names of well-known and some less well-known visionaries of the industry, all sharing the same offices at Bell Labs. Anecdotes from daily life in the lab, including that of the various Italian espresso machines, or Bell Labs’ work-from-home policy, alternate with technical details about the various tools and steps that make up Unix’s history.
There are few locations on Earth where so many ground-breaking technologies have seen the light; if the Xerox Palo Alto Research Center is one such place on the West Coast of the USA, Bell Labs is definitely its counterpart on the East Coast.
The word “accidental” comes also to mind while reading these stories; one has the impression that Mr. Kernighan just happened to be there. It is hard to imagine that it all stops at that. Yet, that is the spirit of the text.
Second, there’s “The C Programming Language.” Having written the most popular tutorial about the B programming language, including the eponymous first “Hello, World!” mentioned earlier, it was only natural for Mr. Kernighan to write a tutorial for C. The book states at the very beginning that C is a “rather low level” programming language. Reading that phrase more than 30 years after the publication of the second edition (right after the ANSI standardization effort) it is hard not to smile. Most of us will agree these days to call C “portable assembly” without blinking an eye.
Yet, in the age of WebAssembly and Emscripten, C has found a new niche, as the source language for a new generation of browser applications. Not bad for a 50 year-old programming language who inspired countless others.
Finally, “The Go Programming Language.” Go is arguably the language of The Cloud. Docker, Kubernetes, OpenShift, Prometheus, and most cloud-native tools sanctioned and approved by the CNCF are written in Go. Some even say that Go is the new Ruby.
Go borrowed the curly brackets of C and achieved the unthinkable: to became popular in spite of lacking classes and inheritance. Or probably, because of that. The book itself is unsurprisingly close to its sibling for C described above; the structure and prose betray the common co-author hiding behind the keyboard, shaping the way programming book should appear and behave. It even starts with a “Hello, World!” program; right there, at the bottom of page 1.
Rankings might not mean much, but let us use them anyway. TIOBE has named C the programming language of the year 3 times: 2008, 2017 and 2019, and at the time of this writing, it states that C is the most popular programming language. It also named Go the programming language of the year in 2009 and 2016, currently occupying the 12th step in the ranking. PYPL puts a contraption named C/C++ (a language that does not exist but fulfills a precious place in the collective unconscious of our craft) in 5th position, with Go occupying the 13th spot. And RedMonk places C at the 9th position, and Go at the 15th place.
Unix remains the basic environment for these two languages (and many others) to run and flourish. Unix, written in C, remains the operating system of choice for the smartphone in your pocket, running apps that connect to The Cloud, itself running apps written in Go, inside yet another Unix environment. It all ties together, somehow, as if Mr. Kernighan had unwillingly predicted and fulfilled the prophecy of a whole industry. All with humble, concise writing, always highlighting the work of others, and making technology as easy to consume as a “Hello, World!” program.
I have left aside “The Elements of Programming Style,” “The Unix Programming Environment” and “The Practice of Programming.” Not because I would not want to cover those three books, but simply because a thousand words is not enough. But I think the titles are enough to highlight the useless efforts of this author to find ways to transcribe their importance.
Cover photo by the author.