Programming-related quotes

I consider it the obligation of scientists and intellectuals to ensure that their ideas are made accessible and thus useful to society instead of being mere playthings for specialists.
(Bjarne Stroustrup)

Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.
(from Revised Report on Scheme, 1991)

"OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them."
(Alan Kay creator of Smalltalk) Quote from here.

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.
(Alan Perlis)

Increasingly, people seem to misinterpret complexity as sophistication, which is baffling - the incomprehensible should cause suspicion rather than admiration.
(Niklaus Wirth)

It is...fruitless to question and debate early design decisions; better solutions are often quite obvious in hindsight. Perhaps the most important point was that someone did make decisions, in spite of uncertainties.
(Niklaus Wirth)

Languages shouldn't hinder progress by outliving their usefulness.
(Alan Kay)

Syntactic sugar causes cancer of the semicolon.
(Epigrams in Programming, ACM SIGPLAN Sept. 1982)

APL is a write-only language. I can write programs in APL, but I can't read any of them.
(Roy Keir)

Any sufficiently advanced bug is indistinguishable from a feature.
(Rich Kulawiec)

A language that doesn't affect the way you think about programming is not worth knowing.

What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?
(Larry Wall)

Real World, The n.:

1. In programming, those institutions at which programming may be used in the same sentence as FORTRAN, COBOL, RPG, IBM, etc. 2. To programmers, the location of non-programmers and activities not related to programming. 3. A universe in which the standard dress is shirt and tie and in which a person's working hours are defined as 9 to 5. 4. The location of the status quo. 5. Anywhere outside a university. "Poor fellow, he's left MIT and gone into the real world." Used pejoratively by those not in residence there. In conversation, talking of someone who has entered the real world is not unlike talking about a deceased person.
(The Jargon File)

Weinberg's Second Law:

If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.

Beware of bugs in the above code; I have only proved it correct, not tried it.
(Donald Knuth)

"Imagine if every Thursday your shoes exploded if you tied them the usual way. This happens to us all the time with computers, and nobody thinks of complaining."
-- Jeff Raskin, interviewed in Doctor Dobb's Journal

'Tis the dream of each programmer,
Before his life is done,
To write three lines of APL,
And make the damn things run.

The goal of Computer Science is to build something that will last at least until we've finished building it.

Basic, n.:

A programming language. Related to certain social diseases in that those who have it will not admit it in polite company.

User n.:

A programmer who will believe anything you tell him.

Real programmers don't write in FORTRAN. FORTRAN is for pipe stress freaks and crystallography weenies. FORTRAN is for wimp engineers who wear white socks.

Our documentation manager was showing her two year old son around the office. He was introduced to me, at which time he pointed out that we were both holding bags of popcorn. We were both holding bottles of juice. But only *he* had a lollipop.

He asked his mother, "Why doesn't HE have a lollipop?"

Her reply:

"He can have a lollipop any time he wants to. That's what it means to be a programmer."


Named after the famous French philosopher and mathematician Rene DesCartes, RENE is a language used for artificial intelligence. The language is being developed at the Chicago Center of Machine Politics and Programming under a grant from the Jane Byrne Victory Fund. A spokesman described the language as "Just as great as dis [sic] city of ours."

The center is very pleased with progress to date. They say they have almost succeeded in getting a VAX to think. However, sources inside the organization say that each time the machine fails to think it ceases to exist.

"Deliver yesterday, code today, think tomorrow."

If it takes smart people to use a language, that language is a *failure*. What we need is a language that more ordinary people can use effectively. Because then smart people can be even more productive.


SIMPLE is an acronym for Sheer Idiot's Monopurpose Programming Language Environment. This language, developed at the Hanover College for Technological Misfits, was designed to make it impossible to write code with errors in it. The statements are, therefore, confined to BEGIN, END and STOP. No matter how you arrange the statements, you can't make a syntax error. Programs written in SIMPLE do nothing useful. Thus they achieve the results of programs written in other languages without the tedious, frustrating process of testing and debugging.

Eagleson's Law:

Any code of your own that you haven't looked at for six or more months, might as well have been written by someone else. (Eagleson is an optimist, the real number is more like three weeks.)

A language that doesn't have everything is actually easier to program in than some that do.
-- Dennis M. Ritchie

Real computer scientists don't write code. They occasionally tinker with `programming systems', but those are so high level that they hardly count (and rarely count accurately; precision is for applications.)

Niklaus Wirth has lamented that, whereas Europeans pronounce his name correctly (Ni-klows Virt), Americans invariably mangle it into (Nick-les Worth). Which is to say that Europeans call him by name, but Americans call him by value.

"... one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs."
-- Robert Firth

God is real, unless declared integer.

Endless Loop: n., see Loop, Endless.
Loop, Endless: n., see Endless Loop.
-- Random Shack Data Processing Dictionary

"Now this is a totally brain damaged algorithm. Gag me with a smurfette."
-- P. Buhr, Computer Science 354

No plain fanfold paper could hold that fractal Puff --
He grew so fast no plotting pack could shrink him far enough.
Compiles and simulations grew so quickly tame
And swapped out all their data space when Puff pushed his stack frame.
Puff the fractal dragon was written in C,
And frolicked while processes switched in mainframe memory.
Puff the fractal dragon was written in C,
And frolicked while processes switched in mainframe memory.

Puff, he grew so quickly, while others moved like snails
And mini-Puffs would perch themselves on his gigantic tail.
All the student hackers loved that fractal Puff
But DCS did not like Puff, and finally said, "Enough!"
Puff used more resources than DCS could spare.
The operator killed Puff's job -- he didn't seem to care.
A gloom fell on the hackers; it seemed to be the end,
But Puff trapped the exception, and grew from naught again!

PL/1, "the fatal disease", belongs more to the problem set than to the solution set.
-- E. W. Dijkstra

Yea, though I walk through the valley of the shadow of APL, I shall fear no evil, for I can string six primitive monadic and dyadic operators together.
-- Steve Higgins

You can tell how far we have to go, when FORTRAN is the language of supercomputers.
-- Steven Feiner

Real programmers don't comment their code. It was hard to write, it should be hard to understand.

The Briggs/Chase Law of Program Development:
To determine how long it will take to write and debug a program, take your best estimate, multiply that by two, add one, and convert to the next higher units.

"This process can check if this value is zero, and if it is, it does something child-like."
-- Forbes Burkowski, Computer Science 454

A master was explaining the nature of Tao to one of his novices. "The Tao is embodied in all software -- regardless of how insignificant," said the master.

"Is Tao in a hand-held calculator?" asked the novice.

"It is," came the reply.

"Is the Tao in a video game?" continued the novice.

"It is even in a video game," said the master.

"And is the Tao in the DOS for a personal computer?"

The master coughed and shifted his position slightly. "The lesson is over for today," he said.

-- "The Tao of Programming"

When in doubt, use brute force.
-- Ken Thompson

Lisp has jokingly been called "the most intelligent way to misuse a computer". I think that description is a great compliment because it transmits the full flavor of liberation: it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts.
-- Edsger Dijkstra, CACM, 15:10

A LISP programmer knows the value of everything, but the cost of nothing.

If one character, one pause, of the incantation is not strictly in proper form, the magic doesn't work. Human beings are not accustomed to being perfect, and few areas of human activity demand it. Adjustment to the requirement for perfection is, I think, the most difficult part of learning to program.
-- Frederick Brooks

Isn't it funny that people always say things like:

XXXX would be a great programming language if
- there was a decent introductory text book.
- it had a decent interpreter/compiler.
- it had a decent *free* interpreter/compiler.
- the interpreter/compiler issued decent error messages.
- it was more/less interactive.
- it had a decent syntax-directed editor.
- it had decent libraries, or I/O, or graphics.
- it had/didn't have types.
- it had classes/inheritance/multiple inheritance/polymorphism/mixins, etc.
- it had a decent class browser.
- it used less resources.
- it ran on more platforms.
- it was more like English (or BASIC or COBOL).
- more (decent) people used it.

There are several conclusions you could draw:

0) Most programming languages are indecent. :-)

1) A great language requires a great development and execution environment.

Or maybe that should be:

1) With a great development and execution environment, who cares about the language?

2) A programming language isn't its specification. It's the union of the grammar and the teachers and the textbooks and the classes and the compilers and the editors and the libraries and how the language is used.

3) Purity isn't enough. You can program with NAND gates. The purpose of a programming languages is to map human mental models to machine constructs. The easier and more accurate the mapping, the "better" the language. Maybe a language that's unusable without a huge support environment isn't very usable.

-- Bob Bagwill

You can't make a program without broken egos.

A student, in hopes of understanding the Lambda-nature, came to Greenblatt. As they spoke a Multics system hacker walked by. "Is it true," asked the student, "that PL-1 has many of the same data types as Lisp?" Almost before the student had finished his question, Greenblatt shouted, "FOO!", and hit the student with a stick.

BASIC programmers never die, they GOSUB and don't RETURN.

Old programmers never die. They just branch to a new address.

APL is a mistake, carried through to perfection. It is the language of the future for the problems of the past: it creates a new generation of coding bums.

Steinbach's Guideline for Systems Programming:
Never test for an error condition you don't know how to handle.

Lisp hackers have to be bound (to-do 'it)

Another Glitch in the Call
(Sung to the tune of a recent Pink Floyd song.)

We don't need no indirection
We don't need no flow control
No data typing or declarations
Did you leave the lists alone?

Hey! Hacker! Leave those lists alone!

All in all, it's just a pure-LISP function call.
All in all, it's just a pure-LISP function call.

A famous Lisp Hacker noticed an Undergraduate sitting in front of a Xerox 1108, trying to edit a complex Klone network via a browser. Wanting to help, the Hacker clicked one of the nodes in the network with the mouse, and asked "what do you see?" Very earnestly, the Undergraduate replied "I see a cursor." The Hacker then quickly pressed the boot toggle at the back of the keyboard, while simultaneously hitting the Undergraduate over the head with a thick Interlisp Manual. The Undergraduate was then Enlightened.

Oh, I am a C programmer and I'm okay
I muck with indices and structs all day

And when it works, I shout hoo-ray
Oh, I am a C programmer and I'm okay

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Kernighan

Beware of Programmers who carry screwdrivers. -- Leonard Brandwein

I saw `cout' being shifted "Hello world" times to the left and stopped right there. -- Steve Gonedes

Do what you think is interesting, do something that you think is fun and worthwhile, because otherwise you won't do it well anyway. -- Brian Kernighan.

There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies,and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. -C.A.R. Hoare

Programming is understanding. (Kristen Nygaard)

Computing Science is no more about computers than astronomy is about telescopes. (Edsger Dijkstra)