There are hundreds of EWDs and I haven't seen a single one where Dijkstra would talk about making programming languages simple to make comprehension straightforward...
Finally, although the subject is not a pleasant one, I must mention PL/1, a programming language for which the defining documentation is of a frightening size and complexity. Using PL/1 must be like flying a plane with 7000 buttons, switches and handles to manipulate in the cockpit. I absolutely fail to see how we can keep our growing programs firmly within our intellectual grip when by its sheer baroqueness the programming language —our basic tool, mind you!— already escapes our intellectual control.
It would be hard to find a clearer advocation of simplicity in programming languages.
But a clearer statement of his priorities - and why they are priorities - can be found here:
A study of program structure had revealed that programs —even alternative programs for the same task and with the same mathematical content— can differ tremendously in their intellectual manageability. A number of rules have been discovered, violation of which will either seriously impair or totally destroy the intellectual manageability of the program. These rules are of two kinds. Those of the first kind are easily imposed mechanically, viz. by a suitably chosen programming language. Examples are the exclusion of goto-statements and of procedures with more than one output parameter. For those of the second kind I at least —but that may be due to lack of competence on my side— see no way of imposing them mechanically, as it seems to need some sort of automatic theorem prover for which I have no existence proof. Therefore, for the time being and perhaps forever, the rules of the second kind present themselves as elements of discipline required from the programmer...
Your complaint is essentially that I focused on rules of the first kind described, when Dijkstra did a lot of work on rules of the second kind. If I were truly doing that then I'd be failing to understand him exactly as badly as you are in saying he was only interested in rules of the second kind while ignoring the fact that his largest concrete impact came from http://www.u.arizona.edu/~rubinson/copyright_violations/Go_T....
I recognize and value his work in both areas. However the question that was asked was about his impact on current programming practice. And there is no question that his ideas on structured programming have had more impact than his ideas on provably correct software.
I try to read this paper from the perspective of his overall work and writing, and I have read through a lot of the EWDs. There is an abundance of examples that his #1 concern was about making programming more mathematical. Hence I interpret everything that you are quoting as proposals motivated by the need he perceives of proving programs correct. That the industry trivialized his ideas to "don't use goto" does not mean this was Dijkstra's great point. This is in fact excellently summarized in the first link I posted. Meanwhile you make it sound like he was interested in contributing to software engineering like it is done today, which is not the case, he seemed to really despise a lot of the things which are now software engineering best practices, like unit tests.
What I actually hoped for is someone who really learned the way of writing programs Dijkstra advocated to some extent and their experience with it. I can't say I really understand how those derivations look like in practice.
I try to read this paper from the perspective of his overall work and writing, and I have read through a lot of the EWDs.
In other words you're missing the plain meaning of the sections that I quoted because you try to consider it in the light of http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EW... which was written a decade and a half later? Pardon me, but I won't be emulating your example.
The focus of Dijkstra's research career was how to make correct software. As he himself would claim, there are two halves to this process. The first is to limit ourselves to forms of writing code which are easy to reason about. The second is to actually perform that reasoning.
The part of his proposal that actually had an impact is the part which says that we need to focus on methods of expressing ourselves that are easy to reason about. The part that did not have a direct impact is the part which says that we need to perform that formal reasoning. The fundamental reason why not is that Dijkstra's reasoning assumed the existence of a consistent, unchanging specification. The real world does not work that way - computers exist to do what humans ask. And humans do not always ask for things that make sense.
This is not to say that this is the impact that he wanted to have - it is clearly not - but it is the impact that he did have.
However some of his other ideas have indeed found their way into practice, albeit in a muted way that he would have objected to. For example take unit tests, since you brought them up. He was against tests as part of including QA as an integral part of the programming process - if the programmer performed properly then that should not be needed. (Nice theory, fails in practice.) However today, well-designed unit tests do serve as a limited form of specifying exactly what a given piece of code is supposed to do, and verifying that it in fact does that. (I'm sure that he would say limited and inadequate. But it is better than nothing.)
This clearly shows you haven't actually studied his writings, because he has been raising the same points for many years in almost every EWD, OP is EWD340, so here is a sample from before this period:
If we take the existence of the impressive body of Mathematics as the experimental evidence for the opinion that for the human mind the mathematical method is indeed the most effective way to come to grips with complexity, we have no choice any longer: we should reshape our field of programming in such a way that the mathematician's methods become equally applicable to our programming problems, for there are no other means. It is my personal hope and expectation that in the years to come programming will become more and more an activity of mathematical nature.
For a programming language to be simple in the sense of being able to prove things is a completely different thing than for it to be simple in the sense of being easy to understand informally. Yes, bastardized versions of his ideas did make it into the mainstream, I doubt it's always even because of his direct influence and that's what the wiki article I posted three comments earlier is about.
If that's the case then you need to read more closely. This discussion is sparked by http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EW.... I'll focus on just two statements from this one which demonstrates the theme that I said was there:
Finally, although the subject is not a pleasant one, I must mention PL/1, a programming language for which the defining documentation is of a frightening size and complexity. Using PL/1 must be like flying a plane with 7000 buttons, switches and handles to manipulate in the cockpit. I absolutely fail to see how we can keep our growing programs firmly within our intellectual grip when by its sheer baroqueness the programming language —our basic tool, mind you!— already escapes our intellectual control.
It would be hard to find a clearer advocation of simplicity in programming languages.
But a clearer statement of his priorities - and why they are priorities - can be found here:
A study of program structure had revealed that programs —even alternative programs for the same task and with the same mathematical content— can differ tremendously in their intellectual manageability. A number of rules have been discovered, violation of which will either seriously impair or totally destroy the intellectual manageability of the program. These rules are of two kinds. Those of the first kind are easily imposed mechanically, viz. by a suitably chosen programming language. Examples are the exclusion of goto-statements and of procedures with more than one output parameter. For those of the second kind I at least —but that may be due to lack of competence on my side— see no way of imposing them mechanically, as it seems to need some sort of automatic theorem prover for which I have no existence proof. Therefore, for the time being and perhaps forever, the rules of the second kind present themselves as elements of discipline required from the programmer...
Your complaint is essentially that I focused on rules of the first kind described, when Dijkstra did a lot of work on rules of the second kind. If I were truly doing that then I'd be failing to understand him exactly as badly as you are in saying he was only interested in rules of the second kind while ignoring the fact that his largest concrete impact came from http://www.u.arizona.edu/~rubinson/copyright_violations/Go_T....
I recognize and value his work in both areas. However the question that was asked was about his impact on current programming practice. And there is no question that his ideas on structured programming have had more impact than his ideas on provably correct software.