Genomes As Software

note-HXA7241-20090831T2006

Harrison Ainsworth

A genome is a digital object, and the way it works as a system may be significantly like software. It is possible to investigate genomics theoretically.

A genome is data [1][2], and evolution effectively does informational work (in one kind of semi-formalisation: it yields a difference in expected utility of the software state [3]). These are fundamental characteristics of software engineering, so it is interesting to hypothesise a similarity in more detail.

The basic induction: there must be some coherent, discrete, mapping from genome to body – otherwise evolution, by selection, could not work. It is not simple or clear, but there must be significant logical structure. Chaitin further postulates hierarchy [4] as a basic form: it is a way to restrict the effects of mutation, and is indeed evident in the body.

Chaitin also explains the genome/body separation [5]: it is a way of amplifying mutation – small changes in the genome make large effects in the body (otherwise, large changes in the body would require comensurately large mutation) – thereby making evolution more powerful.

There also seems to be a rather hierarchical structure temporally. Evolution, development, and healing and maintenance are nested levels of an iterative-incremental system. A genome does not define a product, it defines a series, or more a system, of changes to intermediate products. And historical remnants are indeed evident.

All these distinctly reflect features of software engineering. Both evolution and engineering analyse into parts as an essential for manipulation and selection. Both work iteratively and incrementally across different scales, with the spatial and temporal hierarchies enabling each other. For evolution the variation and selection is automated, and integrated into the system, whereas for software engineering they are an external process with deliberate human steering.

Theoretical investigation of natural digital systems as software may help both understanding of genomics, and engineering of software.

References:

  1. ‘Genetics Basics For Programmers’; HXA7241; 2003.
  2. ‘Genomes 2’; Brown; 2002.
  3. ‘Information Engineering’; Brady; 51m 02s – 52m 03s.
  4. ‘Mathematics, Biology and Metabiology’; Chaitin; 2009.
  5. ‘Evolution of Mutating Software’; Chaitin; 2009.