Why is this software bloat happening? There are two general reasons, according to Wirth, that software development has lagged behind hardware speed. One is the customer -- computer users in the general public who use applications casually. The other is the software vendor, or the people developing the software and choosing how everything is put together. These two factors don't work independently, of course, but rather come together to create a dependent relationship.
First, it's the customer's inability to see through unnecessary functions in certain applications that promotes software design that's a bit too complicated and fussy. Wirth considers things on our desktops that we normally accept as routine -- such as fancy picture icons that represent trash cans or musical notes -- to be essentially worthless. But customers expect these flashy representations, mostly because it's all part of a so-called user-friendly experience.
Of course, this is all very attractive to the customer, and what customers like is usually in the best interest of the company producing the software. As users ask for more complex, flashy features, developers release bloated software that contains any number of complexities that might be in demand. Even worse, this creates dependence on customer service. Instead of taking the time to learn how to use an application, many people dive right in, knowing they'll have to rely on someone else's help.
If Wirth's Law is general and straightforward, then so is the solution Wirth lays out for reducing software bloat. To cut our dependence on Moore's Law, he suggests reducing design elements within software. The fewer calculations a computer chip has to make from a program's computer language, the more efficient our work will actually be.
For more information about microprocessors and related topics, take a look at the links on the next page.