The genetic code that maps the mRNA to amino acid is both fascinating and complex. The evolution theory behind it is thought-provoking. In a computer environment that does not operate reliably, how can programs evolve into a reliable yet variable form?
Below is the table for mRNA codons map to amino acids. To read the table, start from the four nucleotides in the inner ring on the mRNA, and append the nucleotides of the middle ring, and the nucleotides on the outer ring. The three nucleotides in sequence is called codon and either do something or maps to an amino acid.
There are endless unanswered questions about the table. How was this table saved? What is the data structure? Why there is only one start codon but three stop codons? Why several codons map to same amino acids? Why it is much more likely for the nucleotide at the end of the codon to be redundant than the nucleotide at the beginning of the codon?
Accidental and survival are the reasons behind the phenomenon. Error prevention would be the most obvious answer of the possible survival advantages. Redundancy is the key to error prevention. In computer programmings, there are also mutations (such as read errors), but the engineering practice is always validation. Validation is possible in genetics. DNA polymerases played an important role of proofreading for DNA synthesis. The structure change of the enzyme triggers the proofreading function, where the exonuclease activity reverses the DNA synthesis to remove the wrong nucleic acid inserted. But there are much more amino acids with different chemical keys, so the direct proofreading is too “expensive”, the cells do have some other mechanisms to ensure the accuracy synthesis of protein.
Evolution forms a state that does not strive for an optimal solution, but rather a state that survives and is reachable through gradual optimization. In many cases, it is similar to computer ecology.