Computers Code vs. Simulations of Evolution


Continuing the discussion from The Bad Design Argument:

Not really. What I am saying is that computer code is written in a programming language that is designed by and understandable (hopefully) by humans. For example, computer code can be written in Python, C, C++, and a whole range of other languages. These languages are not very much at all like DNA. On both qualitative and quantitative levels, computer code is not a good analogy to DNA.

However, we can use computer code to build objects that behave much like DNA, and see how these DNA-mimicking objects evolve over time, following well established rules like neutral evolution. Watching how these DNA-objects evolve in specific scenarios is an example of a “simulation”. A well designed simulation can both confirm our understanding of how evolution of DNA happens, or even uncover surprising things that arise as they evolve. It is common to develop simplified “closed form” equations to approximate what a simulation will produce, and then run simulations to determine if those equations hold.

Carefully constructed simulations can help us answer focused and well-chosen questions. That is part of the foundation of several fields of study, including population genetics.

Simulations of evolution, however, are only going to be as good as the correctness of how DNA behaves in the program, the simplifications made to enable to the simulation to run fast, and the questions being asked of the simulation (which have to be appropriate to the accuracy and simplifications of the simulation).

So we need to make a distinction between computer programs (written, for example, in Python), and computer simulations, which are run by computer programs (which are written to mimic the behavior of other things).

The program is not good analogy to DNA, but some of the simulations that a program can run might be a good analogy, at least in some ways.


Is this part of your critique of Venema’s position regarding the ‘origins/evolution’ of human languages also? Would you argue that, “On both qualitative and quantitative levels, human language is not a good analogy to DNA”?

“see how these DNA-mimicking objects evolve over time”

So because they ‘mimick DNA,’ yet are “not very much at all like DNA,” your view is that they can properly be said to “evolve over time”? Iow, it is the DNA-mimicking objects that evolve, which is not biological evolution itself, but just a simulation of it? So your position is that computer simulation programs themselves don’t evolve, they are just mimicking what evolves in nature? The programs themselves are programmed, i.e. designed & coded (sometimes badly, sometimes better, rarer times very good) and not ‘evolved’.


It is unfortunate then that scientists and non-scientists alike have been referring to the “DNA Code” for decades. Both are sets of instructions that gets executed. I see a lot of similarities. Maybe you can give more detail about where the similarities break down?



The DNA “code” and the “object codes” of SQL or Visual Basic, can be analagous… but the distinction for when it isn’t treated analgously needs to be spelled out more distinctly.

We use “program code” to create “cognitive computing” solutions where the black box of the program is making changes and adjustments and heuristic processing faster than a human can actually monitor. The upshot is that after a while, no programmer can be sure exactly what is happening in real time.

This shares features with how natural selection factors put “pressures” on resident populations of life forms… where, in real time, it is very difficult to know which genetic factors are being favored in one aspect, while the same genetic factors might have negative repercussions in smaller or larger cycles of the natural model.

Since a specific genetic constellation can be both negative and positive in terms of promoting offspring survival, it is the “net effect” on a population that produces “reality” in the next generation and the generations after that one.

Where the analogy becomes fragile is when someone proposes that since the Computer Program had a “programmer” - - then it would be reasonable to think there was a “divine or alien programmer” involved in the creation of the genetic “programs” running in every population of life all over the planet.

As @swamidass has pointed out, while this can be a relevant analysis for those who are religious and already believe there is a “great architect” of the Universe - - science is not in a position to prove or disprove the existence of this “great architect” or “universal intelligence”.

This part of a Christian view is the faith component of our distinctive world view. And our personal impression of this parallel can even become part of a person’s “evidence set” for his beliefs. But it is not an “evidence set” of use to Science, or even to Christian scientists who practice Science all around the world.


Let’s give two examples of how they are different.

  1. Program languages are somewhat human readable, following rigid grammatical rules and logic, but DNA is not human readable and without the same rigidity.

  2. Program languages fail if even the tiniest amount of mutations to the code are made, but DNA mutations are usually neutral.



I would respond to @swamidass’s latest distinctions by pointing out that “cognitive computing” produced by some of these “black box” programs is a “RAM” activity - - something happening in the “awareness” of the “mind” of the program, rather than in the hard-coding of the program.

“Black Box” programs, in the sense that I’m using the phrase, might be reasonably associated with this Wiki topic:

From the Wiki article: “Probability bounds analysis (PBA) is a collection of methods of uncertainty propagation for making qualitative and quantitative calculations in the face of uncertainties of various kinds. It is used to project partial information about random variables and other quantities through mathematical expressions. For instance, it computes sure bounds on the distribution of a sum, product, or more complex function, given only sure bounds on the distributions of the inputs. Such bounds are called probability boxes, and constrain cumulative probability distributions (rather than densities or mass functions). This bounding approach permits analysts to make calculations without requiring overly precise assumptions about parameter values, dependence among variables, or even distribution shape.”
[End of Quote]

Programming can define the “shape” of these calculations without creating a critical failure if the program encounters something “new” or “different” from what the programmer expected it would encounter.

Recent Post Script
The novelties created in the “ram” of the program is where we encounter the very “soul” or “living part” of the program - - with the understanding that the phrase “living part of the program” is merely a figure of speech.