Suppose all computers disappeared tomorrow from the Earth. No trace of transistors, microprocessors, electronic memory, even vacuum tubes or punchcards. Almost as if computers had never existed. But not all trace is gone. What remains is software – programs and data that computers could have used to perform useful work.
In this world of software sans computer, is software valuable?
Obviously, software without computers isn’t as useful, like a CD without a CD player. There’s no machine on which to execute software to produce useful effects, like playing a video or running a factory. But software without hardware is far from completely useless. Software is simply information about how to solve problems, and without special hardware on which to execute that solution efficiently, the solution still holds value as that knowledge. A program to compute a solution to an equation will still contain that same solution, if a person is capable of understanding it. A program to render some complex simulation still contains all the requisite knowledge, and a sufficiently dedicated scientist could reconstruct the solution perfectly, and recover that knowledge.
Now, imagine the alternative: what if all software disappeared from the planet, leaving only the shell of the hardware? Does an empty computer have value?
Again, obviously, a computer is at minimum valuable for its raw materials. The precious and pure metals used to construct a computer has some inherent, physical value. But the computer has lost most of the differentiating value as a machine – it can’t do anything useful. In fact, to recover the usefulness of a functional computer, the knowledge on which that computer operated must be completely re-constructed. The software must be created anew.
Software is the soul of a machine, the abstract essence that imbues the delicate, metamorphosed mazes of sand we call “computers” that divine ability to create and act on any knowledge, provided the right information. Conversely, the computer, the hardware, is only the means through which the physical world can experience software – it’s the interface between information and physics.
Software, the machine
Take almost any machine in your life – say, a food blender. The food blender is a useful machine, but it’s a special-purpose machine. It does one thing: blend food. It makes no sense to try to modify a blender to do any other task. To change the blender’s job would be to create an entirely new machine, one that is no longer a food blender.
Some machines are multi-purpose. A backup generator to a building may be both a battery and a power generator. But such a machine is still a special-purpose machine: it only has two jobs. To modify a backup generator to, say, blend food, would be to create an entirely new machine.
Computers are different. Computers can do nearly anything, from calculating the trajectory of a rocket entering orbit to rendering the scene of a 3D video game, provided the right software. A computer is a universal machine. In fact, it’s the only contraption of its kind, the only universal machine that we know of. No other machine is universal. The computer owes its omnipotent universality to software. Software can be special-purpose, and the software that the computer executes determines its purpose.
This is an interesting anomaly. Almost all machines are special purpose, except computer hardware, which is truly general but also nearly useless without software; software itself is special-purpose to every use case.
I think the best way to make sense of this is that the software is the machine, the special-purpose apparatus that embodies the knowledge of a solution to a problem. The hardware of a computer is merely the interface through which the abstract machine of software interacts with the physical world, and with humans. The true machine in a running computer is the software within, and software is a new kind of machine, one that’s constructed not of atoms and chemicals grinding together, but of raw information, bits and bytes, colliding against each other.
Software, the infinite
Software is a machine unlike any other, not just because of its abstract nature, but because software operates in infinite space and unbounded time, or at least, the illusion of infinite space and unbounded time.
The specification for any physical, mechanical machine contains constraints on space and time. A design of a physical machine contains measurements of the machine’s size, its precision, and its operational speed and efficiency. These impose limits within which the physical machine can operate. Software, by contrast, is designed with no such limits in mind. There are software algorithms designed to be correct under the availability of infinite memory, or when executed forever. There are programs proven never to stop, and even programs whose fate is provably unpredictable – we don’t know how much time or space some software may need to ever fully execute.
Software exists outside the conventional limits of space and time. It just so happens that, for most software, the computers on which they execute have enough memory and speed that these limits are rarely encountered in practice.
Software also rebels against the tyranny of entropy – the abstract software-machine does not rust or age or become grimy with time. A program, once written correctly, will continue to work forever and indefinitely until the end of time, because its precision is infinite, and its moving parts are pure information. Given the right physical substrate, the right computer hardware that it can use to affect the outside world, software will work infinitely and indefinitely, charting the course of its internal state in the infinite theoretical fabric of digital data.
My fascination and love for software comes from these peerless properties, that software is both information and machine, executing atop a theoretical substrate infinite in both time and space, communicating with reality through a universal mechanical interface, never rusting or going out of use and capable of truly omnipotent utility. A perfect, boundless machine.
I share new posts on my newsletter. If you liked this one, you should consider joining the list.
Have a comment or response? You can email me.