Assigning Meanings to Programs (1967)
Proceedings of Symposium on Applied Mathematics, Vol. 19, 1967, pp. 19–32
- The establishment of formal standards for proofs about programs [...] and the proposal that the semantics of a programming language may be defined independently of all processors for that language, by establishing standards of rigor for proofs about programs in the language, appears to be novel.
- pp. 19–20.
- A semantic definition of a particular set of command types, then, is a rule for constructing, for any command of one of these types, a verification condition on the antecedents and consequents.
- p. 21 [italics in original, math symbols omitted].
- It is, therefore, possible to extend a partially specified interpretation to a complete interpretation, without loss of verifiability, [...] This fact offers the possibility of automatic verification of programs, the programmer merely tagging entrances and one edge in each innermost loop.
- p. 25.
The Paradigms of Programming (1979)
- If the advancement of the general art of programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires that he expand his repertory of paradigms.
- Although my own previous enthusiasm has been for syntactically rich languages like the Algol family, I now see clearly and concretely the force of Minsky's 1970 Turing lecture, in which he argued that Lisp's uniformity of structure and power of self reference gave the programmer capabilities whose content was well worth the sacrifice of visual form.
- If there is ever a science of programming language design, it will probably consist largely of matching languages to the design methods they support.
- If I ask another professor what he teaches in the introductory programming course, whether he answers proudly "Pascal" or diffidently "FORTRAN," I know that he is teaching a grammar, a set of semantic rules, and some finished algorithms, leaving the students to discover, on their own, some process of design.
- To the designer of programming languages, I say: unless you can support the paradigms I use when I program, or at least support my extending your language into one that does support my programming methods, I don't need your shiny new languages. [...] To persuade me of the merit of your language, you must show me how to construct programs in it.
- For having a clear influence on methodologies for the creation of efficient and reliable software, and for helping to found the following important subfields of computer science: the theory of parsing, the semantics of programming languages, automatic program verification, automatic program synthesis, and analysis of algorithms.