Not that it's awfully relevant to the thread, but just to expand on that last throwaway comment of mine..
Those two different instances were two differing approaches to mutating algorithms. For the Corewars example, I used a "Genome" consisting of many times more (valid) instructions than I was intending to use, with a majority (perhaps 90-95% of them) being totally commented out, essentially "Junk DNA".
Mutations could occur to the opcode
or operands of any code, commented out or not, so that there could be a high degree of non-fatal variation introduced to the code, but the mutative process also had a chance to move instruction lines out of/into comments. Multiple examples of similar-looking code coincide that are functionally the same (and survive the culling if at the top of the current cadre) could accumulate a whole host of different mutations in a population before being "tested" against each other and their predecessors..
For the other example, there are
no invalid instructions possible (and instructions/data entirely interchangable, overlapping and self-modifying during runtime!), and "commented" ones were just ones that never ran in the first place due to loops and jumps skipping over code, or back round again. That was just a simple matter of randomly setting and unsetting individual bits in all offspring. It's
particularly interesting to try and interpret the 'successful' offspring and work out
how they managed to do accomplish the selected-for task the way they did. (And often quicker than a fully-designed setup purposefully written with full inside knowledge of the language instantiation and the intended end-product!)
However, neither way is how I'd suggest DF gets programmed.