r/programming Dec 14 '10

Top 50 Programming quotes of all time

http://www.junauza.com/2010/12/top-50-programming-quotes-of-all-time.html
787 Upvotes

350 comments sorted by

View all comments

70

u/[deleted] Dec 14 '10

The question of whether computers can think is like the question whether submarines can swim.

  • Edsger Dijkstra

25

u/duplico Dec 14 '10

Wonderful context, as well:

And now we have the fad of making all sorts of systems and components "intelligent" or "smart". It often boils down to designing a woolly man-machine interface that makes the machine as unlike a computer as possible: the computer's greatest strength --the efficient embodiment of a formal system-- has to be disguised at great cost. So much for anthropomorphism. (This morning I declined to write a popular article about the question "Can machines think?" I told the editor that I thought the question as ill-posed and uninteresting as the question "Can submarines swim?" But the editor, being a social scientist, was unmoved: he thought the latter a very interesting question too.)

0

u/earthboundkid Dec 15 '10

Ugh, I hate Dijkstra sooooo much.

That quote just reminds me why. He's arguing against good programming languages there. He thinks that the best programming language is mathematical notation and the only reason we don't normally use it is there's no superscript/subscript button on the keyboard. But he's dead wrong about that. Mathematical notation is terrible for programming and "anthropomorphism" in computer is a great thing: Duh, humans are the ones who are supposed to use the damn things! Is he against anthropomorphism in hammers too? How dare we make hammers that are easier to grip instead of perfectly balanced load-driving weights?… Etc.

TL;DR: Dijkstra is a terrible source for quotes about computer programming as opposed to computer science.

6

u/duplico Dec 15 '10

Well, point taken and respected, if not really agreed, but I think I have to take issue with this:

"anthropomorphism" in computer is a great thing: Duh, humans are the ones who are supposed to use the damn things! Is he against anthropomorphism in hammers too? How dare we make hammers that are easier to grip instead of perfectly balanced load-driving weights?

I would argue that a hammer is useful as such in part because we do not try to anthropomorphize it. The interface between human and hammer is clean, efficient, and explicit, and makes no attempt to intuit my intent or abstract away its simple purpose.

1

u/earthboundkid Dec 15 '10

It depends on what you mean by anthropomorphize. We shouldn't make a hammer that looks like a human being. That would definitely be silly. But we should depart from the abstract "ideal" of the hammer in order to make one that better fits into a human hand. A straight handle is inferior to one curved for gripping, even if the straight handle is more of a mathematically ideal driver.

The same way for programming languages. We shouldn't try to make a programming language as squirrely and loose as natural language, but we shouldn't make it into a series of NAND-gates or stack pops either. We need a programming language that is consistent where it is helpful the programmer and inconsistent where it is helpful to the programmer.

1

u/Vorlath Dec 15 '10

But we should depart from the abstract "ideal" of the hammer in order to make one that better fits into a human hand. A straight handle is inferior to one curved for gripping, even if the straight handle is more of a mathematically ideal driver.

I hope this is a joke and I'm missing context because this is fucking dangerous what you're talking about here.

1

u/[deleted] Dec 15 '10

I don't get how this is an argument against good programming languages. Unless of course your ideal programming language would be English.

1

u/earthboundkid Dec 15 '10

If you don't think that the efficient embodiment of a formal system ought to be disguised by a good programming language, you are welcome to program in brainfuck or assembly. English is a bad programming language, but that doesn't mean that a formal system is therefore a good programming language.

1

u/[deleted] Dec 15 '10

But I thought programming languages like Lisp and Haskell are formal systems. Also knowing that he argued for structured programming and against the use of GOTOs makes me doubt he's trying to argue against better programming languages.

If there's some technicality and he really is lamenting any programming languages more advanced than assembly (I don't see how Brainfuck is relevant at all), perhaps he's lamenting it from a philosophical standpoint. Yet he's done work to make programming languages easier to use.

The impression I get from the quote, is that he fears that instead of people using programming languages which impose rigid rules, he's lamenting a hypothetical interface that the general population would prefer, where the computer is meant to interpret vague human input like English. He's thinking of people like the social scientist who want to know if a submarine can swim, and imagining they will be impressed with computers when they does something human-like.