A population of programs is evaluated according to a fitness function before operators like cross-over and mutation change selected individuals, which gives us the new population. The method can be seen as heuristic search in the space of all possible programs. Hence, the programs must be restricted in some kind.