The past week there has been a ton of recognition for the contributions Steve Jobs had made to computing and society through his work. Steve Jobs was a household name. Dennis Ritchie however was not a household name. Despite this his work was amazingly influential on almost every aspect of our daily lives either directly or indirectly. Everything from the computer I wrote this blog post on to the server sending you this blog post involved his work.
Rob Pike best eulogized his work, copied below for posterity. An amazing legacy.
I was warmly surprised to see how many people responded to my Google+ post about Dennis Ritchie’s untimely passing. His influence on the technical community was vast, and it’s gratifying to see it recognized. When Steve Jobs died there was a wide lament – and well-deserved it was – but it’s worth noting that the resurgence of Apple depended a great deal on Dennis’s work with C and Unix.
The C programming language is quite old now, but still active and still very much in use. The Unix and Linux (and Mac OS X and I think even Windows) kernels are all C programs. The web browsers and major web servers are all in C or C++, and almost all of the rest of the Internet ecosystem is in C or a C-derived language (C++, Java), or a language whose implementation is in C or a C-derived language (Python, Ruby, etc.). C is also a common implementation language for network firmware. And on and on.
And that’s just C.
Dennis was also half of the team that created Unix (the other half being Ken Thompson), which in some form or other (I include Linux) runs all the machines at Google’s data centers and probably at most other server farms. Most web servers run above Unix kernels; most non-Microsoft web browsers run above Unix kernels in some form, even in many phones.
And speaking of phones, the software that runs the phone network is largely written in C.
But wait, there’s more.
In the late 1970s, Dennis joined with Steve Johnson to port Unix to the Interdata. From this remove it’s hard to see how radical the idea of a portable operating system was; back then OSes were mostly written in assembly language and were tightly coupled, both technically and by marketing, to specific computer brands. Unix, in the unusual (although not unique) position of being written in a “high-level language”, could be made to run on a machine other than the PDP-11. Dennis and Steve seized the opportunity, and by the early 1980s, Unix had been ported by the not-yet-so-called open source community to essentially every mini-computer out there. That meant that if I wrote my program in C, it could run on almost every mini-computer out there. All of a sudden, the coupling between hardware and operating system was broken. Unix was the great equalizer, the driving force of the Nerd Spring that liberated programming from the grip of hardware manufacturers.
The hardware didn’t matter any more, since it all ran Unix. And since it didn’t matter, hardware fought with other hardware for dominance; the software was a given. Windows obviously played a role in the rise of the x86, but the Unix folks just capitalized on that. Cheap hardware meant cheap Unix installations; we all won. All that network development that started in the mid-80s happened on Unix, because that was the environment where the stuff that really mattered was done. If Unix hadn’t been ported to the Interdata, the Internet, if it even existed, would be a very different place today.
I read in an obituary of Steve Jobs that Tim Berners-Lee did the first WWW development on a NeXT box, created by Jobs’s company at the time. Well, you know what operating system ran on NeXTs, and what language.
Even in his modest way, I believe Dennis was very proud of his legacy. And rightfully so: few achieve a fraction as much.
So long, Dennis, and thanks for all the magic.