Skip to content

Alan Perlis and the Epigrams on Programming

Abstract

Alan J. Perlis (1922–1990) built one of the first working compilers, sat on both ALGOL committees, edited the first volumes of Communications of the ACM, founded the graduate computer science department at Carnegie Tech in 1965, and in 1966 became the first person to receive the Turing Award. He is remembered today less for any of that than for the one-line “Epigrams on Programming” he published in 1982, which programmers still quote at each other without knowing who wrote them.

IBM 650 EMMA
An IBM 650 with its 533 card read-punch, the machine on which Perlis’s IT compiler ran from November 1956 (this one is EMMA, Norway’s first 650, at the Norwegian Museum of Science and Technology). Image: Mahlum, public domain, via Wikimedia Commons.

Pittsburgh, Chemistry, and Whirlwind

Alan Jay Perlis was born in Pittsburgh on 1 April 1922 and took a bachelor’s degree in chemistry at the Carnegie Institute of Technology in 1943. Army service in the Second World War turned him toward mathematics. At MIT he took a master’s degree in 1949 and a PhD in 1950 under Philip Franklin, with a dissertation on integral equations. A year at the Aberdeen Proving Ground as a research mathematician followed in 1951, then a spell on Project Whirlwind in 1952. Whirlwind was where he met a computer that could be programmed rather than merely wired, and he did not go back to integral equations.

Purdue and the Datatron

In 1952 Perlis joined Purdue as an assistant professor of mathematics, hired to help run the university’s IBM Card-Programmed Calculator. Two years later he persuaded Purdue’s president to spend $125,000 on an ElectroData Datatron, choosing it over an IBM 650. In 1955 two of his students, Joe Smith and Tom Cheatham, finished the Purdue Compiler for the Datatron under his direction. The Purdue computing archive calls it “one of the first (or the first) algebraic language compilers for the Datatron 204,” which is the kind of hedged superlative the 1950s deserve: several groups were building algebraic compilers in the same two years, and priority depends on what one counts as finished.

Purdue later founded the first computer science department in the United States, approved by its trustees on 24 October 1962 under Samuel Conte. Perlis had nothing to do with that. He had left in 1956.

IT and the IBM 650

Carnegie Tech hired Perlis in 1956 as associate professor and director of its new Computation Center. The center’s machine was an IBM 650, the drum-memory workhorse that sold in the thousands to universities, and Perlis brought the Purdue compiler idea with him. With Joseph Smith and Harold Van Zoeren he wrote IT, the Internal Translator, and it was running on the Carnegie 650 in November 1956. The March 1957 report Internal Translator (IT): A Compiler for the 650 is credited to Perlis, Smith and Van Zoeren, and within a year IT was in use on 650s at a number of university computing centers.

Donald Knuth later described it as the first successful compiler. That judgment is about use, not priority: IT was not the first compiler, but it was one of the first that other people’s students could take, run, and modify. IBM took the same view. Bob Bemer’s FOR TRANSIT, IBM’s own FORTRAN subset for the 650 released in 1957, compiled FORTRAN into IT as its first pass, then IT into SOAP assembly, then SOAP into machine code. IBM’s FORTRAN for the 650 was, in its middle stage, Perlis’s compiler.

Perlis, Smith, Van Zoeren and Arthur Evans built a succession of further algebraic compilers and assemblers for the 650 at Carnegie over the following years.

ALGOL

The ACM formed a committee in 1957 to propose a common algebraic language, and Perlis chaired it. In May 1958 four of its members, Perlis, John Backus, Charles Katz and Joseph Wegstein, met four delegates of the German GAMM in Zurich and produced the International Algebraic Language, renamed ALGOL the following year. Perlis returned for the Paris meeting of January 1960 that produced ALGOL 60, the report edited by Peter Naur whose block structure, recursion and formal syntax shaped every language that followed. Through the 1960s he kept extending it at Carnegie: Formula ALGOL, for manipulating algebraic expressions as data, and LCC, a version for interactive incremental use.

He gave the American side of the story himself at the first History of Programming Languages conference in 1978, in a paper titled exactly that. ALGOL had never won in America; IBM did not back it and FORTRAN stayed the scientific language of record. Perlis was one of the few people who had been in the room for both the ACM committee and the Zurich meeting, and his paper is the primary account of why the Americans came and what they wanted.

Making a Discipline

Between 1958 and 1962 Perlis was the first editor-in-chief of Communications of the ACM. From 1962 to 1964 he was ACM president. In 1960 he became chairman of Carnegie’s mathematics department, and in 1965, with Allen Newell and Herbert Simon as colleagues, he founded its graduate Department of Computer Science and served as its first head until 1971. It was one of the first doctoral programs in the subject anywhere, and Carnegie Mellon’s later standing in the field runs back to it.

That the subject deserved a department at all still needed arguing. On 22 September 1967 Newell, Perlis and Simon published a letter in Science headed simply “Computer Science,” answering the objection that a science could not be organized around a machine. A year later Perlis put the argument in the form that stuck: there is no science of an instrument, and computer science is no more the science of computers than astronomy is of telescopes. The line is almost always attributed to Edsger Dijkstra, who never wrote it; see The Birth of Computer Science as a Discipline and Myths and Misconceptions.

In 1966 the ACM created the A. M. Turing Award and gave the first one to Perlis, “for his influence in the area of advanced programming techniques and compiler construction.” His lecture, “The Synthesis of Algorithmic Systems,” appeared in the Journal of the ACM in January 1967 and argued that programming itself, not the machines, was the subject the field should be built on. He was at the NATO conference in Garmisch in October 1968 that named the software crisis, one of about fifty participants.

Yale and the Epigrams

In 1971 Perlis moved to Yale as Eugene Higgins Professor of Computer Science. He chaired the department in 1976–77 and 1978–80 and again as acting chairman in 1987, and he stayed until his death. The National Academy of Engineering elected him in 1977; the AFIPS Education Award followed in 1984 and the IEEE Computer Pioneer Award in 1985. His doctoral students included David Parnas, Zohar Manna, Gary Lindstrom and John Levine.

What Yale mostly produced, as far as the wider world is concerned, was a seven-page piece in the September 1982 SIGPLAN Notices: “Epigrams on Programming,” 130 numbered sentences with no connecting prose, the last nine of them epigrams about epigrams. Number 1: “One man’s constant is another man’s variable.” Number 7: “It is easier to write an incorrect program than understand a correct one.” Number 19: “A language that doesn’t affect the way you think about programming, is not worth knowing.” Number 54 coined a term the field kept: “Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy,” which is now the standard name for a language that is Turing-complete and useless (see Esoteric Programming Languages). Number 58: “Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.” Number 93: “When someone says ‘I want a programming language in which I need only say what I wish done,’ give him a lollipop.” Number 119: “Programming is an unnatural act.”

Epigram 9, “It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures,” reappeared in the foreword Perlis wrote for Abelson and Sussman’s Structure and Interpretation of Computer Programs in 1985, alongside his comparison of Pascal to pyramid-building and Lisp to growing organisms (“the pyramid must stand unchanged for a millennium; the organism must evolve or perish”). The book’s dedication page carries another passage of his: “I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously.” It ends: “Above all, I hope we don’t become missionaries.”

He died of a heart attack at Yale-New Haven Hospital on 7 February 1990, aged 67. His papers went to the Charles Babbage Institute the same year. Yale has held an Alan J. Perlis Symposium each spring since April 1992, funded largely by a bequest from a former student who died young.

Dead End: The Compiler Nobody Remembers

IT is the strange case of a founding artifact that vanished. It ran at a number of university computing centers, IBM built FOR TRANSIT on top of it, and Knuth learned compiling from it. It is nevertheless absent from most histories, and no later language claims descent from it. The reasons are ordinary. IT was tied to the 650, a drum machine of the mid-1950s; its notation was an internal one (the name says so) and was never meant to be written by hand for long; and the two languages that mattered on either side of it, FORTRAN and ALGOL, had institutions behind them, IBM and an international committee, while IT had a university computing center. Perlis himself moved on to ALGOL within two years. The compiler’s real legacy is procedural: it proved in 1956 that an algebraic compiler could be built by a small university group and given away, which is the model every later academic language followed.

The epigrams outlived the compiler by design. Perlis, who had spent thirty years arguing that programming was the subject and machines were incidental, left a text with no machine in it at all.

📚 Sources