Dijkstra generalized his multiprogramming problem by seeking symmetries, as I've explained in a previous post. Below, I examine how Dijkstra also drew an analogy with hotel management to further simplify his multiprogramming concerns (EWD 54).
Dijkstra tackled the problem of allowing multiple users share the university's X8 computer and its peripheral hardware devices (EWD 51). To solve this problem, Dijkstra first reformulated it in terms of as many symmetries as he could find, thereby obtaining a more general problem description.
In the first half of 1963, Dijkstra described the execution of a program as a living “tree” that can grow “branches” and “twigs”. As the tree gets older — that is, as the execution of the program progresses — branches and twigs can fall off the tree, and others can grow in their place. Dijkstra used the metaphor of the living tree to unify three seemingly disparate topics: dynamic memory management, subroutine invocations, and multiprogramming.
In early 1962, Edsger W. Dijkstra presented an analogy of a classroom teacher calling upon one of her pupils. By doing so, he conveyed some subtleties of “dynamic memory management” and “concurrent process behavior”.
“I still remember it well, the day my future husband entered my life”, Ria Debets-Dijkstra recalls. “He was a good-looking man, 20 years of age. He entered our Computing Department with a cane!” . The Computing Department was part of the newly founded Mathematical Centre in Amsterdam. Ria Debets-Dijkstra had already been working there for two years before she saw Edsger Dijkstra on that eventful day in 1951. Dijkstra officially joined the Computing Department in March of the following year.
Toward the end of my paper `Dijkstra's Rallying Cry for Generalization ...' I briefly describe the work of Irons and Feurzeig. These two men had by 1960 also implemented ALGOL60's recursive procedure just like Dijkstra and Zonneveld. Their solution, however, was very different from the solution proposed by Dijkstra and Zonneveld.
In his technical report (MR 34) of October 1961, Dijkstra explained why he viewed a good programming language to be one of a small number of very general concepts. To clarify, he used an analogy between mathematics and programming, an analogy which in later years would be scrutinized in several ways by his contemporaries. (See e.g. MacKenzie's 2004 book Mechanizing Proof: Computing, Risk, and Trust.)
© 2011–today by the respective authors. All rights reserved.