Once upon a time, a machine had a fixed purpose, determined by design, and its mechanistic behavior was rigid, automatic, repetitive, and oblivious to surroundings.
By small steps at first, machines got flexible. A clock spins its hands, mechanically, automatically, but once the hands have been turned upwards when the sun is highest, it tells the local time.
Machines sprouted knobs and switches and adjustments, allowing owners to affect what exactly their particular machine will do, long after it’s built; identical machines can then be sold and used for a range of purposes.
As machine owners, an adjustment is good if it gives us some flexibility we want to have, like a tuning dial so we can change radio stations.
On the other hand, rarely-used ‘configuration-setting’ adjustments are more likely just to be aggravatingLike the infamous VCR ‘blinking 12 o’clock’ — the machine implicitly reminding us that we not only bought it off the rack, but got stuck doing the tailoring ourselves.
If only designers understood us better, it seems, or were smarter, or we were richer, we could’ve had a more specific machine fitted just to our desires. But:
The economic advantages of generalityFor manufactured machines, anyway… Humans start out so general, by comparison, and so numerous, that for them it seems the economic leverage is in specialization. are a tidal wave; and with the rise of programmable digital computers, the knobs and switches have utterly taken over the funhouse. 128 ‘megabytes of RAM’ is small for a new personal computer, but it’s a cool billion switches, virtually all user-settableHey, if you could flip, say, 10 switches a second it would only take you three years to get your machine set up., each of which can potentially affect the behavior of that machine.
Now you can buy a whole computer—with a ‘CPU’Central Processing Unit to do the work, a chassis and power supply and all the supporting parts, an input keyboard and color output monitor, four billion memory switches to customize how it all works, and with room for hundreds of billions of switch settings—and you can pay less for all of that ‘hardware’ than you might pay just to get some ‘software,’ which is basically just an elaborate cheat sheet telling what switch settings to use to make the machine do something like what you want.
The hardware/software distinction needs to be distinguished from a related distinction: That between a program—that specifies some kind of active procedure, a way to do something—and data, which is the stuff that is input to, acted upon, and output from, a program.
For most of the history of machines, the hardware/software and program/data distinctions were largely aligned: The program was all in hardware, fixed by design, and the modifiable software, what there was of it, was all data.
That traditional alignment supports strong associations between machine types and distinctive behavior patterns: “It is a clock because it has hands that move like so.” It also allows us to bound our expectations of machine behavior: “Because it is a clock, it won’t use its hands to point north, or towards water, or whip its little hand into my eye as I walk by it into the kitchen at night.”
But all-hardware programming has huge disadvantages, like needing to know all that the machine is to do before even beginning to design it, let alone figuring out how to manufacture, market, and sell it; and if you later want the machine to do something different, you have to go all the way back to design and pretty much redo the entire process.
(People work around these problems from two opposite directions: The traditional “soften the hardware” path ‘knobifies’ special-purpose machines to reduce change costs, while the modern “harden the software” path uses general purpose hardware for manufacturing advantages but then tries to lock down the machine before the product ships. Restoring suchThe :CueCat hardware giveaway was surely among the biggest ‘dot com’ debacles of the 1990’s. hiddenTivo’s relatively fixed-function personal video recorders, built on top of a general-purpose computer running the eminently flexible GNU/Linux operating system, has attracted a large hacker community. flexibilities“Sony has made a U-turn in allowing owners of its Aibo robotic dog to modify the software…” in privately-owned products is a favorite hardware hacker pastime.)
Universally programmable machines, like typical modern computers, almost completely destroy the alignment between hardware/software and program/dataThey also weaken the program/data distinction itself… a rant for another time.. Because controlling programs can be added or changed at any time, the exact same hardware can act like an adding machine, and the next minute act like an arcade video game, and the next minute act like a zombie spam-sending robot enslaved to an unseen master three continents away.
Once a universal machine can and does acquire new programming on the fly from its environment, it loses the rigidity, predictability, and context-independence that is much of what we had taken as defining a machine.
Why do we still call it a machine? Shouldn’t we call it something else?