I'm totally in agreement with an article in this month's Wired magazine: Free! Why $0.00 Is the Future of Business.
On page 3, the author discusses the evolution of computing resources. In the early days, system administrators infamously demanded efficient use of computing power. Nothing could be wasted. Software was written as efficiently as possible, which made sense in a time-sharing environment where one user's resource consumption affected everyone else.
Then came personal computers with more resources at the exclusive disposal of one user. New user interfaces quickly followed, along with icons, pictures, videos, and everything that was briefly known as "multimedia." Easier to use software led to more and more productive users. Games and entertainment became new frontiers for software applications.
The article explains how the decreasing cost of transistors led to this new world. Carver Mead's corollary to Moore's law: every 18 months the price of a transistor halves. As the marginal cost of transistors approaches zero, wasting them becomes no big deal.
It's a subtle but remarkable observation. In a world of limited resources, you were lucky to be able to perform a calculation at all. But when computing resources become inexpensive and abundant, it's like having disposable income: go ahead, blow a few million cycles on MP3 decompression or 32-bit color graphics, it's OK, this stuff is cheap and getting cheaper!
Wired details the ways this abundance of computing power leads to free business models on the Internet and elsewhere. This is the meat of the piece and it's a great read. But there's something else that they don't touch on.
I first heard the phrase "cycles falling on the floor" in a college computer science course. I'm sure a professor said it, but I am unsure of the origin. A Google search turns up zero results.
The phrase was used in the discussion of "high level" programming languages. What some people might call "scripting languages." I'm not sure what language, specifically, but probably Perl, OCaml or Lisp. The point is this: we now have so much computing power that even our fancy GUIs and compression algorithms aren't enough to max out the average processor. Most of the time computers sit idle, wasting space and using up energy. Billions of calculations per second are simply falling on the floor.
With such underutilized hardware, the thinking goes, we should dedicate ourselves to creating software in higher level languages. Developers should take advantage of Mead's Corollary. There's no reason it should take so much blood and sweat to do almost anything in J2EE, yet be so simple to do the same thing in Rails, Django, or numerous other frameworks.
There will always be applications that require speed and hit the resource limits of even the most powerful processors. One should use C in these cases. Otherwise, programmers are much more expensive than hardware. Yet companies pay armies of them to write relatively simple applications in Java/.NET/C++, while faster, cheaper possibilities using high-level languages are being ignored. This is possibly the most short-sighted business practice of the past 20 years.
High level programming languages do the same thing for software that cheap transistors do for hardware. They drive the marginal costs down, while increasing quality and power, opening new markets along the way.