Fairly Symmetrical

Analogizing General Purpose Computers

06:01 PM by Eric: Analogizing General Purpose Computers Tech

I ran across this article in LawMeme: Turing Universal Machine Threat to All Mankind. That article references this blog by Edward Felton. A quote from Felton's post:

If you're designing a computer, you have two choices. Either you make a general-purpose computer that can do everything that every other computer can do; or you make a special-purpose device that can do only an infinitesimally small fraction of all the interesting computations one might want to do. There's no in-between…If anybody has a hint about how to [give a simple, non-technical explanation for this], please, please let me know.

The first comment on the LawMeme page tries to fulfill the request with this analogy:

A single purpose computer ist to a gerneral purpose computer as an instrument which can play only one note is to an orchestra. With a limited instrument, you can't play much in the way of music. There are some rhythmic avenues to explore, but the creativity of the player is severely limited by the device.

That doesn't really analogize the situation very well, in my opinion. Below I'll try to address the problems in this analogy, and propose one of my own.


It doesn't, intuitively speaking, make sense to the layperson that general computation is a binary property—that either you are a general computer which can perform any computable function, or you are a special computer which can perform a severely limited set of functions. Intuitively, and to the layperson, it is as if the computer is a toolchest. You can remove all the screwdrivers from the toolchest, and the user of that toolchest will no longer be able to fasten things together with screws. The toolchest is still usable for nearly any project, you just can't use screws. For a litigator who wants to make sure people who don't have the key to a cabinet can't just unscrew the hinges, this is great.

Unfortunately, while it may be intuitive, it's completely incorrect. A computer is not a toolchest; it's more like a blacksmith's forge with a stack of iron bars, coke, etc. If you know how, you can make nearly anything you want or need, including specialized tools with which to make other tools with which to do interesting things like make hydraulically driven, automatic screwdrivers which not only remove screws, but do it instantly and are guaranteed never to scratch the finish of the cabinet or strip the screw. It may take you a long time, but you have all the resources you need. However, if you take any part of the system away—the iron bars, the hammers, the anvil, the fuel, or the forge—the entire system becomes useless. There's no way to lessen its general purpose qualities without completely eliminating them. Similarly, you cannot remove any of the really basic instructions in a general purpose instruction set (functions like add, multiply, shift, pointer ops, etc) without fundamentally crippling the processor. You can possibly remove complex instruction subsets like AltiVec or SSE, but those can always be simulated by lower level instructions, much as a specialized chisel could be rebuilt by a blacksmith.

Essentially this analogy grows out of the fact that computer instruction sets are not really tools for doing things so much as they are a general way of expressing a course of action. In much the same way as any (human, verbal) language which is sufficiently rich to serve as a native language for a group of people will also be sufficiently rich to express subversive or "evil" sentiments, any computer instruction set which is sufficiently powerful to be used for more than a severely limited subset of tasks will also be sufficiently powerful to be programmed to do things the designers of the computer never intended (things like blinking the LEDs on the keyboard to signify data I/O, to take a page from both Neal Stephenson and Linux, or like decrypting DVD streams).

So if we've established the fact that either a computer is a full general purpose Turing machine, or else it is a highly limited, extremely specialized machine (like the old word processors), then we have to deal with the next possible demand, which is that we just replace all general purpose computers with a sufficient number of special purpose computers. Taking my and my wife's own home PCs as an example, let's chart the number of special purpose computers I'd need:

  1. 2xWord Processor
  2. 2xWeb browser/E-mail (web-based)
  3. 2xGame console
  4. 1xDVD player
  5. 2xMusic CD Mixer/Burner
  6. 2xCellphone w/text messaging
  7. 2xImage editing computer
  8. 2xCD player
  9. 2xMP3 player (with at least 10-20GB of space)

We're up to 17 computers already, and that's not an exhaustive list. Now let's look at work, where I write software (on a standard General Purpose PC) which runs on special ruggedized laptops (internally General Purpose PCs as well) which are used to help maintain aircraft. We'd need one kind of computer to write the software, and one to test it on. Writing this software would be hugely complicated by the fact that every time I made a change, I'd need to update the computer that runs the software, since my computer (being able only to write programs for that other computer) would be incapable of running the software. My team would need probably 6 or 7 of each type, so that we could all be writing and testing our changes at the same time. You're looking at probably a quadrupling of the cost of software for us, given that we'll need 2 computers per developer and each developer will spend quite a bit more time developing, since testing would be so much more cumbersome.

What's that? These new special purpose computers will be cheaper than General Purpose Computers, hence that quadrupling of the cost will be more than offset. That might—arguably—be true, if we only ever wrote one kind of software for one kind of target computer. We don't. We develop multiple applications, each of which would need its own specialized computer. The number of specialized computers quickly reaches the dozens, and that kind of cost and hassle is just not worth it.

General Purpose Computers have driven some of the largest breakthroughs in human history, in just the last half-century. This is entirely due to the fact that if you can imagine it, you can program it (with some very rare exceptions). The General Purpose Computer is the most ideal tool for the expression of human ingenuity invented since language itself, and doing without it would comparatively cripple both our economic and intellectual growth.

Creative Commons License
This work is licensed under a Creative Commons License.

This page was last updated Sun 23 September 2007 at 09:00 AM CDT