0

0

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

WBOY

WBOY

发布时间:2023-06-12 13:04:56

|

1651人浏览过

|

来源于搜狐

转载

编译 | 核子可乐、凌敏

GitHub Copilot、ChatGPT 等 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 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

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

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

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

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

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

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

ChatGPT 说得没错,逻辑很通。在仔细研究了建议的替换代码后, Meyer 发现了某些可疑的部分。于是,Meyer 进一步提问:

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

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

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

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

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

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

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

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

Meyer 继续追问了下去:

喜鹊标书
喜鹊标书

AI智能标书制作平台,10分钟智能生成20万字投标方案,大幅提升中标率!

下载

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

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

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

Meyer知道如何解决问题,但和大多数程序员一样,他也常犯错误。他希望 AI 编程助手可以监督自己,提醒他注意陷阱并在犯错时给予纠正。换言之,他希望 AI 能成为高效有用的结对编程伙伴。然而,实验结果表明,AI 编程工具类似于高端的研究生,不仅聪明而且博览群书,还有着一贯的礼貌并愿意道歉。即使回顾过去,它依然显得粗糙不精准,所谓的帮助对 Meyer 没有什么用。

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

Meyer 认为,当前生成式 AI 工具确实能够在某些领域出色地完成工作,甚至胜过大部分人类的水平:相关结果来得很快、令人信服,乍看之下甚至不亚于顶级专家,原则上也没什么大问题。该翻译工具除了能够生成营销手册和进行网站内容的粗略翻译外,还展现出卓越的医学图像分析能力。

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

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

Meyer指出,虽然AI助手在某些方面表现非常出色,但它们不是逻辑性的产物,而是善于操作文字的高手。大型语言模型能够自如地表达和生成看起来没有太大错误的文本。虽然这样的表现对于许多应用场景已经足够,但仍然不适合编程需求。

现阶段的人工智能可以协助用户生成基本框架,并给出相对可靠的答案。但也就止步于此了。以目前的技术水平来看,它还完全输出不了能够正常运行的程序。

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

写在最后

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

AI 技术目前仍处于早期发展阶段,但这些限制并非永久不可克服的障碍。也许在未来的某一天,生成式 AI 编程工具能够克服这些障碍。要让它真正具备编程能力,就需要深入探讨和研究规范和验证方面。

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

原文链接:

抗拒使用 GPT-4 和 Copilot 写代码,拥有 19 年编程经验的老程序员“面试”被淘汰

马化腾称“收紧队形”,腾讯回应;微软发布自己的Linux发行版;OpenAI回应GPT-4 变笨 | Q资讯

向量数据库?不要投资!不要投资!不要投资!

年薪60万的数据分析师工作保不住了?!阿里达摩院研究发现,改用GPT-4成本只需几千元

报告推荐

包含 ChatGPT、Claude、Sage、天工 3.5、文心一言通义千问、讯飞星火、Moss、ChatGLM、vicuna-13B 等大语言模型产品,四大维度+12个细分维度展现其综合能力,通过技术视角探索大模型产品的编程能力,提升 AGI 创业方向选择、工作实际应用等方面的最新认知。扫码添加InfoQ 小助手,解锁全部资料。

直播预告

AI 大模型时代,架构师面临哪些机遇和挑战?今晚 20:00,Mobvista 技术 VP 蔡超,直播连线科大讯飞 AI 研究院副院长李鑫,为你揭晓答案!更有 ArchSummit 深圳站精彩专题提前剧透,知识豪礼送不停!抓紧预约!

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

403

2023.08.14

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

348

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2074

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

347

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

323

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

410

2023.10.16

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

398

2023.10.16

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.6万人学习

Go 教程
Go 教程

共32课时 | 3.9万人学习

R 教程
R 教程

共45课时 | 5.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号