Never World Enough and Time
If we look at the molecules that work together to build and maintain our genes, the genes that build and maintain our cells, the cells that build and maintain our organs, the organs that build and maintain our bodies, the bodies that make up a population, the populations that make up a species, the species that make up an ecology, we see certain common traits not shared by most of today's computer systems.
First, their activities usually have direct consequences for themselves. There's very little they do that doesn't have a direct effect, positive or negative, on their own survival. But if you yell `Fire!' in a computer room today, only the people will run.
Second, they usually have to respond in a fixed time to any changes in their environment. `Late' may as well be never to them. A zebra running from a lion has to be faster than the lion or it becomes lunch. A bacterium living in our gut has to respond immediately to a rise in stomach acid or it too is lunch. A human digestive system has to respond to a sharp rise in bacterial toxins or it too becomes lunch. But today's computer programs often work at their own pace, rarely adjusting themselves to external demands for immediate answers.
Third, they usually must make do with what energy and raw materials they have. Plants must make do with only trace amounts of carbon dioxide in the atmosphere. From that alone they must make all the carbon compounds they need to survive. But today's computers call for as much resources as their programmers can assume.
Fourth, they usually have many competing uses for their resources, so there's no point being best possible at any one thing. `Good enough' is always good enough for them. A zebra doesn't have to be the fastest zebra in the world, it just needs to be fast enough to keep ahead of all the lions in its neighborhood---or, more to the point, it just needs to be faster than some other zebras in the same herd. Any faster than that and it's devoting unnecessary resources simply to being fast. So other zebras that use those extra resources for reproduction or growth or something else will have an edge. But today's computer programmers usually assume that their particular program is the most important thing in the entire computer system.
Fifth, there are usually massive numbers of them, each independently doing the same or similar tasks. There are usually many redundancies in the system as a whole and in its parts. Several of them are often competing with each other, even within the same system. But today's computers usually only run one non-redundant program, with only one point of view, to solve any one problem.
Sixth, they almost never copy themselves exactly. Because of this variance in replication they appear in enormous variety. Not only aren't any two snowflakes the same, but no two human twins are the same, either. Not until we reach down to the level of viruses do some copies of living things become indistinguishable. But today's computer programs always copy themselves perfectly.
Seventh, they are usually interdependent. No part is useful solely for itself. Each part is useful only in so far as it helps the system it's a part of continue to exist. You could have the best wings in the universe, but if you're an earthworm they're just a useless drain on your precious resources. But today's computer programmers will put as many bells and whistles on their programs as they can get away with.
Eighth, they, or their species, keep an internal history and that history changes over time. So even if they're faced with what appears to be the same circumstance as before they may not respond the same way. They, or the system they're part of, modify their history over time as their experience changes. But for today's computer programs, every problem instance is the same as the first problem instance.
Ninth, no one of them is in control of the whole process all of them are a part of. Even the queen bee in a bee hive is dependent on the actions of her worker bees. Control is distributed among very many players. But for today's computer programs, someone is always in charge, directing the actions of everything else in the system.
Tenth, they individually don't last very long compared to the system they are a part of. A redwood tree can live for a very long time, but that's as nothing compared to the millennia a redwood forest can survive. But today's computer programs can outlive the system they're a part of.
Eleventh, they're inconsistent over time but the changes are almost always gradual. Sometimes though there is catastrophic change. A population of zebras will stay more or less the same for millions of years then, usually depending on rapid external changes, change radically. But for today's computer programs, every change is a radical change.
Twelfth, they are autonomous and self-preserving. Some parts are parasites living off the other parts without contributing anything in return. They're all in it for themselves, even though they're part of a system and they depend on the system to survive. We use honey bees to get honey, but honey bees make honey because they need it for themselves, not because it pleases us. Plants exploit honey bees to pollinate themselves. They don't give bees the makings of honey out of the goodness of their hearts.
These twelve properties make biological systems differ enormously from today's computer systems. Not only do they adapt to random changes in themselves and in their environment, but they shape themselves to use that randomness. A molecule in our cells depends on random motion to find the right molecule to attach to. Without that source of randomness we wouldn't exist.
Because their resources are always limited, they're always competing for those resources, whether it's plants competing for sunlight, lions competing for zebras, or neurons competing for space in our brain. Because of the unceasing competition they live with, there is some kind of selection mechanism slowly weeding out the less useful from the more useful. Many things can happen in the same way and the same thing can happen in many different ways.
Because of their massive numbers, their varying goals, their interdependence, and their imprecision, their behavior is usually partly unpredictable. Too many things can affect how they work for anyone to be able to predict actual outcomes. Cut a tree down here and over there some other trees may grow a little taller because there's now more carbon dioxide available, both because there's one less tree to use it and because the dead tree's decomposition adds carbon dioxide to the atmosphere.
The system as a whole is self-organizing and adaptive to changes in its environment. It creates itself purely through internal dynamics and without external direction and it adapts itself to external changes by modifying those internal dynamics. If some new resource becomes available the system adapts over time to use it and if some old resource gets more scarce the system adapts over time to make do with less of it.
The system may not solve every problem it must solve to survive. In fact, all such systems die eventually. Further, its solutions to various problems may not be the best one when viewed objectively in terms of the long-term survival of the system. The system can behave erratically, inconsistently, and imprecisely depending on very many variables. The system is exceedingly complex.
And while the above traits are shared by most biological systems, they're also shared by many economic and social systems. For example, the people making up an economy are such a system, as are the many-layered systems of evolving laws that make up a society, and the people that make up a nation, and the nations that make up a world. One day computer programs too could conceivably make up a `living' computational system. Of course we would need a vast number of them, a direct link between their use of resources and their survival, a source of variation among them so that not all are the same, a source of selection between them for better use of resources, and some form of self-reproduction. But suppose all that happens. Imagine a day when vast swarms of cheap, mobile, active, independent, imprecise, inconsistent, competing, self-modifying, adaptive computer programs fill our world.