Reverse Engineering

Most of the machines we encounter in everyday life are one-way
devices. Kitchen appliances turn bread into toast and cabbage into
cole slaw, but they cannot perform the opposite transformations.
Even machines that claim to be reversible adopt a very shallow
notion of what it means to go backwards. The drill in my tool box
has settings marked "forward" and "reverse," but
no matter which I choose, I cannot undrill a hole. The gearshift in
my car also has a position labeled R, but when I back up,
the engine keeps turning in the same direction; if the car were
truly reversed, it would suck in pollution through the
tailpipe, converting it into gasoline and air.

Computers, too, are mostly irreversible machines. When a program is
running, there's no way to turn it around and have it step through
the same instructions in the opposite order. Even if that were
feasible, the backward-running program would not uncompute an
answer. Some of the individual instructions would also have to be
reversed, or inverted; for example, undoing addition requires
subtraction. For computers of the current generation, such reversals
of logic and arithmetic are simply not possible.

In the case of toasters and gasoline engines, full reversibility is
too much to ask, but no fundamental law forbids reversible
computing. The theoretical possibility of a digital computer that
can run forward and backward with equal ease has been recognized for
more than 30 years. A few silicon prototypes have been built and
shown to work. Still, up to now, reversible computing has been a toy
technology, more of interest to theorists than to engineers. Only a
small community of devotees believed it would ever be anything more.

That attitude is changing now. The reason is that reversible
computing holds out the promise of dramatically lower power
consumption, which is becoming an urgent need. Also, any computer
based on quantum technology will necessarily be a reversible
machine. As a result, forward-thinking chip designers are thinking
backwards too. It's not too soon to ask what it might be like to
have a reversible computer on your desk, or to write programs that
can run in either direction.