Most versions of universal Darwinism agree that evolutionary theory applies to brains and thinking. This idea was pioneered by B. F. Skinner and D. T. Campbell and promoted by W. H. Calvin, G. Cziko and G. Eldeman among others. Evolutionary theory explains all goodness of fit and all knowledge gain.
If evolution explains the operation of brains, it ought also to explain the operation of computers - since both are general purpose input-transformation-output learning systems. We have some nice, simple models of computation. Can universal computation illuminate Universal Darwinism? In this post we will find out.
We will use the NAND gate + interconnect model of parallel computation and see how it relates to evolutionary models. Copying is a primitive operation in Darwinism: in NAND land it corresponds to signal branching. Selection is another primitive operation in Darwinism: in NAND land, it corresponds to signal termination. That just leaves the NAND gate itself. The NAND gate takes two inputs and produces one output. There are two ways of looking at the NAND operation from a Darwinian perspective. One is as a conditional selection operation. A NAND gate obliterates or inverts one of its inputs depending on the value of the other one. The other way is as a merging or joining operation between two signals. That completes the relationship between these two models.
What did we learn from this exercise? Merging or joining operations turned out to be fundamental. Mutation was not fundamental. It turns out that you can model mutations using copying, selection and merging - if necessary.
Intuitively, the products of evolution include brains - so it is not surprising that some models of evolution are capable of computing partial recursive functions.
However, a universal model has some negative aspects. There's a sense in which universal models are capable of producing any output - and notoriously, models which predict everything are not very useful. We can take some consolation in the idea that there can be all kinds of differences between different universal systems - they differ in speed, degree of parallelism, memory to compute ratio, relative component costs, brittleness, support for synchronous operation - and so on.
One thing I learned from building this model is that my usual reply to critics who allege some Darwinian models lack predictive power is not completely satisfactory. I usually say that constraining the scope of the mutation operator is enough to limit the resulting predictions. However, if there's a recombination operator, that can also lead to universality - and produce a model that is compatible with a lot of observations. It looks as though mutation and recombination both need limiting.
This post presents a model on the level of the bit. Another way of building evolutionary models of computational processes is to rise above the level of the bit. Conventionally, most mutation and recombination takes place between genes - rather than bits - and genes are conventionally quite a bit bigger than bits. This path produces a range of interesting models which have already been well explored in some detail by genetic algorithm and genetic programming enthusiasts.