尽管工程师用代码创造了AI,但AI又可以对这些代码点评一番、甚至修复Bug,工程师和AI的关系正在变得微妙。4月18日,2019阿里巴巴研发效能峰会——“83行代码挑战赛”决赛现场引入了一位“AI评委”,它和专家评委、大众评委配合,对选手提交的的代码做综合评价,这也是全球代码比赛中出现的首位AI评委。
据介绍,这位AI评委运行在云端,当选手提交代码后,会从静态分析、运行时分析、群体共性等不同维度对代码快速打分。比赛现场,大屏实时显示选手分数,随着AI评委、专家评委、大众评委的分数依次出现,分数排行榜会根据综合打分实时滚动,一个逻辑语言的处理甚至可能瞬间提高选手排名。
结合现场专家和大众评委的观点来看,AI评委的评分相当准确,且打分最为迅速,几乎是在代码提交后立刻出现结果。
图为工程师根据AI评委提供的修复建议修复了缺陷
据阿里相关负责人介绍,这位AI评委来自阿里巴巴代码平台研发的人工智能系统,其中最重要的一环是集成了Precfix(PatchRecommendationbyEmpiricallyClustering基于经验聚类的补丁推荐),不依赖测试用例、编译结果,通过非规则化的智能扫描,即可自动定位代码中的Bug,并提供修复建议,速度可达毫秒级,且误报率低。
此外,Precfix能够发现一些规则检查和人工评审都无法发现的缺陷,根本性地提升代码质量,有效减少开发工程师debug及代码评审时间。同时,Precfix提供的修复建议,能帮助工程师快速理解缺陷和解决问题。
目前,Precfix已被部署到阿里巴巴代码生产环境,用于缺陷检查。工程师写好代码,就提交到线上,Precfix会进行review(检验),指出缺陷代码及相应的修复建议。
据一位工程师透露,过去人工review代码查找bug可能需要几小时甚至几天时间不等,而现在不用一杯咖啡的时间,Precfix就可以review完提交的全部代码,提高了至少20%效率。
“AI是否会取代工程师”?
对于AI评委,阿里巴巴技术合伙人多隆表态:“希望AI能与代码开发产生更多化学反应,让AI结对开发工程师,帮助工程师减负。”
多隆称,AI评委的背后是阿里巴巴正致力推进的代码智能化,让AI帮助工程师完成更规范、更有美感的代码语言,提升开发者的产品交付质量。
在代码智能化上,目前全球领先的科技公司都在积极投入,包括谷歌、Facebook、微软等也曾推出相关的工具。不久前,谷歌大脑发表的论文还提出让神经网络来完成源代码编辑。
事实上,代码是一种“动态”过程,需要很强的泛化能力才能完成。优秀的工程师往往会根据新需求、新的网络环境、bug的修复、公司战略意图等各种不断变化的因素来构建代码。AI能完成的是相对简单的任务,要让机器来动态判断和预测即将发生的编辑内容,甚至开发出比较复杂和创新性的产品,还有很长的路要走。
阿里巴巴的工程师也表示并未感受到“被AI支配”的恐惧,更多是对新技术的期待:“AI消融的是那些非创造性的工作壁垒。我们相信未来大部分机械工作会在机器的帮助下,更高效率地完成。这样,我们工程师就可以更专注在一些创新、创造的开发工作上。”
- 如果AI拥有人类智慧,肉身的人类能做什么。