5 ms·
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 straightfor
by stiff 13y ago
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, this is something that modern programming "gurus" are more likely to say. The reason Dijkstra wants simple programming languages, and most EWDs are more or less about this, is because he wants to prove theorems about programs, which is possible only with a simple language. Not only that, as I said he wants to reduce program development to well defined transformations on a specification of a problem in the language of mathematical logic. His stance is very nicely summarized here:
http://en.wikipedia.org/wiki/The_Cruelty_of_Really_Teaching_Computer_Science http://en.wikipedia.org/wiki/The_Cruelty_of_Really_Teaching_...
You have to understand some mathematics and mathematical logic to really understand Dijkstra however, you cannot look at it from a pure software engineering background because you will only take away platitudes from what he says without actually understanding him. If you have some background you can read about his real technical ideas:
http://en.wikipedia.org/wiki/Program_derivation http://en.wikipedia.org/wiki/Program_derivation
http://en.wikipedia.org/wiki/Guarded_Command_Language http://en.wikipedia.org/wiki/Guarded_Command_Language
http://en.wikipedia.org/wiki/Predicate_transformer_semantics http://en.wikipedia.org/wiki/Predicate_transformer_semantics
This is the area Dijkstra worked most on during his research career. Those ideas actually go back centuries before anyone ever thought about structured programming. For hundreds of years there has been a fundamental debate ongoing on whether all kinds of reasoning can be reduced to some kind of calculi with well specified rules, which would be equivalent to being able to construct a (at least theoretical) machine for automating it. This is where computers come from, this goes back to Charles Babbage, to the works of Leibniz, Boole, Turing etc.
Dijkstra is in the same historical tradition. The program I understand Dijkstra has for Computer Science is similar to the program Hilbert had for mathematics with what is now called formalism, from which the work of Goedel and Turing sprung off. When programming was still mainly done by mathematicians this has been a lively research area, there were various systems of proving correctness invented, various ways of deriving programs, there has been a very heated debate on when proofs are needed and to what extent ordinary programmers have to master them etc. You can find loads of books and monographs written in the 70s and 80s about this. Now as far as research goes program derivation seems to be an almost dead topic, but there are still people today championing it in some alternative form. Richard Bird wrote a book called "Pearls of Functional Algorithm Design" where he derives algorithms using algebraical properties:
http://www.cs.ox.ac.uk/people/richard.bird/ http://www.cs.ox.ac.uk/people/richard.bird/
Alexander Stepanov has been advocating something similar and wrote a book called "Elements of Programming":
http://www.elementsofprogramming.com/ http://www.elementsofprogramming.com/
https://www.youtube.com/watch?v=Ih9gpJga4Vc https://www.youtube.com/watch?v=Ih9gpJga4Vc
- btilly 13y agoThere 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... 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/EWD340.html 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_To_Considered_Harmful.html 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.