I was recently challenged to describe computers in non-technical terms; after some thought, here’s what I’d say:

Computers are machines (just like drill presses, steam locomotives, or a toaster oven) built to manifest the rules of some wonderful mathematical models developed in the 1950s, 60s, and 70s. Most computers in use today are general purpose computers, which can perform any conceivable computation, not just 2 + 2 or the square root of pi1. General-purpose computers have the tremendous power to modify the rules by which they compute, so a single general-purpose computer is not just a single machine, but an infinity of potential machines.

This infinity of machines (“programability”) enables us to associate a given machine or computational result with any meaning we can imagine. This is precisely what happens when one taps the screen of an iPhone to play a Netflix movie, but this barely scratches the surface of progammability’s fractal nature. We describe some machines as hosts to subordinate machine infinities, each given tiny slices of computational time on the host machine and sharing resources in an invisble but exactingly precise dance. Other machines are enable creation and transmission of new subordinate machines (“programs”). Still other machines store computational results so they persist even after the computer has ceased to operate. Each and every one of these infinities is containable in a single physical device.

For me, the power and beauty of computers is in this vast canvas of programmability. We hold in the palm of our hands the ability to craft systems, simulations, even entire imaginary universes, then share our creations with our fellows. This infinity of infinities is not without its difficulties and perils, but I hold the richness of this experience to be well worth it.

  1. Though there are no guarantees about how long one must wait for a given computation to complete! ↩︎