写点什么

数百程序员专门教 AI 写代码、40 个 bug 能修复 31 个,“取代程序员”这次要成真了?

  • 2023-01-30
    北京
  • 本文字数:2947 字

    阅读完需:约 10 分钟

数百程序员专门教AI写代码、40个bug能修复31个,“取代程序员”这次要成真了?

AI 在回答问题和编写代码方面已经变得相当出色。在一项新的研究课题中,ChatGPT 尝试查找示例代码中的 bug 并给出修复建议。其表现远超现有程序,成功修复了 40 个 bug 中的 31 个。AI 开始显现出强大的能力,一些人又开始担心程序员会失业了,在软件开发和编程中的历史中,这又是一次“狼来了”的故事吗?

 

ChatGPT 现可查找并修复代码中的 bug

 

最近几周,AI 新贵 ChatGPT 迎来了一系列评测挑战。一项最新研究来自约翰内斯古腾堡大学和伦敦大学学院的计算机科学研究人员,他们发现 ChatGPT 能够从示例代码中发现错误并加以修复,且整体表现优于现有同类程序。

 

研究人员将这 40 段 bug 代码提交至四种不同的代码修复系统,分别为 ChatGPT、Codex、CoCoNut 和 Standard APR。在 ChatGPT 上,他们只需询问“这段代码有什么问题?”再将代码内容复制粘贴至聊天框内即可。在首轮测试中,ChatGPT 的表现跟其他程序相差不大。ChatGPT 解决了其中 19 个问题,Codex 解决了 21 个,CoCoNut 解决了 19 个,Standard APR 解决了 7 个。研究人员发现 ChatGPT 给出的答案与 Codex 最为相似,“这倒是正常,毕竟 ChatGPT 和 Codex 来自同一语言模型家族。”

 

但在收到首批答案之后,ChatGPT 的强大能力开始表现出来,随后势如破竹般解决了 31 个问题,轻松超越了其他只能提供静态答案的同类工具。

 

研究人员在报告中写道,“ChatGPT 的一大核心优势,在于我们会在对话中直接交互,更详细地描述需求。我们发现,对于大部分请求,ChatGPT 会要求提供关于问题和 bug 的更多细节信息。在向 ChatGPT 提供提示信息之后,其成功率得以进一步提高,修复了全部 40 个 bug 中的 31 个,成绩可谓一骑绝尘。”

 

他们还发现,ChatGPT 能够快速解决的某些问题,在其他程序上往往需要反复拉扯。“ChatGPT 在修复 bug 时似乎表现出较高的不一致性。但对最终用户来说,只要多执行几次应该就能得到有价值的结果。”

 

例如,当研究人员提交下图问题时,他们预期的答案是将 n^=n-1 替换为 n&=n-1。但 ChatGPT 给出的回应是“我无法判断程序中是否存在 bug,请提供关于预期行为的更多信息。”经过研究人员的提示,ChatGPT 在第三次回复中成功发现了问题。

 


但在我们尝试将同样的问题输入给 ChatGPT 时,它的回答却截然不同。ChatGPT 这次并未要求提供预期行为,而是在猜测我们想要达成怎样的效果。ChatGPT 一直在根据用户输入进行学习,它似乎已经理解了这段代码的用途——也许就是从当初研究人员们的提示中学习而来。我们的验证交流与研究报告不同,而且下一次再试可能也不相同。

 


目前,帮助软件工程师查找和修复 bug 的产业已经汇聚起 6 亿美元的体量。此次研究的成功,也许将重新定义这块可观的业务市场。Sentry 等流行平台已经成为软件团队的标配工具,通过发布问题报告和提供修复建议,大大增强开发者们编写高质量代码的能力。

 

OpenAI 召集数百程序员,教 AI 写代码

 

无论是 bug 修复软件开发商还是软件工程师自己,显然都注意到了这波堪称历史转折点的趋势。ChatGPT 的所有者 OpenAI 也在不断增强 AI 的编程能力,根据 Semafor 的一份报告,OpenAI 在过去 6 个月中加大招聘力度,已经在全球范围内悄悄聘请了上千名承包商来培训其 AI 学习软件工程。 

 

在这近 1000 名承包商中,约 60% 的人负责“数据标记”,即创建大量图像、音频剪辑和其他信息,用于训练 AI 工具或自动驾驶系统;另外 40% 则是程序员,主要负责为 OpenAI 的模型创建数据以学习软件工程任务。

 

此前,OpenAI 从 GitHub 上抓取代码来训练其模型,而且 OpenAI 于 2021 年 8 月推出的产品 Codex,已经可以实现将自然语言转换为工作代码,现在该公司的招聘热潮表明它正在进一步推进该技术,甚至有可能为一些程序员岗位创造出一个替代工具。 

 

Semafor 采访了南美的一位工程师,他表示自己参加了 OpenAI 的面试,该过程包含了五小时的无偿编码测试。这个测试有两个部分组成:对于一个给出的编码问题,OpenAI 要求他用书面英语解释他将如何处理这个问题,并给出一个具体解决方案;查找 AI 代码中的错误并提供有关如何修复错误的解释。这位工程师告诉 Semafor,他认为公司希望将人类的思维过程输入到其人工智能技术中。 

 

事实上,据 Insider 最近的报道,一些亚马逊员工已经开始使用 ChatGPT 来帮助编码。亚马逊内部的 Slack 消息显示,ChatGPT 已经被亚马逊用于许多不同的工作职能中,包括回答面试问题、编写软件代码和创建培训文档等。

 

一名员工在 Slack 上表示,亚马逊 Amazon Web Services(AWS)云部门已经成立了一个小型工作组,以更好地了解人工智能对其业务的影响。通过测试,该团队发现 ChatGPT 在回答 AWS 客户支持问题方面“做得非常好”。此外,人工智能工具在创建培训文档方面也“非常出色”,在企业战略问题方面“非常强大”。另外,这名员工还在 Slack 上称,ChatGPT 在为 AWS Aurora 数据库工程师编写故障排除指南和回答“困难的”支持问题方面也“非常出色”,它还能够“弄清客户的公司目标”。

 

现在还取代不了程序员,那将来呢?

 

随着数百名程序员齐心协力“教”模型如何编写基本代码,ChatGPT 背后的技术可能会朝着一种新的软件开发方向发展,就像重型设备对建筑行业一样,给软件行业带来变革意义。

 

而且自从 ChatGPT 能力开始显现后,“程序员要失业了”、“取代程序员”之类的声音已经不绝于耳。大多数人对此嗤之以鼻,毕竟过去几十年来,我们听够了类似的声音,云服务、无服务器计算、低代码和无代码......每个技术浪潮的到来,都有人喊出“程序员要被替代了!”

 


但还是有相当“激进”的声音,认为这次“替代程序员”并不是又一个“狼来了的故事”。

 

今年一月份的 ACM 通讯发表了一篇名为“编程的终结”的文章,预测在人工智能驱动的未来“编程将过时”。作者 Matt Welsh 是 Fixie.ai 的首席执行官兼联合创始人,他曾是哈佛大学计算机科学教授、谷歌工程总监、苹果工程主管。

 


我相信“编写程序”的传统想法正在走向灭绝,事实上,除了非常专业的应用程序之外,我们所知道的大多数软件将被经过训练而不是编程的人工智能系统所取代。在需要“简单”程序的情况下(毕竟,并非所有内容都需要在 GPU 集群上运行数千亿个参数的模型),这些程序本身将由 AI 生成,而不是手动编码。

 

未来的工程师只需敲击几下键盘,就能启动一个包含四亿亿亿参数的模型实例,这个模型已经对人类知识的全部范围(或是部分)进行了编码,并随时准备执行机器要求的任何任务。让机器做自己想做的事,大部分脑力工作将是提出正确的示例、正确的训练数据和正确的方法来评估训练过程。

 

我认为计算机科学作为一个领域正处于一个相当大的动荡之中,我们中很少有人真正做好了准备。

 

“我认为现在的争论主要围绕这些人工智能模型将在多大程度上彻底改变软件行业,”Welsh 在一个视频采访中说,“这更多是一个程度的问题,而不是它到底会不会发生……”

 

我们认为,现在 ChatGPT 取代程序员是不太可能的,但是也许下一代开发人员必须习惯人工智能,毕竟让 AI 帮助我们编程就在不远的未来。

 

参考链接:

https://www.pcmag.com/news/watch-out-software-engineers-chatgpt-is-now-finding-fixing-bugs-in-code

https://www.businessinsider.com/openai-chatgpt-contractors-train-ai-software-engineering-autonomous-vehicles-report-2023-1

https://cacm.acm.org/magazines/2023/1/267976-the-end-of-programming/fulltext

2023-01-30 15:155578

评论

发布
暂无评论
发现更多内容

全球首个开源图像识别系统上线了!人脸、商品、车辆识别一网打尽!

百度大脑

人脸识别 图像识别

zookeeper原生api操作

赵镇

zookeeper

HarmonyOS 实战—服务卡片初体验

爱吃土豆丝的打工人

HarmonyOS 服务卡片 鸿蒙卡片

融云年中大促 新老用户同享超值优惠

融云 RongCloud

用VSCode刷LeetCode

IT蜗壳-Tango

6月日更

“云智技术论坛”即将召开,百度智能云带来端边云全面智能化平台

百度大脑

人工智能 物联网 云智一体

react源码解析19.手写迷你版react

全栈潇晨

react.js

Kafka 源码解析:Server 端的运行过程

华为云开发者联盟

kafka 网络 Server 端 SocketServer

同样都是使用接口,JAVA和Go差距咋就这么大呢?

面向加薪学习

Docker被谁干掉了?

BUG侦探

Docker 云计算 Go 语言

作为新时代的Java工程师,你需要具备什么能力?

卢卡多多

Java 能力提升 6月日更 六月

面试官:谈谈你对geohash的理解和如何实现附近人功能呢?

李阿柯

redis 面试 geohash

☕【JVM监控实战】教会你使用Arthas(监控ElasticSearch服务)

洛神灬殇

JVM 故障定位 Arthas 6月日更

浪潮云说丨叮!这是一份浪潮云物联网平台的简历,请查收!

云计算

不知道我写的链表是否能看懂

八点半的Bruce.D

php 数据结构 链表

Pandas高级教程之:处理缺失数据

程序那些事

Python 数据分析 pandas 程序那些事

带你掌握4种Python排序算法

华为云开发者联盟

Python 编程 算法 排序 冒泡排序

深入浅出 LVS 负载均衡(四)实操 DR 模型、Keepalived DR 模型的高可用

UCloud技术

负载均衡

百度与张江集团达成战略合作,AI助推上海城市数字化转型

百度大脑

人工智能

原来 spring.xml 配置的 destroy-method 需要用到向虚拟机注册钩子来实现!

小傅哥

Java spring 注册虚拟机钩子 init-method destroy-method

anyRTC 重磅推出在线实时 K 歌解决方案

anyRTC开发者

音视频 WebRTC 实时通讯 在线KTV

超清音质实时会议系统的背后 ,深入剖析 AliCloudDenoise 语音增强算法

阿里云CloudImagine

阿里云 音视频 语音 视频会议 算法实践

分布式锁相关探索

常清静

redis 分布式锁 zookeeper分布式锁 redisson 分布式锁

想要做好微服务化,这个核心对象要管好

BoCloud博云

微服务

云小课 | 云硬盘不用了如何处理?

华为云开发者联盟

华为云 云硬盘 退订 删除 回收站

JAVA面向对象(十一)--多态

加百利

Java 6月日更 多态

bzz|chia矿池挖矿系统APP开发搭建

薇電13242772558

区块链

破局团伙作案风险——图卷积神经网络(GCN)算法

索信达控股

金融科技 数字化转型 数据建模 风险管理 图卷积神经网络

拍乐云 x 美上美学|监管当下,如何回归教育本质,打造品质和体验?

拍乐云Pano

RTC

使用 Java 编写 Apache APISIX 插件

API7.ai 技术团队

Java 云原生 后端 插件 网关

如何设计好一个接口

🎄新

架构 设计 接口

数百程序员专门教AI写代码、40个bug能修复31个,“取代程序员”这次要成真了?_AI&大模型_核子可乐_InfoQ精选文章