In Tierra, the self-replicating entities are executable machine code programs, which do nothing more than make copies of themselves in the RAM memory of the computer. Thus the machine code becomes an analogue of the nucleic acid based genetic code of organic life.
The replication of the programs is brought about through their execution by the CPU of the computer. Thus CPU time provides the analogue of the energy that drives the metabolism of organic life.
The machine code programs occupy space in the RAM memory, thus the memory provides an analogue of the physical space of organic life. Each program ``owns'' the block of memory that it occupies, and has an exclusive privilege of writing on its own memory blocks. However, any process may read, or execute the machine instructions in any part of memory. Thus the partial privilege (only write) in the space occupied by the program is thought of as analogous to a semi-permeable membrane surrounding organic cells, partially protecting the internal chemistry from disruption by the surroundings.
Implementing the Darwinian scenario in the computer. The orange
background circuitry represents the RAM memory chip. The green and
blue geometric objects represent self-replicating computer programs
which occupy the RAM memory space. The skull represents death,
and the lightning bolt represents random mutations.
Genetic variation is introduced into the population of replicating programs by randomly flipping bits in the machine code. This is analogous to mutations involving substitutions of nucleic acids in the DNA sequence of organic life.
Additional noise is introduced into the system in the form of occasional errors in the computations performed by the CPU (central processing unit). For example, if the CPU should add two numbers, the result is sometimes incorrect by an amount of plus or minus one. When the CPU performs the operation of shifting all the bits in a register one position to the left, sometimes the bits are shifted two positions, or not at all. When information is moved between two locations, it sometimes comes from or goes to a neighboring location rather than the correct location. These types of infrequent computational errors are considered to be analogous to chemical byproducts of the metabolic processes that take place inside of organic living cells. These errors are not genetic changes, but can have consequences that lead to genetic changes.
When the memory of the computer becomes full, the Darwinian operating system begins to kill older programs, or the more defective programs, to make way for the birth of the next generations. Thus the killing of a process by the operating system provides the analogue of death.
The computer environment is seeded with a single ``ancestor'' digital organism. It is an eighty byte machine code program that first examines itself to determine its size and location in memory. It then allocates a free memory space for its daughter, by using the memory allocation service of the Darwinian operating system. Then it copies its code, byte by byte from mother to daughter. After replication, it spawns the daughter program as an independent process.
The ancestral program - consists of three ``genes'' (green
solid objects). The CPU (green sphere) is executing code in the first
gene, which causes the program to measure itself.