探索程序合成新路径:行为视角下的创新方法
1. 程序合成的发展与挑战
在当今世界,可编程设备数量呈指数级增长,涵盖了各种硬件平台、操作系统,以及用数百种编程语言编写的无数软件模块。这使得对软件的需求持续攀升,软件工程师成为了各个领域都急需的专业人才。尽管计算机科学专业毕业生数量不断增加,软件开发也有了更高效的工具支持,但软件研发仍然是一项极具挑战性且资源密集的任务,主要原因在于现代软件的复杂度比过去大幅提高。
自动化程序合成作为计算机辅助软件开发中最前沿的领域,为解决这一问题带来了希望。它能够根据各种形式的规范或多或少地自动生成程序。虽然自动化程序合成系统目前还处于起步阶段,但发展势头迅猛。不过,许多人对程序合成的自动化持怀疑态度,例如著名的程序员大师 Edsger Dijkstra 就曾质疑“自动编程”的可行性。然而,深入思考会发现,人类与计算机的交互在编程历史中不断演变,从早期的低级机器语言到如今的高级编程范式,表达编程意图的方式越来越多样化。例如,在电子表格中处理数据时,用户可以通过给出期望结果的示例来表达意图;在 Scratch 环境中,用户可以直观地指定控制流程。因此,程序合成可以看作是这一演变过程中的又一个阶段,是一种更高层次的抽象,在这个层面上,表达意图可能不再像传统编程那样。
2. 遗传编程与评估瓶颈
遗传编程是一种受生物进化启发的程序合成方法,它基于进化计算的元启发式算法。在传统的遗传编程中,通常只使用程序执行的最终结果(即程序输出)来指导程序合成过程。具体来说,会将程序在特定测试中所犯的错误汇总为一个标量值,以此作为程序评估的依据。然而,这种设计存在一个严重的问题,即“评估瓶颈”。程序执行是一个复杂的过程,涉及程序组件(如指令)与操作数
超级会员免费看
订阅专栏 解锁全文
664

被折叠的 条评论
为什么被折叠?



