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.
Die C++11-Reihe gehört zu den beliebtesten Serien im Linux-Magazin. Sie stellt alle wichtigen Neuerungen im neuen C++-Standard C++11 und darüber hinaus dar.
Mehr als 330 Seiten rund um den Linux-Kernel: "Kern-Technik 2014" ist die größte Sammlung der Kernel-Reihe aus dem Linux-Magazin, die je veröffentlicht wurde.
Seit inzwischen 10 Jahren schreibt Charly Kühnast nun seine Kolumne Aus dem Alltag eines Sysadmins. 122 Seiten Charly versprechen Unterhaltung ...
Das Bundle für Admins und interessierte Anwender dekliniert Benutzer- und Identitätsverwaltung anhand der bekanntesten Themen LDAP und Apache ...
Das 12-teilige Bundle "Postwesen" enthält handverlesenes E-Mail-Knowhow aus dem Linux-Magazin der letzten zwei Jahre und gibt einen ...
Alle Rezensionen aus dem Linux-Magazin
- Buecher/05 Ein Buch über eine Notizverwaltung sowie eine verständliche Linux-Einführung
- Buecher/04 Zwei Wälzer über Linux-Server im Vergleich
- Buecher/03 Zwei Bücher gehen ins Detail: Eins über SSL, eins über den Raspberry Pi
- Buecher/02 Ein Git-Buch für gestandene und ein C++-Buch für angehende Programmierer
- Buecher/01 Raspberry für drinnen und draußen und ein Buch über 3-D-Druck
- Buecher/12 Bücher über die ersten Schritte mit den Raspberry Pi und über agiles Testen
- Buecher/11 Weiterführendes für Webentwickler und ein Kompendium zur Visualisierung
- Buecher/10 Ein Buch über Sicherheit im Web und eins zur Prüfungsvorbereitung
- Buecher/09 Bücher für Python- und Haskell-Programmierer
- Buecher/08 Bücher über Liferay sowie über Requirements Engineering