You might be wondering what on earth does evolution has to do with (digital) software. The general attitude of people is that evolution is a sole property of the material world. This is not entirely true. Believe it or not, the above mentioned software packages are instances of evolution. Yes, you have heard it right. They do not model or simulate evolution rather RUN a real evolution.
The evolving entities here are not the usual DNA, RNA, proteins, organisms, and etc. but tiny computer programs. Their world is composed of memory space where the computer programs spend there lives. The role of energy is taken by CPU cycles in this case hence different programs compete for both memory space and CPU cycles. This competition leads to the ‘survival of the fittest‘, hence evolution is kick-started.
The system starts with randomly generated programs written in a very simple (Assembly like) language. When the generated programs are run, each executed instruction costs some energy. Hence, there is a crunch for energy. Moreover, there is a certain probability that an executed instruction will go wrong which symbolizes the case of mutations in real world. Over the time, thanks to the mutations, self-replicating programs arise. This is the beauty of evolution. Given a substrate allowing self-replication and enough time, self-replicating entities will eventually emerge.
Once the self-replicating programs arise, there is a competition for being slicker. In other words, the selection pressure makes the programs smaller and smaller so that they consume lesser energy while maintaining their self-replicating property. In addition to consuming lesser energy, smaller programs can also multiply multiple times in the same CPU time because they have less number of instructions to execute and copy.
All this is not just plain imagination; the software systems mentioned above have indeed produced excellent results. The evolutionary dynamics seen in these systems closely match to the real world. Hence, these software packages enable one to study evolution at home/lab with ease. You may run an experiment hundreds of times, trace the lineage of an individual, see the whole-population at once, etc. The list of experiments is endless and is only limited by one’s vision and imagination.