Computing Reviews

Pluralism in software engineering :Turing Award winner Peter Naur explains
Daylight E., De Grave K., Lonely Scholar,Heverlee, Belgium,2011. 134 pp.Type:Book
Date Reviewed: 10/22/12

This book presents the transcript of an interesting, thought-provoking, and perhaps controversial interview with Peter Naur, conducted and very well prepared by Edgar G. Daylight. The interview included comments by Naur in response to quotes from his writings selected by Daylight, who “eagerly studied [Naur’s] writings for 18 months before the interview.”

According to Daylight, the interview demonstrates that Naur is an “authentic lonely scholar, a rare species that reads and writes with a sole purpose to understand,” and includes harsh--sometimes extremely harsh--criticism of others, especially E. W. Dijkstra. For example, Naur claims: “Russell is so specific that I easily show how absurd his approach really is.”

The interview starts with an overview of Naur’s early years and his work in astronomy, and proceeds to his work on ALGOL, including descriptions of the early ALGOL compilers. A rather lengthy discussion of formalization and the role of mathematics follows, with Naur asserting that he had “experienced, more or less all my life, a certain distrust of formalization, of too much mathematics” (p. 27). This is accompanied by a corresponding increasingly negative assessment of (what he considers to be) Dijkstra’s approach to programming and mathematics. Dijkstra’s definition of mathematics as the art and science of effective reasoning may be compared with F. A. Hayek’s note that “[t]he systematic construction of such new patterns [by our mind] is the business of mathematics” [1]. While Naur stresses his very critical review of Dijkstra’s 1982 collection of papers [2], he never mentions Dijkstra’s 1976 text [3] that, together with [2] and other of Dijkstra’s publications, shows that Naur’s and Dijkstra’s approaches to programming and mathematics are frequently not too far apart.

Consider, for example, Dijkstra’s observation:

Today’s mathematical culture suffers from a style of publication where the results and the reasoning justifying them are published quite explicitly but in which all pondering is rigorously suppressed, as if the need to ponder were a vulgar infirmity about which we don’t talk in a civilized company. [4]

Compare this with Naur’s observation that “the style of mathematical publications [is] that you don’t show how you have arrived at your insight” (p. 45). (At the same time, Naur notes that “the descriptions of [Dijkstra’s] program developments are unrealistic to me.”) Furthermore, one can only agree with Naur’s statements that in practice we use several different forms of notation and that design is all about choosing a suitable representation (and this choice has nothing to do with formal proofs). This is very close to Dijkstra’s remark about the need to teach “how to invent notations that are efficient in view of one’s manipulative needs” [2]. Dijkstra’s and Naur’s very negative opinions about “artificial intelligentsia” (Dijkstra) are rather well known. Finally, Dijkstra clearly distinguishes between two thinking activities: pondering (nonformalizable) and reasoning (formalizable). He notes that because of “our inability to do much,” something (called “pondering”!) is necessary to reduce the amount of reasoning. In Dijkstra’s opinion, pondering can be taught “up to a point” [3], when the teacher informally shows his own thought process of problem solving. This can be compared with Naur’s emphasis on the need to use intuition “in the best way we know,” and with his observation that software development, as well as learning to play an instrument or learning a language (p. 69), cannot be done in a rule-based manner.

Naur’s proper distaste for unreadable specifications, clearly shown in his remark that the formal specification of a permutation presented by Cliff Jones is “completely unreadable” (p. 64), does not mean that specifications ought to be informal. As observed by Bertrand Meyer in his remark on “quantifiers considered harmful” [5], specifications should be at an appropriate (for humans) abstraction level. In this manner, rigorous (or even formal) specifications will become, as Naur notes, “a way of understanding better” (p. 30). Naur himself used this approach in his successful attempt to understand such a complex artifact as Turing’s universal machine and to teach this understanding to his students (pp. 89-92).

Naur states that program development is all about grasping the relationship between the modelee (a real-world problem), the model (a program), and the model-building elements (programming language constructs) that “are given, are tools for the programmer” (p. 80). This approach appears to ignore the specification, which is not the same as the program and for which the language should not be as restrictive and as low-level as a (given) programming language. It also ignores the need for a clear separation of concerns between what Dijkstra called “the pleasantness problem” (perhaps not the best choice of a name, although he also used the term “usefulness”) and the correctness problem: “the task of making a thing satisfying our needs” as a single responsibility is split into two parts: “stating the properties of a thing, by virtue of which it would satisfy our needs” and “making a thing guaranteed to have the stated properties” [2], with the specification acting as a logical firewall between these concerns.

A substantial part of Naur’s interview is about philosophy and especially psychology, with an emphasis on The principles of psychology by William James [6]. Naur states that science has “nothing to do with logic or truth. It is merely a matter of descriptions [that] are not true, never, they are more or less adequate ... they are useful” (p. 86). Again, this can be compared with Dijkstra’s statement that “truth and reality are no longer scientific notions, and the scientist leaves talking about them to the philosophers, the prophets, and the poets” [7]. Finally, the very interesting chapter 17 of Naur’s interview is an analysis of his self-published 2008 book on synapse-state theory, in which he notes that the work of James was pushed aside by behaviorists who insisted on doing experiments with “people treated as objects where you push them and then see what happens, and never ask what they experienced.” This reductionist conceptualization “became completely dominating” in psychology, but was also strongly criticized by Hayek [1,8]. It would certainly be instructive to compare Naur’s approach to the structure of the nervous system with Hayek’s [8] (considered by Hayek as one of his more important contributions to knowledge).

I noticed an annoying typo: “loose” instead of “lose” (p. 117).


1)

Hayek, F. A. The critical approach to science and philosophy. The Free Press of Glencoe, , 1964.


2)

Dijkstra, E. W. Selected writings on computing: a personal perspective. Springer-Verlag, New York, NY, 1982.


3)

Dijkstra, E. W. A discipline of programming. Prentice-Hall, Englewood Cliffs, NJ, 1976.


4)

Dijkstra, E. W. Language hierarchies and interfaces (LNCS 46). Springer-Verlag, , 1976.


5)

Meyer, B. Domain theory: the forgotten step in program verification. http://bertrandmeyer.com/2012/04/11/domain-theory-the-forgotten-step-in-program-verification/ (accessed 10/19/2012).


6)

James, W. The principles of psychology (2nd ed.). Encyclopaedia Britannica, Inc., Chicago, IL, 1990.


7)

Dijkstra, E. W. Science fiction and science reality in computing. http://www.cs.utexas.edu/users/EWD/transcriptions/EWD09xx/EWD952.html (accessed 10/19/2012).


8)

Hayek, F. A. The sensory order: an inquiry into the foundations of theoretical psychology. Routledge & Paul, London, UK, 1952.

Reviewer:  H. I. Kilov Review #: CR140615 (1302-0094)

Reproduction in whole or in part without permission is prohibited.   Copyright 2024 ComputingReviews.com™
Terms of Use
| Privacy Policy