Automatic Programming and Program Maintenance with Genetic Programming

Automatic programming is discussed in the context of software engineering. An approach to automatic programming is presented, which utilizes software engineering principles in the synthesis and maintenance of programs. As a simple demonstration, program-equivalent Turing machines are synthesized, encapsulated, reused, and maintained by genetic programming. Turing machines are synthesized from input-output pairs for a variety of simple problems. When a problem is solved, the solution is encapsulated and becomes part of a software library. The genetic program uses the library to solve new problems by combining library components with program primitives to synthesize new programs. When a new problem is solved or a known problem is solved more efficiently, the genetic program maintains the library so as to keep it valid and efficient.