复杂网络代码_程序员的“福音”来了:AI辅助人类写代码 靠谱吗?

“996”码农的福音:AI辅助写代码
第二看台
本报采访人员 李宏策
资料图:游戏公司程序员 。中新社发 余清 摄
早上9点到岗,晚上9点下班,每周工作6天 。“996”工作制,这一流传于IT圈内的行话,近期在互联网巨头掌门人“助攻”下迅速成为热议话题,各种观点莫衷一是 。但剥离掉法律、道德、价值观等层面的讨论,“996”所反应的现实情况是:社会正全面进入信息化,程序员已经不堪重负 。
与此同时,谷歌大脑( Brain)发布了一篇论证AI辅助人类编程的论文,为身心俱疲的“码农”们带来新福音 。谷歌所说的AI技术如何实现辅助编程?AI能协助完成哪些编程工作?距离程序员的解放之路还有多远?带着这些问题,本报采访人员采访了法国原子能和替代能源委员会人工智能博士、素问智能创始人王巍 。

复杂网络代码_程序员的“福音”来了:AI辅助人类写代码 靠谱吗?

文章插图
游走于“画匠”和“画家”之间
硅谷创业之父保罗·格雷厄姆在《黑客与画家》一书中形象地将编程与绘画做了类比 。格雷厄姆认为,优秀程序员和画家一样属于创造者 。但他在书中也指出,在分工日益细化的产业链条中,“(程序员)只是一个负责实现领导意志的技术工人,职责就是根据规格说明书写出代码,其实与一个挖水沟的工人是一样的,从这头挖到那头,仅此而已,从事的都是机械性的工作” 。两者的区别就如同画家和画匠,前者是个性创造,而后者是重复劳动 。
职业程序员的工作原本是一项智力密集型的技术创造,但随着互联网产业的快速发展,部分互联网公司的程序员和流水线工人几乎没有本质性区别,编程已逐渐成为劳动密集型的机械劳动 。然而,创新通常不是从长时间的工作中熬出来的,程序员创造性不断下降无疑与高强度的工作量有关,而人工智能或许能够改变这一局面 。
人工智能如何实现辅助编程
为了快速理解谷歌这篇技术性很强的论文,王巍向科技日报采访人员讲述了他曾参与的另外一项研究:AI模仿大文豪雨果写作 。该项目利用人工智能统计方法来学习雨果的语言风格,包括其习惯用词、用语和句式等,最终可以让法语写作水平一般的人用大文豪的写作风格写自己的故事 。
王巍表示,人的自然语言(如法语)是一个由字和词组成的序列,通过统计模型分析,能够根据上文来预测下文出现的概率,可以将其理解为更高级的联想输入法或打字提示 。而面向机器的编程语言,一方面是一个由代码组成的序列,另一方面也有其内在的代码组织结构,通过对这两者的建模,在程序员输入代码的过程中,可以利用人工智能技术识别其意图并预测其可能将要输入的代码,从而辅助程序员简化新写代码的工作量 。另外,通过模式识别,在程序员修改一部分代码时,AI可以识别出现有代码中其他需要做类似修改的相关代码模块,甚至直接提供代码更新方案的选项,从而大大减少程序员修改代码的工作量 。
在AI术语中,预测下文或代码属于序列的学习和预测,而递归神经网络则是实现序列建模的一种解决方法 。长短期记忆网络(LSTM)是目前比较流行的一种递归神经网络,谷歌在论文利用LSTM来对已有的代码建模,从而识别和预测复杂、动态的代码编辑序列 。
复杂网络代码_程序员的“福音”来了:AI辅助人类写代码 靠谱吗?

文章插图
能协助程序员完成哪些工作
王巍介绍,目前程序员编程使用的开发工具IDE(集成开发环境)已初步具备一些简单的提示功能,比如参数的自动填充、构造函数的自动初始化等,在实际操作中一定程度上提高了程序员的效率 。而谷歌的研究是面向更为复杂的编辑序列模型,其方案对大规模代码编辑数据有更强的适用性 。