Tag Archives: Scenario

How do we know that some parts of DNA really are non-functional?

ECM sent me this post from Uncommon Descent about DNA and software design.

Perhaps I should begin by explaining explaining how software is made. The customer gives you a list of use case, which are descriptions of things that you expect the finished software to do. This list of expected system behaviors is called the “functional requirements”. There are also “non-functional requirements” that the user will not see, such as how easily the components of the system can be maintained or tested.

Now consider the post by William Dembski. He writes:

One of the main arguments to support evolution appeals to shared non-functional structures between organisms. Since design entails design for function, shared non-functional structures would suggest common ancestry in the absence of common design. But how can we tell whether something is truly non-functional?

Then he cites an e-mail sent to him by a software engineer, who explains how a lot of code is included to address exception handling and non-functional concerns.

As a programmer, sometimes I spend a lot of time designing error-detection and/or error-correction algorithms (especially for dealing with user input). Some of these functions may never, ever be used in a real-life situation. There are also various subroutines and functions that provide either exotic or minor capabilities that, likewise, maybe be used very seldom if at all. But they are there for a reason. Good programming practice requires considerable extra design and implementation of features that may only rarely, if ever, be used.

If someone were to cut out and eliminate these sections of code, repairing what’s left so that the program still functions, the program may work perfectly well for just about all situations. But there are some situations that, without the snipped code, would create havoc if the program tried to call on a function that was no longer there or that was replaced by some different function that tried to take its place. (Ask yourself what percent of the functionality of your spreadsheet or word processor program you use, and then ask if you would even notice if some of the lesser-known functionality were removed.)

I think biological life is like that. It seems to me that if some DNA code can be successfully removed with no apparent effects, one possibility is that the removed portion is rarely used, or the impact of it not being there has effects that are masked or otherwise hidden.

Perhaps redundancy is what was removed, meaning the organism will now not be quite as robust in all situations as before. I can give a kidney to someone else and suffer no ill effect whatsoever… until my remaining kidney fails and cannot be helped by the redundant one that I gave up (which situation may never, ever really occur due to my general good health).

P.S. Being able to snip something with no apparent ill effect may in fact provide support for ID by showing that the system was so well engineered that it could automatically adjust to a certain degree, and in most cases completely (apparently). It would be interesting to see some ID research into some of the evo cases that are being used to support the various flavors of junk DNA, to see what REALLY happens long term with the new variety now missing something snipped.

Sometimes, I forget that most of the world is trying to assess where biological systems are designed without knowing what engineers know about how the process of engineering.

Consider the example of implementing caching in order to reduce the frequency of network and database calls. Making a call to a remote system over a network can be very slow if there is lot of traffic congestion. The same thing applies to reading from a database or the file system. Engineers have invented a solution to this problem called “caching”. This basically means keeping the data you use the most often, or the most recently, in memory. It helps you to avoid looking up the same data over and over.

Notice that caching doesn’t do anything for the functional requirements. Instead, engineers are writing a whole bunch of code to address a non-functional requirement: performance. That caching code still has to be designed, written and tested, but the user will never see it produce any external behavior. In fact, the user will not be aware of the caching module at all!

How religious faith drives the delusion of Darwinism

Commenter ECM alerted me to Cornelius Hunter’s new blog “Darwin’s God”. Cornelius is a software engineer like me who rose up the ranks of the firm through “sweat equity”, and was able to eventually pursue a PhD in Biophysics from the University of Illinois. I have his first book “Darwin’s God” and I read it. His thesis is basically that theological beliefs about what God would and would not do are the driving force behind evolution.

Evolution and the problem of evil

Here is his latest post about a debate that occured at Westminster Abbey between an atheistic evolutionist and a theistic evolutionist.

Here’s what the theistic evolutionist said:

Alexander is a theist and Jones an atheist. But they both agree that God would not have created what we find in this world. Everything from programmed cell death to the extinction of so many species and the food chain points to a massive economy of death in nature. With this sort of evidence, “What kind of a designer,” asks Alexander, “are you going to end up believing in?

…According to Alexander, this problem of death and evil does not leave much room for a divine creator. Alexander concludes that God did not create the details of the world. He is thus absolved of the world’s many evils. He implemented a framework of sorts, but let unguided processes do the rest.

And here’s what the atheist evolutionist said:

As with Alexander, Jones also finds that biology does not meet with his expectations of divine creation. “The feeblest of designer,” Jones has written, could improve the design of the human eye. This and other examples, says Jones, shows that complex organs are “not the work of some great composer but of an insensible drudge: an instrument, like all others, built by a tinkerer [i.e., the evolutionary process] rather than by a trained engineer.” As with Alexander, Jones’ religious sentiment mandates some sort of evolution to be true.

So let’s think about what causes people to become evolutionists, beyond the normal answers of peer-pressure, career preservation, wanting to be thought of as smart, wanting to rebel against parents, wanting to have sex and drink alcohol, etc. Is it about science? No. It’s about knowing what God would do and observing that the world does not correspond to these ideas of what atheists think God would do.

Remember that post I wrote a while back about Christopher Hitchens’ case against God. None of his arguments against God were based on evidence, but only on his personal preferences. God wouldn’t have done it that way. God should have done it this way. I don’t like this theology. I don’t like that feature of the universe. It’s just a long-running temper tantrum against any kind of authority, regardless of the evidence.

Here’s Dawkins explaining how unobservable aliens must ave evolved, even if Dawkins doesn’t have any evidence:

He doesn’t even need to see the evidence that we evolved. He knows that God wouldn’t have created the life this way, and so the evidence is irrelevant.

Evolution and the problem of sub-optimal design

Another way that assume that evolution is true, other than childhood trauma and the desire to be morally evil, is by assuming that if material forces did not do the creating, then the design must be optimal. Now I am a software engineer, with undergraduate and graduate degrees, a published paper that I presented at the IEEE and a patent in wireless technology. My specialty is architecture. So I will tell you.

There is no such thing as an optimal design.

As part of my graduate course work, I had to study the work done at the Software Engineering Institute at the Carnegie-Mellon University. They have invented an entire methodology for designing software based on analyzing trade-offs between alternative architectural candidates. They use use case scenarios, disaster scenarios, maintenance scenarios and other scenarios in order to evaluate how well each architecture performs.

All of the architectures can satisfy the so-called “functional requirements”. But the architectures differ in their ability to satisfy non-functional requirements, the “-ilities”. These can include performance, maintainability, security, extensibility, testability, simplicity, re-usability. This is the bread and butter that software engineers like me have to deal with every day.

Here’s an excerpt from a related post from Uncommon Descent:

It is simply impossible for one architecture to have all the “ilities” because many conflict. For instance, if I want high “security” I am going to have to give up a good deal of “interoperability”. A large part of architecture is actually deciding what you are going to give up, which incidentally affects how the architecture can change in the future (i.e. usually it cannot “evolve” to conform to different “ilities”). This is all still fairly new, but we are now able to judge architectures in terms of the “ilities” they match and the “ilities” they do not match. A better understanding of the conflicts between certain “ilities” is gradually developing.

When I worked in the embedded space on operating systems like VxWorks, we regularly traded-off memory against speed. It’s the nature of the engineering business. And make no mistake – God is a software engineer. He writes code.

Conclusion

Hunter’s article concludes with this:

Have the theists sold out? Have the theists been duped? Are they afraid to stand up for themselves? Are the atheists taking over? No, no, no, and no. The theists and atheists are united in their religious beliefs about God and how he would interact with the world. They may have their differences, but regarding evolution those differences are irrelevant. Their shared religious convictions mandate evolution. Religion drives science and it matters.

I have an idea. Let’s keep religion out of science and decide how we really got here, no holds barred. Instead of blocking debates and persecuting dissent, let’s actually have a debate about origins, and not rule intelligent causes out before we look at the evidence.

Further study

Atheist responses to scientific arguments for theism are fun to understand. Atheists attribute the beginning of the universe to untestable theories and the fine-tuning to an unobservable multiverse. (And don’t forget their lame responses to galactic, stellar and planetary habitability arguments)