Skip to main content

Open-Ended Automatic Programming Through Combinatorial Evolution

  • Conference paper
  • First Online:
Intelligent Systems Design and Applications (ISDA 2021)

Part of the book series: Lecture Notes in Networks and Systems ((LNNS,volume 418))

  • 1941 Accesses

Abstract

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. Intriguingly, this seems to be an ongoing and thus open-ended process creating novelty with increasing complexity. Here, we employ combinatorial evolution in software development. While current approaches such as genetic programming are efficient in solving particular problems, they all converge towards a solution and do not create anything new anymore afterwards. Combinatorial evolution of complex systems such as languages and technology are considered open-ended. Therefore, open-ended automatic programming might be possible through combinatorial evolution. We implemented a computer program simulating combinatorial evolution of code blocks stored in a database to make them available for combining. Automatic programming in the sense of algorithm-based code generation is achieved by evaluating regular expressions. We found that reserved keywords 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 a previous combinatorial evolution simulation of electronic circuits, complexity increased from simple keywords and special characters to more complex variable declarations, class definitions, methods, and classes containing methods and variable declarations. Combinatorial evolution, therefore, seems to be a promising approach for open-ended automatic programming.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 259.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 329.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

References

  1. Arthur, W.B.: The Nature of Technology: What it is and How it Evolves. Free Press, New York (2009)

    Google Scholar 

  2. Arthur, W.B.: How we became modern. In: Sim, S., Seet, B. (eds.) Sydney Brenner’s 10-on-10: The Chronicles of Evolution. Wildtype Books (2018)

    Google Scholar 

  3. Arthur, W.B., Polak, W.: The evolution of technology within a simple computer model. Complexity 11(5), 23–31 (2006)

    Article  Google Scholar 

  4. Banzhaf, W., et al.: Defining and simulating open-ended novelty: requirements, guidelines, and challenges. Theory Biosci. 135(3), 131–161 (2016). https://doi.org/10.1007/s12064-016-0229-7

    Article  Google Scholar 

  5. Becker, K., Gottschlich, J.: AI programmer: autonomously creating software programs using genetic algorithms. arXiv (2017)

    Google Scholar 

  6. Bäck, T.: Evolutionary Algorithms in Theory and Practice. Oxford University Press, New York (1996)

    Book  Google Scholar 

  7. Christen, P.: Modelling and implementing open-ended evolutionary systems. In: The Fourth Workshop on Open-Ended Evolution (OEE4) (2021)

    Google Scholar 

  8. Chun, W.H.K.: On software, or the persistence of visual knowledge. Grey Room 18, 26–51 (2005)

    Article  Google Scholar 

  9. Cleaveland, J.: Building application generators. IEEE Softw. 5(4), 25–33 (1988)

    Article  Google Scholar 

  10. Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. ACM Press/Addison-Wesley Publishing Co., New York (2000)

    Google Scholar 

  11. Czarnecki, K.: Perspectives on generative programming. In: SFB 501 “Development of Large Systems with Generic Methods” (2003)

    Google Scholar 

  12. Ebert, C., Cain, J., Antoniol, G., Counsell, S., Laplante, P.: Cyclomatic complexity. IEEE Softw. 33(6), 27–29 (2016)

    Article  Google Scholar 

  13. Garg, A.: An approach for improving the concept of Cyclomatic Complexity for Object-Oriented Programming. arXiv (2014)

    Google Scholar 

  14. Harter, A.T.: Advanced techniques for improving canonical genetic programming. Missouri University of Science and Technology (2019)

    Google Scholar 

  15. Holland, J.H.: Genetic algorithms. Sci. Am. 267(1), 66–72 (1992)

    Article  Google Scholar 

  16. Holland, J.H.: Signals and Boundaries: Building Blocks for Complex Adaptive Systems. The MIT Press, Cambridge (2012)

    Book  Google Scholar 

  17. Klimek, P., Hausmann, R., Thurner, S.: Empirical confirmation of creative destruction from world trade data. PLoS ONE 7(6), e38924 (2012)

    Article  Google Scholar 

  18. Koza, J.R.: Genetic programming as a means for programming computers by natural selection. Stat. Comput. 4(2), 87–112 (1994)

    Article  Google Scholar 

  19. McCabe, T.J.: A complexity measure. IEEE Trans. Softw. Eng. SE–2(4), 308–320 (1976)

    Article  MathSciNet  Google Scholar 

  20. Ogburn, W.F.: Social Change: With Respect to Culture and Original Nature. B. W. Huebsch, New York (1922)

    Google Scholar 

  21. O’Neill, M., Spector, L.: Automatic programming: the open issue? Genet. Program. Evolvable Mach. 21(1), 251–262 (2019). https://doi.org/10.1007/s10710-019-09364-2

    Article  Google Scholar 

  22. Parnas, D.L.: Software aspects of strategic defense systems. ACM SIGSOFT Softw. Eng. Notes 10(5), 15–23 (1985)

    Article  Google Scholar 

  23. Pillay, N., Chalmers, C.K.A.: A hybrid approach to automatic programming for the object-oriented programming paradigm. In: Proceedings of the 2007 Annual Research Conference of the South African Institute of Computer Scientists and Information Technologists on IT Research in Developing Countries, SAICSIT ’07, New York, NY, USA, pp. 116–124. Association for Computing Machinery (2007)

    Google Scholar 

  24. Poli, R., Langdon, W.B., McPhee, N.F., Koza, J.R.: Genetic programming: an introductory tutorial and a survey of techniques and applications. University of Essex, UK, Tech. Rep. CES-475, pp. 927–1028 (2007)

    Google Scholar 

  25. Sarwar, M.M.S., Shahzad, S., Ahmad, I.: Cyclomatic complexity: the nesting problem. In: Eighth International Conference on Digital Information Management (ICDIM 2013), pp. 274–279. IEEE (2013)

    Google Scholar 

  26. Taylor, T.: Evolutionary innovations and where to find them: routes to open-ended evolution in natural and artificial systems. Artif. Life 25(2), 207–224 (2019)

    Article  Google Scholar 

  27. Thurner, S.: A simple general model of evolutionary dynamics. In: Meyer-Ortmanns, H., Thurner, S. (eds.) Principles of Evolution: From the Planck Epoch to Complex Multicellular Life. The Frontiers Collection, pp. 119–144. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-18137-5_4

  28. Thurner, S.: The creative destruction of evolution. In: Sim, S., Seet, B. (eds.) Sydney Brenner’s 10-on-10: The Chronicles of Evolution. Wildtype Books (2018)

    Google Scholar 

  29. Thurner, S., Hanel, R., Klimek, P.: Introduction to the Theory of Complex Systems. Oxford University Press, New York (2018)

    Book  Google Scholar 

  30. Wikipedia contributors: Cyclomatic complexity — Wikipedia, the free encyclopedia. https://en.wikipedia.org/w/index.php?title=Cyclomatic_complexity&oldid=1054490449 (2021). Accessed 19 Nov 2021

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Patrik Christen .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Fix, S., Probst, T., Ruggli, O., Hanne, T., Christen, P. (2022). Open-Ended Automatic Programming Through Combinatorial Evolution. In: Abraham, A., Gandhi, N., Hanne, T., Hong, TP., Nogueira Rios, T., Ding, W. (eds) Intelligent Systems Design and Applications. ISDA 2021. Lecture Notes in Networks and Systems, vol 418. Springer, Cham. https://doi.org/10.1007/978-3-030-96308-8_1

Download citation

Publish with us

Policies and ethics