TITLE: The Next 700 ... AUTHOR: Eugene Wallingford DATE: June 04, 2009 8:38 PM DESC: ----- BODY:

I have regarded it as the highest goal
of programming language design to enable
good ideas to be elegantly expressed.
-- Tony Hoare, The Emperor's Old Clothes

One of computing's pioneers has passed. Word came this morning from Queen Mary, University of London, that Peter Landin died yesterday. Landin is perhaps not as well known on this side of the pond as he should be. His university web page lists his research interests as "logic and foundations of programming; theoretical computations; programming foundations; computer languages", but it doesn't say much about his seminal contributions in those areas. Nor does it mention his role helping to establish computer science as a discipline in the UK. In the world of programming languages, though, Landin is well-known. He was one of the early researchers influenced by McCarthy's Lisp, and he helped to develop the connection between the lambda calculus and the idea of a programming language. In turn, He influenced Tony Hoare and Hoare's creation of Quicksort. This followed his involvement in the design of Algol 60, which introduced recursion to a wider world of computer scientists and programmers. Algol 60 was in many ways the alpha of modern programming languages. I am probably like many computer scientists in having read only one of Landin's papers, The Next 700 Programming Languages. I remember first running across this paper while studying functional languages a decade or so ago. Its title intrigued me, and its publication date -- July 1965 -- made me wonder just what he could mean by it. I was blown away. He distinguished among four different levels of features that denote a language: physical, logical, abstract, and "applicative expressions". The last of these abstracted even more grammatical detail away from what many of us tend to think of as the abstract tree of a program. He also wrote about the role of where clauses in specifying local bindings natural just as mathematicians long have. Before reading this paper, I had never seen a discussion of the physical appearance of programs written in a language. Re-reading the paper now, I had forgotten that Landin used an analogy to soccer, the off-side rule, to define a class of physical appearances in which indentation mattered. After we as a discipline left the punch card behind, for many years it was unstylish at best, and heresy at worst, for whitespace to matter in programming language design. These days, languages such as Python and Haskell have sidestepped this tradition and put whitespace to good use. On a lighter note, Landin also coined the term syntactic sugar, a fact I learned only while reading about Landin after his passing. What whimsy! A good name is sometimes worth as much as a good idea. I join Hoare in praising Landin for showing him the elegance of recursion, but also reserve a little laud for giving us such a wonderful term to use when talking about the elegance of small languages. This isn't quite an END DO moment for me. I heard about John Backus throughout my undergrad and graduate careers, and his influence on the realization of the compiler has affected me deeply for as long as I've been a student of computer science. I came to Landin later, through his theoretical contributions. Yet it's interesting that they shared a deep appreciation for functional languages. For much of the discipline's history, functional programming has remained within the province of the academic, looked upon disdainfully by practitioners as impractical, abstract, and a distraction from the real business of programming. Now the whole programming world is atwitter with new languages, and new features for old languages, that draw on the abstraction, power, and beauty of functional programming. The world eventually catch up with ideas of visionaries. An e-mail message from Edmund Robinson shared the sad news of Landin's passing with many people. In it, Robinson wrote:
The ideas in his papers were truly original and beautiful, but Peter never had a simplistic approach to scientific progress, and would scoff at the idea of individual personal contribution.
Whatever Landin's thoughts about "the idea of individual personal contribution", the computing world owes him a debt for what he gave us. Read "The Next 700 Programming Languages" in his honor. I am reading it again and plan next to look into his other major papers, to see what more he has to teach me. -----