Genome Versus Programming Language

note-HXA7241-20091019T2052

Harrison Ainsworth

Genomes have an extra means of code expression/expansion compared to artificial software.

There would appear to be a notable benchmark for programming language power: the human genome. It is about 0.75GiB [1] (discluding epigenome – no estimate could be found of its data size), yet it generates something of unparalleled complexity. This amplification is far greater than that of software code to product.

A genome, in defining its product, leaves much to the richness of the physical medium, and to the environment, and randomness [2][3][4]. It exploits mechanisms and structure by ‘steering’ at a higher level. For example, some basic tools used are: chemical concentration gradients, cell adhesion properties, cell anisotropic contraction. (There also must be some amount of this physically-leveraged magnification in physical engineering . . .)

But software doesn't use equivalents to such natural patterning: its medium is intrinsically austere unlike the physical. It appears to work directly, laying each tiny brick precisely and labouriously, where instead it could work more powerfully by synthesising loosely with naturally emergent structure.

This comparison is false, however. Software builds with reuse: with components, libraries, etc.. That takes the place of a rich medium. In genomics the medium is distinctly separated, whereas its equivalent in software is just another layer of software. Amplification is not given free but must be built. The difference is good and bad: all enabling infrastructure must be created with effort, but any top-level can be arbitrarily powerful (and precise). It should be possible eventually for software to surpass the genome in complexity of product.

References:

  1. ‘Genetics Basics For Programmers’; HXA7241; 2003.
  2. ‘The Triumph Of The Embryo’; Wolpert; 1991.
  3. ‘Developmental Biology’; Gilbert; 2006.
  4. ‘On Growth And Form’; D'Arcy Thompson; 1917.