Dennis M. Ritchie, co-creator of UNIX and father of the C programming language, died this past weekend after a long illness. It’s no exaggeration to say that without Ritchie, modern computing would not be what it is today.
Often known as “dmr,” Ritchie was born in Bronxville, NY in 1941. He studied at Harvard University, initially focusing on physics. Ritchie said that he entered computing because “my undergraduate experience convinced me that I was not smart enough to be a physicist, and that computers were quite neat.”
Editor’s note: This story is part of a series we call Redux, where we’re re-publishing some of our best posts of 2011. As we look back at the year – and ahead to what next year holds – we think these are the stories that deserve a second glance. It’s not just a best-of list, it’s also a collection of posts that examine the fundamental issues that continue to shape the Web. We hope you enjoy reading them again and we look forward to bringing you more Web products and trends analysis in 2012. Happy holidays from Team ReadWriteWeb!
“As a result, C became in effect a universal assembler: close enough to the machine to be cost effective, but far enough away that a C program could be compiled for and run well on any machine.” Brian Kerninghan
Ritchie joined Bell Labs in 1967 and worked with a group of developers, including Ken Thompson, to create UNIX, the first version of which was released in 1969. Initially called UNICS (following a system called MULTICS) was written in a low-level assembly language by Thompson. According to Thompson, Ritchie’s contribution to UNIX was “mostly on the language and the I/O system.”
The Creation of C
The language, of course, was C. So named because it followed the B (for Bell Labs) programming language, C is a higher-level language designed to allow cross-platform programming. To make it portable to different hardware, it was re-written in C, and released in 1971 as UNIX.
Brian Kerninghan said that with C “Dennis managed to find a perfect balance between expressiveness and efficiency. It was just right for creating systems programs like compilers, editors, and even operating systems. C made it possible for a programmer to get close to the machine for efficiency but remain far enough away to avoid being tied to a specific machine… As a result, C became in effect a universal assembler: close enough to the machine to be cost effective, but far enough away that a C program could be compiled for and run well on any machine.”
The concept of a multi-platform language and operating system no doubt seem, well, unexceptional today. However, at the time, it was unheard of, as Herb Sutter notes.
“Before C, there was far more hardware diversity than we see in the industry today. Computers proudly sported not just deliciously different and offbeat instruction sets, but varied wildly in almost everything, right down to even things as fundamental as character bit widths… There was no such thing as a general-purpose program that was both portable across a variety of hardware and also efficient enough to compete with custom code written for just that hardware.”
Tim Bray writes, “Unix combines more obvious-in-retrospect engineering design choices than anything else I’ve seen or am likely to see in my lifetime… It is impossible – absolutely impossible – to overstate the debt my profession owes to Dennis Ritchie. I’ve been living in a world he helped invent for over thirty years.”
The combination of C and UNIX have been at the core of computing ever since, and are (in slightly altered form) still going strong today. UNIX, as a portable and multi-user operating system, became extremely popular. AT&T was prohibited from entering the computer market at the time UNIX was created, so it was freely spread far and wide to businesses, schools, and within the U.S. government.
UNIX ultimately spawned dozens of versions, including SunOS and Solaris, AIX, HP-UX, NeXTSTEP, BSD, A/UX, Mac OS X and many others. UNIX inspired the GNU Project and Linux, though they are not derived from the same codebase.
C is still widely used, as are its direct descendants; C++, Perl, Objective-C, Java, C#, PHP and many others.
The popularity of C has been helped by The C Programming Language, often referred to as K&R for its co-authors: Kerninghan and Ritchie.
The book was published in 1978, and is a comprehensive guide to C in less than 300 pages. Kerninghan said that he “twisted Dennis’s arm into writing it” which was “probably the smartest thing I ever did.” Kerninghan called Ritchie “an exceptionally clear and elegant writer.”
“It is impossible – absolutely impossible – to overstate the debt my profession owes to Dennis Ritchie. I’ve been living in a world he helped invent for over thirty years.” Tim Bray
K&R continues to be considered an important guide to C. It was revised in 1988 to accommodate the ANSI C standard, and has been translated into more than 20 languages. Kerninghan said that the book has been successful “in large part because of the success of C, though it probably helped that the book, like the language, is rather small and simple, and made it possible for people to do useful things quickly.”
The book made popular the now-obligatory “Hello World!” example, which explains how to create a small program that prints “Hello World!” to the display.
While neither Plan 9 or Inferno have achieved widespread popularity, Inferno has been released as open source and is under continued development.
Ritchie retired as the head of Lucent Technologies System Software Research Department in 2007. He received numerous awards for his achievements, including the U.S. National Medal of Technology in 1999 in conjunction with Thompson.
Rob Pike, who worked with Ritchie at Bell Labs and on the Plan 9 and Inferno projects, reported Ritchie’s passing yesterday, saying, “He was a quiet and mostly private man, but he was also my friend, colleague, and collaborator, and the world has lost a truly great mind.”