Automatic Programming Through Combinatorial Evolution

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. Corresponding author: patrik.christen@fhnw.ch. 1 ar X iv :2 10 2. 10 47 5v 1 [ cs .S E ] 2 0 Fe b 20 21

[1]  Riccardo Poli,et al.  Genetic Programming An Introductory Tutorial and a Survey of Techniques and Applications , 2011 .

[2]  W. Brian Arthur,et al.  The Nature of Technology: What it Is and How it Evolves , 2009 .

[3]  Stefan Thurner,et al.  Empirical Confirmation of Creative Destruction from World Trade Data , 2011, PloS one.

[4]  Justin Emile Gottschlich,et al.  AI programmer: autonomously creating software programs using genetic algorithms , 2017, GECCO Companion.

[5]  Sara Shahzad,et al.  Cyclomatic complexity: The nesting problem , 2013, Eighth International Conference on Digital Information Management (ICDIM 2013).

[6]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[7]  Dan Boneh,et al.  On genetic algorithms , 1995, COLT '95.

[8]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[9]  Adam Tyler Harter Advanced techniques for improving canonical genetic programming , 2019 .

[10]  Wendy Hui Kyong Chun,et al.  On Software, or the Persistence of Visual Knowledge , 2005, Grey Room.

[11]  J. Craig Cleaveland,et al.  Building application generators , 1988, IEEE Software.

[12]  David B. Fogel,et al.  Evolutionary algorithms in theory and practice , 1997, Complex.

[13]  J. Holland Signals and Boundaries: Building Blocks for Complex Adaptive Systems , 2012 .

[14]  John R. Koza,et al.  Genetic programming as a means for programming computers by natural selection , 1994 .

[15]  Ankita Garg An approach for improving the concept of Cyclomatic Complexity for Object-Oriented Programming , 2014, ArXiv.

[16]  Wolfgang Polak,et al.  The evolution of technology within a simple computer model , 2006, Complex..

[17]  Nelishia Pillay,et al.  A hybrid approach to automatic programming for the object-oriented programming paradigm , 2007, SAICSIT '07.

[18]  Stefan Thurner,et al.  Introduction to the Theory of Complex Systems , 2018, Oxford Scholarship Online.

[19]  S. Thurner A Simple General Model of Evolutionary Dynamics , 2011 .

[20]  David Lorge Parnas,et al.  Software aspects of strategic defense systems , 1985, CACM.

[21]  R. Austin Freeman,et al.  Social change with respect to culture and original nature , 1923 .