Tripreport E.W.Dijkstra, Meeting IFIP W.G.2.3., Munich, 8 - 14 December 1974.
"Schlaf aus deine Freude, schlaf aus dein Leid..."
(my translation: "Sleep off your joy and sleep off your sorrow....")
Wilhelm Müller (1794 - 1827)
The first record I placed upon the turntable after arrival back home was the (2nd) Fischer Diskau/Moore recording of "Die schöne Müllerin" by Schubert/Müller. In view of the poet's avowed longing for death —"Das Wild, das ich jage, das ist der Tod" (again my translation: "The game that I hunt is death itself.")— and the fact that 1827 - 1794 equals only 33, Wilhelm Müller had done fairly well.....
I made the trip from Eindhoven to Munich —on Sunday— and vice versa —on Saturday— by train: it is a through connection and the fact that it takes slightly more than nine hours does not worry me. Trips like these remind me of the story told to me by Brian Randell, of the man who commented on his ability to do two things concurrently "I can sit and think." and then added "and often I only sit....". On the trip to Munich —German international railway carriages really run smoothly!— I wrote the major part of a paper on the implementation of monotonic replacement algorithms —in the literature erroneously known as "stack algorithms"— on the way back I thought —rather unsuccessfully, I must admit— on grammars for defining the structure of classes of strongly connected graphs, and, when that alley seemed dead for the moment, on redundant object code representation. (To think again thoughts with a possibly direct bearing on the machine design is great fun!). By the time I crossed the German/Dutch border I had arrived to a few firm conclusions according to which all machines in the design of which I have ever been involved —and many others, for that matter— contained the same flaw).
I am not sure when I shall find the time to work this out and write a readable report about it. Arriving home after a week's absence I received from my dear wife the carefully collected mail. (For the purpose of this report I weighed it: 2300 gram, all from people I have never written before. In about one hour I read a —French— thesis of 500 gram, which I shall direct along the appropriate channels, but the remaining 1800 gram I have to process myself more seriously.) My youngest son saw me browsing through all that mail and announced that later in life he did not intend to become a professor! Blessed are the innocent children, even one's own.... (At the party on Thursday evening, quite a few people asked me what it meant and how it felt to be a Burroughs Research Fellow. After my explanation that it is my main commitment "to do my own thing", the usual reaction is something like "That must be an exciting, but also frightening challenge." It was quite remarkable that all German-speaking colleagues only saw the exciting part and that none of them saw the frightening side of it: they all reacted with undiluted envy. Thus they confirmed my earlier impression that at the German-speaking Universities the level of life is not just bad as everywhere else, but distinctly below average.)
The Working Group "On Programming Methodology" met from Monday morning to Friday afternoon. I spoke to them on Monday afternoon on highlights from my book and I was moderately successful. I should have given them a list of highlights and the chance of selecting from them; I made the choice instead. Secondly I should have taken the time to prepare a number of transparencies, for now I struggled continuously with a lack of blackboard space. Friday afternoon I tried to get a discussion going on the purpose of "types" and the "pros and cons of polymorphic functions". That seemed a disaster, but I think that we miss the point when we blame that on our being tired and my having half a flu. Later I remembered that my effort to bring that topic in discussion in Bristol had been equally unsuccessful. In all probability, the moral of the story is that types do not play such a predominant role as we may have thought, and are certainly no good for abolishing the notion of partial functions. And secondly —but that conclusion was not drawn that afternoon— that "scope rules" (both positive and negative ones) provide probably a much more useful form of redundancy.
Doug McIlroy from Bell Labs described a program structure built from modules connected by "pipes", which was nice for the way in which he used the —not unknown— ideas for program composition and modification. It was his talk that made me think about grammars for strongly connected graphs; as the latter is not a trivial problem, it remains to be seen whether we shall see modules in a much more complicated arrangement then, say a pipe line. (Note that with one noteworthy exception, all my elephants up to now are built as a cyclic arrangement of mosquitos: I sometimes have the feeling that this is not just lack of originality on my side!)
The next morning I missed Doug Ross (Softech), as I had to act as the opening speaker at a meeting of the German Chapter of the ACM. This, again, was only moderately successful: I was amazed to find in the Max Planck Institut no throat microphone; besides that I had to work on a grey blackboard. Shortly after my performance I went back to the Leibniz Rechenzentrum, where first Peter Naur (Copenhagen) and then Jim Horning (Toronto) described experiments with large number of students: Peter's statistical material came from inquiries filled in by the students, Jim's statistical material came from mechanically observed errors. It was instructive in the sense that they described experiments I would never do myself; on the other hand the results seemed very inconclusive. I do not expect that with respect to such an individual activity as "thinking" any deep insights can be obtained by observing group behaviour. I have similar doubts regarding Lehman's (London) "Evolution dynamics of large programs."
In the course of the week it was suggested that my sequencing discipline would lead to an unusual great fraction of complicated boolean expression. To stay in tune with the statistical approach I counted the "guards" in the program texts in my manuscript: 155 simple ones (either a relation or a boolean variable or a negated boolean variable) and 27 complicated ones (in which I had counted all cand's and cor's double): 15 percent. I then conducted an inquiry among the people present, asking for their personal estimation of the percentage of complicated boolean expression in their programs: the average of the answers was 17.5 percent. "...but, please, always be sure to call it: Research" (Tom Lehrer).
Niklaus Wirth (Zurich) gave a very illuminating (critical) review of PASCAL: illuminating because he was more explicit than ever about the motivations that had gone into the design and, besides that, was not defensive. He was the first to evoke a real discussion among the members; in some other cases I think members were afraid to give their minds. David Gries showed how he tried to extend the axiomatic approach of Tony Hoare: it was not complete yet, but looked promising and eminently manageable. In any case he has already made clear to me that the technique of "ghost variables" is more powerful than introducing "progress functions" which are just a special case. Brian Randell (Newcastle-upon-Tyne) described the current state of their recovery project. It was only after the meeting, when Brian had already left, that I remembered having a precious document in my pocket. It was titled "THINGS TO BE PUT INTO A SYSTEMS DESIGN LANGUAGE" and compiled by him and me at the first ACM Symposium on Operating Systems Principles, Gatlinburg, 1967, when a number of the participants blamed the difficulties of operating system design on the absence of a suitable "language" and founded an ad-hoc subcommittee for the design of such a tool. We did not join that subcommittee but, during dinner time, compiled a list of recommendations instead. (When it was completed, we did not want to keep our fun for ourselves; at the other end of the dining room a larger group of participants was having dinner and for their amusement we let our list circulate around their table. It was only the next day that we discovered that at that other table.... the subcommittee had its meeting!) our list contained:
automatic backup features
dynamic maintenance facility
condition reallocation facility
built-in heuristic procedures
levelling and delevelling concepts
file system generators
interrupt dispatcher control
automatic flaw recovery
parametric fork and spoon generators
system into madness putter
peripheral abstraction detector
general purpose modularity device
page fragmentation absorber
symbolic resource optimizer
graceful degradation (of female operators) (Brian's handwriting)
maximized cost performance
underware (= system support)
delay module insertion coordinator.
I have the feeling that many of the subjects listed above have been discussed last week in one way or another. A sobering thought...
Tony Hoare (Belfast) spoke on "Levels in Operating Systems" and this looked very promising. He had bent SIMULA to his purpose. Although I was very keen on getting a good grasp on what he was proposing and why, I intentionally made no notes, because I know that the only way in which I can hope to come to grips with that problem —a rather continuous evolution from rather bare machine to user programs added as "the last layer"— is by writing it down myself. I had tried to design something like that many years ago and remember where I got hopelessly stuck and I think that Tony showed how to get out of it. But his presentation —usually he is crystal clear— was influenced by its historical origin, and carried a lot of the SIMULA confusions with it. So I guess that I must reinvent the wheel in such a way that also simple-minded persons like myself can see that it is round.
George Rabin (Poughkeepsie) gave a talk in which he failed to communicate to me: my guess is that his problems have only a meaning provided one takes a number (how many?) of OS/360 positions for granted. I was wondering what he was talking about, and so did a few others.
The encounters outside the official sessions were more rewarding and have covered all sorts of things. Tony made a promising suggestion as how to deal with "dual elephants", although it will require at least a very good taste if the notation is not to become too hairy. Two subscripts, which in turn may be associated with time and space seems a minimum. Niklaus told a terrible story about CDC-software. With 10 six-bit characters (from an alphabet of 63) packed into one word, CDC used the 64th configuration to indicate "end of line"; when for compatibility reasons a 64th character had to be added, they invented the following convention for indicating the end of a line: two successive colons on positions 10k+8 and 10k+9 —a fixed position in the word!— is interpreted as "end of line". The argument was clearly that colons hardly ever occur, let alone two successive ones! Tony was severely shocked "How can one build reliable programs on top of a system with consciously built-in unreliability?". I shared his horror: he suggested that at the next International Conference on Software Reliability a speaker should just mention the above dirty trick and then let the audience think about its consequences for the rest of his time slice! At another occasion Mike Woodger (Teddington) gave a verbal clarification for his enthusiasm for the work of the Polish logician Lesniewski, an enthusiasm he had earlier communicated to me by mail. If Mike says that this work is far superior to the work of better known logicians like Quine, Fraenkel, Bernays and Rosser who have "abandoned hope of relying on intuitive logical common sense in the face of the antinomies" because Lesniewski has successfully avoided the paradoxes by introducing "sets" as coins with two faces, I believe him. But it will take a long time before it will soak in. Firstly Lesniewski's notation is somewhat hair-raising, secondly, practically all people that could read it, would have to unlearn the Principia Mathematica first. I came to the conclusion that I am not a logician, nor that I feel a strong desire to become one.
On Friday evening Tony —who had also addressed the German Chapter of the ACM— and I were invited for dinner by Christiane Floyd and Peter Schnupp, who had organized the meeting of that Chapter earlier that week. We were joined by four other Germans and had a quite pleasant dinner, that did not start very early, nor ended very early. (As my train left the next morning at 11.42, I did not mind too much.) The spirit at the dinner table is quite well characterized by one of the Germans quoting "You may be consistent or inconsistent, but should not all the time switch between the two."
Gerhard Seegmüller had organized the meeting in the Leibniz Rechenzentrum and the party in his home on Thursday evening as smoothly as the previous occasion. At that party I also met Manfred Paul and Fritz Bauer. The latter was very busy, because that very week there was in Munich a meeting of numerical analysts in honour of Householder. Olga Tauski and Dick Verga —with whom I had one or two breakfasts— shared our hotel.
I left Munich on Saturday morning gladly, when I came home in the evening I was a little sad.