Very nice. Some quick feedback:
I'm all for enhancing the regulatory and structural elements of the DB DNA language. Codules would be hunks of semi-atomic structural information whose expression could now be more richly controlled. I think the term "Transcription Factor" is the biological equivalent. They become a unit of mutation, sequence exchange and expression. Genes are the expression triggers. Love it.
This question of what language mechanisms to use is a hot area of research in the ALife community. If I understand it correctly, the propsoal is not unlike elements of the transsys language which is a "formal language for modelling regulatory network systems conssisting of transcription factors and genes encoding them." See:
transsys overviewFrom what I have read, it seems that much of the evolution of complex organisms is about selection for regulatory elements, not just structural elements. That is, it's not just about evolving better genes that do better things, is about evolving better logic about which and when what genes are expressed I.e. evolving a regulatory system which expresses the right genes at the right times in the right way. Evolving better transcriptions on your own takes time. It's faster for selection to operate on the regulatory system governing the expression of already evolved DNA sequences (whcih you may have stolen from different species).
Did you know the length of the genomes of different biological organisms are not necessarily corrolated with pheneotype complexity? I didn't. Some "simple" species like some newts for example have genomes a lot longer than humans. Most of the "code" never gets expressed in a given species yet it is preserved accross generations in case futue selection pressure selects the regulatory system to express it, in effect, selecting for expression of dormant codules. Lots of genes (or is the right term 'transcription factors'?) are very old, having changed little over time. They evolved long ago in common ancestors of today's different species. They are just not necessarily expressed or expressed in the same way in different species. So, I'm all for adding a richer mechanism which allows for selection to operate more richly on the regulatory system.
That said, I have to noddle on the implementation specifics. Some quick thoughts:
I like the linked list of current codules and that gotos are indexes into that list.
I like that newly aquired codules get inserted at end of the list. You don't want the aquisition of a new codule to necessarily screw up the expression logic for current codules. Aquiring a new codule (though mutation, gene exchange, sex, virus, etc) should be a separate thing from a mutation which starts expressing that codule.
I think you want codules to be able to be expressed multiple times per cycle. I don't understand the infinite loop risk. I assume codules cannot invoke genes and that there are no looping primities in the DNA language. Thus there must be one goto for each codule expression, right?. Where do you get loops?
I assume use of codules would not be mandated. Current bots which emodied all their DNA in genes would continue to work. Thus, the tradoffs about whether an organism puts their DNA in codules or genes and the resulting advatnages and disadvantages of each strategy such as susceptability to things like viruses can be left up to the bots and their authors. I.e. I feel no need to create special cases such as "root" codules that are immune to viruses.
Isn't self-modification of DNA is a separate issue from the codule issue, the pros and cons of which can be disucssed as a separate topic?
-E