Automatic Programming Through Combinatorial Evolution

by   Sebastian Fix, et al.

It has been already shown that combinatorial evolution - the creation of new things through the combination of existing things - can be a powerful way to evolve rather than design technical objects such as electronic circuits in a computer simulation. Intriguingly, only a few iterations seem to be required to already achieve complex objects. In the present paper we want to employ combinatorial evolution in software development. Our research question is whether it is possible to generate computer programs of increasing complexity using automatic programming through combinatorial evolution. Specifically, we ask what kind of basic code blocks are needed at the beginning, how are these code blocks implemented to allow them to combine, and how can code complexity be measured. We implemented a computer program simulating combinatorial evolution of code blocks stored in a database to make them available for combinations. Automatic programming is achieved by evaluating regular expressions. We found that reserved key words of a programming language are suitable for defining the basic code blocks at the beginning of the simulation. We also found that placeholders can be used to combine code blocks and that code complexity can be described in terms of the importance to the programming language. As in the previous combinatorial evolution simulation of electronic circuits, complexity increased from simple keywords and special characters to more complex variable declarations, to class definitions, to methods, and to classes containing methods and variable declarations. Combinatorial evolution, therefore, seems to be a promising approach for automatic programming.


page 1

page 2

page 3

page 4


Quantifying the Impact on Software Complexity of Composable Inductive Programming using Zoea

Composable inductive programming as implemented in the Zoea programming ...

A Programming Language For Quantum Oracle Construction

Many quantum programs require circuits for addition, subtraction and log...

Compiling Combinatorial Genetic Circuits with Semantic Inference

A central strategy of synthetic biology is to understand the basic proce...

Evolution of Things

Evolution is one of the major omnipresent powers in the universe that ha...

Cons-free Programs and Complexity Classes between LOGSPACE and PTIME

Programming language concepts are used to give some new perspectives on ...

Expansion and evolution of the R programming language

Change in language use is driven by cultural forces; it is unclear wheth...

Learnable Programming: Blocks and Beyond

Blocks-based programming has become the lingua franca for introductory c...