This has been a strange month with several of the giants of computing passing away within weeks of each other. I have already written about Steve Jobs and Dennis Ritchie. Now John McCarthy, the father of Lisp and early AI pioneer has died.
It is not just that these three had a huge impact on the field, but each stood for very different and somewhat opposing ideas of how computing should work. I have already pointed out the tension between Ritchie’s and Jobs’ legacies. But there was also a tension between the legacies of McCarthy and Ritchie.
John McCarthy was a man ahead of his time. His seminal 1960 (!) paper “Recursive Functions of Symbolic Expressions and Their Computation by Machine” not only launched (somewhat inadvertently) a long lasting programming language (LISP) but more than that provided the foundations for symbolic computing. A quick aside on Lisp: I have been a fan since I first encountered Lisp as a teenager. The title of this blog is a reference to Lisp continuations. And over the years I have accumulated a number of great Lisp books including Paul Graham’s “On Lisp.”
For McCarthy this type of computing was about more than just the manipulation of symbols (as opposed to numbers). One of my favorite McCarthy quotes is from a speech he gave at MIT in 1961 (!) where he said: “If computers of the kind I have advocated become the computers of the future, then computing may someday be organized as a public utility just as the telephone system is a public utility… The computer utility could become the basis of a new and important industry.” Note the bit about “computers of the kind that I have advocated” as that will turn out to be important in a second.
Of course it is now 2011 and we are only slowly approaching the era of utility computing. What went wrong? Dennis Ritchie came along in the late 60s early 70s. The amazing success of C and Unix established a computing paradigm that was at once portable across hardware but also really close to hardware. It’s primitives are bits and bytes and files (of bits and bytes). C and Unix are fast because they are a surprisingly thin layer above the hardware. Put differently - we didn’t get computers of the kinds McCarthy had advocated. We got something much more primitive but at the benefit of much lower cost and higher speed (anyone remember Symbolics Lisp machines by contrast?).
We are still a ways from the utility computing world that McCarthy had envisioned but we have recently started to make some real progress. Much of that has been ushered in by web services and by having URLs for addressing them. These are still a bit clunky but a huge improvement over the older abstractions. At the same time we are seeing the rise in popularity of languages that are close in spirit to Lisp and have modern libraries (e.g. Python and Ruby).
As an optimist this makes me think that eventually we will get to computing that combines the legacies of Jobs, Ricthie and McCarthy: beautiful, open and intelligent.