Teaching an imbecile to play bridge

From Data and Reality:

The thing that makes computers so hard to deal with is not their complexity, but their utter simplicity. … The real mystique behind computers is how anybody can manage to get such elaborate behavior out of such a limited set of basic capabilities. The art of computer programming is somewhat like the art of getting an imbecile to play bridge or to fill out his tax return by himself. It can be done, provided you know how to exploit the imbecile’s limited talents, and are willing to have enormous patience with his inability to make the most trivial common sense deductions on his own.

Emphasis added.

The quote comes from the 1st edition, published in 1978, because that’s what I ran across. The link is to the 3rd edition, published last year.

10 thoughts on “Teaching an imbecile to play bridge

  1. Actually computers are better because you tell them to do something and they do it EXACTLY the same over and over providing reliability. People… they deviate.

  2. @Jorge; I believe you are incorrect. There are certain types of computer algorithms (nondeterministic ones, to be precise) that don’t always return the same output on consisten input. Wikipedia has more information.

  3. Reminded me of the following passage from Douglas Adams’ novel, Dirk Gently’s Holistic Detective Agency: “What I mean is that if you really want to understand something, the best way is to try and explain it to someone else. That forces you to sort it out in your own mind. And the more slow and dim-witted your pupil, the more you have to break things down into more and more simple ideas. And that’s really the essence of programming. By the time you’ve sorted out a complicated idea into little steps that even a stupid machine can deal with, you’ve certainly learned something about it yourself. The teacher usually learns more than the pupil. Isn’t that true?”

    I suppose we’ll never now know where Adams got the inspiration for this passage, but I don’t think he had objections to pilfering other peoples good ideas.

  4. Computers provide reliability?

    If you’ve ever shipped software to be run by users… well, some days the imbecile would be a better bet for reliability.

    Computers rely on lots and lots of little things — physical stuff like the hard drive, memory, wifi card etc. but also the entire topography that is the OS and installed software in all its variations, and the functioning of all of those interacting parts produces incredible and ever-changing diversity.

    What will your software do if the wifi flakes out? If the drive it’s writing to fills up? In case of a power failure? If basic services are misconfigured/broken/obsolete/virus-ridden/etc.?

    Writing server-only software is better, but still not perfect.

  5. That reminds me of this, unattributed quote:

    Functional programming is like describing your problem to a mathematician.
    Imperative programming is like giving instructions to an idiot.

Comments are closed.