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.
-----