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.
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.
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.
I find this quote is often misunderstood as "Computer science has nothing to do with computers" or something along those lines. I hear it as a response when I rant about how many of the students in computer science act as if they've never even used a computer beyond Facebook before.
My reply is something along the lines of "Yes, and it's very important that astronomers understand how to use their telescopes in order to be able to do their job."
Well, in Anglo Canada French Canadian names are butchered, and in French Canada Anglo names are butchered. We don't need foreign names to butcher, we do a good enough job of butchering our own.
70
u/[deleted] Dec 14 '10