文章来源:新智元
【导读】阿里云最近入职的这位新员工,程序员们看了拍手叫好!每天,它都有数百万行代码被采用,单日推理次数超两千万。007敲代码,兢兢业业改bug,从不抱怨。它不抢程序员饭碗,主打辅助!

就在刚刚,阿里云一口气宣布两个重磅消息:
- 内部全面推行AI编程;
- 「通义灵码」正式入职成为程序员的AI助理。
虽然最近AI程序员可以说是科技圈的顶流,AI编程工具作为程序员的外挂,并不是什么新鲜事。
但阿里云这次官方宣布全员使用AI,堪称一次突破性的尝试。
有趣的是,阿里云在仪式感上也拉满了,通义灵码不仅有自己的头像,甚至还有自己的工号——AI001。

诶,难道说人类程序员真的要被AI取代么?
放心,「通义灵码」不是来取代你们的,而是来加入你们的。
首个AI编程程序员入职阿里
帮助人类程序员完成真实世界的工作,通义灵码真的靠谱吗?
其实,通义灵码早在去年云栖大会正式亮相,发布后仅一周通义灵码就稳居主流开发工具VSCode插件市场热榜,时隔数月,它在技术和功能上全面升级,经历了20多个版本的迭代。
如今全新升级的模型,在HumanEval等榜单处于业界第一梯队,已熟练掌握200+种编程语言,它的下载量更是突破了200万,是当之无愧的国民AI编程工具。
下面就是一份通义灵码的简历,请查收!

例如,在最基础的代码生成任务中,它能根据上下文自适应生成精准代码,运用实时分析与检索增强技术消除幻觉,真正做到秒懂程序员的需求。
在最新的版本中,通义灵码还新增了代码优化功能,能够深入分析代码及上下文,快速定位语法错误、性能瓶颈等问题,并给出具体优化代码建议。

想要上传一个excel文件?灵码能根据上下文自动续写,帮你写代码

它还能帮你写单元测试,支持多种框架

懒得写代码注释?就交给它吧,方法和行间注释一键生成

bug找不出?让它给你一键排查,识别报错原因后,直接生成建议代码
一句话,程序员写代码过程中的种种难题,它都能解决!
值得一提的是,「通义灵码」每天都会有数百万行的代码被程序员采纳,推理次数更是超过了两千万次,可以说是国内最受欢迎的AI编程工具之一了。
话不多,我们就来看看「通义灵码」到底能做些什么?
解释遗留代码
毫无疑问,最能「薅秃」开发者头发的问题之一,就是处理前人留下来的「屎山」了……

就比如下面这个。

就算代码不再维护、更新了,也还是需要从中逆向工程,推出业务模型、交互和规则,再重新构建代码和数据模型。

没关系,「通义灵码」来帮你解决。
召唤「通义灵码」,选择解释代码功能。

一眨眼的功夫,这段代码的解释,就出现了!大幅提升了开发者们读代码的效率。


开发
代码优化
在前端开发中,开发者们经常会遇见繁琐复杂的编程任务,绞尽脑汁去优化代码结构。

而这个问题对「通义灵码」来说,可谓so easy!
新增的「代码优化」功能,可以深入分析代码上下文,快速锁定语法错误、性能瓶颈……总之,你头疼的绝大多数问题,它都能解决。
举个栗子,选中下图右栏中Java编写的一段代码,然后选择编码任务——代码优化。
「通义灵码」看完这串代码后,分析得出:
这创建的是一个CloseableHttpClient的实例代码。然后使用这一实例发送30个HTTP GET请求,每个请求间隔5秒。同时代码中打印了每次请求所需要的耗时,并计算了这些耗时90分位数(P90)。
随后,它就列出了代码中需要优化的点,包括重复代码、资源管理、异常处理等等。

提出建议的同时,「通义灵码」还一步到位给出了具体优化后的Java代码。

在下图中,中间标红区域都是源代码被修改的内容,右边绿色即为优化后的代码,看完就是四个字——赏心悦目。

最后,「通义灵码」就整体优化版本的调整,做了一个整体总结。
就这样,开发者不仅提升了代码质量,还节约出大量时间,可以摸鱼充电了。


代码补全
对于程序员来说,代码续写是再熟悉不过的功能了,毕竟主流开发工具早已自带了代码补全功能。
只不过,这个准确率属实有点下饭……
现在,AI编程工具终于重新定义代码补全功能了,「通义灵码」可以通过感知上下文,来续写代码,将代码准确率提升带了一个新的台阶。

当然,它续写的代码中,也不排除会存在某些问题,这时候就需要我们人类程序员手动修改了,这就是咱们人类程序员不可替代的价值。

数据库
在数据库问题上,我们也可以直接向它提问。
比如,想用数据库来存储照片,该怎么做?
它会回答说:可以使用关系型数据库(RDBMS)或非关系型数据库(NoSQL)来存储照片。

并且,它还给出了具体示例。

测试
生成测试框架
前端的开发者们编写代码离不开AI编程工具,对于后端测试团队们同样如此。
众所周知,用例的设计对于测试工作来说至关重要,其中,测试数据的数量和质量更是会直接影响测试的覆盖率。
但问题在于,收集各种各样的测试用例不仅耗时,而且成本极高。
现在,有了大模型加持的「通义灵码」,我们便可以直接让它给出「RobotFramework的Hello world示例」。

然后,就可以坐等答案了。

为老代码生成单元测试
很多公司上了代码质量管控的指标,会考评各个项目的单元测试覆盖率。
很多老项目老代码,或者着急交付的项目,单元测试严重缺失。

而用通义灵码来对老代码进行单元测试,效率非常高。
这种流程化的内容交给AI来完成就非常的舒服。
它可以自动生成多种框架单元测试,为程序员节省不少时间。

运行调试错误
虽然AI工具不会主动写BUG,但是人类程序员难免犯错。所以代码调试,是程序员们开发过程中不可或缺的一环。
程序中有什么bug,如何修复,很多时候都得需要调试来发现。

然而,调试过程遇到的错误,怎么办?
放心,交给「通义灵码」来解决!
如下图所示,它可以帮我们运行调试错误。


运维
编写运维脚本
除此之外,做运维的童鞋也可以让「通义灵码」帮忙编写一个脚本。
比如向它提问:「一个Web程序运行的环境,需要安装哪些依赖服务?」
它会立刻告诉你——
1. 服务器:Web程序需要在服务器上运行,可以选择Apache、Nginx、IIS等Web服务器。
2. Web框架:根据Web程序的开发语言选择相应的Web框架,如Django(Python)、Ruby on Rails(Ruby)、Express(JavaScript)等等。
3. 数据库:根据Web程序的需求选择相应的数据库,如MySQL、PostgreSQL、MongoDB等。
4. 前端框架和库:根据Web程序的需要选择相应的前端框架和库,如React、Angular、Vue.js等。
5. 编译器或解释器:根据Web程序的开发语言选择相应的编译器或解释器,如Python解释器、Java虚拟机等。

然后,它在右边会自动为你生成以上依赖服务的安装命令。

查找运维问题解决方案
运维过程中出现问题,不要愁。
直接问它:无法用SSH连接Ubuntu下面的ECS实例,该怎么办?
它立马告诉你,请按照以下这些步骤进行排查。

不知道相应的检测命令?
直接问它,答案就在眼前——

程序猿是否会被AI取代?别怕,它只打辅助
最后,还是回到AI取代人类程序员的问题。
横空出世的全球首个AI工程师Devin,能24h不间断自主改写代码、训练模型、构建和部署应用;黄仁勋本人也表示,不久的将来,人类再也不需要学习编码了,孩子们的编程课都停了吧。

一时间,恐慌铺屏全网,难道程序猿真要不存在了吗?!

其实不然。在Devin横空出世那篇文章下,在我们的留言区最多的声音是这样的——

网友:吾辈
还有人说,「程序员这碗饭还是能吃,只是饭碗没有原来那么大了而已。」

网友:兔兔生威
「而现在的AI编程,性能还很差,很多连给人类打下手的能力都没有,更别说替代人类了。」

网友:数据加载中
甚至有人说,如果程序员真的大量使用AI编程,搞不好还会催生出一种专门的人类程序员专属新任务——「给AI擦屁股」。

网友:程序员吾本真
总之,至少现在来看,所有的AI编程工具还完全不足以替代程序员。
此外,有网友获取了Devin的体验资格之后,发现稍微复杂一些的任务,它现在依然无法完成。
比如让它做一个能调用GPT-4和人下棋的网站。

它生成了几步就被卡住。

它生成了一个数据可视化的网站,但是内容依然有BUG。

最终,Devin只完成了一个简单功能的Chrome的插件。
所以,我们对这些AI编程工具的态度,应该是拥抱,而不是畏惧。
在阿里云,用「通义灵码」打辅助的程序员们,实打实地提升了效率,这也是阿里云要给全员配AI助理的底气。
而如果未来某一天,AI大潮真的扑面而来,接管了所有人的工作,到时候能够独善其身的人,一定是了解AI、擅用AI的人。
当洪水涌过,最顺应局势的人,才有机会成为翻云覆雨的弄潮儿。
(责任编辑:小陈)