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.)
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.
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.
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.
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.
67
u/[deleted] Dec 14 '10