AICon议程上新60%,阿里国际、360智脑、科大讯飞、蔚来汽车分享大模型探索与实践 了解详情
写点什么

编程已死,AI 当立?教授公开“唱反调”:AI 还帮不了程序员

  • 2023-06-07
    北京
  • 本文字数:2315 字

    阅读完需:约 8 分钟

编程已死,AI当立?教授公开“唱反调”:AI 还帮不了程序员

GitHub CopilotChatGPT 等 AI 产品的火爆出圈,让更多人看到 AI 在编程方面展现出的极强能力。一时间,关于“AI 取代程序员”、“AI 当立、编程已死”的言论不绝于耳。


前段时间,前哈佛大学计算机科学教授、谷歌工程主管 Matt Welsh 在芝加哥计算机协会的一个虚拟会议上表示,ChatGPT 和 GitHub Copilot 预示着编程终结的开始。Welsh 断言,生成式 AI 将在 3 年内终结编程


但也有一些人对此持反对意见。近日,Constructor Institute 教授、Eiffel Software 首席技术官 Bertrand Meyer 在 ACM 上发表文章公开“唱反调”,他认真研究了一番 ChatGPT 到底是怎么编程的,最终得出结论:AI 还帮不了程序员。

ChatGPT 编程实验


前段时间,Meyer 通过一系列文章讨论过如何解决虚构出来的二进制搜索问题,虽然内容看起来都不错,每篇文章也都提出了自己的解答版本,但其实大部分都是错的。(延伸阅读:https://bertrandmeyer.com/2020/03/26/getting-program-right-nine-episodes/


以此为素材,Meyer 把这些文章提交给了 ChatGPT(版本 4)。



AI 选手先是对问题做出了描述:



这个问题实际可以出现在任意数量的元素上,而不仅仅是两个。但想要证明一个程序不正确,举出一个反例就足够了(但要证明它是正确的,则需要证明其适用于所有示例)。Meyer 只问了程序是否正确,并没提具体要怎么修复,但 ChatGPT 还是热心给出了如下建议:



这里的评论部分确实很有帮助:



ChatGPT 说得没错,逻辑很通。但在认真查看建议的替换代码之后,Meyer 发现了某些可疑的部分。于是,Meyer 进一步提问:



在尝试修复 Meyer 的错误时,ChatGPT 输出了另一个同样有错的版本,只不过错得跟 Meyer 不一样。值得一提的是,ChatGPT 每次都试着给出新的版本——在纠正之前错误的同时,却又带来了新问题。


Meyer 还发现,ChatGPT 特别擅长道歉:



ChatGPT 一直在自说自话,积极向 Meyer 推荐它认为经过修正的解决方案:



到这里,Meyer 甚至不打算尝试最新版本正不正确。有经验的程序员朋友都知道,揪住一个案例不断添加特定修复,绝不是生成正确程序的最佳途径。


于是 Meyer 也选择继续保持礼貌:



精彩的来了:ChatGPT 决定向 Meyer 介绍循环不变量的概念!



Meyer 从未明示或暗示称“需要一种更系统的方法来验证算法的正确性”,他只是想知道 ChatGPT 要如何证明它推荐的答案是对的,但绝对没有使用“系统的”或者“验证”这类字眼。之所以出现这一幕,可能是基于大型语料库的统计推理给了 ChatGPT 信心,让它认定用户肯定会质疑输出代码的正确性,然后要求以系统方法给出验证。


Meyer 继续追问了下去:



ChatGPT 随后给出了很好的答案,甚至包括 ACM 计算调查当中收录的循环不变量调查内容。而且它仍然是先夸一句再解释问题,非常客气:



到这里,Meyer 不打算再继续追问了。


作为一名程序员,Meyer 知道如何解决问题,但和大多数程序员一样,他自己也会经常犯错误。他希望 AI 编程助手可以监督自己,提醒他注意陷阱并在犯错时给予纠正。换言之,他希望 AI 能成为高效有用的结对编程伙伴。但实验结果并非如此:AI 编程工具就像个自大的研究生,聪明且博览群书,也始终保持着礼貌并愿意道歉。可回头来看,它仍然草率且不够可靠,所谓的帮助对 Meyer 来说毫无用处。

现代 AI 成果并不能生成正确的程序


Meyer 认为,当前生成式 AI 工具确实能够在某些领域出色地完成工作,甚至胜过大部分人类的水平:相关结果来得很快、令人信服,乍看之下甚至不亚于顶级专家,原则上也没什么大问题。比如生成营销手册,或者是粗略翻译网站内容之类,它的翻译效果相当不错,此外还有医学影像分析等等。


但编程的要求完全不同,它对产出程序的正确性有着严格要求。开发者可以容忍一定的错误,但其核心功能必须正确。如果客户下达的指令是买进 100 股微软股票,同时卖出 50 股亚马逊股票,那程序绝不应该执行相反的操作。专业程序员有时候会犯错,这时候就看 AI 助手能不能帮上一把了。


然而,现代 AI 成果并不能生成正确的程序:它产出的程序实际是从之前见过的大量原有程序中推理而成。这些程序看似靠谱,但却无法完全保障正确性。(这里所说的现代 AI,是将其与早期 AI 区分开来——后者试图通过专家系统等方法重现人类的逻辑思维,但在很大程度上已经失败。如今的 AI 完全通过统计推理实现基本功能。)


Meyer 表示,尽管 AI 助手时有惊艳发挥,但它们并不是逻辑的产物,而是玩弄文字的高手。大语言模型都拥有流畅的表达能力,非常擅长生成看起来没什么大错的文本。虽然这样的表现对于许多应用场景已经足够,但仍然不适合编程需求。


现在的 AI 能够帮助用户生成基础框架,以大致靠谱的效果给出答案。但也就止步于此了。以目前的技术水平来看,它还完全输出不了能够正常运行的程序。


但这对软件工程行业来说并不是坏事。Meyer 认为,面对种种“编程已死”的宣传,这次实验提醒我们不管人类程序员还是自动编程助手,都需要规范的约束,并且任何产出的备选程序都有待验证。在最初的惊艳过后,人们终将意识到这种一键式生成程序的能力并没有多大作用。考虑到它往往无法正确实现使用者想要的效果,草草上线的自动化功能也许反而有害。

写在最后


Meyer 并不是唱衰 AI 编程,他认为,审慎的态度或许能帮助我们构建出具备可靠能力的终极 AI 系统。


目前,AI 技术尚处于早期发展阶段,这些局限性也并不是永远跨越不了的障碍。也许在未来的某一天,生成式 AI 编程工具能够克服这些障碍。但要让它具备真正的编程能力,还得在规范和验证方面做一番深入的探讨和研究。


那么问题来了:你是否使用过 AI 编程工具?使用的是哪款工具?准确度如何?这些工具是否真的帮助到了你?欢迎在评论区写下你的使用体验。


原文链接:


https://cacm.acm.org/blogs/blog-cacm/273577-ai-does-not-help-programmers/fulltext

2023-06-07 14:0025131

评论 1 条评论

发布
用户头像
不是还有测试吗?
2023-06-08 11:24 · 江苏
回复
没有更多了
发现更多内容

支付系统概述(十三):资金安全保障

agnostic

支付系统设计与实现

推荐几个AI的好工具,大家快收藏

AIWeker

AI工具

foobar2000 for mac(多功能音频播放器)v2.6.4免激活版

iMac小白

foobar2000中文版 foobar2000破解版 foobar2000下载

Linux设备驱动系列(11) —— sysfs文件系统

Linux内核拾遗

C语言 linux开发 Linux内核 sysfs 设备驱动

为什么有的人说技术不重要,有的人说重要?

golang架构师k哥

编程 程序员 技术 计算机

龙智【“AI”协同 创未来】线下研讨会报名进行中:全面解读Jira、Confluence及Jira Service Management等Atlassian产品及其AI功能

龙智—DevSecOps解决方案

Git常见问题:git pull和git pull--rebase二者区别

百度搜索:蓝易云

git 云计算 Linux 运维 云服务器

Crossplane 实战:构建统一的云原生控制平面

Se7en

MouseBoost PRO for Mac:Mac用户的鼠标神器

iMac小白

MouseBoost Pro MouseBoost PRO下载 MouseBoost PRO破解版 MouseBoost PRO中文版

Excel 2021 LTSC for Mac:强大且稳定的电子表格处理工具

iMac小白

Excel 2021破解版 Excel 2021永久版 Excel 2021 LTSC下载

2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k。 要进行分割操作,直到字符串s为空: 选择s的最长前缀,该前缀最多包含k个不同字符; 删除该前缀,递增分割计数。如果有剩余

福大大架构师每日一题

福大大架构师每日一题

写作的关键问题:要不要写、怎么写、写什么?

石云升

写作 成长 阅读

git中的cherry-pick和merge有些区别以及cherry-pick怎么用

百度搜索:蓝易云

git 云计算 Linux 运维 云服务器

Mysql和Oracle的语法区别?

百度搜索:蓝易云

MySQL oracle sql Linux 运维

Web server failed to start. Port 8080 was already in use.之解决方法

百度搜索:蓝易云

云计算 Linux 运维 Web 8080

Alfred 5 for Mac(Mac应用快速启动器)

iMac小白

Alfred 5下载 Alfred 5 Mac Alfred 5破解版

《自动机理论、语言和计算导论》阅读笔记:p352-P401

codists

编译原理

PrismNET棱镜协议,我是如何从一名穷屌丝逆袭的!

PrismNET

dapp web3 #区块链 PrismNET棱镜协议 棱镜协议

KeyShot 2024 Pro for Mac 3D渲染和动画制作软件

iMac小白

编程已死,AI当立?教授公开“唱反调”:AI 还帮不了程序员_AI&大模型_凌敏_InfoQ精选文章