For the immediate future, my research will involve three main thrusts:
Computational: The computational issue is how to design a computer architecutre and operating system that will support the natural evolution of machine code . Von Neumann style machine codes are considered to be brittle, in the sense that they are not robust to the genetic operations of mutation and recombination. Any random change in a program is almost 100% certain to break the program.
The most significant accomplishment of my work to date is finding a way to overcome this brittleness with only a slight modification of standard machine codes. However, this success was achieved in the first attempt. Therefore it is not known what features are essential for evolvability, and I certainly do not know what is the optimal architecture.
The primary computational objective then is to experiment with a large number of variations on the successful architecture in order to find the optimal balance of computational power and evolvability. This work has begun but needs to be scaled up.
There are however, other important computational goals. We must experiment with artificial selection on application programs. So far all work has involved natural selection on ``wild'' algorithms that do no useful work. I want to develop an analog to genetic engineering, in which application codes are inserted into the genomes of digital organisms and evolved to greater optimality or new functionality.
It should be possible to develop cross-assemblers between Tierran architectures and real assembler languages. Application code written and compiled to run on real machines could be cross-assembled into the new Tierran languages. Each procedure could then be inserted into the genome of a creature. Creatures could be rewarded with CPU time in proportion to the efficacy and efficiency of the evolving inserted code. In this way, artificial selection would lead to the optimization of the inserted code, which could then be cross-assembled back into the real machine code.
If artificial selection of application programs proved to be practical, it would be worthwhile to render the best Tierran virtual instruction sets in silicon, thereby greatly accelerating the process. At present, maximum optimization can be achieved in a few hours of running the Tierran virtual computer. If a real computer were based on the architectural principals of the Tierran computer, the speed would be multiplied by about two orders of magnitude. If the real machine were massively parallel, there could be additional gains of five to six orders of magnitude. If machine code could evolve that quickly, then there is the possibility of using it as a generative process in addition to an optimization procedure. There may also be some potential application in the areas of machine learning or adaptive programming.
Another long term objective is to use digital organisms evolving freely or under artificial selection, as a source of new paradigms for the programming of massively parallel machines. The virtual computer that supports digital evolution is a parallel machine of the MIMD (multiple instruction multiple data) type. One of the biggest problems facing computer science today is the development of techniques of parallel programming. Digital organisms program themselves, using evolution. They have discovered on their own, known programming techniques such as unrolling loops. They will discover techniques that are naturally efficient on parallel machines, and we should be able to learn from their innovations.
The kinds of ecological interactions already observed in digital communities could in another light, be viewed as optimization techniques for parallel programming (e.g., the sharing of code fragments). However, these interactions evolve in a ``jungle''-like environment where most interactions are of an adversarial nature. When evolving large parallel application programs, the most viable model would be a multi-cellular one, where many cells would cooperate on a common problem. A multi-cellular model is under development. In the end, evolution may prove to be the best method of programming massively parallel machines.
Biological: I plan to move the biological model ahead of its present state. This will primarly involve the incorporation of facilities to support diploidy, organized sexuality, and multi-cellularity. The methods for these advances have already been conceptually worked out, and the implementation has begun. When these improvements are made, the long term biological goals are to use the model to test ecological and evolutionary theory, in such areas as: the evolution of sex, selection across hierarchical levels, and factors affecting diversity of ecological communities. It is hoped that it will be possible to engineer the system up to a condition analagous to the threshold of the Cambrian explosion of diversity, and then just allow the complexity and diversity of the digital system to explode spontaneously.
Educational: I wish to distribute both source and executables for use as an educational and research tool. However, some additional work is needed to make the program fully portable and to provide a user friendly graphic user interface. This work is underway at a slow pace.