Jump to content

In a 1995 text titled A Plea for Lean Software, computer scientist Niklaus Wirth reiterates the problem of the increasing complexity of software, as a result of the unbridled integration of functionality and, in particular, a faulty culture of design. Wirth cites, “with a touch of humour,” the “law” proposed by Martin Reiser1:

Software is getting slower more rapidly than hardware becomes faster.

What explains this?

A primary cause for complexity is that software vendors uncritically adopt almost any feature that users want. Any incompatibility with the original system concept is either ignored or passes unrecognized, which renders the design more complicated and its use more cumbersome.

Niklaus Wirth, p. 65

Such an attitude, consisting in “uncritically” adding new functionality that substantially increases the complexity of a system and its energy consumption (but also adds to its necessary maintenance, regarding security, consistency, legal conformity, etc.), has harmful consequences, such as the accelerating obsolescence of hardware. If computers appear to “slow down” with time, this phenomenon must be nuanced: it is the increase in load imposed on the same computing capacity that creates such impression.

Uncontrolled software growth has also been accepted because customers have trouble distinguishing between essential features and those that are just “nice to have.” Example of the latter class: those arbitrarily overlapping windows suggested by the uncritically but widely adopted desktop metaphor; and fancy icons decorating the screen display, such as antique mailboxes and garbage cans that are further enhanced by the visible movement of selected items toward their ultimate destination. These details are cute but not essential, and they have a hidden cost.

Niklaus Wirth, p. 64-65

Methodical design as a remedy to software inebriation

“Software inebriation”2 suggests lacuna in judgment or design. The steady increase of computing power in generations of computers (correlating with Moore’s law3) has the effect of removing pressure on the quality of writing (software code in this instance):

Bill Gates made a similar observation, but said that the net result is to keep system speed about the same, not to get worse. Gates speculates that this is for more than one reason: programmers add more and more features but also code less and less efficiently as hardware grows in capability. Worrying less about the efficiency of software makes the software less costly to produce. This is an example of how Moore’s law can enable trade-offs that save costs in areas of computing other than chip technology. Many applications and operating systems now contain tens of millions of lines of software as a side effect of Moore’s law.

Gustafson, 2011

The key or “price to pay” (as Wirth writes) lies in methodical design, which is insightful (integrating diverse considerations, not just related to engineering itself), disciplined (adhering rigorously to established principles), progressive (thanks to thoughtful decomposition), iterative (through successive rounds). This kind of rigour is, however, often bypassed by market imperatives, such as short-term profit seeking.

Methodical design, for example, is apparently undesirable because products so developed take too much “time to market.” Analytical verification and correctness-proof techniques fare even worse; in addition, these methods require a higher intellectual caliber than that required by the customary “try and fix it” approach. … When “everything goes” is the modus operandi, methodologies and disciplines are the first casualties.

Niklaus Wirth, p. 66

  1. Reiser’s law: Wirth explicitly wished to address the problem stated by Martin Reiser in his project Oberon (an operating system): “Compactness and regular structure, and due attention to efficient implementation of important details appear to be the key to economical software engineering. With the Oberon System, we wish to refute Reiser’s Law, which has been confirmed by virtually all recent releases of operating systems: In spite of great leaps forward, hardware is becoming faster more slowly than software is becoming slower.” ↩︎

  2. Inebriation: Wirth uses the expression “fat software,” which connotes the idea of excessive weight; the term “inebriation” (perhaps closer to the French equivalent than “drunkenness”) rather emphasizes on the transient cognitive state involved in the process. ↩︎

  3. Moore’s law: Gordon E. Moore (in his 1965 article) observed, and foresaw, that the density of manufactured processing chips would continue to increase by a factor of two every two years. This tendency was effectively realized over the following decades and even after the 2000s. It is interesting to note the feedback loop that resulted from the law: as the available computing power increased (thanks to smaller and more powerful chips), the demand in computing tasks followed, in a mad race where each one would exchange the lead (computing power would be caught up, then get ahead again, and so on). See John L. Gustafson, “Moore’s Law” in David Padua (ed.) Encyclopedia of Parallel Computing, Springer, New York, 2011, https://link.springer.com/referenceworkentry/10.1007/978-0-387-09766-4_81↩︎