Q:

3 flaws of genes from the perspective of a programmer

Having a double helix structure seems like a waste of space. In programming you would have a single array and just before mitosis you would double the single helix.
Having an exact copy of a cromatid. As long as a cromatit exists, there is always a possibility of errors, for example if something attacks the chromosome. So why isn't the cromatid just before mitosis, just like in 1? Then you are 100% certain, you have an exact copy. Again, a waste of space, but additionally vulnerability now.
Having 2 nucleobase (adenine, thymine, guanine, cytosine) seems like it makes more room for errors. Why aren't there just two of them? They are complementary anyways, so adenine for example can only be on the opposite side of thymine. Is it so that splitting is easier? In programming, if you only have to deal with a boolean value, you would always take it over having to deal with 4 values.

So, what does nature do different than a computer and why does it behave so differently?

A:

Your individual questions here are reasonable enough - although you could do a bit better at knowing some more details of the systems you are dismissing as 'flawed'. However, I think the bigger problem is your overall approach, which seems to be to make analogies between human-made computers and biological systems and then critiquing the 'missing' parts from biological systems.
Analogies like this are necessarily limited. Take the idea of DNA as 'like' a hard-drive of a computer. The nucleotides = bits, genes = contiguous segments of memory, promoters = pointers, etc. Where does this model go wrong?
Well, hard-drives are not (currently!) self-assembling structures that read themselves by coding for more, smaller fragments of hardware that additionally compress or expand parts of the structure of the hard-drive according to which part needs to be read. Moreover they don't do this while floating in liquid and self-repairing from chemical and radiation damage.
There is an excellent book called "Cats' Paws and Catapults: Mechanical Worlds of Nature and People" by Steven Vogel that covers this kind of flawed analogical reasoning between biological and human-made systems. It's not that such analogies are useless, but it is very important to recognise the limitations and fully understand why certain design choices are made by biological systems due to the particular environmental and evolutionary constraints that they work under.

A:

In programming, if you need to ensure your data has integrity, a single array won't do.
We have cyclic dependency checks in programing to determine if the data is corrupt.  We have hamming codes to permit detecting a fixing one bit corruption.  If we want to really fix multi-bit corruption, we need at least one copy of the data.  Lossless compression routines can make the storage of that copy smaller, but it doesn't remove the concept that the data is copied.
DNA provides a copy built-in, albeit a mirrored copy.  The structure of the molecule is such that the data is on the inside of a positionally stable backbone of sugars.  Since atoms and molecules are not likely to have the same sizes when attached to this sugar, a mirrored copy has the advantage of keeping the DNA molecule relatively stable in width along it's entire length.
This relative stability is also seen in the proteins that bind to and maintain the DNA.  Basically they don't require shapes that match a would-be rugged terrain of jagged connecting bits, only the ones that need to verify against the information require regions that match the "informational terrain" they are seeking.
It is really all chemistry at the lower levels, just at a very large scale.  Unfortunately (or fortunately) atoms don't come in standard sizes, with uniform properties much like bits in a computer do.  As such, the modeling of information crosses over from Biology to Computer Science well, but the implementation of it doesn't.
To get an appreciation of the differences between modeling and information in computation, look at the various lego / tinker toy / water computing modules.  You can build a computer out of anything; however, if you needed to integrate a lego logic module into a modern computer, it would be "less than elegant"

