TITLE: On the Passing of John McCarthy
AUTHOR: Eugene Wallingford
DATE: October 25, 2011 3:53 PM
DESC:
-----
BODY:
It's been a tough couple of weeks for the computer science
community. First we lost Steve Jobs, then Dennis Ritchie.
Now word comes that
John McCarthy,
the creator of Lisp,
died late Sunday night
at the age of 84. I'm teaching Programming Languages this
semester based on the idea of implementing small language
interpreters, and we are using Scheme. McCarthy's ideas
and language are at the heart of what my students and I
are doing every day.
Scheme is a Lisp, so McCarthy is its grandfather. Lisp is
different from just about every other programming language.
It's not just the parentheses, which are only syntax. In
Lisp and Scheme, programs and data are the same. To be more
specific, the representation of a Lisp program is the the
same representation used to represent Lisp data. The
equivalence of data and program is one of the truly Big
Ideas of computer science, one which I wrote about in
Basic Concepts: The Unity of Data and Program.
This idea is crucial to many areas of computer science,
even ones in which programmers do not take direct advantage
of it through their programming language.
We also owe McCarthy for the idea that we can write a language
interpreter in the language being interpreted.
Actually, McCarthy did more: he stated the features of Lisp
in terms of the language features themselves. Such a program
defines the language in which the program is written. This
is the idea of
meta-circular interpreter,
in which two procedures:
- a procedure that evaluates an expression, and
- a procedure that applies a procedure to its arguments
recurse mutually to evaluate a program. This is one of the
most beautiful ideas in computing, as well as serving as the
mechanism and inspiration for modern-day interpreters and
compilers.
Last week, the CS world lost Dennis Ritchie, the creator of
the C programming language. By all accounts I've read and
heard, McCarthy and Ritchie were very different kinds of
people. Ritchie was an engineer through and through, while
McCarthy was an academic's academic. So, too, are the
languages they created very different. Yet they are without
question the two most influential programming languages ever
created. One taught us about simplicity and made programming
across multiple platforms practical and efficient; the other
taught us about simplicity made programming a matter of
expressiveness and concision.
Though McCarthy created Lisp, he did not implement the first
Lisp interpreter. As Paul Graham relates in
Revenge of the Nerds,
McCarthy first developed Lisp as a theoretical exercise, an
attempt to create an alternative to the Turing Machine.
Steve Russell,
one of McCarthy's grad students, suggested that he could
implement the theory in an IBM 704 machine language program.
McCarthy laughed and told him, "You're confusing theory with
practice..." Russell did it any way. (Thanks to Russell and
the IBM 704, we also have car and cdr!)
McCarthy and Russell soon discovered that Lisp was more
powerful than the language they had planned to build after
their theoretical exercise, and the history of computing was
forever changed.
If you'd like, take a look at
my Scheme implementation
of John McCarthy's Lisp written in Lisp. It is remarkable
how much can be built out of so little. Alan Kay has often
compared this interpreter to Maxwell's equations in physics.
To me, its parts usually feel like the basic particles out of
which all matter is built. Out of these few primitives, all
programs are built.
I first learned of McCarthy not from Lisp but from my first love,
AI. McCarthy coined the term "Artificial Intelligence" when
organizing (along with Minsky, Rochester, and Shannon)
the 1956 Dartmouth conference
that gave birth to the field. I studied McCarthy's work in AI
using the language he had created. To me, he was a giant of
AI long before I recognized that he was giant of programming
languages, too. Like many pioneers of our field, he laid the
groundwork in many subdisciplines. They had no choice; they
had to build their work out of ideas using only the rawest
materials. McCarthy is even credited with the first public
descriptions of time-sharing systems and what we now call
cloud computing. (For McCarthy's 1970-era predictions about
home computers and the cloud, see his
The Home Information Terminal,
reprinted in 2000.)
Our discipline has lost a giant.
-----