“愚蠢的人类,快走开——我的代码我自己写!”
现在,机器学习系统获得了一种自动编写代码的能力。
这种程序叫做DeepCoder,由剑桥大学和微软公司的研究人员所研发。对于不会写代码的人来说,DeepCoder简直就是福音。因为这个程序解决了编程的基础问题,不需要任何代码知识,人们就可以编写出一些简单的程序。
作为一个局外人,麻省理工学院的ArmandoSolar-Lezama评论道:“转眼之间,编程的工作效率就可以如此之高,很多以前看来难以建立的模型,现在居然都触手可及。”
工作于英国剑桥微软研究院,同时也是DeepCode创始人之一的Marc Brockschmidt认为,有了这种方式,无论是谁,只需要简单地描述一下目标程序,系统就会自己编出对应的语句。
DeepCoder使用了一种叫做程序合成(program synthesis)的技术,其运行原理与程序员所做的事情差不多,就是从存在的软件中获取已知的代码段,并将它们拼接到一起执行新的程序。只要赋予DeepCoder中每个片段对应的输入和输出,程序就可以“学习”到哪些代码是我们所需要的。
“麻瓜也可以写程序”
让AI(人工智能)自编代码的好处之一就是,相比人类,AI在搜索时比人类更加全面彻底,因此AI可以用人类完全想不到的方式来编写程序。除此之外,DeepCoder还会使用机械学习方式查阅数据库,并根据可能的用法,整理出各个数据段。
而这一切都让系统变得更加灵敏。在DeepCoder之前,老版的应用程序处理问题可能要花费好几分钟,而这对DeepCoder来说可能只是几秒的事情。在DeepCoder自我编程时,它还能自己判断出哪些语句有用、哪些语句有误并进行修正。因此,它在处理新的问题时,会越来越有经验。
科技可以运用在多种层面上。在2015年,麻省理工大学开发出了一种程序,该程序可以自动修复软件中的BUG:如果某系列代码被检测出了错误,它会抓取其他程序中的语句,将其覆盖到错误语句上以修复BUG。Brockschmidt表示,在未来,我们将很容易抓取网页中的信息,比如自动给脸书里的照片分类,而我们根本都不需要碰一下鼠标。
那么这种程序会不会导致程序员大量失业?
Brockschmidt给出的答案是否定的。因为自动拟合的程序中很可能会出现很多毫无逻辑的代码,而我们依然需要程序员来“拯救”这些复杂的程序。
目前,DeepCoder只能用于解决五行以内的代码问题。不过只要选择对了语句,即使是再复杂的程序问题也可以用短短几行代码解决。
“对于大型程序的编写,想要一蹴而就是很难的。” Solar-Lezama表示,“但是千里之行,始于足下,正是很多短代码组合在一起,才有了各种大型的程序。”