Wednesday, March 11, 2015

Is DNA a Computer Program?

PZ Myers, a guy who loves to hate me, says that I think DNA is a computer program. That isn't true. Computer programs are executed on computers. Furthermore, I certainly wouldn't expect to look at DNA and see a bunch of IF-THEN-ELSE statements. However, I do think that DNA is a program. Is there a rational mind on planet earth that doesn't? If you don't think DNA is some kind of program make a non-anonymous comment below and explain why. This blog is unmoderated and all comments get published (spam and abusive ad hominem attacks get deleted).

If DNA is not a program then why does every healthy human being develop from zygote to infant to adolescent to adult following the same program of developmental steps? Why is it that when a healthy person is scratched to the point of bleeding that the same series of chemical reactions ensue to heal the scratch? The information driving these programed chemical reactions is in DNA. That makes DNA a program or a collection of programs.

It is interesting that DNA shares some design patterns with software (and other types of engineered systems). At the most basic level computer programs and DNA are both forms of digital information. I know that sounds weird but let me explain. Computer programs are based on two digits, 0s and 1s (base 2). The digital information of computer programs may be physically represented electrically, magnetically or even on punch cards (back in the day when I started computer programming). The information in DNA is specified by the chemicals guanine (G), adenine (A), thymine (T) and cytosine (C) -- base 4. Thus DNA is chemically represented base 4 digital information!

Another very obvious shared design pattern is the class-object pattern. In DNA the classes are known as coding sequences. These get transcribed into messenger RNA which in turn get translated into proteins. The proteins are the objects and they participate in all kinds of programmed chemical reactions. Transfer RNA and ribosomal RNA are also objects. Other shared design-patterns include, but are not limited to, interface, state machine, service, message, key, adapter, composite, polymorphism and feedback loop. I am not going to elaborate on all these patterns in this blog post, but the topic might make for an interesting book or thesis.

Naturally computer programs contain design patterns that are not in DNA, like the IF-THEN-ELSE pattern. Similarly DNA contains design patterns not found computer programs like the hairpin loop. The hairpin loop is a type of interface design pattern that creates a shape -- and in nature shape defines function. The shape of proteins is determined in part by the polarity, hydrophilic and hydrophobic parts of these enormous molecules. Computer programs are less complicated because they don't relate to shape or physics.

Just because computer programs contain design patterns not found in DNA and vice versa doesn't mean that DNA isn't a program. Genomes are system of programs that are vastly more complicated than anything any team of engineers has ever ventured to design.