Tuesday 28 June 2011

A Eureka Moment About Genes

For a while, now, I’ve been intrigued by the parallels between genes/DNA and computer programming.

The salient points are:

                Modular programming

                Self-modifying code

Computer programs are structured as functionally oriented, self-contained modules. The advantages being:

The programming task can be shared between many programmers to reduce development time.

If the program is subject to modification, only the relevant module(s) need be amended and released to the user, reducing download time

A specialised module can be given to a similarly specialised programmer, to improve the quality of the developed module

Every program application on your computer has large numbers of such modules (suffixed by “.dll”).

The relevance to genes should be partly apparent by now. Genes are also functionally specialised.  We have learnt to swap out troublesome genes from an organism and replace them with good ones.

Question: how does a single egg, divide in two, repeatedly, until, 9 months later, we have a human being containing thousands of different types of cells, when we started with only one type?

A partial answer would be a form of self-modification.  In computer programming there are several types of language or development tool.  The most primitive form of programming is direct operating code programming, but more usually assembler programming, as it’s called. At this level, the program code can directly address memory locations to modify data but also its own program code.  So we can have a code loop (sorry, lots of “gotos” involved) and incorporate an instruction that modifies one of the others in the loop, so that it does something different each time around. A similar operation in genes would enable a cell in, say, the liver to evolve to connective tissue instead of liver cells, next time it divides. In a computer program we would use counters and change cell types on reaching a specified value in the counter.  We could, in fact, develop a complete computer model of the development from egg to human using this method. I had been wondering how this counter approach could be implemented in genes/DNA. Then I watched Prof Jim al-Khalili’s chaos TV program. 

Now to my “eureka moment”:

It took a while, then I realised that cells don’t need to count as such, they just do their thing. It’s all down to chance. If it makes too many, or not enough, cells of the right type, the organism will, as likely as not, be sickly and perhaps die.  The rest is up to Darwin. Eureka!

No comments:

Post a Comment