In the fun-filled world of internet debate between creationists and evolutionists, we encounter the Salem Hypothesis: Creationists tend to be engineers.
Many explanations have been offered for this phenomenon (apparently named after Talk Origins contributor Bruce Salem):
- engineers are closet terrorists
- creationists are trying to protect their fragile beliefs
- a desire to exert authority
- engineers like simple black and white answers
There’s a reason internet forums are not known for flattering character analysis!
Anyhow, the true reason for the Salem Hypothesis is summed up in this graph. Read on to find out why.
Engineers are more likely to be creationists because they are familiar with what it takes to design complex things for specific tasks. Which is exactly what we see in the biological world. Additionally, engineers who work with computers know about randomized methods, which include evolutionary algorithms. We are aware of their significant limitations.
Finally, many engineers work in disciplines where lives depend on the quality of their engineering. The very essence of biology is keeping live organisms alive. These engineers know that the margin of error to preserve life is very slim, and bad designs can easily fail catastrophically. It hard to rationalize the idea that the massive life support system we call “the body” is the result of random cobbling.
These factors, driven home by day-to-day work, make it very hard for engineers to take claims about such Darwinian evolution seriously. It is absurd to think biological systems, which vastly exceed the best engineering of all mankind by an unbelievable magnitude, were generated by trial and error.
Can’t random evolution produce complex designs over billions of years in trillions of organisms?
Even throwing billions (9 zeroes) of years and trillions (12 zeroes) of organisms at the fan does little to diminish many engineers’ skepticism. For one thing, today’s supercomputers can compute in the exaflops range (15 zeroes) and their memory can be measured in the exabytes (also 15 zeroes). If environmental information is the qualification, well those exabytes offer the richest data sources in the history of the planet, with more information available to algorithms than to any possible organism. We can easily reproduce evolutionary timescales of billions of years in minutes — and we see nothing like life emerging.
But, don’t take my word for it. As I said, computers can capably simulate what evolution can do. And I have written such a simulation. Find a seat. Grab a nice drink. And observe.
Typically, researchers try to evolve toy problems in very narrowly constrained problem domains known as genetic algorithms. They flip ones and zeros, or letters, to fit a preset pattern. But I’ve upped the ante. I have an algorithm that can actually program.
Yes, you heard me right. My evolutionary algorithm can write programs for you. Let that sink in a moment.
Wait! Managers, don’t fire all your coders just yet! Your coders are much more valuable than you realize. They are not merely code monkeys. As you will soon see.
My evolutionary algorithm shows that coding is not monkeys banging out unintelligible gibberish, not by a long shot. I know it can look that way, making it hard to justify the expense of the IT department. However, your humble coder is doing an astronomically complex operation. An algorithm will run until the universe ceases to exist, to do the same operation as your coder. And I have the numbers to prove it.
Let’s set my evolutionary algorithm a simple, fundamental task — to count by ones.
Again, you heard me right. This amazing evolutionary algorithm is going to count 0… 1…2…3…4… and so on. Doesn’t sound very hard, does it? You might be surprised.
First, a few details for the technically inclined. The programming language used by the evolutionary algorithm is known as P’‘ (pronounced “P double prime”). I know, it sounds like a transformer. It is a very elegant language with only 8 characters. Compare that to any mainstream programming language.
Additionally, unlike typical programming languages — where a single wrong semicolon can crash millions of lines of code — the P’‘ code is very resilient. In fact, you can put those 8 characters together any way you want, in whatever order, and the program will run. Who knows what the program will do. But it will do something, and it won’t crash. P’‘ is a crash proof programming language. An invention like this can save millions of hours of wasted time searching for that semicolon. Just think of the savings to the bottom line.
The first important thing about P’‘ is that it is superior to DNA. Only some DNA sequences are functional proteins. On the other hand, every single sequence of P’‘ code is functional. The other important thing is that both DNA and P’‘ are Turing complete. This is a fancy way to say that P’‘ can do anything DNA can do. Surprising, but true.
So P’‘ is the language the evolutionary algorithm will use and it is superior to using DNA for programming. How will the algorithm modify the code? Here again we go back to the basics of Darwinian evolution:
Evolution works by using random variation to generate the DNA sequence: adding, deleting, and flipping individual nucleotide letters. Once we have a nice string of DNA, evolution will pass it around, whether through normal meiosis, gene duplication, or horizontal gene transfer. Finally, to make sure the population only keeps the good stuff, natural selection racks and stacks the organisms, only letting the most fit ones pass their DNA on to the next generation. The evolutionary algorithm packs in all these operations, covering the full gamut of known evolutionary mechanisms, so whatever evolution can do, my algorithm can do it.
You can see the full effect in 300+ lines of code, with explanatory comments, here:
Enough talk, let’s see what this little guy does.
Here’s what it did. I told it to write a program that can generate a sequence of numbers starting from 0, such as the sequence: 0, 1, 2, 3, 4. I then measured how many steps of P’‘ code the algorithm had to run to find the final solution. I did this for all sequences up to 12, which works out to 13 different experiments in all.
For each sequence, I ran my algorithm 10 times to get an average number of steps. Then, I graphed the result:
That is an exponential graph you are looking at. To make clear that it is exponential, here is the same graph, but the y axis is logarithmic. If the logarithmic graph shows a straight line, that
means the growth rate is exponential:
Exponential is bad news. Exponential means it took the evolutionary algorithm twice as long to count to 10 as it did to count to 9.
Let’s put exponential on a cosmological scale. The heat death of the universe is projected to occur in 10106 years. This is well beyond the lifetime of anyone who’ll even remotely know we existed. Seems like a lot of time, but not for exponential doubling!
If we generously say that a step of P’‘ runs in a nanosecond, which is nine decimal places to the right of the dot, then the universe will undergo heat death before the evolutionary algorithm can evolve a program that counts from 0 to 500. And it takes even longer if the program must start from 1 instead of 0. To go up to 501 doubles even that. Completely impossible.
Your humble coder is daily doing many tasks that are much more complex than counting to 500. In short, your humble coder can do things in a minute that would take the world’s top supercomputers beyond the lifespan of our entire universe to do. The same goes for all other engineers. This is Hogwarts level magic!
The bottom line is, you should think twice before replacing your coder with a computer to improve your bottom line. Maybe even give her a raise 🙂
Circling back to Salem’s hypothesis. Hopefully, you now understand why engineers tend to give Darwinian evolution a bit of a skeptical side eye. Besides all the practical difficulties, the numbers explode exponentially for even the simplest of tasks!
Evolution only works in a world that doesn’t run on math, and our world most certainly runs on math. At least that’s what my bank account tells me 🙂
Note: Hat tip to Winston Ewert for the idea of using P’‘.
You may also wish to read: Dawkins’ Weasel program vs the information life acquires en route. To demonstrate what is wrong with fully naturalist assumptions like those of Richard Dawkins’ Weasel program, I developed Weasel Libs, modeled on Mad Libs. When we apply a Mad Libs “epigenetic” approach to Dawkins’ claims about how life’s information can be created, we quickly see a glaring flaw. (Eric Holloway)