Dijkstra on Language
A video I saw on "Dijkstra on foolishness of Natural Language Programming" (April 11, 2025) helpfully exposed me to some of Dijkstra's ideas on language. It's a short piece, but I'd like to focus on the central paragraphs:
In order to make machines significantly easier to use, it has been proposed (to try) to design machines that we could instruct in our native tongues. This would, admittedly, make the machines much more complicated, but, it was argued, by letting the machine carry a larger share of the burden, life would become easier for us. It sounds sensible provided you blame the obligation to use a formal symbolism as the source of your difficulties. But is the argument valid? I doubt.
We know in the meantime that the choice of an interface is not just a division of (a fixed amount of) labour, because the work involved in co-operating and communicating across the interface has to be added. We know in the meantime —from sobering experience, I may add—that a change of interface can easily increase at both sides of the fence the amount of work to be done (even drastically so). Hence the increased preference for what are now called "narrow interfaces". Therefore, although changing to communication between machine and man conducted in the latter's native tongue would greatly increase the machine's burden, we have to challenge the assumption that this would simplify man's life.
A short look at the history of mathematics shows how justified this challenge is. Greek mathematics got stuck because it remained a verbal, pictorial activity, Moslem "algebra", after a timid attempt at symbolism, died when it returned to the rhetoric style, and the modern civilized world could only emerge—for better or for worse—when Western Europe could free itself from the fetters of medieval scholasticism—a vain attempt at verbal precision!—thanks to the carefully, or at least consciously designed formal symbolisms that we owe to people like Vieta, Descartes, Leibniz, and (later) Boole.
The virtue of formal texts is that their manipulations, in order to be legitimate, need to satisfy only a few simple rules; they are, when you come to think of it, an amazingly effective tool for ruling out all sorts of nonsense that, when we use our native tongues, are almost impossible to avoid.
Recall that Dijkstra was primarily known as a computer scientist, and most famous for the shortest-path algorithm named after him.
What really caught my attention here was the knock on the Scholastics (who admittedly sometimes got to rigid about terminology) and the exaltation of Viete, Descartes, and company. Then the "ruling out all sorts of nonsense" phrase. I don't know much about the man's personal beliefs, but the latter statement inclines me to think that he would include "unscientific" beliefs like creation and God among the "nonsense", but, if not him, then there are plenty of people out there who would happily apply his statement in such a way.
And yet Dijkstra is perfectly right about this. He's perfectly right in what he explicitly says about this language needing to be unambiguous.
The piece missing is that the application of the language he's talking about is not the standard use of language. Instructing a machine requires language with no ambiguity. It is imperative language: do this, then do that. It's not even simply scientific language in the usual sense, which itself strives to rule out ambiguity and embrace univocity, but something much narrower. It might be the narrowest use of language there is.
This imperative language contrasts with the more prosaic use of language to make observations about the world, or even to instruct another person. These uses of language admit of ambiguity. Indeed, ambiguity is in some ways an advantage. Regarding even scientific language, Werner Heisenberg put it this way:
Furthermore, one of the most important features of the development and the analysis of modern physics is the experience that the concepts of natural language, vaguely defined as they are, seem to be more stable in the expansion of knowledge than the precise terms of scientific language, derived as an idealization from only limited groups of phenomena. This is in fact not surprising since the concepts of natural language are formed by the immediate connection with reality; they represent reality. (quoted more completely here)
So Dijkstra's statement is correct about computers, but would be sorely incomplete if it were about language in general. Computer languages separate themselves from normal, natural human language by being exclusively about control. There is no room for freedom of interpretation in instructing a machine, which is both its glory and its limitation. But this separation of computer languages from human language, makes them a whole other thing. And the exaltation of computer languages over human languages slides us further down the path of dehumanization.
Edsger W. Dijkstra, 'On the foolishness of "natural language programming".'
Werner Heisenberg, Physics and Philosophy: The Revolution in Modern Science (New York: Harper & Row Publishers, 1958).