Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

John Koza is a name worth googling if you're interested in learning more about Genetic Programming.


Ah yes, perhaps I should have mentioned him :-(

Some of his work has even created patentable inventions! (I'm on my phone and cooking so no links.)


Not only should Koza be mentioned because he's the inventor of genetic programming, but also because his original implementation of GP was done in Lisp!

Given that most later GP implementations have been done in other languages (from C to Java to Python), it's good to finally see it come full circle back to Lisp once more.


John was and is an important figure in developing and promoting genetic programming, and came up with several of the common algorithms used, and holds several patents on the technique. BUT he was neither the inventor of GP nor of its most common form (s-expression tree-style -- what's being discussed in the blog). That honor goes to Nichael Cramer, who published the idea at ICGA in 1985.

http://homepages.sover.net/~nichael/nlc-publications/icga85/

The term "Genetic Programming" may have been coined by Hugo de Garis.

As to GP implementations. In the research world, there are probably four major ones. I'll list them in the order I think they're presently used:

1. ECJ. Java. [I wrote it, hehe].

2. OpenBEAGLE. C++.

3. EO. C++.

4. lil-gp. C. lil-gp is still quite serviceable but a bit long in the tooth now. I used lil-gp very heavily before writing ECJ, and in fact many things in ECJ were inspired by it.


It seems like it should be much easier to do this in Lisp. In other languages wouldn't you need to work on the AST instead of on the source code to have much chance of generating syntactically correct programs ?


Lee Spector has made a Forth(like) language, called PushGP, which, in my opinion, handles syntactical correctness in a nice way. There's even a JS implementation, which wasn't there the last time I checked.

http://hampshire.edu/lspector/push.html




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: