写点什么

数百程序员专门教 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:155565

评论

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

监控之美——Prometheus云原生监控

华章IT

运维 云原生 监控 Prometheus

甲方日常 58

句子

工作 随笔杂谈 日常

LeetCode题解:17. 电话号码的字母组合,队列,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

实体经济的数智化要塞,为什么是供应链?

脑极体

GitHub 标星 1.3k+,一款超赞的用于字符串处理的 Java 8 库,附带源码分析

沉默王二

Java GitHub 字符串

高德最佳实践:Serverless 规模化落地有哪些价值?

阿里巴巴云原生

阿里云 Serverless 云原生

收藏 | 阿里程序员常用的 15 款开发者工具(2020 版)

阿里巴巴云原生

阿里云 程序员 开发者 云原生 Java 25 周年

技术实践丨基于MindSpore框架Yolov3-darknet模型的篮球动作检测体验

华为云开发者联盟

AI 华为云 modelarts

连企业业务模式都搞不清楚,何谈研发体系建设?

菜根老谭

研发体系

看了 5 种分布式事务方案,我司最终选择了 Seata,真香!

程序员小富

Java 分布式事务 seata

接口测试和性能测试的区别

测试人生路

软件测试 性能测试 接口测试

前嗅教你大数据:常见的网站反爬策略与解决方案

前嗅大数据

大数据 数据采集 代理IP 网站反爬 反爬策略

淘宝APP高并发架构设计pdf已开源:从架构分层到实战维护,挑战全网

Java~~~

Java 编程语言 高并发 淘宝 高并发系统设计

Linux笔记(二): vim 基本操作

Leo

Linux 学习 大前端

Spring 源码阅读环境的搭建

程序员小航

spring 源码 环境安装 源码阅读 spring 5

Linux 服务器开发学习路线总结(配图 c/c++ )后台开发、Golang后台开发、后端技术栈

Linux服务器开发

Linux 后台开发 后端 Linux服务器 Go 语言

基于 GraphQL 的信息聚合网关的实现与展望

QiLab

高并发系统设计 graphql

广电总局严打劣迹主播:净化行业环境迫在眉睫

石头IT视角

一文搞懂所有HashMap面试题

编程 面试 计算机

极客大学 - 架构师训练营 第十周总结

9527

Java开发利器之重试器

Java老k

Java

感恩,改变世界的开发者们!

京东科技开发者

开发者 程序人生

支付宝阿牛整合Netty+Redis+ZooKeeper「终极版」高并发手册

Java架构追梦

Java redis zookeeper 面试 Netty

浅谈原子操作

阿里云基础软件团队

内核

架构师训练营第十周作业

我是谁

极客大学架构师训练营

微前端架构初探

徐小夕

Java 大前端

红外遥控接收发射原理及ESP8266实现

IoT云工坊

人工智能 物联网 esp8266 红外遥控 pwm

CPU虚拟化系列文章1——x86架构CPU虚拟化

华章IT

云计算 Linux cpu 操作系统 虚拟化

一口气看完45个寄存器,CPU核心技术大揭秘

程序员架构进阶

cpu 操作系统 寄存器 核心

Windows环境下如何进行线程Dump分析

Java老k

Java dump

区块链可信数据服务平台搭建解决方案

t13823115967

区块链 可信区块链

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