It is hard to look at living things and not be struck by how much information is packed into them. DNA is routinely described as a code, a set of instructions that tells a cell how to grow, repair itself, and pass those instructions on. Evolutionary theory says that this code, and the living machinery built from it, came about through random genetic changes called mutations, filtered by natural selection over vast stretches of time. Mutation is random change in the DNA code. Those changes can appear when the code is being copied, in the parents’ sperm or egg, around conception, or as the first cells of a new organism divide. Natural selection is not a single event at conception. It is what happens after that, when the new organism has to live and reproduce. If the damaged code cannot run, that line stops. If it still works, it can be copied again. I have been wanting to write about this for a while, because once you set that claim next to how information systems actually work, the comparison is not as friendly to the standard story as people assume.
Both computer software and DNA depend on precise syntax. A program does not run because the bits are “mostly right.” It runs because the instructions are structured. The same is true of a living cell. Random change is not a mysterious creative force in either case. It is noise.
Think of it this way. You have a working program. Each time you copy it, a few random typos can slip into the code. Then you run the new copy to see if it still works. That is the closer analogy. The typos are mutation. Running the program is selection. A copy that crashes is discarded. A copy that still launches can be copied again.
You might get a trivial variation through. The background of a window might change from blue to red. A menu item might shift by a pixel. That is the kind of change people point to when they talk about variation we can actually observe. It stays inside the existing program. The program is still a word processor. It has not become a spreadsheet. It has not become an operating system.
Some of what is called adaptation works the same way. A new generation faces a new condition, and a stretch of code that was already there gets switched on. The animal or plant looks better suited to its surroundings. That can look like progress. It is not new information. It is existing instruction being used when it is needed, the way a program can turn on a setting that was sitting unused. The software itself was not rewritten.
Leave random change running through copy after copy, and the usual result is not new function. It is a crash. One error in the wrong place is enough to halt the program. After that there is nothing left to copy. Code is rigid in that way. The more tightly specified the system, the less room there is for lucky accidents to invent a new architecture.
This is where the jump from small variation to large-scale evolution starts to look like a leap rather than a measured inference. We do see limited change within kinds of organisms, just as a program can absorb a few superficial edits and still run. That is not in dispute. What does not follow is that those small edits, stacked over time, will cross the boundary into an entirely different kind of system. A color change does not write a new application. Turning on a hidden setting does not write one either. A few surviving mutations do not write a new body plan, a new organ system, or a new coded language.
There is also the matter of time. The theory leans on the idea that if you just keep trying long enough, something new will eventually appear. But a new copy is not being made and tested every moment. Conception is a limited event in each generation. Then that organism has to live long enough to reproduce before the next copy can even be tried. The earth has only been inhabitable for a finite stretch of time. There is not an endless laboratory running day and night, feeding random changes into working code until a new kind of program appears. The window is closed on both ends.
The usual reply treats that gap as a small problem. It assumes that if a little change is possible, then endless upward change must also be possible, given enough years. That is not how information works in any field we can actually test. Selection can keep what already functions. It cannot invent the syntax, the error-checking, the coordinated parts, and the purpose that a working program requires. Those things come from a mind that knows what the finished system is supposed to do.
Looked at plainly, the same facts are simpler. Complex coded systems do not write themselves. The software we use every day required programmers who planned, tested, and constrained the design. The far denser code inside living things points in the same direction. Random change hits a wall. Intention, foresight, and a creator do not.