Just one week after Steve Jobs succumbed to cancer, mourners took to social networks and message boards to note the passing of computer scientist Dennis Ritchie, an event that was largely overlooked by the mainstream press. Although Ritchie was hardly as high-profile a figure as Jobs, his work had a comparable impact on the computing industry. Now, with the death of John McCarthy earlier this week, we have lost two of the most important figures in the history of software development.
Ritchie will always be remembered as one of the small team of developers who created the Unix operating system at AT&T Bell Labs in the early 1970s, but his most significant solo invention was the C programming language, which remains one of the most popular languages used today. McCarthy, on the other hand, is the father of Lisp, one of the earliest programming languages.
[ Go deep into HTML5 programming in InfoWorld's "HTML5 Megaguide Deep Dive" PDF how-to report. Then understand the issues surrounding HTML5 today in InfoWorld's HTML5 Deep Dive PDF strategy report. | Get software development news and insights from InfoWorld's Developer World newsletter. ]
In many ways, C and Lisp are opposites in terms of design, implementation, and approach. Taken together, however, these languages' influence on modern computing is immeasurable, and their legacy will continue for decades to come.
C: The language that flew
Ritchie was always modest about C's success, describing it as "a pragmatic tool that flew at the right height." But there's more to it. C endures because of a few important characteristics that made it stand out from earlier languages.
First, C was powerful. It had a high-level syntax not unlike structured languages such as Pascal, which made C code easy to read and maintain. Yet C also gave developers ready access to the hardware at a low level, which made it useful for systems programming. As a result, although early versions of Unix had been written in assembly language, by 1973 most of the Unix kernel was recoded in C.
Second, C was relatively simple. It lacked some of the syntactic sugar of other languages and eschewed higher-level features such as garbage collection. That made implementing C compilers easy and inexpensive, and soon the language was available on a wide variety of hardware. In turn, that meant programs written in C were also portable -- including Unix -- even to systems with limited resources.
Finally, despite being a product of AT&T, C was open. According to Bjarne Stroustrup, the creator of C++, "It was very important to the success of C and C++ that AT&T didn't try to monopolize these languages, but allowed its researchers to support the creation of alternative implementations. Also, AT&T fully supported ANSI and ISO standardization of C and C++ as soon as these efforts started ... This noncommercial spread of C and C++ appealed strongly to many programmers."
That appeal continues to this day. Notably, the Linux kernel is written almost entirely in C. The total number of lines of C code in production use is inestimable. And C's influence on computing reaches even further; C++, C#, and even Java can be considered its direct descendants. Far from merely "flying at the right height," C soared, and in the process it transformed the software development landscape completely.