Wednesday, September 03, 2008

Where the Genetic Code and the Binary Code Differ

An old friend has an article about how DNA/RNA is like a computer code.
While I agree that there are many important similarities, there is one huge difference that separates basically all DNA/RNA from most computer codes.
The genetic code is programmed to make copies of itself.
I know that's obvious. Everything dies. So obviously, there needs to be a way for new life to come about.
All life that we know about comes from pre-existing life. Everything living today came from something that was alive in the past. Everything's a copy, of sorts, of its ancestor.
Now if you look at DNA and RNA, they're made up of four bases. Three of the bases are exactly the same between DNA and RNA. One is slightly different.
Isn't it interesting that every living thing has either DNA or RNA, or both? Every living thing is written in the exact same language.
As we dig a bit deeper, we also find that genetic codes have a lot of information that does absolutely nothing. Humans, for example, have a ton of genes for smelling that just don't work. How do we know that they're genes for smelling? We find the same genes in other animals--like dogs--and in those animals, these genes are functional. These exact same genes, in humans, are just slightly mutated, and therefore are inoperable. But we still have them.
Why would parts of our genetic code be totally useless?
They're not. They're a sign of our past, and they're potential for our future. When a machine breaks down, it still has parts that can be put to work elsewhere. Those spare parts may hang around, useless, for a while...but they may be put to work later.
On the subject of mutation...
Our genetic code makes copies of itself--and your genetic code is making thousands of copies at this moment. Most of these copies belong to cells in your skin, or your muscles, or your bones. A select few are used for reproduction. The copies are very accurate. Very rarely is a mistake made, and most mistakes are quickly corrected. However, occasionally, a mistake slips through the cracks.
Most mistakes--most mutations--are harmless. The genetic code of DNA is made up of four components, which we call A, T, C, and G. They're the letters of the DNA alphabet. Usually, if an A is replaced by a G, it's no big deal. The organism isn't really affected, and we call it a neutral mutation.
Sometimes the mutation proves to be harmful.
Sometimes, it's helpful.
The point is--the genetic code is flexible. If the environment around the organism changes, the genetic code, as it gets passed down to future generations, has the flexibility to change too.
Let's take HIV as an example. We'll use it because it mutates quickly, it reproduces quickly, and we can observe how it works. Its genetic code is passed down when it directs a cell to make copies of itself. HIV happens to have a very high mutation rate. It doesn't make great copies. So why is it so successful, and so hard to kill?
We hit HIV with a medicine. The medicine kills 99.99% of the HIV. 0.01% of the HIV viruses survive because they're a little bit different--their genes are different, and they can survive this particular medicine. There's a good chance that, in an environment without that medicine, they wouldn't do so well. But the environment has changed, and now they're the ones in charge. They reproduce, and their offspring get the exact same genes that these survivor viruses had. Now they have plenty of room to reproduce--all the other viruses are now gone, so the new, mutated HIV can spread rapidly.
And so HIV is impossible to get rid of.
This is evolution.
It gets more complicated when we discuss sexual reproduction, or long long long periods of time. But mutations happen. Environments change. And life is flexible enough to change with it--or else life goes extinct.
Mutations lead to evolution. HIV, in this example, evolved.
In a changing world, there are two options. Evolve, or die out.
In any case, there's way too much information here, and there's even more I've left out. I hope I've described it in words that make sense. Despite the similarities to computer languages, which have been pointed out elsewhere, there is at least one big difference.
Now I'd be interested in learning about a computer program with a code that exists in a changing environment, reproduces (with mutations), and other words, one that evolves.
That would be cool.


Brentwell said...

This may or may not be what you are looking for, but there are a set of algorithms which model the genetic process (see for example Genetic Algorithms and Genetic Programming). Basically, you have a population of instances in a specific representation that "reproduce" and "mutate" through simulate generations. GAs have been used to solve a large number of optimization problems, and for the most part do a pretty good job at.

There also exists self-modifying code where a program continues to change itself over time. The artificial intelligence community have really come up with a variety of interesting algorithms.

Erica said...

This is great info to know.