Thursday, August 26, 2004

Bigger or Better?

Developers are accustomed to think of things like CPU speed and memory capacity as real, physical quantities. When we write new software that requires more memory or a faster machine than the software of a few years ago, we really do have a mental picture that this is OK because our code now has a "bigger" room to play in.

But this is of course an illusion. Modern CPUs, memory chips, and hard drives are not bigger than their predecessors. The companies that make them are able to pack more instructions per second, more bits, more of everything into the same amount of space because people (and machines) have been hard at work optimizing the design of all these devices to make them more efficient.

In other words, they aren't bigger, they're better. What we software types think of as a question of quantity is actually one of quality.

We have the freedom today to do less optimization in our software because someone else is now doing ridiculously more optimization of the hardware level. I believe that optimization properly belongs down there, but that doesn't mean that those of us doing our jobs up above the abstraction ought to forget that it is an abstraction.