0% found this document useful (0 votes)
5 views

Epigrams on programming

The document is a tribute to Alan J. Perlis, a key figure in establishing the Computer Science Department at Carnegie Mellon University. It includes a collection of epigrams on programming that reflect on the complexities and nuances of programming and computer science. These epigrams serve as witty observations and insights into the nature of programming, illustrating the interplay between human creativity and computational processes.

Uploaded by

tichodroma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Epigrams on programming

The document is a tribute to Alan J. Perlis, a key figure in establishing the Computer Science Department at Carnegie Mellon University. It includes a collection of epigrams on programming that reflect on the complexities and nuances of programming and computer science. These epigrams serve as witty observations and insights into the nature of programming, illustrating the interplay between human creativity and computational processes.

Uploaded by

tichodroma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

Epigrams on Programming

Alan J. Perlis (1922-1990)

Carnegie Mellon is extremely grateful to Alan


for his fundamental contribution to the Univer­
Definition 1: epigram — a concise poem
sity — starting the Computer Science Depart­
ment in 1965. He was one of the three dealing pointedly and often satirically
founders, together with Herb Simon and Alien with a single thought or event and often
Newell. Although computer science at Car­ ending with an ingenious turn of thought;
negie Mellon actually came out of the business — a terse, sage, or witty and often para­
school, it was Alan Perils' doing to create an doxical saying.
independent department and give it a place
close to mathematics and the sciences.
Alan is vividly remembered by the senior
faculty, and remembered very fondly for his Epigrams on Programming
unique contribution not only as the first depart­ The phenomena surrounding computers are di­
ment head and organizer, but even more for the verse and yield a surprisingly rich base for launch­
team spirit he managed to establish. He was ing metaphors at individual and group activities.
the one who lived by the reasonable person Conversely, classical human endeavors provide an
principle — creating a supportive and construc­ inexhaustible source of metaphor for those of us
tive environment lacking much of the frustrat­ who are in labor within computation. Such
ing bureaucracy and aggravating competitive­ relationships between society and device are not
ness that one finds in many other places. Alan new, but the incredible growth of the computer's
was the one who started the policy of sharing influence (both real and implied) lends this sym­
research funding in such a way that incoming biotic dependency a vitality like a gangly youth
Ph.D. students could choose an advisor or a growing out of his clothes within an endless
research topic mainly depending on their inter­ puberty.
ests and not primarily on the temporary fund­ The epigrams that follow attempt to capture some
ing situation of individual faculty. of the dimensions of this traffic in imagery that
Alan will also be remembered as an inspired sharpens, focuses, clarifies, enlarges and beclouds
teacher and as an innovative educator... our view of this most remarkable of all mans' ar­
tifacts, the computer.
— A. Nico Habermann, Alan J. Perlis Professor of
Computer Science — Alan J. Perlis, while at Yale University
1. One man's constant is another man's 13. If two people write exactly the same
variable. program, each should be put in
microcode and then they certainly
2. Functions delay binding: data struc­ won't be the same.
tures induce binding.
Moral: Structure data late in the 14. In the long run every program be­
programming process. comes rococo — then rubble.
3. Syntactic sugar causes cancer of the 15. Everything should be built top-down,
semi-colons. except the first time.
4. Every program is a part of some other 16. Every program has (at least) two pur­
program and rarely fits. poses: the one for which it was written
and another for which it wasn't.
5. If a program manipulates a large
amount of data, it does so in a small 17. If a listener nods his head when you're
number of ways. explaining your program, wake him
up.
6. Symmetry is a complexity reducing
concept (co-routines include sub­ 18. A program without a loop and a struc­
routines); seek it everywhere. tured variable isn't worth writing.
7. It is easier to write an incorrect 19. A language that doesn't affect the way
program than understand a correct you think about programming is not
one. worth knowing.
8. A programming language is low level 20. Wherever there is modularity there is
when its programs require attention to the potential for misunderstanding:
the irrelevant. Hiding information implies a need to
check communication.
9. It is better to have 100 functions
operate on one data structure than 10 21. Optimization hinders evolution.
functions on 10 data structures.
22. A good system can't have a weak com­
10. Get into a rut early: Do the same mand language.
processes the same way. Accumulate
idioms. Standardize. The only 23. To understand a program you must
difference(i) between Shakespeare and become both the machine and the
you was the size of his idiom list — not program.
the size of his vocabulary. 24. Perhaps if we wrote programs from
11. If you have a procedure with 10 childhood on, as adults we'd be able to
parameters, you probably missed read them.
some. 25. One can only display complex infor­
12. Recursion is the root of computation mation in the mind. Like seeing,
since it trades description for time. movement of flow or alteration of view
is more important than the static pic­
ture, no matter how lovely.
26. There will always be tilings we wish to 36. The use of a program to prove the 4-
say in our programs that in all known color theorem will not change math­
languages can only be said poorly. ematics — it merely demonstrates that
the theorem, a challenge for a century,
27. Once you understand how to write a
is probably not important to math­
program get someone else to write it. ematics.
28. Around computers it is difficult to find
37. The most important computer is the
the correct unit of time to measure one that rages in our skulls and ever
progress. Some cathedrals took a cen­
seeks that satisfactory external
tury to complete. Can you imagine the emulator. The standardization of real
grandeur and scope of a program that computers would be a disaster — and
would take as long? so it probably won't happen.
29. For systems, the analogue of a face-lift 38. Structured Programming supports the
is to add to the control graph an edge law of the excluded muddle.
that creates a cycle, not just an ad­
ditional node. 39. Re: graphics: A picture is worth 10K
words — but only those to describe the
30. In programming, everything we do is a
picture. Hardly any sets of 10K words
special case of something more general
can be adequately described with pic­
— and often we know it too quickly. tures.
31. Simplicity does not precede com­ 40. There are two ways to write error-free
plexity, but follows it. programs; only the third one works.
32. Programmers are not to be measured 41. Some programming languages manage
by their ingenuity and their logic but to absorb change, but withstand
by the completeness of their case progress.
analysis.
42. You can measure a programmer's
33. The 11 th commandment was "Thou
perspective by noting his attitude on
Shalt Compute" or "Thou Shalt Not the continuing vitality of FORTRAN.
Compute" — I forget which.
43. In software systems it is often the early
34. The string is a stark data structure and bird that makes the worm.
everywhere it is passed there is much
duplication of process. It is a perfect 44. Sometimes I think the only universal in
vehicle for hiding information. the computing field is the fetch-
execute cycle.
35. Everyone can be taught to sculpt:
Michelangelo would have had to be 45. The goal of computation is the emula­
taught how not to. So it is with the tion of our synthetic abilities, not the
great programmers. understanding of our analytic ones.
46. Like punning, programming is a play
on words.
47. As Will Rogers would have said, 58. Fools ignore complexity. Pragmatists
"There is no such thing as a free vari­ suffer it. Some can avoid it. Geniuses
able." remove it.
48. The best book on programming for the 59. In English every word can be verbed.
layman is "Alice in Wonderland"; but Would that it were so in our program­
that's because it's the best book on ming languages.
anything for the layman.
60. Dana Scott is the Church of the Lattice-
49. Giving up on assembly language was Way Saints.
the apple in our Garden of Eden: Lan­
guages whose use squanders machine 61. In programming, as in everything else,
cycles are sinful. The LISP machine to be in error is to be reborn.
now permits LISP programmers to 62. In computing, invariants are
abandon bra and fig-leaf. ephemeral.
50. When we understand knowledge- 63. When we write programs that "learn",
based systems, it will be as before — it turns out we do and they don't.
except our finger-tips will have been
singed. 64. Often it is means that justify ends:
Goals advance technique and tech­
51. Bringing computers into the home nique survives even when goal struc­
won't change either one, but may revi­ tures crumble.
talize the corner saloon.
65. Make no mistake about it: Computers
52. Systems have sub-systems and sub­ process numbers — not symbols. We
systems have sub-systems and so on measure our understanding (and con­
ad finitum — which is why we're al­ trol) by the extent to which we can
ways starting over. arithmetize an activity.
53. So many good ideas are never heard 66. Making something variable is easy.
from again once they embark in a Controlling duration of constancy is
voyage on the semantic gulf. the trick.
. Beware of the Turing tar-pit in which 67. Think of all the psychic energy ex­
everything is possible but nothing of pended in seeking a fundamental dis­
interest is easy. tinction between "algorithm" and
55. A LISP programmer knows the value of "program."
everything, but the cost of nothing. 68. If we believe in data structures, we
56. Software is under a constant tension. must believe in independent (hence
Being symbolic it is arbitrarily perfec­ simultaneous) processing. For why
tible; but also it is arbitrarily change­ else would we collect items within a
able. structure? Why do we tolerate lan­
guages that give us the one without
57. It is easier to change the specification the other?
to fit the program than vice versa.
69. In a 5 year period we get one superb 79. A year spent in artificial intelligence is
programming language. Only we enough to make one believe in God.
can't control when the 5 year period
will begin. 80. Prolonged contact with the computer
turns mathematicians into clerks and
70. Over the centuries the Indians vice versa.
developed sign language for com­
municating phenomena of interest. 81. In computing, turning the obvious into
Programmers from different tribes the useful is a living definition of the
(FORTRAN, LISP, ALGOL, SNOBOL, etc.) word "frustration."
could use one that doesn't require 82. We are on the verge: Today our
them to carry a blackboard on their program proved Fermat's next-to-last
ponies. theorem!
71. Documentation is like term insurance: 83. What is the difference between a
It satisfies because almost no one who Turing machine and the modern com­
subscribes to it depends on its benefits. puter? It's the same as that between
72. An adequate bootstrap is a contradic­ Hillary's ascent of Everest and the es­
tion in terms. tablishment of a Hilton hotel on its
peak.
73. It is not a language's weaknesses but
its strengths that control the gradient t 84. Motto for a research laboratory: What
of its change: Alas, a language never we work on today, others will first
escapes its embryonic sac. think of tomorrow.

74. Is it possible that software is not like 85. Though the Chinese should adore APL,
anything else, that it is meant to be dis­ it's FORTRAN they put their money on.
carded: that the whole point is to al­ 86. We kid ourselves if we think that the
ways see it as a soap bubble? ratio of procedure to data in an active
75. Because of its vitality, the computing data-base system can be made ar­
field is always in desperate need of bitrarily small or even kept small.
new cliches: Banality soothes our 87. We have the mini and the micro com­
nerves. puter. In what semantic niche would
76. It is the user who should parametrize the pico computer fall?
procedures, not their creators. 88. It is not the computer's fault that
77. The cybernetic exchange between man, Maxwell's equations are not adequate
computer and algorithm is like a game to design the electric motor.
of musical chairs: The frantic search for 89. One does not learn computing by
balance always leaves one of the three using a hand calculator, but one can
standing ill at ease. forget arithmetic.
78. If your computer speaks English it was 90. Computation has made the tree flower.
probably made in Japan.
91. The computer reminds one of Lon 104. The proof of a system's value is its
Chancy — it is the machine of a existence.
thousand faces.
105. You can't communicate complexity,
92. The computer is the ultimate polluter: only an awareness of it.
Its feces are indistinguishable from the
food it produces. 106. It's difficult to extract sense from
strings, but they're the only com­
93. When someone says "I want a pro­ munication coin we can count on.
gramming language in which I need
only say what I wish done," give him a 107. The debate rages on: Is PL/I Bactrian
lollipop. or Dromedary?
94. Interfaces keep things tidy, but don't 108. Whenever two programmers meet to
accelerate growth: Functions do. criticize their programs, both are silent.
95. Don't have good ideas if you aren't 109. Think of it! With VLSI we can pack
willing to be responsible for them. 100 ENIACs in 1 sq. cm.
96. Computers don't introduce order 110. Editing is a rewording activity.
anywhere as much as they expose op­
111. Why did the Roman Empire collapse?
portunities.
What is the Latin for office automa­
97. When a professor insists computer tion?
science is X but not Y, have compas­
112. Computer Science is embarrassed by
sion for his graduate students.
the computer.
98. In computing, the mean time to failure
113. The only constructive theory connect­
keeps getting shorter.
ing neuroscience and psychology will
99. In man-machine symbiosis, it is man arise from the study of software.
who must adjust: The machine can't. 114. Within a computer natural language is
100. We will never run out of things to unnatural.
program as long as there is a single 115. Most people find the concept of pro­
program around.
gramming obvious, but the doing im­
101. Dealing with failure is easy: Work possible.
hard to improve. Success is also easy to 116. You think you know when you learn,
handle: You've solved the wrong
are more sure when you can write,
problem. Work hard to improve.
even more when you can teach, but
102. One can't proceed from the informal to certain when you can program.
the formal by formal means.
103. Purely applicative languages are
poorly applicable.
117. It goes against the grain of m
odern Who Was Alan J. Perlis?
education to teach children to
program. What run is there in m Reknowned as an educator and
ak
plans, acquiring discipline in orga ing ming system and language
as a program­
niz­ developer, Alan
ing thoughts, devoting attention Perlis was the first Editor-in-C
hief of the Com­
to munications of ACM (1958-1962
detail and learning to be self-critic ), President of
al? ACM from 1962 to 1964, and the
fir
118. If you can imagine a society
in which in 1966, of ACM's Turing Award st recipient,
.
the computer-robot is the only me
nial, He was born in Pittsburgh, PA
you can imagine anything. 1922. He received a B.S. in Ch
on April 1,
emistry in 1942
119. Programming is an unnatura from Carnegie Institute of Te
l act. chnology (now
Carnegie Mellon University).
After serving in
120. Adapting old programs to n't USAAF from 1942 to 1945 (1'st
new post-graduate work at the Ca
Lt.-ETO), he did
machines usually means adaptin lifornia Institute
g new of Technology in 1946-1947, rec
machines to behave like old ones eiving an M.S.
. in Mathematics. He received his
121. In seeking the unattainable, Ph.D. in Math­
simplicity ematics from the Massachuset
ts Institute of
only gets in the way. If there are Technology in 1950 and sp
ent 1951 as a
epigrams, there must be meta- Research Mathematician in the
Multi-Machine
epigrams. Computing Laboratory of the Ba
llistic Research
Laboratories at Aberdeen Pr
122. Epigrams are interfaces acro oving Grounds.
ss which He then returned to the Massac
husetts Institute
appreciation and insight flow. of Technology to work at Proje
ct Whirlwind,
developing programs throughou
123. Epigrams parametrize auras t 1952.
. From September 1952 through
124. Epigrams are macros, since 1956 he was
they are Assistant Professor of Mathem
atics at Purdue
executed at read time. University and director of a co
mputer center
consisting of an I.B.M. CPC (in
125. Epigrams crystallize incongr stalled October
uities. 1952) that was replaced by a
Datatron 205 in
126. Epigrams retrieve deep sema the spring of 1954. In 1955 he he
aded a group at
ntics from Purdue that defined a language
a data base that is all procedure. Translator") and developed a
IT (for "Internal
compiler for it.
127. Epigrams scorn detail and ma This work was continued on the
ke a IBM 650 when
point: They are a superb high-lev he took the position of Associa
el te Professor of
documentation. Mathematics and Director of the
Computation
Center at Carnegie Tech in 195
6. A version of
128. Epigrams are more like vitam IT was running at the center in
November 1956,
ins than and within a year it was in wide
protein. use on 650's at
a number of university computi
129. Epigrams have extremely lo ng centers. (The
w entropy. one for Purdue's Datatron was
also running in
1957; the succession of algebrai
130. The last epigram? Neither ea c language com­
t nor pilers and assemblers were de
signed and built
drink them, snuff epigrams. for the 650 by Perlis, Joseph Sm
ith, Harold Van
Zoeren, and Arthur Evans).
8

"Research in programming languages domin­ After a tour as visiting scientist at the Math-
ated my life from then on" said Perlis at the ematische Centrum in Amsterdam, Nether­
ACM SIGPLAN History of Programming Lan­ lands (1965-1966), he held the title of University
guages Conference in Los Angeles, California, Professor of Computer Science and Math­
June 1-3,19781 . ematics at Carnegie Tech.
In 1957, ACM President John W. Carr, III, ap­ In 1971 he joined the new Computer Science
pointed Perlis chairman of a programming lan­ Department at Yale University as Eugene Hig-
guage committee and head of a subcommittee gins Professor of Computer Science, and played
to meet with a similar subcommittee of GAMM a leading role in developing that department.
(Gesellschaft fur angewandte Mathematik und He was its chairman for the 1976-1977 year and
Mechanik) in Europe to design a "universal al­ from 1978-1980, serving again as acting chair­
gebraic language". The group of eight met in man in 1987. During these years he developed
Zurich and specified what was finally called new computer courses at both the graduate and
ALGOL-58. The report on Algol-58 by Perlis undergraduate levels. From 1977-1978 he was
and Samelson was the basis of a formal Gordon and Betty Moore Professor of Com­
specification of Algol-60 by thirteen inter­ puter Science at the California Institute of Tech­
national scientists (including Perlis, of course). nology. More than a dozen graduate students
Meanwhile, at Carnegie Tech a course on pro­ at Yale received their doctorates under his su­
gramming, distinct from numerical analysis pervision.
and available to all undergraduate students, He received honorary degrees from Davis
was introduced. Perlis was Professor and and Elkins College, Purdue University, Water­
Chairman of the Mathematics Department at loo University, and Sacred Heart University.
Carnegie Tech while continuing as Director of Beside dozens of papers, written alone and
the Computation Center from 1960 to 1964, and with co-workers, on programming languages,
in 1962 he became Co-Chairman of an interdis­ systems and developments, he was the author
ciplinary doctoral program in Systems and of Introduction to Computer Science, Harper and
Communications Sciences. This led to the es­ Row (1972,1975); and, with B.A. Caller, of A
tablishment of an ARPA supported program in View of Programming Languages, Addison-
computer science, which, in turn, led in 1965 to Wesley, 1970.
a graduate department of Computer Science.
He was its first chairman, remaining so until Throughout his career he continued to serve
1971. More than a dozen of its graduates on committees and boards, national and inter­
received their degrees from him; these include national, for medical research, natural language
well-known leaders in teaching and research processing and translation, and, for the last
from coast to coast and a few abroad. twenty years, on software engineering.
During the 1960's he developed such exten­ Perlis will be remembered as much for his
sions to Algol as Formula Algol, an Algol personal warmth and pervasive joy as for
manipulator of formal mathematical expres­ specific technical achievements. He believed
sions, and LCC, a form of Algol adapted to in­ that computing should be fun; this contagious
teractive incremental programming. enthusiasm set the tone of both his research
and his teaching.
— Courtesy Communications of the ACM, 1990

1See History of Programming Languages, ed. R.L. Wexelblatt,


Academic Press, 1981, p. 171.

You might also like