here and which can be found in PDF in many places, such as
liam_on_linux | "A Plea for Lean Software" by Prof. Niklaus Wirth
Account name:
Password:
(Forgot it?)
(OpenID?)
Remember me
You're viewing liam_on_linux 's journal
Create a Dreamwidth Account Learn More
Interest<br>Region<br>Site and Account<br>FAQ<br>Email
Reload page in style: site light
Liam on Linux<br>Liam Proven's thoughts on IT, especially FOSS<br>"A Plea for Lean Software" by Prof. Niklaus Wirth
inner -->
"A Plea for Lean Software" by Prof. Niklaus Wirth<br>Oct. 12th, 2022 04:32 pm
liam_on_linux This is simply a text version of Wirth's paper from the IEEE "Computer" magazine, as mentioned here and which can be found in PDF in many places, such as here on Github. I imported the text and cleaned it up for the benefit of those for whom a formatted PDF is inconvenient. I am not the author or originator of any of this material.
Computer: Cybersquare, February 1995<br>A Plea for Lean Software<br>Niklaus Wirth<br>ETH Zürich
Software's girth has surpassed its functionality, largely because hardware advances make this possible. The way to streamline software lies in disciplined methodologies and a return to the essentials.
Memory requirements of today’s workstations typically jump substantially – from several to many megabytes—whenever there’s a new software release. When demand surpasses capacity, it’s time to buy add-on memory. When the system has no more extensibility, it’s time to buy a new, more powerful workstation. Do increased performance and functionality keep pace with the increased demand for resources? Mostly the answer is no.
About 25 years ago, an interactive text editor could be designed with as little as 8,000 bytes of storage. (Modern program editors request 100 times that much!) An operating system had to manage with 8,000 bytes, and a compiler had to fit into 32 Kbytes, whereas their modern descendants require megabytes. Has all this inflated software become any faster? On the contrary. Were it not for a thousand times faster hardware, modern software would be utterly unusable.
Enhanced user convenience and functionality supposedly justify the increased size of software, but a closer look reveals these justifications to be shaky. A text editor still performs the reasonably simple task of inserting, deleting, and moving parts of text; a compiler still translates text into executable code; and an operating system still manages memory, disk space, and processor cycles. These basic obligations have not changed with the advent of windows, cut-and-paste strategies, and pop-up menus, nor with the replacement of meaningful command words by pretty icons.
The apparent software explosion is accepted largely because of the staggering progress made by semiconductor technology, which has improved the price/performance ratio to a degree unparalleled by any other branches of technology. For example, from 1978 to 1993 Intel's 80x86 family of processors increased power by a factor of 335, transistor density by a factor of 107, and price by a factor of about 3. The prospects for continuous performance increase are still solid, and there is no sign that software’s ravenous appetite will be appeased anytime soon." This development has spawned numerous rules, laws, and corollaries, which are—as is customary in such cases—expressed in general terms; thus they are neither provable nor refutable. With a touch of humor, the following two laws reflect the state of the art admirably well:
· Software expands to fill the available memory. (Parkinson)<br>· Software is getting slower more rapidly than hardware becomes faster. (Reiser)
Uncontrolled software growth has also been accepted because customers have trouble distinguishing between essential features and those that are just “nice to have.” Examples 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.
CAUSES FOR “FAT SOFTWARE”
Clearly, two contributing factors to the acceptance of ever-growing software are (1) rapidly growing hardware performance and (2) customers’ ignorance of features that are essential-versus-nice to have. But perhaps more important than finding reasons for tolerance is questioning the causes: What drives software toward complexity?
A primary cause of 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. When a system’s power is measured by the number of its features, quantity...