The methodology has been described in detail [2,3,4,5,6,7], so it will be described only briefly here. The software used in this study is available over the net or on disk (Appendix A). A new set of computer architectures has been designed which have the feature that their machine code is robust to the genetic operations of mutation and recombination. This means that computer programs written in the machine code of these architectures remain viable some of the time after being randomly altered by bit-flips which cause the swapping of individual instructions with others from within the instruction set, or by swapping segments of code between programs (through a spontaneous sexual process). These new computers have not been built in silicon, but exist only as software prototypes known as ``virtual computers''. These virtual computers have been called ``Tierra'', Spanish for Earth.
A self-replicating program was written, initially in Intel machine language. This program was then implemented in the first of the four Tierran languages in the fall of 1989. The program functions by examining itself to determine where it begins and ends, then calculating its size (80 bytes), and then copying itself one byte at a time to another location in memory. After that, both programs replicate, and the number of programs ``living'' in memory doubles in each generation.
These programs are referred to as ``creatures'' or ``organisms''. The creatures occupy a finite amount of memory called the ``soup''. The operating system of the virtual computer, Tierra, provides services to allocate CPU time to the growing population of self-replicating creatures. When the creatures fill the soup, the operating system invokes a ``reaper'' facility which kills creatures to insure that memory will remain free for occupation by newborn creatures. Thus a turnover of generations of individuals begins when the memory is full.
The operating system also generates a variety of errors which play the role of mutations. One kind of error is a bit-flip, in which a zero is converted to a one, or a one is converted to a zero. This occurs in the soup, which is where the ``genetic'' information that constitutes the programs of the creatures resides. The bit-flips are the analogs of mutations, and cause swapping among the thirty-two instructions of the machine code. Another kind of error imposed by the operating system is called a ``flaw'', in which calculations taking place within the CPU of the virtual machine may be inaccurate, or in which any transfer of information may move information to or from the wrong place, or may slightly alter information in transit.
The machine code that makes up the program of a creature is the analog of the genome, the DNA, of organic creatures. Mutations cause genetic change and are therefore heritable. Flaws do not directly cause genetic change, and so are not heritable. However, flaws may cause errors in the process of self-replication, resulting in offspring which are genetically different from their parents, and those differences are then heritable.
The running of the self-replicating program (creature) on the virtual computer (Tierra), with the errors imposed by the operating system (mutations) results in precisely the conditions described by Darwin as causing evolution by natural selection. While this is actually an instantiation of Darwinian evolution in a digital medium, it can also be viewed as a metaphor: The sequence of machine instructions that constitute the program of a creature is analogous to the sequence of nucleotides that constitute the genome, the DNA, of organic organisms. The soup, a block of RAM memory of the computer, is thought of as the spatial resource. The CPU time provided by the virtual computer is thought of as the energy resource. The sequences of machine instructions that make up the genomes of the creatures constitute an informational resource which plays an important role in evolution.