"A lot of my friends have computers and they've been on me, like, "Are you going to hang with the past or get with the modern flow of things?" So, I actually have been just starting to get involved. I don't have a proper computer, but I do have an Etch-A-Sketch, and I'm not sure, but I think I got on the Internet with it for a littlewhile. It looked like a message came through...but it was late. It was like Helen in Ohio wrote to me. Or maybe it was Ohio Art. But then my stupid cousin came in and shook it and I lost the message. But I'm going to try again." -- Musician/Actor Chris Isaak, in an interview
"Call me paranoid but finding '/*' inside this comment
makes me suspicious"
-- Apple's MPW C compiler
"At this point it is tempting to ask: Why would anyone
go through the pain of implementing a superscalar 386?"
-- Mike Johnson, "Superscalar Microprocessor Design"
"640K ought to be enough for anybody."
-- Bill Gates '81
".. the most important thing in the programming language
is the name. A language will not succeed without a good name.
I have recently invented a very good name and now I am looking
for a suitable language.
-- D. E. Knuth, 1967
An Ode to C:
0x0d2C
~~~~~~
May your signals all trap
May your references be bounded
All memory aligned
Floats to ints rounded.
And Remember ...
Non-zero is true
++ adds one
Arrays start with zero
And, NULL is for none.
Use -> for a pointer
A dot if it's not
? : is confusing
Use them a lot.
For octal, use zero
0x means hex
= will set
== means test.
a.out is your program
There's no 'U' in 'foobar'
And, char (*(*x())[])() is
A function returning a pointer
to an array of pointers to
functions returning char.
A hacker-turned-pervert named Fisk
Made love to the drive of his disk.
The thing circumsized him,
Which rather surprised him.
He wasn't aware of *that* risk.
A hardware debugger named Court
Shoved his tool in an Ethernet port.
But it's buffer array
Only handled 1K,
So the port's driver cut it off short.
A sex-loving coed named Bree
Caught the clap from her Apple IIE.
The joystick, she found,
Had been fooling around
With a neighboring student's PC.
A structured programmer named Drew
Was intensely turned on by "goto".
When he saw it in code
He'd shoot off his load.
It's a good thing his shop used so few.
A vengeful technician named Schmitz
Caused a disk drive to go on the fritz.
He covered the platter
With bats' fecal matter.
Now it's seek time is really the pits.
An AI researcher named Bluth
Wrote, to find sexual truth,
Eroticon VI,
Which he taught certain tricks
Which I don't think are even in Knuth.
All parts should go together without forcing. You must remember
that the parts you are reassembling were disassembled by you.
Therefore, if you can't get them together again, there must be
a reason. By all means, do not use a hammer.
-- IBM maintenance manual (1925)
All programmers are optimists. Perhaps this modern sorcery
especially attracts those who believe in happy endings and fairy
godmothers. Perhaps the hundreds of nitty frustrations drive away
all but those who habitually focus on the end goal. Perhaps it
is merely that computers are young, programmers are younger, and
the young are always optimists. But however the selection process
works, the result is indisputable: "This time it will surely
run," or "I just found the last bug."
-- Frederick P. Brooks, Jr., The Mythical Man Month
"What goes up must come down. Ask any system administrator."
-- Seen in a signoff line, uncredited
"We wish to incorporate into the machine -- in the form
of circuits -- only such logical concepts as are either necessary
to have a complete system or highly convenient because of the
frequency with which they occur and the influence they exert in
the relevant mathematical situations."
-- Burks, Goldstine, and von Neumann (1946) (from "Computer
Structures: Readings and Examples", C. Gordon Bell (ed)
McGraw-Hill Book Company, (c) 1971, page 97)
"To err is human, to compute divine. Trust your computer
but not its programmer"
-- Morris Kingston
A real computer scientist will dedicate months of patient effort
to reduce the asymptotic time of an algorithm from n log log n
to n log log log n and never implement it.
A real programmer come up with the n log log log n solution while
eating cold pizza in the morning and then implements an n^2 solution
anyway.
A real software engineer derives the n log log log n solution
using the formal specification and then discards it as an implementation
detail.
A real user doesn't even understand what a n log log log n solution
means.
A novice asked the master: "What is the true meaning of
programming?"
The master replied: "Eat when you are hungry, sleep when
you are fatigued, program when the moment is right."
-- The Tao of Programming
A novice asked the master: "I have a program that sometime
runs and sometimes aborts. I have followed the rules of programming,
yet I am totally baffled. What is the reason for this?"
The master replied: "You are confused because you do not
understand Tao. Only a fool expects rational behavior from his
fellow humans. Why do you expect it from a machine that humans
have constructed? Computers simulate determinism; only Tao is
perfect.
The rules of programming are transitory; only Tao is eternal.
Therefore you must contemplate Tao before you receive enlightenment."
"But how will I know when I have received enlightenment?"
asked the novice.
"Your program will then run correctly," replied the
master.
-- The Tao of Programming
A master programmer passed a novice programmer one day. The
master noted the novice's preoccupation with a hand-held computer
game. "Excuse me", he said, "may I examine it?"
The novice bolted to attention and handed the device to the master.
I see that the device claims to have three levels of play: Easy,
Medium and Hard", said the master. "Yet every such device
has another level of play, where the device seeks not to conquer
the human, nor to be conquered by the human."
"Pray, great master", implored the novice, "how
does one find this mysterious setting?"
The master dropped the device to the ground and crushed it under
foot. And suddenly the novice was enlightened.
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 the 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"
A man and a woman got married. Although it is the first time
for the husband, it is the woman's second marriage. As they go
to bed on their wedding night, the wife says to her husband:
"Dear, there's something I must tell you. I'm a virgin."
Naturally, the husband is surprised. "You've been married
before!", he says, "How can you still be a virgin?"
"Well, it's all quite simple," she retorted, "my
husband was a computer programmer."
"What's so odd about that?", he asked. "Why would
you still be a virgin after a marriage to a programmer?"
"Well", she said, "all he did was sit on the edge
of the bed and tell me how great it was going to be."
A list is only as strong as its weakest link.
-- Don Knuth
A group of programmers were presenting a report to the Emperor.
"What was the greatest achievement of the year?" the
Emperor asked.
The programmers spoke among themselves and then replied, "We
fixed 50% more bugs this year than we fixed last year."
The Emperor looked on them in confusion. It was clear that he
did not know what a "bug" was. After conferring in low
undertones with his chief minister, he turned to the programmers,
his face red with anger. "You are guilty of poor quality
control. Next year there will be no 'bugs'!" he demanded.
And sure enough, when the programmers presented their report to
the Emperor the next year, there was no mention of bugs.
-- The Tao of Programming
A manager went to the master programmer and showed him the
requirements document for a new application. The manager asked
the master: "How long will it take to design this system
if I assign five programmers to it?"
"It will take one year," said the master promptly.
"But we need this system immediately or even sooner! How
long will it take if I assign ten programmers to it?"
The master programmer frowned.
"In that case, it will take two years."
"And what if I assign a hundred programmers to it?"
The master programmer shrugged.
"Then the design will never be completed," he said.
-- The Tao of Programming
Last Modified: May 5th, 1997
Patri Friedman / patri@izzy.com