Over the weekend of October 8th a giant of computer science died. Like a lot of really great people in the field, he died without a lot of fanfare, most of his friends and colleagues finding out about his death several days later. I heard about his death last night from a post by Rob Pike, and while I wanted to blog about it last night, I found I could not, so I waited until this morning. I sit here typing with tears streaming down my face.
Dr. Dennis MacAlistair Ritchie, known as “Dennis” to many people and “dmr” to many more, passed away the weekend of October 8th after a long illness.
I will not discuss here the many accomplishments of the man, as there will be much discussion of this in other places easily found with a simple Internet search.
I will point out that unlike a lot of computer science people mentioned in news stories, Dennis did actually graduate from Harvard with earned degrees in applied mathematics and physics, and in 1968 earned a Ph.D from Harvard while he was working at Bell Laboratories. Harvard was the home of the Mark I and Mark II computers during World War II, some of the first digital computers in the world.
Yesterday when I heard of Dennis' death I tweeted “programmers everywhere owe him a moment of silence”. There may be programmers that question that, so please read on.
In 1969 when I was a college student learning about these wonderful machines known as “computers” there were a plethora of languages going on around the world. Algol, FORTRAN, COBOL, SNOBOL, PL/I, APL, LISP, ....the list goes on and on. And of course there were many, many machine and assembly languages, since different computer architectures were rampant.
Ken Thompson and Dennis Ritchie (hereafter referred to as “Ken” and “Dennis”, for I am sure they would not object to the informality) were working at Bell labs on an operating system that would soon be called “UNIX”. They had written the first version of this operating system kernel in machine language, but when the PDP-7 that they were working on ran out of address space and speed, they migrated UNIX to a PDP-11, which required an entire re-write of the operating system not only because of a different machine language, but a different machine architecture.
For those of you not familiar with the PDP-11 architecture, it has a CISC instruction set that many people think was the epitome of machine architecture. Complex enough to give flexibility in coding, but compact and simple enough to actually remember. However, the entire address space of the PDP-11 was 64K of (initially) core memory for instructions and 64K for data. Certain processors of the PDP-11 did not have separate instruction and data space, so all the instructions and data of a process OR the kernel had to fit into one 64K space (there were separate spaces for the kernel and processes). To put this in perspective, today the keyboard driver of the Linux kernel is larger than 64K, yet Unix on the PDP-11 was a time-sharing machine that had a network stack and could do real-time.
Dennis took a language and a compiler that Ken had written called “B”, and changed it to a language and compiler called “C”. Perhaps because of the small address space of the PDP-11, or perhaps because Dennis and Ken shared the philosophy of “simple is better”, “C” tended to be a small, tight language with relatively few built-in features, mirroring the UNIX kernel itself.
Both operating system kernel and compiler relied on a set of standard libraries to provide much of the functionality that programmers wanted. Keeping this functionality outside the kernel not only helped make the kernel more stable, but maintainable as well.
Eventually there was a programming book written for the “C” language, “The C Programming Language” by Dennis and Brian Kernighan, (afterwards known as “K&R”) which was only 228 pages in length. I bought a copy of this book, and marveled at its brevity, for it not only described the language so a person could program in it, but it also showed elements of programming style as the author of the language would envision. Today that book remains one of the thinnest, but most important books on my bookshelf. I often locate it just by looking for “thin white book”.
I compare “C” to the evolution(?) of Ada. When I first saw a draft language definition of Ada it was about the size of K&R, and I thought that it might have promise. Then the language was opened up to committee and the next time I saw the Ada language definition it was about the size of the Bible, both testaments. I knew Ada was doomed to failure. Today Ada has faded from the forefront of compilers and languages, while “C” remains one of the top languages.
“C” has its foibles and its critics. Some say that the inclusion and use of pointers makes the language prone to error. Others point to the fact that “C” is not “object oriented”. However good programming practices can diminish or remove most of these issues while still giving the programmer the absolute control that “a high level assembly language” can give, and of course there have been offshoots of “C” in the forms of C++, Objective-C, and C# as well as other popular languages.
Dennis was more than just “UNIX” and “C”, however, he was also a researcher, and after the development of “C” and “UNIX” were passed on to other people, Dennis worked on “Plan 9” and other research topics.
He was also active in the USENIX organization, and attended the events periodically. A quiet man, not looking for “worshipers”, he was very approachable to talk about technologies or life in general.
In later years, as the computer market grew and younger people with less knowledge of history came into the field, I found it sad that Dennis would be at a USENIX reception with a glass of wine in his hand and no one would be talking to him. Dennis was very approachable, and the people who did not recognize him and speak with him were the losers.
Dennis was also very humble about his contributions. His web page made jokes and downplayed the effect that he had on various projects. He was gracious enough to act as the master of ceremonies for the STUG and Flame (Lifetime Achievement Award) that the USENIX organization awarded to his former supervisor, Doug McIlroy.
Dennis was one of the “friends” of John Lions, who wrote a definitive book on the workings of the UNIX kernel, who went to the copyright holder (SCO) and asked them to allow John to publish his twenty year-old work so John could see it published before John died. Dennis later cooperated with me by signing several copies of that book to auction off, helping to provide a chair for John at the University of New South Wales in 2006. This was the first chair at UNSW funded by the efforts of alumni and “their friends”. It was John's book "Lions' Commentary on UNIX 6th Edition, with Source Code" that is credited with being the "most photocopied technical book of all time", and is still a recognized source of teaching students good programming techniques.
One group that did not miss out on speaking to Dennis was Simon Bolivar University in Caracus, Venezuela. I was visiting Caracus as a DECUS participant in 1995, and the University invited me to their campus. A couple of years before they had dedicated a computer laboratory to “Dennis Ritchie”, and Dennis had made the trip to attend the dedication.
As a historian of computers I can not say that if Dennis had never invented “C”, throughout the years some other person might not have created a language as powerful or with as much influence. Certainly there have been many languages and operating systems written that have had great influence on computer science and the computer industry.
Taking into consideration, however the history and the length of evolution of both “C” and UNIX, there are few languages and operating systems that have had as much effect and power, fewer that have generated as many jobs, as much revenue, or had as much impact over such a long time.
Dennis, my old friend, job well done.
Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.
Alle Rezensionen aus dem Linux-Magazin
- Buecher/06 Monitoring und Shell-Programmierung sind diesmal die Stichworte der Bücherseite
- Buecher/05 C++ aus verschiedenen Perspektiven: Einsteigertauglich und professionell
- Buecher/04 Tux liest
- Buecher/03 Zwei Bücher für Programmierer oder solche, die es werden wollen
- Buecher/02 Zwei Bücher über Sicherheit und Datenschutz im Internet
- Buecher/01 Ein Buch über die Fritzbox sowie ein Informatik-Lehrbuch
- Buecher/12 Ein Buch für erwachsene Kinder und eins für angehende Linux-Jünger
- Buecher/11 Bücher für Einsteiger – eins über XML, eins über Wordpress 4
- Buecher/10 Ein Buch zum Raspberry Pi und eins über BI-Tools
- Buecher/09 Lesestoff für Manager und MySQLer