2020-01-22[:en]The UNIX Operating System has a long and influential history in computing and Brian Kernighan's new book, UNIX: A History and a Memoir tells that story. I started teaching UNIX (and C programming) for Learning Tree back in 1984. A lot has changed since then including the advent of Linux, the move to PCs, and the tools users and developers use. Kernighan is, of course, the Kernighan of The C Programming Language fame.
When I began using UNIX in 1978, it was "Version 6". I was one of the few users at the University of New Mexico, and the first to teach C there just a couple years later. I was a voting member of the POSIX P1003 committee that standardized much of the interface.
UNIX: A History and a Memoir tells the story of UNIX from its conceptual beginnings and then Version 1 through its inspiration for Minix, which inspired Linux and beyond. (Learning Tree has multiple Linux courses, including an Introduction.) Far more interesting to me, however, are the stories behind many of the specific features and tools. I even learned about tools I'd never seen. One example is Spin, a tool for "analyzing and checking the correctness of software systems that involve separate communicating processes". I appreciate the complexity and value of such a tool as my Masters' thesis advisor, Harold Knudsen, did research in that area.
UNIX was critical in the development of the Internet. The Berkeley Software Distribution (BSD) derivative was the platform on which the socket network programming interface was developed and that software interface is still in use today. Before the Internet, UNIX - and a few other -- computers worldwide were connected by the Usenet with much of the communication over dial-up and leased connections. E-mail and discussion content transfer often took hours or even days.
As co-author of Learning Tree's cyber security introduction course, I was reminded of a quote from Ken Thompson's speech from when he and Dennis Ritchie (creator of C and co-creator of UNIX) received the Turing Award in 1983:
"You can't trust code that you did not actually write yourself. (Especially code from companies that employ people like me.) No amount of source-level verification or scrutiny will protect you from using untrusted code."
He was referring in part to his explanation of how to insert a Trojan horse into a system's login program by modifying the language compiler itself.
Another interesting story is about the development of the character encoding used on the Internet and virtually everywhere today: UTF-8. (If you aren't a computer hardcore, the character encoding is the way characters from the Latin A, B, C, etc. to the complex ideographs of Chinese are represented as bits in a computer). This encoding was developed for an internal operating system named "Plan 9" by Ken Thompson and Rob Pike.
The ninth chapter of the book, "Legacy", will likely be of special interest to today's newer computer users. The chapter looks at how the tools, structure, and even the core UNIX philosophy pervade computing today. From the iOS and Android in our smartphones to the nodes on the Internet of Things, we interact with direct descendants of UNIX every day.
This book brings back great memories for me, but it also fosters understanding of why so much of computing is the way it is today. It is well worth reading.
[On a very personal note, I am indebted to professors emeriti of my alma mater John Brayer and Ed Angel for introducing me to UNIX, my close friend (the late) John Brockmeyer teaching me lots of the gory details of UNIX and programming in C, and Richard Owen (now of Sandia National Laboratories) for working through the "C book" (Kernighan and Ritchie's, Programming in C a/k/a "K&R") with me so we could learn that language. The first three of these are former Learning Tree instructors.]