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. We began to feel as if we really were responsible for the successful error-free perfect use of these machines. I don’t think we are. I think we’re responsible for stretching them setting them off in new directions and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all I hope we don’t become missionaries. Don’t feel as if you’re Bible sales-men. The world has too many of those already. What you know about computing other people will learn. Don’t feel as if the key to successful computing is only in your hands. What’s in your hands I think and hope is intelligence: the ability to see the machine as more than when you were first led up to it that you can make it more.
NORBERG: What does that phrase mean?
NEWELL: It turns out that Al Perlis’ claim to fame… His technical claim to fame is fairly modest; he actually did a couple of things, in terms of algebraic compilers for small machines… But fundamentally, it turns out that Allen Perlis epitomized, literally epitomized for the technical people in the field, the nature of computer science. People would go to conferences - by people, I mean people like myself, people in the field - people would go to conferences where Al Perlis was and in essence listen to every word he said, because every time he talked about a topic, which was full of these bon mots and epigrams and stuff like that, he was absolutely right about the way it should be. That’s why he’s the first Turing Award winner. Not at all for any technical contribution, some of course. But not really, because in one sense he understood what computer science was supposed to be and he laid it out, not in a bunch of writings, in a sort of epi-grammatic way by personal interactions with all of the significant people in the field and they all believed him. They fundamentally believed him.
He was bald, wheel-chair-bound, opinionated and something of an enigma, a pioneer in computer science.
This post is really quote heavy, but I think that’s fitting as Perlis is mostly known for his quotes. That may be why I’m fascinated by him, as I’ve had a special thing for quotes all my life.
I think Alan Perlis was the first computer scientist who grasped the aesthetic and artistic aspects of computing while also being a witty writer that wrote them down.
He had strong opinions, like a lot of pundits. Unlike a lot of pundits, many of his opinions have stood the test of time (for now).
Newell did an uncanny job describing Perlis’s importance. The one observation that I think he missed is how Perlis grasped the role of CS in education: as a training ground to teach people how to think about abstraction and processes, which are the aesthetics of math.
The purpose of a course in programming is to teach people how to construct and analyze processes. A course in programming is concerned with abstraction: the abstraction of constructing, analyzing, and describing processes…The point is to make the students construct complex processes out of simpler ones….A properly designed programming course will develop these abilities better than any other course.
Newell otherwise nailed the description, so I’ll just let Perlis’s quotes speak for him. Try and see how a working computer scientist could appreciate them.
One man’s variable is another man’s constant.
It’s easier to write an incorrect program than understand a correct one.
A programming language is low level when its programs require attention to the irrelevant.
Recursion is the root of computation since it trades description for time.
I’ve always thought that one was especially profound.
If you have a procedure with 10 parameters, you probably missed some.
Everything should be written top down, except the first time.
This one is true. As I program more, I find it’s easier to write out a mostly complete spec and then code it bottom up, then look for editing opportunities (aka refactor).
A program without a loop and a variable isn’t worth writing.
A language that doesn’t affect the way you think about programming is not worth knowing.
Haskell, Rust, Lisp (grudgingly), C, Coq, Assembly.
Optimization hinders evolution.
Coming to appreciate this one.
A good system can’t have a weak command language.
Bash is sometimes a pain but I once looked up JCL and I can see where he’s coming from.
Simplicity does not precede complexity but follows it.
Some languages absorb change but withstand progress.
In software, it’s often the early bird that makes the worm.
Like punning, programming is a play on words.
Think of all the energy expended and seeking a fundamental distinction between “algorithm” and “program”.
Prolonged contact with the computer turns clerks into mathematicians and vice versa.
A year spent in AI is enough to make one believe in God.
Dealing with failure is easy: work hard to improve. Success is also easy to handle: you solved the wrong problem. Work hard to improve.
Purely applicative languages are poorly applicable.
Forth and APL.
Computer science is embarrassed by the computer.
You think you know when you learn, are more sure when you can write, even more when you can teach, but certain when you can program.
Adapting old programs to fit new machines usually means adapting new machines to behave like old ones.
If you can imagine a society in which the computer is the only menial, you can imagine anything.
I repeat this to myself sometimes before going to bed.
Programmers are not to be measured by their ingenuity and their logic but by the completeness of their case analysis.
That one sounds like the Adeptus Mechanicus wrote it.