Genetic Programming meets TDD
by Larry Diehl

The themes of automatic and genetic programming will be explored in context of the Ruby programming
language.

First automatic discovery of Ruby's syntax using its internal abstract syntax tree and a genetic
algorithm will be explained.

Simple analysis of object oriented structure can be performed by using a semantic lexicon (ie:
WordNet) and traversing the inheritance hierarchies of Ruby classes and mixed in modules.

By feeding in code snippets of certain patterns as training data to a pattern finding algorithm,
existing open source projects can be searched and have results returned in the form of similar real
world examples. These include basic patterns like method definition, and more advanced "design
patterns".

Finally, the talk will culminate in a new programming workflow using genetic programming that
involves the previously described topics. This workflow is a step forward from Test Driven
Development / Refactoring, where tests/specifications are dictated in a description/behavior style
(a la BDD) and contracts between interacting code/classes are specified, but the code is
interactively evolved instead of hand-written.

About Larry Diehl
Larry Diehl is an Orlando developer and student that has been using Ruby as his primary language for
the past 3 years.

He has programmed Rails applications full time for the past 2.5 years, first for Bear Den Designs
and more recently for IZEA, while being enrolled as a full time student at the University of Central
Florida and taking online courses.

Larry presents semi-regularly at the Orlando Ruby Users Group and local events such as
BarCampOrlando, and blogs occasionally on programming topics at larrytheliquid.com.

He is concentrating his final year of study exclusively on academics, and is getting involved with
Artificial Intelligence research, specifically Genetic Programming.

Back