Dijkstra's Rallying Cry for Generalization - diary80s
http://dijkstrascry.com/taxonomy/term/10
My diary on what Dijkstra did in the 1980s.
Picture on the right: Edsger and his student Netty van Gasteren sitting behind Edsger's desk in his home in Nuenen. Notice the two telephones.
enDijkstra's "Computer Scientist" in 1982
http://dijkstrascry.com/node/105
<section class="field field-name-field-histdate field-type-text field-label-inline clearfix view-mode-rss"><h2 class="field-label">Dated: </h2><div class="field-items"><div class="field-item even">1982</div></div></section><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>During Dijkstra's career at Eindhoven programming had developed from an art to a science. But, by 1982 there was still insufficient official recognition for this development. From Dijkstra's perspective, computer programmers had yet to be taken seriously in the world at large. This observation helps explain why, a year prior, he had warmly welcomed the new journal called <em><strong></strong>Science of Computer Programming</em>. In his words:</p>
<blockquote><p>“Science of Computer Programming” [should help end] the current sate of affairs in which <strong>managers </strong>see programming primarily as a management problem because they cannot manage it, in which <strong>electronic engineers</strong> don't see the problem and in which <strong>mathematicians </strong>ignore it. [<a href="http://www.cs.utexas.edu/users/EWD/ewd07xx/EWD777.PDF">EWD777</a>, p.1, my emphasis]</p>
</blockquote>
<p>In my previous post, I showed that <a href="/node/104">Dijkstra used the words “software engineer” to describe himself in 1972</a>. By the early 1980s, however, he had started to call himself a “computer scientist” (i.e. a “mathematische informaticus”). He described “computer science” as</p>
<blockquote><p>The study of information processing by means of algorithms in which one abstracts from specific application domains and specific implementation techniques. [Paraphrased translation from my archives: <em>Lectori Salutem!</em>, 4 Dec. 1981]</p>
</blockquote>
<p>Dijkstra stressed that “computer science” encompassed “theoretical computer science”. The latter term referred to the logical foundations of computer science and did not include his own research. To highlight the mathematical nature of “computer-science” research, Dijkstra quoted Ralston & Shaw as follows:</p>
<blockquote><p>[W]here mathematical reasoning plays little or no role in an area of computer science, that portion of our discipline is still in its infancy and needs the support of mathematical thinking if it is to mature. [see p. 69 in Ralston & Shaw's 1980 article: <em><span class="title">Curriculum '78 - Is Computer Science Really that Unmathematical?</span></em> CACM 23(2): 67-70.]</p>
</blockquote>
<p>“Computer science”, Dijkstra wrote, will evolve and become a mature branch of mathematics. To contribute to this evolution, computer scientists should promote and use formal methods, and extract from the many computer applications those fundamental problems that can be studied in relative isolation.</p>
<p>[Paraphrased translation from <em>Lectori Salutem!</em>]</p>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Fri, 11 Jan 2013 14:54:05 +0000egdaylight105 at http://dijkstrascry.comhttp://dijkstrascry.com/node/105#commentsThree Snapshots of Dijkstra's Career
http://dijkstrascry.com/node/93
<div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>“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!” [1]. 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. Until 1956, he would work two days a week in Amsterdam and spend the rest of his time studying theoretical physics in Leiden.</p>
<p>During the first ten years of his career, Dijkstra worked as a programmer in Van Wijngaarden's team at the Mathematical Centre in Amsterdam. In 1962 he was appointed professor at the Technische Hogeschool of Eindhoven. And only ten years later, he already received computing's most prestigious prize, the Turing Award. By 1982, he had changed his focus from programming methodology to mathematical methodology and would continue to work on the latter for the next 20 years of his life. He died in August 2002.</p>
<p>In this post I compare and contrast three snapshots of Dijkstra's career, snapshots taken in the years 1960, 1976, and 1982.</p>
<p><span style="text-decoration: underline;"><strong>1960 — In search for a general language</strong></span></p>
<p>As he demonstrated in his 1952 inaugural lecture, Van Wijngaarden was very keen on connecting natural languages with programming languages when Dijkstra joined the Mathematical Centre. With hindsight, it is no surprise to see ideas similar to Van Wijngaarden's expressed in some of Dijkstra's early writings (see e.g. <a href="http://www.cs.utexas.edu/users/EWD/MCReps/MR34.PDF">MR 34: `On the Design of Machine Independent Programming Languages'</a>).</p>
<p>Around 1960, Dijkstra and Van Wijngaarden viewed ALGOL60 as a programming language containing unneeded restrictions. They wanted to discard those restrictions and devise a <em>general </em>language instead. Van Wijngaarden's persistence in this regard eventually led to the definition of ALGOL68.</p>
<p>An example of an unneeded restriction — that fortunately was not part of ALGOL60 thanks to Van Wijngaarden's and Dijkstra's prior efforts — was a procedure that can call another procedure but not itself. By discarding that restriction, one obtains a more general and hence simpler language; i.e. a language that can handle recursive procedures. For further details, see my two previous posts: <a href="/node/75">`An analogy between mathematics and programming'</a> and <a href="/node/78">`Dijkstra's Unification versus the Case Distinctions of Irons & Feurzeig'</a>.</p>
<p><span style="text-decoration: underline;"><strong>1976 — In search for intellectual manageability </strong></span></p>
<p>Like so many others, Dijkstra was a computer programmer who had no training in mathematical logic. Only in the early 1970s did Dijkstra become a supporter of Hoare's logical approach to programming language semantics. [2, p.346].</p>
<p>According to Dijkstra, it was Hoare who showed the computing community that <strong>intellectual manageability of programs critically depends on the specific choice of linguistic constructions</strong>. On the one hand, the programming language should offer combinatorial freedom. On the other hand, if too much freedom is provided, then the language may be intellectually unmanageable (and, as a possible result, difficult to implement). For example, a language containing procedure calls, and hence also recursive procedure calls, is intellectually unmanageable.</p>
<p>So Dijkstra's support for Van Wijngaarden's linguistic ideals faded. Dijkstra learned from Hoare that a computing scientist should, on the one hand, try to generalize the task he has to solve but, on the other hand, avoid introducing generalizations that are intellectually difficult to manage in the first place. [3, p.10-11] Too much combinatorial freedom can be detrimental.</p>
<blockquote><p>[Dijkstra] advocated many restrictions on programming language constructs, but always with the problems of program correctness in mind, of showing the correctness of a program. In 1976, in <em>A Discipline of Programming</em>, he even dropped the recursive procedure altogether [...]</p>
</blockquote>
<p>This comment is from an anonymous reviewer for Chapter 3 in my book <em>The Dawn of Software Engineering: from Turing to Dijkstra</em>. The comment characterizes Dijkstra's thinking of the 1970s and stands in sharp contrast to the way Dijkstra thought about programming, and recursion in particular, during the early 1960s. What Dijkstra considered to be simple (and elegant) in 1960 was not necessarily simple in 1976.</p>
<p><span style="text-decoration: underline;"><strong>1982 </strong></span><span style="text-decoration: underline;"><strong>—</strong></span><span style="text-decoration: underline;"><strong> A program text represents a predicate</strong></span></p>
<p>During the 1980s, calculational reasoning became Dijkstra's main occupation. Instead of viewing a program text as an operational description of an abstract machine as he had done during the 1960s, Dijkstra viewed a program text as a formula in a formal system. The formula represents a predicate. In his words:</p>
<blockquote><p>Each program text [... represents ...] a predicate on the Cartesian product of the so-called initial state space and the final state space. [4, p.1]</p>
</blockquote>
<p>Furthermore, the activity of formally deriving a program from its specification is a constructive form of predicate calculus — constructive because the predicate has to allow for the interpretation of automatically executable code.</p>
<p> </p>
<p>Mathematical logic entered the arena of computing science in various guises but primarily by researchers who were <em>not</em> mathematical logicians (— a central theme in my book <em>The Dawn of Software Engineering</em>). It is precisely this historical interplay between ideas from mathematical logic and their counterparts in computing science which, I believe, can serve well in grasping the basics of our field.</p>
<p> </p>
<p>[1] Paraphrased words from an interview with Ria Debets-Dijkstra in December 2011.</p>
<p>[2] E.W. Dijkstra. <a href="http://www.cs.utexas.edu/users/EWD/ewd13xx/EWD1308.PDF">“EWD 1308: What led to Notes on Structured Programming”</a>. In: Software pioneers: contributions to software engineering. Ed. by M. Broy and E. Denert. Springer, 2002, pp. 341–346.</p>
<p>[3] E.W. Dijkstra. <a href="http://www.cs.utexas.edu/users/EWD/ewd03xx/EWD325.PDF">"EWD 325: Poging tot plaatsbepaling van de informatica"</a>, pp. 0-14.</p>
<p>[4] E.W. Dijkstra. <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD819.PDF">"EWD 819: Mathematical Induction and Computing Science"</a>, 4 April 1982, pp. 0-7.</p>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/8" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary60s</a></li><li class="field-item odd" rel="dc:subject"><a href="/taxonomy/term/9" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary70s</a></li><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Fri, 08 Jun 2012 11:27:41 +0000egdaylight93 at http://dijkstrascry.comhttp://dijkstrascry.com/node/93#commentsUnifying Seemingly Disparate Sorting Algorithms
http://dijkstrascry.com/node/92
<section class="field field-name-field-histdate field-type-text field-label-inline clearfix view-mode-rss"><h2 class="field-label">Dated: </h2><div class="field-items"><div class="field-item even">18 January 1982</div></div></section><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>In their joint report <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD809.PDF">`An introductory essay on three algorithms for sorting in situ'</a>, Van Gasteren and Dijkstra explain what Insertion Sort, Heap Sort, and Smooth Sort have in common and how one can derive one sorting algorithm from the other. </p>
<p>Insertion Sort can be explained in terms of a descending chain in the following manner. During each iteration of Insertion Sort for a list of N elements, the descending chain grows with one new element: the descending chain of length n and a new element are transformed into a new descending chain of length n+1. At the end of the day, the descending chain represents the sorted list of N elements. Insertion Sort thus depends on a <em>growing descending chain</em> which is initially of size 0 and finally of size N.</p>
<p>By generalizing the notion of a chain into a tree, Van Gasteren and Dijkstra continue by describing a family of related sorting algorithms, a family which contains the Heap Sort and Smooth Sort algorithms as special cases. A chain is, after all, a tree of a special form.</p>
<blockquote><p>An attractive <em>generalization </em>of a chain is a rooted tree. Analogously [to a descending chain], a descending tree is one in which each element dominates its entire offspring. <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD809.PDF">[p.4, my emphasis]</a></p>
</blockquote>
<p>It should be stressed, however, that the descending tree in Heap Sort or Smooth Sort serves another purpose than the descending chain in Insertion Sort. During each iteration of Insertion Sort, the descending chain <em>grows </em>with one element. During each iteration of Heap Sort or Smooth Sort, the descending tree <em>shrinks</em> with one element. In the case of Insertion Sort, the descending chain represents the sorted part of the list. In the case of Heap Sort or Smooth Sort, the descending tree represents the part of the list that has not been sorted.</p>
<p>During each iteration in Heap Sort or Smooth Sort, the descending tree of size n+1 splits into its root r, on the one hand, and a new descending tree of size n, on the other hand. The root r adjoins the already sorted list of elements, a list that grows by one element in each iteration. To obtain the new descending tree of size n from all the offspring of root r, some appropriate reshuffling is needed. This reshuffling can be implemented in terms of a growing descending tree, which is initially of size 0 and finally of size n. To accomplish that, one has to judiciously choose a path in the growing descending tree (of final size n) and <em>apply the same ideas underlying the growing descending chain of Insertion Sort</em>. Here, thus, lies a strong similarity between all three sorting algorithms. </p>
<p>Finally, I mention that Heap Sort and Smooth Sort differ in how the reshuffling is implemented. For further details, <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD809.PDF">see [AvG16/EWD809]</a>.</p>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Thu, 24 May 2012 13:08:27 +0000egdaylight92 at http://dijkstrascry.comhttp://dijkstrascry.com/node/92#commentsA letter about APL
http://dijkstrascry.com/node/90
<section class="field field-name-field-histdate field-type-text field-label-inline clearfix view-mode-rss"><h2 class="field-label">Dated: </h2><div class="field-items"><div class="field-item even">Tuesday 12 January 1982</div></div></section><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>On Tuesday 12 January 1982, Dijkstra wrote a letter to Dr. A. Caplin explaining why he had his reservations about the language <strong>APL</strong> (<strong>A P</strong>rogramming <strong>L</strong>anguage). Dijkstra did this in response to an earlier letter that he had received from Caplin, a letter in which Caplin asked whether Dijkstra favored APL and, if not, why not. In Caplin's words:</p>
<blockquote><p>[I] was struck by [...] your search for a notation from mathematics that ``embraces all the required concepts of programming as well as enforcing the discipline of scientific method''. Surely you know that one such notation [APL] does exist, and was worked on by Ken Iverson in Harvard as far back as 1957. [...] Perhaps you have looked at it and dismissed it --- if so, why?</p>
</blockquote>
<p>Ken Iverson was the 1979 Turing Award winner. His APL language inspired many researchers, including Donald Knuth and Gerrit Blaauw.</p>
<p>The Dutch engineer Blaauw was a colleague of Howard Aiken during the late 1940s and early 1950s, a colleague of Dijkstra in Amsterdam during the early to mid 1950s, and an employer of IBM in New York from the mid 1950s to the mid 1960s. </p>
<p>After working with Aiken in Harvard, Blaauw brought a lot of know-how with him when he joined the Amsterdam team in 1952. Blaauw showed Dijkstra's colleagues, Loopstra and Scholten, how to build reliable computers that actually work. In 1955, Blaauw left the Netherlands again, this time to join IBM in New York. He became famous during the early 1960s after introducing his three levels of concern: architecture, implementation, and realization. Blaauw was a leading architect of the IBM System 360 together with Fred Brooks and fell in love with Iverson's APL notation.</p>
<p>In 1965, Blaauw returned to the Netherlands to start an academic career at the recently founded Technische Hogeschool Twente. Blaauw taught his students how to design the IBM way. He advocated using one general language, APL, to design both the software and hardware of a computer. Blaauw's design approach was one of prototyping: first build a prototype of the system (by programming in APL), experiment with that prototype and only afterward start implementing the real system. </p>
<p>Blaauw's emphasis on prototyping contrasts with what Dijkstra was delivering in Eindhoven during the 1960s. In fact, already during his earlier years in Amsterdam, Dijkstra wanted to prove a program correct by mathematical reasoning alone. Testing, as advocated by Blaauw, was a last resort to Dijkstra. Nevertheless, even though Blaauw and Dijkstra had different design philosophies, they did remain friendly (albeit somewhat distant) colleagues for the rest of their careers.</p>
<p>Contrasting Blaauw's design perspective with that of Dijkstra helps us understand Dijkstra's response to Caplin's letter. In Dijkstra's words:</p>
<blockquote><p>A typical characteristic of the APL devotee is, for instance, his closeness to an implementation of it. I know of a visiting professor at an American University who, trying to teach APL, bitterly complained about the absence of APL terminals. He was clearly unable to teach it without them. [...] This is in sharp contrast to people who prefer programming languages that can be adequately ``demonstrated'' ---i.e. shown, taught and discussed--- with pencil and paper.</p>
</blockquote>
<p>Abstraction from the machine is what, according to Dijkstra, APL failed to offer.</p>
<p>Source: both letters are in my archive (Map 1: T.U.E. 1973-1984).</p>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Thu, 05 Apr 2012 15:11:12 +0000egdaylight90 at http://dijkstrascry.comhttp://dijkstrascry.com/node/90#commentsExploiting Symmetry
http://dijkstrascry.com/node/86
<section class="field field-name-field-histdate field-type-text field-label-inline clearfix view-mode-rss"><h2 class="field-label">Dated: </h2><div class="field-items"><div class="field-item even">November 1981</div></div></section><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>In his 1963 paper `On the design of machine independent programming languages' Dijkstra explained why he wanted to avoid using case distinctions in the design of a programming language. For example, a programming language that allows a procedure to call another procedure but not itself was unneeded sophistication according to Dijkstra. Such a restriction not only complicates the definition of the language (by introducing a case distinction), it also complicates the task of implementing the language. Details are presented in my <a href="/node/4">`Dijkstra's Rallying Cry ...' article</a>. See also my previous post on <a href="/node/78">the case distinctions of Irons and Feurzeig</a>.</p>
<p>Almost 20 years later, Dijkstra explained why case distinctions are preferably also avoided when reasoning mathematically. Consider the following example:</p>
<ul><li>Let each of the 15 edges of a complete 6-graph be either red or blue.</li>
</ul><ul><li>3 of the nodes form a "monochrome triangle" when the 3 edges connecting them are of the same color.</li>
<li>Prove the existence of at least one monochrome triangle.</li>
</ul><p>It is very tempting to start the proof by taking an arbitrary node and giving it a name X and to then enumerate over different cases as follows:</p>
<blockquote><p>Among the 5 edges meeting X, one of the two colors, say red, dominates. Let XP, XQ, and XR be three red edges. <br />+ Case 1: Triangle PQR has a red edge, PQ say. Then triangle XPQ is monochrome red.<br />+ Case 2: Triangle PQR has no red edge. Then triangle PQR is monochrome blue.</p>
</blockquote>
<p>Dijkstra was unsatisfied with the above proof because it destroys the intrinsic symmetries of the problem. Saying that the color red dominates over the color blue destroys the symmetry between the two colors. Furthermore, naming one node X and another node P destroys the symmetry between the nodes as well.</p>
<p>To exploit the aforementioned symmetries, Dijkstra introduced the following definitions:</p>
<ul><li>Call two edges of different color and having one node in common a "mixed V" meeting at that node.</li>
</ul><ul><li>Call a triangle "bichrome" if it is not a monochrome triangle.</li>
</ul><p>In this particular problem there is no need to distinguish between the nodes (and giving them a unique name). Just take an arbitrary node, notice that it has 5 edges, and hence, note that at most 2*3 = 6 mixed V's meet at that node. Continue as follows:</p>
<ul><li>Since there are 6 nodes, there are at most 6*6 = 36 mixed V's.</li>
<li>Each mixed V occurs in one bichrome triangle.</li>
<li>Each bichrome triangle contains two mixed V's.</li>
<li>Hence, there are at most 36/2 = 18 bichrome triangles.</li>
<li>The total number of distinct triangles is (6*5*4) / (3*2*1) = 20.</li>
</ul><p>Hence, there are at least 20 - 18 = 2 monochrome triangles.</p>
<p>Dijkstra's point is that by recognizing and exploiting the symmetries of the problem at hand, the proof becomes simpler and hence easier to conduct. The word "simpler" here refers to less case distinctions (and hence to "generality"). The word "easier" refers to the virtue that the proof has less of an invitation to visualization. (My <em></em>personal experience is that I have indeed had to draw much less in order to understand Dijkstra's proof compared with the first proof.)</p>
<p>To summarize in Dijkstra's own words:</p>
<blockquote><p>Being of equal or of different colour are the <span style="text-decoration: underline;">only</span> functions that are invariant under colour inversion --- note that, accordingly, in the last proof the colours themselves are not mentioned at all! --- ; furthermore somewhere the topology of the complete 6-graph has to be taken into account, hence the notion of a V, hence the mixed V. [...] Similarly the last proof fully maintains the symmetry between the nodes (to the extent that they too remain anonymous). Its final virtue is that it is much less of an invitation to visualization. <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD803.PDF">[EWD803, p.21]</a></p>
</blockquote>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Wed, 29 Feb 2012 15:51:58 +0000egdaylight86 at http://dijkstrascry.comhttp://dijkstrascry.com/node/86#commentsDijkstra's Elegance vs. Naur's Pluralism
http://dijkstrascry.com/node/84
<section class="field field-name-field-histdate field-type-text field-label-inline clearfix view-mode-rss"><h2 class="field-label">Dated: </h2><div class="field-items"><div class="field-item even">November 1981</div></div></section><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>During the early 1960s, Dijkstra and Naur were much in sync with each other's research aspirations. They were, after all, <a href="/node/4">both involved in implementing and promoting the ALGOL60 programming language</a>. Dijkstra's 1970 `Notes on Structured Programming' was a pivotal point in their relationship, as described in <a href="/node/73">my interview with Naur</a>. From that point onwards, their research agendas diverged.</p>
<p>By November 1981, <a href="/node/80">Dijkstra had become interested in mathematical methodology</a>; he wanted to find an objective measure for simplicity, for ``mathematical elegance''. In his words:</p>
<blockquote><p>I have come to the opinion that some arguments are objectively simpler than others. [...]</p>
<p>[A]mong a great number of mathematical colleagues I found a much greater consensus about what was really elegant than they had suspected. <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD803.PDF">[EWD803, p.4]</a></p>
</blockquote>
<p>Naur, by contrast, believed a researcher should respect the multitude of personal styles in solving problems. Naur opposed those who claimed that there is one uniform way to conduct science, nor did he believe that the notion of ``mathematical elegance'' can be agreed upon, let alone be defined and measured.</p>
<p>The deeper difference between Dijkstra and Naur lies in the former's implicit acceptance and the latter's explicit rejection of Western philosophy. According to Naur, Dijkstra viewed mathematics and science as the only vehicles for true progress. But for Naur ``scientists'' are merely symbol chauvinists who firmly believe that mathematical structures prevail over material ones.</p>
<p>In November 1981, Dijkstra had just commenced with his quest:</p>
<blockquote><p>For the time being it suffices to capture mathematical elegance by the slogan ``short is beautiful''. <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD803.PDF">[EWD803, p.4]</a></p>
</blockquote>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Fri, 17 Feb 2012 09:51:26 +0000egdaylight84 at http://dijkstrascry.comhttp://dijkstrascry.com/node/84#commentsAn analogy between computer programs and mathematical proofs
http://dijkstrascry.com/node/80
<section class="field field-name-field-histdate field-type-text field-label-inline clearfix view-mode-rss"><h2 class="field-label">Dated: </h2><div class="field-items"><div class="field-item even">November 1981</div></div></section><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>In 1961, Dijkstra made <a href="/node/75">an analogy between mathematical proofs and computer programs</a>. After noting the analogy, he took aspects from the field of mathematics and projected them onto his own profession of programming.</p>
<p>Twenty years later, Dijkstra still stood by the analogy. This time, however, he projected the lessons he had learned from programming methodology back onto mathematics. Dijkstra was thus, in 1981, keen on defining a mathematical methodology. In Dijkstra's words:</p>
<blockquote><p>I am relying on the analogy between programs and proofs, an analogy which is the inspiration behind my effort to transfer what programming methodology has taught us to mathematical methodology in general.</p>
</blockquote>
<p>To further clarify his research agenda, Dijkstra distantiated himself from dominant traditions in logic, philosophy, and mathematics. Dijkstra was not interested in formalisms for the sake of capturing the foundations of mathematics. Instead, he only wanted to use formal methods if they could help pragmatically; that is, if they could help in conducting mathematics itself.</p>
<p>Dijkstra knew that his unorthodox research agenda would be countered by dominant voices. He therefore stressed from the start that he did not expect others to share his interests.</p>
<blockquote><p>We are not prescribing the law to anybody, we are not even attempting to propose something, but have rules for ourselves.</p>
</blockquote>
<p class="MsoNormal">Source: <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD803.PDF">the first few pages of EWD 803</a>.</p>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Tue, 17 Jan 2012 20:22:36 +0000egdaylight80 at http://dijkstrascry.comhttp://dijkstrascry.com/node/80#commentsTrip to Amsterdam, October 1981
http://dijkstrascry.com/node/79
<section class="field field-name-field-histdate field-type-text field-label-inline clearfix view-mode-rss"><h2 class="field-label">Dated: </h2><div class="field-items"><div class="field-item even">26-29 October 1981</div></div></section><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>Dijkstra attended the four-day “International Symposium on Algorithmic Languages” in honor of Aad van Wijngaarden who was retiring as director of Amsterdam's `Mathematical Centre'. The symposium was held from Monday 26 October until Thursday 29 October 1981. Ershov and Turski also attended after having spent the weekend with Dijkstra at his home in Nuenen.</p>
<p>Dijkstra had been Van Wijngaarden's PhD student during the 1950s. By the end of that decade, Van Wijngaarden had lost his wife in a car accident. As a result, he became estranged from many friends and colleagues in later years. During the 1960s and later, Van Wijngaarden and Dijkstra became more distanced from each other, as the following 1981 description by Dijkstra of the aforementioned event illustrates:</p>
<blockquote><p>As a member of the Program Committee I knew that it would not be a very good conference; apparently the computing community had sensed this, for there were only about 125 participants. [...] The conference quite clearly suffered from the fact that it had been organised in honour of van Wijngaarden, who was sitting in the front row. A number of speakers really deserved to be torn apart, but the audience did not do it (or the chairman did not allow it) for fear of spoiling the fun for van Wijngaarden.</p>
</blockquote>
<p>Equally noteworthy is that Dijkstra praised Naur's talk at the symposium even though, <a href="/node/73">from Naur's point of view, their relationship had ceased to be friendly during the late 1960s and the early 1970s</a>. Based on similar observations that I have made from other sources, I am currently inclined to ascertain that Dijkstra did not share Naur's animosity.</p>
<p>Some other speakers at the symposium were R. Schild, B. Meyer, M. Broy, M. Sato, and J.C. Reynolds. The rest of the talks were according to Dijkstra not very good. Darlington's talk in particular was “totally unconvincing” to Dijkstra. This was <a href="/node/51">not the first time</a> that Dijkstra expressed such reservations.</p>
<p>Source: <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD805.PDF">EWD 805, written on 30 October 1981</a>.</p>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Tue, 03 Jan 2012 16:33:07 +0000egdaylight79 at http://dijkstrascry.comhttp://dijkstrascry.com/node/79#commentsTrip to Scotland and Newcastle, September 1981
http://dijkstrascry.com/node/72
<section class="field field-name-field-histdate field-type-text field-label-inline clearfix view-mode-rss"><h2 class="field-label">Dated: </h2><div class="field-items"><div class="field-item even">31 August -- 15 September, 1981</div></div></section><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>In the late summer of 1981, Dijkstra gave several talks in Scotland and Newcastle. Here is an overview of his trip:</p>
<p>+ The Marine Hotel in North Berwick. The host was Mr. Hannah of Burroughs. The audience consisted of 10 men from various Burroughs plants in Europe. Dijkstra lectured for five successive days, between 6 and 7 hours per day. The "standard surprise" from the audience was that the universal quantification over the empty set yields true.</p>
<p>+ By train to Newcastle-upon-Tyne. The host was — as usual — Brian Randell. Dijkstra stayed in Randell's house for 9 days; Randell's two eldest children slept outside in a tent. In Newcastle, Dijkstra attended the 14th Joint International Seminar on the Teaching of Computing Science, which was devoted to Very Large Scale Integration. A summary in Dijkstra's words: "Much of the design process as shown to us seemed engineering in the worst possible sense of the word, viz. essentially by trial and error."</p>
<p>+ Off to Glasgow, to visit the Department of Computer Science of the university. The host was J. Cavouras. Dijkstra gave a talk on the presentation of programs for an audience of about 100 people.</p>
<p>+ Off to Edinburgh, to visit the Heriot-Watt University. The host was H. Davis. Dijkstra gave the same talk for an audience of about 75 people.</p>
<p>Source: <a href="http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD802.PDF">EWD 802</a></p>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Mon, 12 Sep 2011 11:34:20 +0000egdaylight72 at http://dijkstrascry.comhttp://dijkstrascry.com/node/72#commentsTrip to Marktoberdorf, Summer 1981
http://dijkstrascry.com/node/71
<section class="field field-name-field-histdate field-type-text field-label-inline clearfix view-mode-rss"><h2 class="field-label">Dated: </h2><div class="field-items"><div class="field-item even">26 July -- 10 August, 1981</div></div></section><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>The theme of the International Summer School in Marktoberdorf was "Theoretical Foundations of Programming Methodology". The general pattern of the day was: two lectures — a break — two lectures — lunch — two lectures — break — discussion.</p>
<p>In his trip report, Dijkstra listed several speakers from that summer school:</p>
<ul><li>Tony Hoare talked about the theory of Communicating Sequential Processes</li>
</ul><ul><li>Joe Stoy (replacing Dana Scott) talked about Scott's work</li>
<li>Joe Morris: aliasing</li>
<li>Rod Burstall: Specification Languages and Categorical Programming</li>
<li>Zohar Manna: Program Synthesis and Temporal Logic</li>
<li>Sharon Sickel: logic programming (i.e. the use of Horn Clauses as a programming method)</li>
<li>Maurice Nivat</li>
<li>Bruno Courcelle </li>
<li>Manfred Wirsing</li>
<li>Manfred Broy</li>
<li>Edsger W. Dijkstra: smooth sort, generalized philosophers</li>
</ul><p>Source: <a href="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD07xx/EWD799.html">EWD799</a></p>
</div></div></div><section class="field field-name-field-tags field-type-taxonomy-term-reference field-label-above view-mode-rss"><h2 class="field-label">Tags: </h2><ul class="field-items"><li class="field-item even" rel="dc:subject"><a href="/taxonomy/term/10" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">diary80s</a></li></ul></section>Fri, 02 Sep 2011 11:22:46 +0000egdaylight71 at http://dijkstrascry.comhttp://dijkstrascry.com/node/71#comments