The key to performance is elegance, not battalions of special cases. — Jon Bentley and Doug McIlroy, found here
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
— Jamie Zawinski
SQL, Lisp, and Haskell are the only programming languages that I've seen where one spends more time thinking than typing.
— Philip Greenspun
I object to doing things that computers can do.
— Olin Shivers
Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.
— Eric Raymond, "How to Become a Hacker"
Programs must be written for people to read, and only incidentally for machines to execute.
— Abelson & Sussman, SICP, preface to the first edition
Despite the seemingly endless necessity for doing so, it's actually not possible to reverse-engineer intended invariants from staring at thousands of lines of code (not in C, and not in Python code either).
— Tim Peters
It is a mistake to think that programmers wares are programs. Programmers have to produce trustworthy solutions and present it in the form of cogent arguments. Programs source code is just the accompanying material to which these arguments are to be applied to.
— E. Dijkstra
This does not mean that I fail to recognise that Lisp is still #1 for key algorithmic techniques such as recursion and condescension. It just means that I have no idea how, or indeed if, Lisp handles exceptions.
— Verity Stob
The first law of computer science: Every problem is solved by yet another indirection.
— Bjarne Stroustrup
All problems in computer science can be solved by another level of indirection, but that usually will create another problem. — David Wheeler, inventor of the subroutine
Object-oriented programming is an exceptionally bad idea which could only have originated in California.
— Edsger Dijkstra
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
— Bjarne Stroustrup
Greenspun's 10th Rule of Programming: Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
— Greenspun's Tenth Rule
Despite the seemingly endless necessity for doing so, it's actually not possible to reverse-engineer intended invariants from staring at thousands of lines of code (not in C, and not in Python code either).
— Tim Peters
It is a mistake to think that programmer's wares are programs. Programmers have to produce trustworthy solutions and present it in the form of cogent arguments. Programs source code is just the accompanying material to which these arguments are to be applied to.
— E. W. Dijkstra
If we knew what we were doing, it wouldn't be called research.
— Einstein
The primary purpose of the DATA statement is to give names to constants; instead of referring to pi as 3.141592653589793 at every appearance, the variable pi can be given that value with a DATA statement and used instead of the longer form of the constant. This also simplifies modifying the program, should the value of pi change.
— The FORTRAN manual for the Xerox Computers (This sounds too bad to be true. Can anyone confirm this?)
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
— E. W. Dijkstra
It is practically impossible to teach good programming style to students that [sic] have had prior expose to BASIC; as potential programmers they are mentally mutilated beyond hope of regeneration.
— E. W. Dijkstra
Beware of bugs in the above code; I have only proved it correct, not tried it.
— Donald E. Knuth
Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin.
— Bruce Schneier in Applied Cryptography, p.39, quoting Knuth quoting John von Neumann
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.
— Brian W. Kernighan
Even the small children are used to questions like *Are you hungry?* It's very unlikely that they answer *Zero!* Yet, they have no formal knowledge of booleans. ;)
— Petr Prikryl on comp.lang.python
Caveat hackor!
— Jon Bentley
A programming language is low level when its programs require attention to the irrelevant.
— Alan Perlis
Many jobs worth doing aren't worth doing right; a novelist is foolish to agonize over each word in a shopping list.
— Jon Bentley in Programming Pearls Communications of the ACM February 1986 Volume 29 Number 2
You are not expected to understand this.
— A comment from the source of UNIX 6th Ed, unix/slp.c, line 438
Real Users never know what they want, but they always know when your program doesn't deliver it.
— Seen in ASR
That is not a mess on my desk. I am using a hashing algorithm to improve access time.
— Mark Tomory's .sig file, mt@carthage.edu
Intelligence: Finding an error in a Knuth text.
Stupidity: Cashing that $2.56 check you got.
— a Slashdot sig, Quoted by Edward O'Connor
I am a design chauvinist. I believe that good design is magical and not to be lightly tinkered with. The difference between a great design and a lousy one is in the meshing of the thousand details that either fit or don't, and the spirit of the passionate intellect that has tied them together, or tried. That's why programming -- or buying software -- on the basis of "lists of features" is a doomed and misguided effort. The features can be thrown together, as in a garbage can, or carefully laid together and interwoven in elegant unification, as in APL, or the Forth language, or the game of chess.
— Ted Nelson
Those who write software only for pay should go hurt some other field.
— Erik Naggum (gnu.misc.discuss)
Syntactic sugar causes cancer of the semicolon.
— Alan Perlis
It is easier to write an incorrect program than understand a correct one.
— Alan Perlis
Simplicity does not precede complexity, but follows it.
— Alan Perlis
There are two ways to write error-free programs; only the third one works.
— Alan Perlis
Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
— Alan Perlis
If I don't understand lisp, it would be wise to not bray about how lisp is stupid or otherwise criticize, because my stupidity would be archived and open for all in the know to see.
— Xah (comp.lang.lisp)
Of the four project development variables - scope, cost, time and quality - quality isn't really a free variable. The only possible values are "excellent" and "insanely excellent", depending on whether lives are at stake.
— Kent Beck
Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make the additional features appear necessary.
— Revised(5) Report on the Algorithmic Language Scheme
Premature optimization is the root of all evil.
— Donald E. Knuth, From Structured Programming with goto Statements
For every complex problem, there is a solution that is simple, neat, and wrong.
— H.L. Mencken
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.
— C. A. R. Hoare
Indeed, when I design my killer language, the identifiers "foo" and "bar" will be reserved words, never used, and not even mentioned in the reference manual. Any program using one will simply dump core without comment. Multitudes will rejoice.
— Tim Peters
Arrrrgh, the braindamage! It's not unlike the massively non-brilliant decision to use the period in abbreviations as well as a sentence terminator. Had these people no imagination at _all_?
— Erik Naggum (comp.lang.lisp)
There are two kinds of large software systems: those that evolved from small systems and those that don't work.
— Seen on slashdot.org
I have a feeling that any simple problem can be made arbitrarily difficult by imposing a suitably heavy administrative process around the development.
— Joe Armstrong (comp.lang.functional)
Very clever implementation techniques are required to implement this insanity correctly and usefully, not to mention that code written with this feature used and abused east and west is exceptionally exciting to debug.
— Erik Naggum, commenting on Algol-style "call-by-name"
...but I'd rather not reinvent the wheel if I don't have to. On the other hand, if the currently instantiated version of the wheel consists of a square rock covered with moss, I might as well just start fresh.
— Roy Smith (comp.lang.python)
Just getting something to work usually means writing reams of code fast, like a Stephen King novel, but making it maintainable and high-quality code that really expresses the ideas well, is like writing poetry. Art is taking away.
— Erik Naggum (comp.lang.lisp)
Counting lines is probably a good idea if you want to print it out and are short on paper, but I fail to see the purpose otherwise.
— Erik Naggum (comp.lang.lisp)
We're already scrubbing the face of intuition with steel wool, setting it on fire, then putting it out with an axe.
— Tim Peters, commenting on comparing recursive structures
Monte Carlo sampling is no way to understand code.
— Gordon McMillan (comp.lang.python)
Once you understand how to write a program get someone else to write it.
— Alan Perlis
I will not do it as a hack,
I will not do it on a Mac,
I will not do it for my friends,
I will not do it on weekends,
I will not write for Uncle Sam,
I won't do ADA, Sam-I-Am!
— Gregory Bond
Simple things should be simple and complex things should be possible.
— Alan Kay
It should be noted that no ethically-trained software engineer would ever consent to write a "DestroyBaghdad" procedure. Basic professional ethics would instead require him to write a "DestroyCity" procedure, to which "Baghdad" could be given as a parameter.
— Nathaniel S. Borenstein, uttered after the Gulf War but long before 9/11/01
It's hard to read through a book on the principles of magic without glancing at the cover periodically to make sure it isn't a book on software design.
— Bruce Tognazzini
To keep large programs well structured, you either need superhuman will power, or proper language support for interfaces.
— Greg Nelson
You think you know when you can learn, are more sure when you can write, even more when you can teach, but certain when you can program.
— Alan Perlis
To a database person, every nail looks like a thumb. Or something like that.
— Jamie Zawinski
We are on the verge: Today our program proved Fermat's next-to-last theorem.
— Alan Perlis
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
— Bjarne Stroustrup
Object-oriented programming is an exceptionally bad idea which could only have originated in California.
— Edsger Dijkstra




