Computers

"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

 


Up...

Last Modified: May 5th, 1997

 

Patri Friedman / patri@izzy.com