Esté paradigma de programación consiste en ejecutar un conjunto de programas con el propósito de llevar una tarea especifica, se basa en la selección natural, donde, los programas menos exitosos una vez completada la tarea son eliminados, lo cual permite a los programas supervivientes combinarse de tal forma que se vuelve a repetir el ciclo de la selección natural.
Tras varias repeticiones de este proceso, uno o dos de los programas supervivientes llevan acabo de forma realmente buena la tarea asignada, tomando en cuenta la supervisión humana, quien desempeña el papel de cosechador de programas.
En esté paradigma de programación, a diferencia de los algoritmos genéticos, los individuos están representados por árboles de longitudes variables, no se representan como vectores o cromosomas de longitud fija. Por este motivo se trata de una técnica que resulta de utilidad en la resolución de aquellos problemas en lo que la solución deseada es jerárquica, tal es el caso de un programa de computadora, cuyo tamaño y forma son desconocidos.
Aunque esta técnica representará en un futuro no muy lejano un nuevo estilo de programación, en la actualidad, los experimentos desarrollados en el mundo real, bien sea en laboratorios, o mediante estudio de campo, están siendo progresivamente reemplazados por simulaciones.