I'm a university student who's been studying machine learning and genetic programming for several months now.
Koza has been leading a 13-15 year effort that is one part technology and two parts marketing. All his books are like this: some interesting content along with hundreds of pages of arguments on the significance of it. He wants the field to be something: he wants greater automation of the creative process.
The thing to understand about genetic programming is that it is completely mechanistic. It is a search/optimization heuristic (a non-rigorous algorithm which works empirically but whose theoretical correctness is/cannot be established) which is roughly inspired by elementary principles of natural selection. If you have misty-eyed visions of "what AI could/will be", you're stuck in the 1980s.
Genetic programming has nothing to do with "strong AI" and I think mixing a dangerous, deadly term like "AI" ("an AI"! hah!) with an (effective, interesting, practical, robust) search heuristic is a huge mistake. As far as I know, the term "AI" is avoided like the bloody plague. Machine learning has taken over. I don't think "strong AI" will ever come. Koza has simply worked hard to make his use of the technique somewhat generic. But any use of GP is always problem-specific: you have to tweak it and think about the specific problem you're working on very hard to get good results. You still have to tell the computer how to evolve the solution.
Genetic programming will never create normal computer applications like word processing software. It's only applicable in situations where some amount of error is tolerable. Thus, areas like pattern recognition, control, finance/investment and other areas are relevant. It's possible to express hardware as source code statements, which is how you can use GP to evolve circuits.
There is no magic or "intelligence" in the results of a GP run: only programs who get a good fitness score on the fitness metric you've supplied the computer. If you really understood how it worked you'd think it was neat but straightforward. The evolutionary mechanisms are actually primitive (and, paradoxically, mostly destructive): you simply randomly swap out one part of the program fragment with something from another prgoram, or change it somehow in a random fashion. It's almost simplistic. Most genetic program models that are created aren't directly executable models: they're tree-like data structures whose elements correspond to constants, symbols, functions, and so on.
Edited by schwarzwald, 03 May 2006 - 08:40 AM.