Computational Complexity and other fun stuff in math and computer science from Lance Fortnow and Bill Gasarch

Tuesday, October 25, 2011

John McCarthy (1927-2011)

First Steve and then Dennis and now we have the death of a third computing pioneer this month. John McCarthy passed away earlier this week at the age of 84.

McCarthy was one of the founders and early promoters of Artificial Intelligence and gave the field its name. He developed Lisp for the same reason Newton invented calculus, he needed a system to do his research so he created his own. Lisp, built on Church's λ-calculus, was the first popular example of a functional programming language, an entirely different way to think about programming than the more structured languages. McCarthy received the ACM Turing Award in 1971.

McCarthy truly believed a computer could capture human intelligence and his pioneering work may yet help make that happen.

5 comments:

John McCarthy was also a really nice guy. I always wondered how well he and Donald Knuth got along, since the code they've inspired looks so different. So I asked him. He responded by paying a huge compliment to Knuth, another nice person. He said that when Knuth won the Kyoto Prize after TAOCP Volume 3, there was a faculty reception at Stanford. McCarthy congratulated Knuth and said, "You must have read 500 papers before writing it." Knuth answered, "Actually, it was 5,000." Ever since, I look at TAOCP and consider that each page is the witty and insightful synthesis of ten scholarly papers, with added Knuth insights and inventions. But I know that because of the gracious man that John McCarthy was.

So when will they start giving Turing awards for work that was done after 1980?

Thompson & Ritchie's Turing Award in 1983 was for their work on UNIX in the 70s.

Now 30 years later the Turing Award is still primarily for work in the 70s. Liskov's 2008 award was for CLU, from the 70s. Thacker's 2009 award was for the Alto, from the 70s. Valiant's 2010 award was partially for #P and Permanent (1979).

Maybe in 30 or 40 more years we'll have worked our way through the 1980s and Madhu Sudan will finally get his Turing Award in 2050.

Like all great software products, LISP was great for several reasons. Being a functional language with absolutely clear and understandable semantics is one of them. Forcing programmers to think about recursion as a natural construct is another. Portability (just write a LISP interpreter -- it is only about two pages long if you use LISP) is yet another. And last but not least, it was the first language where you could easily build lists and trees, and therefore use data structures that did not have preset sizes.

Another great consequence was that people learned to stop thinking of programs and data as "inherently" different objects.