最终,是的,人工智能会取代软件开发,因为 “程序员自己就在努力被人工智能所取代。“
一.AI写代码
2015年,现特斯拉(Tesla)人工智能主管、斯坦福大学(Stanford)计算机科学博士生安德烈•卡帕西(Andrej Karpathy)使用递归神经
网络生成代码。他取了一个Linux存储库(所有源文件和头文件),将其组合成一个巨大的文档(超过400 MB的代码),并用这些代码训RNN。 他让它运行了一夜。早上,他得到了这个:
由人工智能生成的示例代码
一夜之间,AI生成了包括函数和函数装饰在内的代码。它有参数、变量、循环和正确的缩进。括号成对出现。甚至还有注解。
当然,人工智能也犯了一些错误,有时不使用变量,还有一些时候,有一些变量在使用前没有声明。但是Andrej Karpathy对结果很满意。
Karpathy在他的博客上写道:“代码总体上看起来真的很棒。当然,我不认为它可以编译,但是当你滚动生成的代码时,它感觉非常像一个巨大的C代码库。”
这个项目可以在GitHub上找到。它使用了Torch7深度学习库。整个代码文件下载
二.DeepCoder
微软和剑桥大学的研究人员已经开发出一种能够编写代码的人工智能。这种人工智能被称为DeepCoder,它有学习的能力。
DeepCoder可以在搜索一个巨大的代码数据库后编写工作代码。它试图为获取的代码片段做出尽可能好的安排,并随着时间的推移提高其效率。
这并不意味着人工智能窃取别人的代码,或复制粘贴现有软件的代码,或在互联网上搜索解决方案。DeepCoder的作者预计,在不久的将来,它将参加编程比赛。
由DeepCoder创建的领域特定语言(DSL)中的示例程序
微软研究院编程原则和工具小组研究员Marc Brockschmidt(DeepCoder小组成员)说,这样的系统对于非程序员来说可能非常有用。他们只需要描述他们的程序思想,然后等待系统创建它。
他说,未来几年我们可能最终会拥有这样的系统。但目前DeepCoder的功能仅限于由五行代码组成的程序。
您可以在这里找到DeepCoder的文档。
三. 人工智能制作的Python代码
2016年6月,一位昵称为benjamin intd的法国工程师发表了一篇博客文章,解释了他是如何“用Python代码教人工智能编写Python代码”的。
他使用了长短时记忆(LSTM)——一种最流行的递归神经网络架构,开发了大量Python代码(使用了panda、Numpy、Scipy、Django、Scikit-Learn、PyBrain、Lasagne、Rasterio等库),合并代码后的文件达到27MB。
然后,人工智能生成了自己的代码。
如果仔细查看创建数组的代码,会发现语法错误。benjamin的代码远非完美。但是他认为,对于一个从示例代码中学习所有内容的网络来说,这已经不错了。
“尤其是考虑到它只是在一个字符一个字符地猜测接下来会发生什么,”benjamin在博客中总结道。
四.人工智能会取代程序员吗?
“神经网络将产生有用的代码只是时间问题。因此像我这样的计算机科学家,未来情况看起来很暗淡,” Bauckhage教授认为。
(Christian Bauckhage是波恩大学的计算机科学教授,也是弗劳恩霍夫IAIS机器学习的首席科学家。他的大多数研究都涉及数据科学中的问题。特别是,他从事自然科学,社交媒体和金融领域的人工智能,机器学习和数据挖掘的理论和应用。)
根据麻省理工学院的Armando Solar-Lezama的说法,像DeepCoder这样的工具确实有可能实现代码开发的自动化,但AI不会剥夺开发人员的工作。相反,基于程序综合的系统可用于自动化代码开发的繁琐部分,同时开发人员专注于复杂的任务。
(Armando Solar-Lezama是MIT计算机辅助编程组的负责人。研究的重点是程序综合,这个研究领域,是编程系统和人工智能的交叉学科。)
Dev9是一家位于西雅图的定制软件开发公司,专注于Java和JavaScript。Dev9汇集了使用人工智能开发定制软件的团队,利用人工智能技术消除了繁重的流程并大幅减少了手动开销。其首席技术官艾弗森是否会被问到程序员是否需要担心在不久的将来被AI取代,并回答说:
“最终,是的。到了那时,社会已经习惯了应对这种社会变革。“