Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Reflections on programming systems : historical and philosophical aspects
De Mol L. (ed), Primiero G., Springer International Publishing, New York, NY, 2018. 286 pp. Type: Book (978-3-319972-25-1)
Date Reviewed: Jan 21 2021

The book’s ten chapters may remind readers that the essential state of affairs in programming systems has not substantially changed since the early 1960s. Chapter 1--an overview of what follows--starts with a relatively familiar epigraph, published in 1968:

Today we tend to go on for years, with tremendous investments to find that the system, which was not well understood to start with, does not work as anticipated. We build systems like the Wright brothers built airplanes--build the whole thing, push it off the cliff, let it crash, and start over again. [1]

The authors of this chapter proceed with another quote from 2017:

Semi- and fully autonomous systems, the seemingly imminent Internet of Things, and artificial intelligence are providing further examples in which increasing complexity leads to obscure and unexplainable system behavior. [2]

They also mention Wirth’s expression “bloated software systems” [3], published in 1995. Nevertheless, some software systems were exceptionally good.

The enjoyable chapter 2 describes how software validity and correctness was handled in the 1950s, for LEO I and II machines in the United Kingdom (UK), and one can easily see the programming approaches (the term “software engineering” was not invented yet) that were very successfully used in those days for business computing: program reading, egoless programming (“checking of programs by another programmer before allowing them on the computer”), the use of clear and precise problem specifications, the need for data validation and verification, provision of understandable documentation, and the need for “the nature and schedule of testing [to be] defined beforehand.” Most of these approaches were safely forgotten after immediate access to the computer was introduced--arguably providing a form of instant gratification--and then were rediscovered again and again, sometimes under different more or less buzzword-compliant names.

The longest and very well-written chapter 4, by Troy K. Astarte and Cliff B. Jones, is about four descriptions of formal semantics of Algol 60. The authors observe that “any formal description approach must take a certain collection of base concepts as axiomatic (and presumably [defined] in natural language).” Further, the authors state:

The use of careful wording ... does help to elucidate some of the ... errors and how to avoid them, but the lack of any kind of formalization would have made the task of automatically checking for them, or proving their absence, rather tricky.

This statement is valid not only for algorithmic languages, but also for other kinds of specifications, including those used in business and information system modeling [4]. As to the choice of Algol 60, the authors recall C. A. R. Hoare’s familiar observation that Algol 60 was “so far ahead of its time that it was not only an improvement on its predecessors, but also on nearly all its successors” [5], and note that Algol was chosen for description using the Vienna definition language (VDL) “due to its simplicity and elegance (particularly compared to PL/I),” reminding the reader that VDL had already been successfully used to define the entirety of PL/I. The use of the Vienna development method (VDM) for describing Algol similarly followed its use for describing PL/I. In this context, it is interesting to note that the experience of testing the first PL/I compiler “taught Jones that testing was not a viable way to create a quality product before he had heard Dijkstra’s most famous aphorism [that] testing shows the presence, not the absence of bugs.” With respect to denotational semantics, the authors acknowledge that it does inflict “some rather heavy foundational lifting on both writer and reader,” but also state that reasoning about functions--well-known mathematical objects--“is more straightforward and tractable than in an operational semantics.” Finally, as expected, the authors discuss “the ever tricky goto” in many subsections.

Julian Rohrhuber, in his interesting foundational chapter, discusses the need to deal with “tacit but fundamental differences” in reasoning about functions. He is explicit about “the agency of a problem--the capacity of a problem to force a reconsideration of concepts and the formation of intellectual collectives”:

most problems [an epistemic apparatus (such as a formalism)] doesn’t resolve, but articulates the obstacle they pose. In other words ... formalization is a “domestication of spirits.”

The same considerations apply to the very pragmatic need to use precise specifications and, of course, precise definitions in business and other system modeling.

Stephen Kell describes “a relatively small set of recurring concepts [through] Smalltalk, Unix, and Plan 9,” observing that both Unix and Smalltalk “latched onto the idea of compositionality.” He quotes Kernighan and Pike as saying that, in Unix, “the power of a system comes more from the relationships among programs than from the programs themselves.” These authors, however, do not mention the same compositionality concepts in category theory or in F. A. Hayek’s theory of complex phenomena [6].

Warren Toomey nicely presents the design considerations and design process for the very first Unix--for PDP-7 (with only 8192 words of memory). He quotes, in particular, Mahoney’s 1989 interview with Dennis Ritchie: “the hardware available as well as our inclinations tended to trying to build neat small things, instead of grandiose ones.” For a more detailed presentation of Unix (for PDP-11), and especially the maxims that “have gained currency among the builders and users of the Unix system,” see the first several papers from [7].

Govindarajulu et al., in their paper on ethical operating systems, state that ethical control must be engineered at the operating system level because otherwise it would be possible for “malevolent or blundering software engineers” working above this level to disable such control. The authors properly observe that their approach is an application of E. W. Dijkstra’s principle of separation of concerns. Thus, an ethical operating system “adheres to [a specific] ethical theory even when software components are added, removed, or when configurations between components change.” The authors further claim that normative ethics is “inevitably fundamentally a logic-based enterprise” and illustrate their approach with a not very convincing (to me) example of self-driving cars. Such a reductionist approach does not seem to be valid for complex systems, for reasons clearly presented by F. A. Hayek [6]: while it is possible to recognize and predict behavioral patterns, it is not possible to predict particular manifestations of those patterns. For example, the environment for self-driving cars is a complex system with unpredictable specific attributes. As David Lorge Parnas recently observed, referring to “dangers that can exist whenever a program’s precise behavior is not known to its developers”:

In safety-critical applications, it is the obligation of the developers to know exactly what their product will do in all possible circumstances. Sadly, we build systems so complex and badly structured that this is rarely the case. [8]

The final chapter, by R. K. Hill, is about elegance in software. The author states that elegance for programs is characterized by minimality, accomplishment (under adversity), modesty, and revelation (of a neglected aspect of the problem). In my opinion, such a formulation is also, up to a point, reductionistic. Dozens of references do not include Dijkstra’s 1962 observation that elegance and beauty are the greatest virtues a program can show, or his 1979 statement that “in the practice of computing mathematical elegance is not a dispensable luxury, but a matter of life and death” [9]. Many excellent and convincing examples of mathematical and computing elegance may be found in his other work.

Regretfully, the book does not include an index.

Summing up, this very interesting book clearly demonstrates, with quite a few examples, that essential computing concepts have been around for quite some time. I highly recommend it.

Reviewer:  H. I. Kilov Review #: CR147165 (2106-0132)
1) Naur, P.; Randell, B. (Eds.) Software engineering: report on a conference sponsored by the NATO Science Committee. NATO Scientific Affairs Division, Brussels, Belgium, 1968, http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF.
2) Neumann, P. G. Trustworthiness and truthfulness are essential. Communications of the ACM 60, 6(2017), 26–28.
3) Wirth, N. A plea for lean software. IEEE Computer 28, (1995), 64–68.
4) Open Distributed Processing - Reference Model: Part 2: Foundations (ITU-T Recommendation X.902 ISO/IEC 10746-2), 1995.
5) Hoare, C. A. R. Hints on programming language design. Stanford University, Stanford, CA, 1973.
6) Hayek, F. A. The theory of complex phenomena. In: The critical approach to science and philosophy (in honor of Karl R. Popper). 22-42, The Free Press of Glencoe, London, UK, 1964.
7) The Bell System Technical Journal 57, 6 (1978).
8) Parnas, D. L. Letter to the Editor. Communications of the ACM 62, 8 (2019), 9.
9) Dijkstra, E. W. My hopes of computing science (EWD709). In Proc. of the 4th International Conference on Software Engineering (ICSE) IEEE, 1979, 442–448.
Bookmark and Share
  Reviewer Selected
Editor Recommended
Featured Reviewer
 
 
Software Architectures (D.2.11 )
 
 
History of Computing (K.2 )
 
Would you recommend this review?
yes
no
Other reviews under "Software Architectures": Date
Software architecture in practice
Bass L., Clements P., Kazman R., Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1998. Type: Book (9780201199307)
Sep 1 1999
CORBA design patterns
Mowbray T., Malveau R., John Wiley & Sons, Inc., New York, NY, 1997. Type: Book (9780471158820)
Sep 1 1998
Developing business systems with CORBA
Sadiq W., Cummins F., Cambridge University Press, New York, NY, 1998. Type: Book (9780521646505)
Feb 1 1999
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy