大厂纷纷押注AI代码,但离代替程序员还很远
第一财经 2024-04-24 21:57

AI能不能代替程序员?对于这一热门话题,业界或许尚未有定论,但一线的大厂已经开始实践,代码助手已成为各家争相落地的重点场景之一。

4月初,阿里高调宣布首个AI员工上岗,在内部全面推行AI编程,使用通义灵码辅助程序员写代码。更早一点,在3月,百度发布了Comate2.0代码助手,对个人开发者免费。而在去年12月,商汤推出智能编程助手代码小浣熊,可帮助开发者提升编程效率超50%,就在4月23日,商汤在技术交流日上宣布推出代码大模型一体机,轻量版每台售价35万元起,单台支持100人团队使用。

众多大厂的布局,让程序员看起来离被替代已经不远,不过短期来看还不必担心。此前被认为是全球首个AI程序员的Devin,在近日被指造假,在演示视频中“自导自演”。有业内人士表示,AI或许能帮忙写一些测试脚本这样的初级工作,但如果放在更严肃的商业级代码开发流程里,哪怕是GPT-4也只能做到较低的水平。

商汤科技Copilot产品负责人贾安亚也一直在思考未来程序开发的终局,她认为,AI代码仍然会是提效工具,其核心是让程序员更轻松便利地工作。未来程序员的工作内容一定会改变,但也一定需要有人去用好工具,“就像有蒸汽机后,某个人可能是从马车夫变成驾驶员,有了移动互联网,一些店从线下搬到了线上,但是很多事情本质是没有改变的。”未来程序员仍然是开发流程的主体和核心,但程序员或许会被重新定义。

大厂押注AI代码

4月2日,阿里云宣布内部正全面推行 AI 编程,使用通义灵码辅助程序员写代码、读代码、查 BUG、优化代码等。阿里云还专门给通义灵码分配了一个正式的员工工号——AI001。

阿里云相关人士透露,公司未来 20% 的代码将由通义灵码编写,但程序员仍然是研发的核心,他们将有更多时间专注于系统设计以及核心业务开发工作。

据介绍,在阿里云内部,通义灵码已在各个开发环节担任代码助理角色。以 API 开发测试工作为例,通义灵码可将数十分钟的人工编写测试耗时缩短到秒级,节省程序员 70% 以上的测试代码工作量。

百度同样已在内部推行AI代码,在3月百度发文表示,代码助手Comate已编写了百度内部四分之一的代码,而在百度之外, Comate已入职喜马拉雅、软通动力、上海三菱电梯等1万多家企业,企业代码采纳率逾50%。

百度创始人、董事长兼首席执行官李彦宏曾表示,2024最想推动的一件事,是让每个人都具备程序员的能力。他还表示,未来的编程语言只会剩下两种,一种叫英文,一种叫做中文,“以后不会存在程序员这种职业,因为只要会说话,人人都会具备程序员的能力。”

在3月底的GDC大会开幕式上,商汤科技董事长兼CEO徐立曾提到旗下代码小浣熊产品,在聚焦一些重复性的劳动后,其能够减少软件开发全流程需要的时间,帮助开发者提升编程效率超50%。以代码小浣熊的诞生为例,他表示,如果从需求分析到最终完成产品开发,一般需要100人天(注:人天是衡量人力资源消耗量的单位,人数和天数相乘),在去年,代码小浣熊已经能做到节省30%的工作量,来到70人天。

作为代码小浣熊产品的团队负责人,贾安亚介绍,软件开发全生命周期包括从设计阶段到架构,然后到开发、测试、部署、维护等的阶段。目前,在开发和测试阶段,代码助手的提效是最明显的,因为开发和测试环节里有很多较为枯燥的重复性工作。

“比如要理解上下文做一些代码补全,或者代码写完了做一些单元测试,摆脱这些枯燥工作本身对程序员来说也是一种解放,可以花更多精力聚焦在一些有创造性的工作,比如架构设计等。”贾安亚说。

在一开始,代码小浣熊能做的是相对较为重复的工作,随着模型的推理能力增强,贾安亚表示,现在也可以做一些创造性的工作,比如帮助做需求文档编写、架构设计,甚至是面对不同客户的一些具体场景做一些部署方案,届时整个软件开发周期就能大幅缩短。

在AI代码上,商汤已经发布了更完整的产品。4月23日,在2024年商汤技术交流日上,商汤发布了“日日新5.0”大模型,同时面向包括代码在内的四个行业推出企业级大模型一体机。据介绍,小浣熊代码大模型一体机轻量版能够帮助开发人员更高效地编写、理解和维护代码,且相较于传统的云服务模式,一体机的所有数据处理过程均在私有环境内完成,能避免数据在传输过程中的泄露风险。商汤表示,小浣熊代码大模型一体机在HumanEval的测试通过率达78.1%,超过GPT-4的74.4%。

2024年被认为是大模型应用爆发的一年,在众多场景中,代码为什么成为各家厂商重点布局板块?在交流中,贾安亚认为,过去一年多大模型智能化的能力有了进一步增强,其中的推理能力、代码能力、理科思维也是过去一年商汤在大模型上的重点突破。这些能力都是代码助手落地的重要基础。

另一方面是与真实场景的结合。贾安亚提到,现在的大模型还很难保证100%的精确,但是在代码这种场景下,本身程序员编写的代码也需要再次审查,因此即便现在大模型还有不确定性,AI仍然可以很好去赋能程序员提效。

“结合商汤本身的一些积累,和商汤大模型的一些进展,以及用户的反馈需求,办公小浣熊和代码小浣熊是我们当前选定比较重点的方向。”贾安亚表示。

重新定义程序员

“很多人说,你们AI(代码)都出来了,会不会把程序员代替掉?”谈到AI程序员代替论,通义灵码产品负责人张燎原的第一反应是,“不会,程序员还是核心,人永远是主体,AI是客体和辅助。”

阿里云此前提到,公司未来 20% 的代码都可以由AI去辅助生成,在这个基础上,AI写作代码的上限有可能提高到80%吗?张燎原认为,短期内是做不到的,设计或者提供思路这件事情还是需要人。

“写代码的过程,也是人在思考和设计的过程,在写一个框架时脑子里在做相应的设计,只是框架写完之后,有一些很简单很明确的任务,AI可以独立帮助我们完成,但是在软件研发过程当中,尤其遇到生产上的软件研发工作,是非常大型的,会涉及到比较多得靠人脑去思考的内容。”张燎原说。

张燎原认为,在程序设计阶段里很多都是AI难以代替人的。“还是需要人去表达意图、分配活,这些活做得好不好、对不对,也要人去判断,从这个角度来说,一头一尾都是以人为主去做的。”

上海人工智能实验室领军科学家林达华教授此前对第一财经表示,AI作为代码助手这个事,是经过验证,确确实实能够带来生产力提升的,“比如我写一个功能(的代码),这个功能我自己本来没写过不会写,那通常是到Google或百度查一下别人怎么写的,借鉴过来改改,现在代码助手同样也是这个逻辑,因为它学了上亿个代码库,所以写函数级的代码的填空,甚至帮忙写一些测试脚本等等初级的工作,确实能够帮助程序员节省非常多的时间。”

不过,林达华也提到,如果把AI代码放在一个更加严肃的商业级的代码开发流程里,就会发现哪怕是GPT-4也只能做到一个比较低的水平,甚至在一些场景下10%的成功率都做不到。

现在某种意义上AI代码还是一种语言能力,“就是以前见过的内容能够大差不差地,根据一定的场景改一改调出来,但是它现在显然并不具备非常深层次的逻辑思维的能力,这个对于我们构建一个真实的软件来说其实是最重要的。”林达华认为,现在谈取代程序员,大模型还有一定的距离。

此前一位大厂程序员也有同样的感触,他对第一财经提到,大模型虽然对AI编程有帮助,但离解决复杂问题还是有很长的距离。“就像造房子一样,不是只拿着榔头在那锤,首先得把怎么造的设计图构思好,然后第一步造什么,第二步造什么,怎样造它不会塌,要造多久都想清楚了,然后再一步一步地去敲。”这些都是程序员需要做的部分。

3月初,初创公司Cognition发布的首个AI软件工程师Devin曾轰动一时,号称“全球首位AI程序员”,虽然尚未公测,但根据官方的报告,只需一句指令,就可端到端地处理整个开发项目,此外视频显示它具备自主学习新技术、端到端构建和部署应用、自主查找和修复代码问题等能力。

就在4月9日,一位自称有35年软件工程师经验的网络博主逐帧复现了Devin的演示视频并提出四点质疑,包括Devin所展示的编程能力存在一定欺骗性,“它处理的任务并非随机,而是演示者精心选择的刻意呈现”;此外,Devin在操作过程中看似修复了许多问题,但这些问题很多都是Devin的“自导自演”。这也证明目前AI还难以处理复杂问题,去代替程序员。

贾安亚在采访中也表示,现在还很难靠AI完全端到端去写正式业务的代码。“所以我们到后续发布的产品,其实还会是人类和工具交互的一个逻辑,其实是半人工、半模型的状态去做一个交互,做端到端的提效。”

对于未来的终局,贾安亚认为,可能会衍生出基于自然语言的编程语言框架。本身程序员的开发语言就是不断迭代的,面向人类用更友好的方式去呈现,如Java、Python其实都是在低级编程语言上抽象出的高级编程语言,不过,未来如果用人类的自然语言去编程,一个问题在于,机器语言不太会有歧义,是非常严谨的语言,但自然语言特点在于其复杂性,在语法、语境、语音、语调中都隐含着很多信息,表达灵活多变,呈现的语义是模糊的。而程序执行,需要的是准确、稳定地输入和输出。因此,我们最习惯的自然语言一定不是能直接引起广泛共识的下一代编程语言,可能会在此基础上衍生新的语言框架。

到最后,贾安亚认为,AI会是一个提效工具,它的核心是让我们更轻松便利地工作。未来程序员的工作内容一定会改变,未来也一定需要有人去用好这些工具,“就像有蒸汽机后,某个人可能是从马车夫变成驾驶员,有了移动互联网,一些店从线下搬到了线上,但是很多事情本质是没有改变的,只是说我们怎么去用好它。”

“产品经理、数据分析师、软件开发工程师这些岗位大多是前一批科技变革的产物。”贾安亚认为,在下一个科技变革的时代,一些具体的岗位和内容可能会有一些变化,但世界的内核并没有变。

AI或许不会取代程序员,但或许会重新定义程序员。未来,对程序员的要求也可能不是敲代码敲得快就好了。

编辑/樊宏伟

最新评论