人类闪一边去,我可以解决这件事。机器学习系统已经获得了编写自己的程式码的能力。
由微软和剑桥大学的研究人员创建的系统,称为DeepCoder,解决了程式竞赛所设置的基本挑战。这种方法可以使人们更容易建立简单的程式而不用知道如何撰写程式码。
没有参与这项计划的麻省理工学院的Armando Solar-Lezama说,“所有的人都可以有更高的生产力。他们可以建构以前不可能建立的系统”。
在英国剑桥的微软研究员,同时是DeepCoder的创始人之一Marc Brockschmidt说,“最终,该方法可以让不会写程式的人简单地描述一个程式的构想,让系统去建构它”。
DeepCoder使用一种称为程序合成的技术,透过现有的软件取得的程式码来拼凑建立新的程式,就像程式设计师一样。给定每个程式码片段所需的输入和输出列表,DeepCoder知道需要哪些程式码片段来实现整体所需的结果。
“它可以让不会写程式的人简单地描述一个程式的构想,让系统建构它。”
放任AI使用这种方式的一个优点是它可以比会撰写程式的人更彻底和广泛地搜索,因此可以拼凑出人类可能没有想到的程式码。此外,DeepCoder使用机器学习来清理程式码资料库,并根据可能的实用性来进行程式码片段的排序。
所有的这一切使得系统比它的前辈更快。DeepCoder在几分之一秒内可以产生可用程式,而旧系统则需要几分钟的时间来尝试许多不同程式码的组合才能拼凑出可以完成这项工作的程式码。此外,因为DeepCoder会随着尝试来学习甚么程式码的组合可以执行,而那些是不行的,所以它可以在每次尝试新的问题时改进。
该技术可以有许多的应用。在2015年,麻省理工学院的研究人员建立了一个程式,可以透过将有错误的程式码替换成可成功执行的程式码来自动修改程式的错误。Brockschmidt说,未来的版本可以让我们很容易地建立常规程式,例如从网站抓取讯息,或自动分类Facebook的照片,然而写程式的人不必动到手指。
Solar-Lezama说,“这种技术提供的自动化的潜力真正意味着大量减少开发程式码所需的努力”。
但他不认为这些系统会让程序设计师失业。他说,透过程序合成让一些最繁琐的部分程式自动化,可以让程式设计师能够将时间用于更复杂的工作。
目前,DeepCoder只能解决涉及大约五行程式码的程式难题。但是在正确的程式语言中,相当复杂的程序也只需要几行程式码。
Solar-Lezama说,“一次性的生成一个非常大的程式码是很困难的,而且可能不切实际。但是真正的大块的程式码是透过彙编大量的小块程式码来建立的”。
本文出现在纸本的标题为“计算机正在学习如何为自己编写程式码”。
!评论内容需包含中文