RIP Dennis M Ritchie

Last week we lost Dennis M. Ritchie, whose work influenced much of what we do with computers today both as users and software developers.

From the New York Times obituary:

In the late 1960s and early ’70s, working at Bell Labs, Mr. Ritchie made a pair of lasting contributions to computer science. He was the principal designer of the C programming language and co-developer of the Unix operating system, working closely with Ken Thompson, his longtime Bell Labs collaborator…

It was only a week earlier that we were marking the passing of Steve Jobs and noting the contributions he made to Apple via NeXT. The operating system of NeXT which became Apple’s Mac OSX are Unix systems. Similarly, the much of the heavy computer programming from large-scale servers to iPhones is done with C and its descendents C++ and Objective C.

“The tools that Dennis built — and their direct descendants — run pretty much everything today,” said Brian Kernighan, a computer scientist at Princeton University who worked with Mr. Ritchie at Bell Labs.

A great many of us who studied computer science and practiced computer programming have the classic text that Kernighan and Ritchie co-wrote, The C Programming Language, known affectionately as authoritatively as “K&R”.

C is at hits heart a “systems programming language.” It’s a small language, structured in the imperative programming style of Algol and PASCAL, but the individual functions and operations are close to the machine language, simple bit-shift, arithmetic and memory location (pointer) operations. As such, it is very unforgiving compared to some of its predecessors, but it was efficient and simple and has enough expressive power to build operating systems like Unix, scientific computing, and the inner works of most software applications through the object-oriented successors, C++ and Objective C. Much of my software work has centered around these descendent languages, but when it comes to doing actual computation, it’s still C.

“C is not a big language — it’s clean, simple, elegant,” Mr. Kernighan said. “It lets you get close to the machine, without getting tied up in the machine.

Higher-level languages, like the PHP used to build this site, are ultimately implemented as C and C++ programs. So both this website and the device you are using to read it are products of Dennis Ritchie’s work.