当前位置: X-MOL 学术arXiv.cs.SE › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Automatic Programming Through Combinatorial Evolution
arXiv - CS - Software Engineering Pub Date : 2021-02-20 , DOI: arxiv-2102.10475
Sebastian Fix, Thomas Probst, Oliver Ruggli, Thomas Hanne, Patrik Christen

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.

中文翻译:

通过组合进化自动编程

已经表明,组合进化-通过现有事物的组合创建新事物-可以成为一种强大的进化方式,而不是在计算机仿真中设计诸如电子电路之类的技术对象。有趣的是,似乎只需要进行几次迭代就可以实现复杂的对象。在本文中,我们希望在软件开发中采用组合演化。我们的研究问题是,是否有可能通过组合进化使用自动编程来生成复杂性更高的计算机程序。具体来说,我们问一开始需要什么样的基本代码块,如何实现这些代码块以使其结合起来,以及如何测量代码复杂性。我们实现了一个计算机程序,用于模拟存储在数据库中的代码块的组合演化,以使其可用于组合。通过编程正则表达式可以实现自动编程。我们发现,编程语言的保留关键字适合于在仿真开始时定义基本代码块。我们还发现,可以使用占位符来组合代码块,并且可以根据对编程语言的重要性来描述代码的复杂性。与以前的电子电路组合进化模拟一样,复杂度也从简单的关键字和特殊字符增加到更加复杂的变量声明,类定义,方法以及包含方法和变量声明的类。因此,组合进化
更新日期:2021-02-23
down
wechat
bug