Morbid preoccupation with "specification languages"


17-31 January 1981

Dijkstra went on a trip to California, visiting universities and research centers. While doing so, he got annoyed by the many researchers who viewed the difficulties underlying multi-person software projects as "communication problems" and who, therefore, advocated new specification languages.


Presentations versus Lectures


7-12 January 1981

On the basis of an IFIP WG 2.3 meeting in Han-sur-Lesse (Belgium), Dijkstra expressed his misgivings about the overhead projector. He preferred the blackboard much more and the interaction it required between him and the audience. That is, he preferred to give "lectures", not "presentations". Instead of preparing everything in advance, he wanted room to improvise during his lectures.


Five elements of mental discipline.

One of Dijkstra's main questions was:

"Can the programmer arrange his activity in such a way that his growing product remains firmly in his intellectual grip, that he continues to understand what he is doing?" [EWD303]

To write structured programs, Dijkstra proposed five well-known techniques:

  • sequencing
  • operational abstraction
  • representational abstraction
  • configurational abstraction (cf. layered software)
  • textual encapsulation (cf. modularity)

The latter two are discussed here.


Computer efficiency

Here is what a reviewer had to say about the research paper `Dijkstra’s Rallying Cry ...':

The paper is, in essence, about an argument of generality versus computer efficiency. The argument was eventually settled in favour of the former due to the enormous advances in electronic technology. Today, computer efficiency is not an issue any more.

Is this correct? The last sentence seems to contradict Martin Reiser’s “law” which states that


Humble with regard to virtual storage.

Looking back at the late 1960s, Dijkstra mentioned that progress had been made in processor allocation, mainly due to the work of his students Bomhoff and Feijen. With respect to virtual storage implementations, however, Dijkstra humbly admitted that much had still to be done on this subject. Even though he had spent months trying to do so, he was stil not able to find the right abstractions. [EWD300]