Lisp: The progenitor of C and what has come since
But Ritchie didn't create C in a vacuum. It began as a derivative of a language called B, which itself was based on BCPL. In turn, these languages built on other languages that came before them, and in one way or another, all of them owed a debt to John McCarthy and Lisp.
McCarthy first created Lisp at MIT in 1958, making it the second oldest programming language still in common use. Only Fortran is older, but not by much. Aficionados like to say McCarthy "discovered" the language, rather than invented it, because of its close relationship to the lambda calculus, the mathematics at the heart of the science of computation.
The first thing a casual programmer notices about Lisp is its unorthodox syntax. Lisp code is often derided as being little more than a mass of nested parentheses. But with Lisp's sparse grammar comes power. Where other languages force developers to write programs as series of procedural steps, like recipes, Lisp allows them to express algorithms in their purest form. You can even think of Lisp as a mathematical notation for expressing computation problems, albeit in a form that can actually be executed.
Given its grounding in computer science and its long history, it should come as no surprise that Lisp gave rise to many ideas that are taken for granted in modern software development. Lisp was one of the first dynamically typed languages. Lisp programs introduced various common data structures, such as trees. And while Java's garbage collection was hailed as a major improvement over C, Lisp implementations have had automatic memory management since the 1970s.
It may seem paradoxical, then, that relatively little commercial software is written in Lisp. It's hard to say why. Perhaps Lisp code is seen as too difficult to maintain, or perhaps it's too hard to find developers with sufficient grounding in mathematics and computer science to make them effective Lisp programmers.
Nonetheless, as obscure as it may be in enterprises, in academia Lisp has thrived. There are countless dialects, variants, and implementations of Lisp still in use today. One Lisp derivative, Scheme, is a popular teaching tool in undergraduate computer science programs. What's more, Lisp can be considered a direct ancestor to functional languages such as Erlang, F#, and Haskell, considered by many to be the cutting edge of programming tools. Not bad for a technology that's more than 50 years old!
The passing of two pioneers
Taken together, C and Lisp represent two pillars of modern software development. Lisp, along with its derivatives, is the language of architects and computer scientists, and its influence continues to shape the practice and principles of computing. C, on the other hand, remains the quintessential programmer's toolbox, able to solve virtually any kind of problem on virtually any kind of hardware.
The loss of the creators of both these languages in one month is a sad occasion. Neither Dennis Ritchie nor John McCarthy was a particularly vocal presence in the software development community in recent years, but they hardly needed to be. Their achievements speak volumes, and although they will be missed, their legacies will carry on for years to come, both for software developers and for the field of computing as a whole.
This article, "In appreciation: C's Dennis Ritchie and Lisp's John McCarthy," originally appeared at InfoWorld.com. Read more of Neil McAllister's Fatal Exception blog and follow the latest news in programming at InfoWorld.com. For the latest business technology news, follow InfoWorld.com on Twitter.