How Wirth's Law Works

Slow Software, Fast Hardware

Regardless of whether Wirth or Reiser made the statement, Wirth's comments on software caught people's attention. While proponents of Moore's Law remain pretty excited about how much faster next week's hardware will be, Wirth continues to tell everyone to slow down a moment. Even though the hardware may be performing faster, it doesn't necessarily mean the work you're doing is actually getting done faster. From the outset, it's clear that Wirth's focus is on software, not hardware. But what exactly does it mean when software is getting slower faster than hardware gets faster?

Although it's a roundabout way to say it, Wirth is essentially arguing that although processing speed has continually increased over the years and continues to do so, the software running our applications isn't much faster -- and indeed, it's sometimes even slower -- than older software that ran on much leaner processing machines more than 40 years ago. A word processing program from the 1970s, for example, might have only needed 8,000 bytes to run properly, an astonishingly low amount of memory by today's standards; however, current word processing applications need hundreds of times more storage to get essentially the same simple task done. The only reason we can actually use these programs, even supposedly simple ones like Microsoft Word, is because of the increase in processing speed that comes from Moore's Law.

This situation, according to Wirth, is not desirable in terms of design efficiency. If more thought was put into how we make and use software, the amount of work a processor does and the number of calculations it takes to run a program might look a bit more appealing.

Wirth attributes performance problems with today's software to something called software bloat, a term that refers to the increased complexity of today's software applications. That's related to Wirth's statement: "Software expands to fill the available memory." Because computer manufacturers keep increasing processing power and the amount of memory our computers can hold, software developers simply add more complexity to programs in order to make them do more -- and that's exactly what they do.