限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

编程已死,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:0044691

评论 1 条评论

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

应用容器化转型系列-容器部署进阶

品高云计算

VPS服务器搭建指南:快速、简单、高效的秘诀大揭秘

一只扑棱蛾子

VPS VPS服务器

在线教育如何基于小程序进行技术创新

Onegun

小程序 在线教育

HarmonyOS传感器开发指南

HarmonyOS开发者

HarmonyOS

1天开发一个教育类App!我是怎么办到的

FN0

小程序 App

借助工具落地提高外包软件项目代码提交规范

知者如C

企业如何选择安全又快速的大文件传输平台

镭速

大文件传输 大文件传输平台

《社交泛娱乐出海作战地图》加印领取啦!

融云 RongCloud

地图 社交 泛娱乐 出海 一图流

云小课|HSS教您如何应对LockBit勒索事件

华为云开发者联盟

云计算 后端 华为云 主机安全 华为云开发者联盟

产学研合作新篇章:东南大学OpenHarmony技术俱乐部成立,专家进校园共谋发展

科技热闻

Web 3.0最热门趋势:基于NFT的DAO-NFT和DAO如何彻底改变 Web3.0

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

办公软件定制开发在企业发展中的优势

Geek_16d138

APP软件开发 软件定制

优雅实现API接口开关:让你的应用更可控

树上有只程序猿

spring-boot API接口

99%的人不知道的Docker干货

伤感汤姆布利柏

Docker 程序员 低代码 干货

Python subprocess模块的高级玩法

秃头小帅oi

Python 程序员 低代码 subprocess 前沿

融云 Global IM UIKit 正式上线,开发更自由,服务更稳定

融云 RongCloud

产品 开发 IM API Global IM UIkit

什么是工业元宇宙?如何利用版本控制来应对工业元宇宙的挑战?

龙智—DevSecOps解决方案

元宇宙

集群 CPU 利用率均值达 45% ,揭秘小红书规模化混部技术实践

小红书技术REDtech

cpu #云原生

「我在淘天做技术」迈步从头越-阿里妈妈广告智能决策技术的演进之路

阿里技术

广告 淘天 阿里妈妈 广告智能决策技术 自动出价

OpenHarmony亮相MTSC 2023 | 质量&效率共进,赋能应用生态发展

OpenHarmony开发者

OpenHarmony

Vue 实现低代码开发平台,没想到这么好用!

伤感汤姆布利柏

打破障碍:克服数字化应用挑战的策略

互联网工科生

数字化

【专业测试工具推荐】优化测试流程,高效完成测试工作!

Liam

程序员 测试 自动化测试 接口测试 测试工具

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