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 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.

Tagged with:
Posted in Software development
10 comments on “Teaching an imbecile to play bridge
  1. I’ll never look at my computing devices the same. Never.

    Ruben

  2. fred ancheta says:

    how dare you call my computer an imbecile!

  3. mcdan says:

    The only thing your computer knows with any certainty is that +3(or 5)V is a on and anything else is off.

  4. Jorge says:

    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.

  5. Laurens says:

    @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.

  6. Nick Brown says:

    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.

  7. Rob W says:

    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.

  8. Tomas Olsson says:

    As researcher in machine learning and AI. it is so true

  9. Tomas Olsson says:

    As researcher in machine learning and AI, I can just say that it is so true.

  10. twretjweir says:

    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.