El espacio descrito por cambios en código es más grande y más complejo.
Tenemos que escoger el lenguaje de programación adecuado. Una representación ``natural'' de programas puede ser desastrosa, ya que mutación y cruce producirian muy pocos programas sintácticamente correctos y menos aún semánticamente correctos.
Una alternativa es diseñar nuevos operadors genéticos específicos del lenguaje para preservar por lo menos la integridad sintáctica y enfocarse a lenguajes con sintáxis sencilla (e.g., Lisp o Prolog ``puros'').
Sin embargo, algo como Lisp, que es procedural por naturaleza, hace que el cambio de dos lineas de código o pequeños cambios hagan todo el programa sin sentido.
Esto orillo (por lo menos en un principio) a enfocarse a sistemas de reglas de producción.
Ventajas:
Surgieron dos formas de representar reglas: