Channels ▼

Open Source

Dennis Ritchie, in Memoriam

Earlier this week, Dennis Ritchie (dmr) passed away. The inventor of the C language and key contributor to several operating systems died after a long illness. Even though he'd been sick a while, his death came as a surprise. Just a few months ago, I called his house hoping to set up an interview. I knew he'd been ill, but his administrator kindly suggested that he was feeling better and that with a little persistence, I should be able to work past his shyness and get him on the phone. There was no hint then that he was so gravely ill.

That shyness, or more correctly, Ritchie's desire to avert attention despite his contributions to computing, are among the first things most people who knew him point out. Perhaps for that reason, he was often the first to poke fun at his creations even while recognizing their special place in computing: "C is quirky, flawed, and an enormous success." And, of UNIX, "It is very simple, it just needs a genius to understand its simplicity."

Behind the modesty, however, hummed a motor of remarkable technical creativity. C's clean syntax has been the default syntax for most languages since it emerged in the '70s(!). Eight of the top 10 programming languages today (per Tiobe) draw directly from C for their syntax, including the #2 language, which is C itself. No language ever has enjoyed continuous popularity at so high a level for so long. This is due no doubt to Ritchie's intuitive way of expressing all that a system language need do. In the design, he was greatly aided by his longtime collaborator, Ken Thompson.

During my recent interview with Thompson, he discussed how Ritchie's work evolved as Thompson used it to rewrite UNIX: "The language grew up with one of the rewritings of the system and, as such, it became perfect for writing systems. We would change it daily as we ran into trouble building UNIX...and we'd modify it for our needs. It became the perfect language for what it was designed to do."

What is not widely appreciated is how much of the C syntax was invented from whole cloth by Ritchie and Thompson. C is generally seen as a derivative work from BCPL, but in fact, a quick look at the documentation of BCPL shows a very different language, missing many of today's common syntactical constructs and all of Ritchie and Thompson's minimalist elegance.

That elegance was then transported by Ritchie to the K&R book, which remains the defining language tutorial against which all others are measured — and from which all others have been given their canonical first example,"“hello, world".

In UNIX, Ritchie was in charge of writing the I/O portions and some of the utilities. He reprised his systems work in the ill-fated but innovative Plan9 OS in the 1980s and '90s.

Between the two stints, he and Thompson shared the Turing prize. In his acceptance speech, Ritchie foresaw issues that have become serious concerns during the last few years: "More than anything else, the greatest danger to good computer science research today may be excessive relevance...As the intensity of research in a particular area increases, so does the impulse to keep its results secret."

He then entered into a more subtle concern that remains a powerful but comparatively under-discussed agent today: "Another danger is that commercial pressures of one sort or another will divert the attention of the best thinkers from real innovation to exploitation of the current fad — from prospecting to mining a known lode. These pressures manifest themselves not only in the disappearance of faculty into industry, but also in the conservatism that overtakes those with well-paying investments — intellectual or financial — in a given idea." Amen.


Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags


<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags


<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

