“Claude Code 这条路线错了”,元老级 AI 大师 Jeremy Howard 开炮:马斯克和 Dario 根本不懂现代软件工程
AI 很快会自动化软件开发?大模型未来可以直接输出机器码?Jeremy Howard 不客气地说:说这话的人,多半没当过现代软件工程师。
这句话出自一位重磅人物。Jeremy Howard 是 fast.ai 创始人、Kaggle 传奇人物,也是 ULMFiT 论文作者——后者几乎定义了后来“预训练 + 微调”的语言模型范式。某种意义上,今天大家习以为常的很多大模型训练思路,都能往回追溯到他那一代研究者的探索。也因此,当 AI 编程、智能体和自动化软件开发成为行业最热话题时,他的判断尤其值得听一听。
他首先点名批评了当下流行的一些技术话题。比如 Anthropic CEO Dario Amodei 在《技术的青春期》中提出,顶尖工程师借助 AI 可以获得极高效率,并由此推断普通软件工程师的工作很快会被自动化。Jeremy 认为这种推断“这根本说不通”。
同样被点名的还有马斯克。后者曾表示,大语言模型未来可以直接输出机器码,到那时人类将不再需要库文件和编程语言了。Jeremy 的评价是:这帮人都没当过现代软件工程师。在他看来,很多人误以为软件工程只是把代码输入 IDE,但事实“根本不是”。
他说其实几十年前很多人就觉得即将出现第四代编程语言之类的东西,类似“软件编写越来越简单,再也不需要程序员和软件工程师了,谁都可以生产代码”。但在软件工程这个特殊领域,大模型虽然可以大量生成代码,却并不意味着它能胜任真正的软件工程工作。Jeremy 说自己现在“大概有 90% 的代码都是由模型代劳”,但“这并没有显著提升效率,因为编程从来就不是效率的瓶颈。”
他认为大模型也有能力范围,也会“装作理解”。在很多任务上,这种表象已经足够好用。但一旦问题超出训练数据的分布范围,这种理解就会迅速崩塌,大家会发现“这玩意原来这么蠢……”。
另外,对于 Claude Code,他更是从头批到尾。
最近不少人惊叹 Claude Code 用 Rust 写出了一个 C 编译器。但 Jeremy 与 LLVM 创始人 Chris Lattner 讨论后发现,这个所谓的“新编译器”其实并没有真正突破现有技术路线。因为 LLVM 体系早已存在于大量训练数据中,而 Rust 只是另一种实现语言。将其转换为 Rust,本质上就是在训练数据的片段间进行插值。所以本质上,这仍然是一种风格迁移问题。
“训练数据中已经有构建编译器的方法,而且很多现成的软件都可以实现。”“其本质都是对现有成果的明显照搬。这正是我眼中最核心的挑战所在:要想做出真正原创性的成果,就不能依赖大语言模型。”
除了技术能力本身,Jeremy 也批评了当前 AI 编程工具的发展方向。
在他看来,人类历史上最重要的软件创新——从 Smalltalk 到 APL,再到 Mathematica——都强调人与计算机之间的紧密互动。开发者可以实时操作对象、观察系统状态、调整参数,从而建立直觉和理解。
而像 Claude Code 这样的工具,却走向了相反的方向:开发者只需要输入 prompt,剩下的代码由模型生成,甚至不需要理解整个系统。这种模式虽然看起来效率很高,但却在逐渐削弱开发者对软件系统的理解。
Jeremy 认为,这种趋势是让人类逐渐与自己的代码脱节,甚至有些“不人道”。在他看来,AI 编程真正的挑战并不是让模型写更多代码,而是如何设计一种新的协作方式,让人类和 AI 在同一个交互环境中共同工作,而不是让人类逐渐退出软件开发过程。
更严重的是,Claude Code 这种开发方式还会让人类无法学习新知识,个人能力无法得到提升。企业也正因 AI 编程累积的技术债走向衰亡,这些债务使他们既无法维护现有产品、也难以开发新产品。
“所以我觉得这就是在把企业和员工往被淘汰的绝路上推。无法理解现在竟有这么多大公司的高管在推动这种做法,简直令人惊讶。”
以下是播客整理:
语言模型微调是怎么诞生的
Dr. Tim Scarfe:Jeremy Howard,我大概是从 2017 年、2018 年那会开始关注你的。你那篇著名的 ULMFiT 论文让我印象深刻,当时我在微软工作,还专门就此做过演讲。如今大家理所当然的观点,即只需依托文本语料库对语言模型进行微调,就能持续训练并实现专业化,就是从那篇文章中孕育出来的。
Jeremy Howard: 其实这也不完全是第一次尝试,准确讲其实是第二次。更早几年前 McCann 和 Andrew Dai 也做过类似的研究,但他们忽略了一个关键点——预训练数据集必须是通用语料库。
所以我只是幸运地抓住了这个关键点,但这一切也确实跟我几十年间的哲学与认知科学积累有关系。
我对正则化一直情有独钟,而且尤其推崇这样的实践思路:先构建一套高度灵活的模型,再通过添加正则化项、而非缩减架构规模来增加约束性。
这一点在当时的学术界引发了极大争议,但也并不算是我们的独创见解。Stephen Merity 当时的做法是:选取 LSMT 这种循环神经网络的经典模型(目前的研究也开始逐渐回归此类模型),在保持极致灵活性的同时叠加五种不同类型的正则化方法。他几乎涵盖了一切能想到的正则化类型,而这也成为我的研究起点:构建一套既能随心所欲发挥强大能力,又能按需严格约束的深度学习模型。在此基础之上,我需要海量的文本数据集。有趣的是这同样跟 Stephen 有关,他曾参与 Common Crawl 项目,还协助创建了维基百科数据集。
后来我意识到,维基百科的数据集中其实包含大量预设性假设,比如用 unk 来标记未知词汇,就是说完全采用了经典 NLP 方法。
于是我重构了整套数据集,创建了新版维基百科数据集,现在它也成为我的通用语料库。之后我采用 AWD-LSTM 模型进行训练,仅用一晚时间就成功实现。
当时我用的是一块游戏显卡,前后跑了八个小时。旧金山大学的资源有限,所以我用的好像是一块 2080 Ti 显卡。
第二天清早醒来时,模型训练已经完成——其架构采用的正是如今大家熟悉的三段式。预训练、中训练、后训练。我当时想:既然能预测维基百科的下一个词,模型肯定掌握了大量世界知识。于是我尝试用特定语料进行微调,也就是现在所谓监督式微调数据集,而我用的是电影评论数据集。
事实证明,它特别擅长预测这类文本中可能出现的下一个词,从而掌握大量电影知识。这次的训练只用了大概一个小时,接着又花了几分钟对下游分类器做了微调——用的是一套经典的学术数据集。
我尝试解决的是当时最困难的一种分类问题,即从 5000 条影评中判断观众对于某部影片的情感倾向(正面 / 负面),但如今这项任务已经很简单了。那时候只有高度专业化的模型才能较好完成,甚至有人专门为此撰写博士论文。而我仅用 5 分钟完成微调的模型,就超越了全部原有研究成果。
Dr. Tim Scarfe:这确实令人惊叹,而更值得玩味的就是你那精细的微调方法学成果。
Jeremy Howard: 没错,我们的微调方法是 Fast AI 团队自主研发的。当时 Fast AI 刚刚成立一年,还处于起步阶段。我们当时做了一个极具争议的决定:专注于对现成模型的微调,因为我们坚信微调的力量。同期也有其他研究者在探索这个方向,比如 Jason Yosinski 也做过非常出色的研究。
我记得他在博士期间就研究过如何优化模型及其性能上限,计算机视觉领域也有不少其他研究者在做探索。
我们算是先行者之一,当时不少团队都在深入探索微调技术。我们的想法是,用单一学习率一次性微调整个模型可能行不通,因为模型中不同的层次具有不同的行为特性。
这正是 Jason Yosinski 研究揭示的一大关键。而我们进一步提出了新思路:仅训练末层效率更高,因为只需要对末层进行反向传播。
在确定末层效果良好之后,再逐步扩展到倒数第二层、第三层。我们采用“鉴别式学习率”的机制,即为不同层次分配不同的学习率。
还有另一个我们曾反复强调,但多年来无人在意的关键洞见,即必须对每个 batch 归一化层进行微调。所有归一化层都需要精细微调,因为它们会改变整体的整体规模。只要以此为前提,通常只需微调最后一到两层,就能获得接近顶尖水平的性能结果,整个过程只需要几秒钟。
Dr. Tim Scarfe:是的,鉴别式学习率很有意思。因为当时的主流观点是:如果在模型微调中把学习率设定得过高,就会破坏表示结构。所以大家普遍认为必须采用极低的学习率,否则模型本身就跑偏了。
Jeremy Howard: 那时候还不存在公认的最佳解决方案,也没人讨论过这个话题。就当时的情况看,人们根本就不关注迁移学习。
而 Rachel 和我坚信迁移比任何事情都重要,因为只需要一方把超大规模模型训练出来,其余研究者就能直接进行微调。所以我们决定要钻研这项技术,为此投入大量时间并反复尝试了各种方案。但最终发现,直觉往往才是最简单明了的路径——那些在直觉上可行的方案,基本都跑通了。
这跟当今的机器学习普遍实践有着根本上的差异——如今的研究似乎都围绕着消融实验展开,强调不能做任何假设或者猜测。但这完全不符合实际。我发现几乎所有预期有效的方案都能一次成功,因为我投入大量时间培养出这种直觉,获得了对梯度行为规律的深刻理解。
Dr. Tim Scarfe:但我觉得好像也存在过二元对立的现象:持续学习希望在保持泛化能力的同时持续训练模型,而微调则专注于就特定任务做优化。长期以来存在着这样的认知:模型确实可以做定制,可以按需调整,但这会牺牲泛化能力并削弱表征能力。对这个你是怎么看的?
Jeremy Howard: 没错,确实存在这种现象,但应该没有你讲的那么严重。根本问题在于,人们往往忽略了对激活函数与梯度分析的观察。
因此我们在 Fast AI 软件中内置了一项核心能力:允许用户一览整个神经网络结构。
经过几次操作之后(学习过程只需要几个小时),研究者就能快速意识到当前是属于过拟合、欠拟合或者某个层出现了问题。
这也不算什么奥秘。具体来讲,假如当某些神经元陷入“休眠”状态,即无论如何微调都出现梯度归零——这种情况往往发生在梯度趋向无穷大的情况。但这类问题总能修复,所以实际效果远比大家想象的要好。只要训练得当,适合连续学习的模型也同样能通过微调出色地完成特定任务,只要谨慎处置即可。
Dr. Tim Scarfe:某种意义上,我们确实需要让神经元休眠。让我具体解释一下:我们需要扭曲模型的行为来引入隐式约束,因为没有约束就谈不上创造或者推理能力等等。所以从这个角度我们就能让模型拒绝做某些事,转而去做别的事。
Jeremy Howard: 我倒不这么看。对我而言,在思考 AI 时应该多多参考人类的思维模式,这很有启发。我发现二者行为的相似性要远大于差异性,而我由此产生的直觉往往非常靠谱。
要知道在人类学习新事物时,并不一定要忘却旧知识。所以我发现:当模型尝试学习两项相似的任务时,这两种能力的同时提升效果往往好于只专注单一任务的模型。
Dr. Tim Scarfe:这让我想起 LeCun 实验室的 DINO 论文。虽然当时仅限于视觉模型,但这种自监督学习框架的核心思想仍极其重要:我们在进行预训练时,要尽可能保持多样性和保真度,这样在执行下游任务时才能拥有更多可利用的锚点。
Jeremy Howard: 没错,半监督和自监督学习确实曾是被严重低估的领域。而 Yann LeCun 绝对是该领域最重要的研究者之一。当年我还专门写过一篇博文,就为了吐槽为什么半监督学习方面的研究者那么少。Yann LeCun 冥过我的文章,还推荐了几篇我遗漏的重要文献。但最令我惊讶的是,这种方法的效果居然这么好——本质上就是设计一项预处理任务。
所以设想一下,我们在 ULMFiT 之前就做过这个设想,类似于在医学影像领域取一份组织切片,遮住几个像素块,然后预测原本的内容是什么。
我在南佛罗里达大学带的一些学生就在做这方面研究,基本上就是在复用我们和其他人已经在视觉领域做过的工作。比如这种遮罩方法就不是我们的发明,在计算机视觉领域早有实践,但我们会自然想到在预测单词方面也值得尝试。
以通用预训练模型为起点这一核心思路,在计算机视觉领域早已存在。其实有篇 2015 年左右发表的经典论文,内容完全基于实证研究,展示了当我们用预训练的 ImageNet 模型去预测雕塑家的身份或者建筑风格时,该模型在每项任务中都取得了最先进的结果。但令我惊讶的是,人们看到这些成果后竟然没有联想到:这种方法也理应适用于其他领域——包括基因组序列分析、语言处理乃至其他方向。我发现人们往往缺乏想象力,总认为某项技术只能局限于特定领域。
Dr. Tim Scarfe:确实如此,我觉得这里面有两个关键点。首先,我们其实是暗示存在一种类似古德哈特定律(即任何被设定为目标的衡量指标,都将失去反映真实情况的能力)的短视效应——我们最终得到的只是想要的结果,其他一切都会被牺牲掉。事实显然并非如此,因为在语言模型中我们是可以优化困惑度的。如你所说,这似乎涉及到分布假说,即词语的含义取决于其上下文环境。当我们拥有海量关联数据时,无论是掩蔽自动预测还是类似的技术,模型似乎都能生出一种可称为“理解力”的东西。
Jeremy Howard: 我始终将其视为抽象层次。当模型需要预测时,比如判断棋谱的开局是不是采用了 Bobby Fischer 的习惯下法,再以国际象棋的标准记谱法预测后续棋路,那它就首先得掌握棋谱知识。至于判断“此提案是否被 1956 年的美国总统否决”,那么模型不仅要知晓总统的身份,更要理解“总统”这一制度性概念的存在,进而理解领导人概念、人类社会中的等级制度、人类族群乃至物理世界的存在。如果不掌握这些层层递进的认知,就无法准确预测句子中的下一个词。
所以我的基本思考是这样:建立 ULMFiT 的初衷,正是要尽可能压缩这种知识的获取过程,还必须在模型深处建立起抽象层次结构。如果做不到这一点,谈何精准预测下一个词?要知道,深度学习模型的本质就是通用学习机器,我们又掌握了通用训练方法。因此我推测:只要数据正确且硬件足够强大,理论上我们就能构建起这种词序预测机,它没有理由不能隐式构建起对文本描述对象的分层结构化理解。
Claude Code 的“创造力”,本质上还是插值组合
Dr. Tim Scarfe:但我觉得 AI 的认知还相当浅显。它们确实掌握着无数表层统计关系,也能实现极强的泛化能力。但关键在于,我想参考你之前关于创造力做出过的论述。我认为知识的本质就是约束,而创造力则是在遵循这些约束的同时推动知识演进。所以 AI 并不具备创造力,你之前也持有相同的观点。既然如此,你一方面承认它们具备认知能力,另一方面又否认其具备创造力。这该怎么理解呀?
Jeremy Howard: 我倒不记得自己明确这么讲过。只记得在跟 Peter Norvig 一起接受采访时,我们都提到:其实 AI 在某种意义上是具备创造力的,只是我们用词要谨慎一些。比如我非常敬重的 Piotr Wozniak,他重新发现了间隔重复学习法,由此建立起 SuperMemo 系统,获得了现代记忆大师的称号。
他之所以将毕生精力投入到对记忆的研究,根本原因在于他坚信创造力源自海量的记忆储备,即以全新的方式组合记忆内容才是激发创造力的绝佳途径。
大语言模型在这方面表现相当出色,但也存在一种其完全无法胜任的创造力,也就是突破分布式模型的局限。我认为这就是解决这个问题的关键所在。
不过我想强调的是:对这个问题必须保持极度审慎的态度。如果简单断言大模型缺少创造力,其实是种极具误导性的表达——它们确实能做出看似具有创造性的表现。但要进一步追问:大模型能不能真正突破训练分布的边界,答案肯定是否定的。但训练数据集如此庞大,其中插值的方式又极其繁多,我们还远不清楚它的边界到底在哪里。当然,我每天都能见证这种现象——毕竟我的工作就是研发,始终游走在训练数据的边界附近,做出各种前所未有的尝试。
我发现了一种奇怪的现象,不知道你有没有见过,我每天都会遇到很多次:语言模型会突然从极聪明变得特别蠢,甚至连最基础的逻辑前提都无法理解。它就好像突然意识到:哎呀,问题超过我的训练数据分布范围了。变笨就是一瞬间,任何讨论都毫无意义,模型突然就失控了。
Dr. Tim Scarfe:没错,我非常欣赏 Margaret Boden 提出的创造力分层理论:创造力分为组合式、探索式和变革式三种。而当前的模型确实已经发现了组合式创造力的秘密。
但于我而言,关键在于约束的设置。这也是 Boden 的观点,连达芬奇都说过:创造力的本质就是约束的艺术。你提到的对话工程学也是这个道理。问题在于,当我们跟语言模型对话时,本质上就是给予规范,整个过程需要反复迭代。我们人类的思考也是如此,智能的实现就是在大脑中构建想象形式的乐高积木,同时遵守各种约束条件。
在遵守这些约束并持续演进之后,由此带来的成果就是创造。所以在为语言模型添加约束时,无论是通过监督、批评者还是验证者的方式,它们就能展现出创造力。AlphaEvolve 就已经呈现出这样的能力。但问题在于,当模型脱离约束,它们身上就会出现我们谈到的行为塑造现象。正因如此,语言模型也就无法突破自身训练数据的分布范围。
Jeremy Howard: 我想说的是,语言模型之所以无法突破分布范围,根本原因是这类数学模型本身的局限性。虽然理论上可行,但实际效果极差。就像二维数据的拟合曲线一旦超出数据覆盖区域,曲线就会在空间内向各个方向疯狂延伸。
我们本质上就是在做这件事,只不过是在多维空间中操作。当人类知识库里的全部内容都成为组合素材时,语言模型或许会表现出震惊世人的组合式创造力。
我觉得这也是人们常常误解的点,比如昨天我跟 Chris Latner 讨论 Claude Code 怎么编写 C 编译器时,他认为这是款纯净室编译器,因为它是用 Rust 编写的。
Chris 本人就是当今使用最广泛的 C/C++ 编译器的缔造者,基于 LLVM 运行,而 LLVM 则是编译器普遍采用的基础架构。而且神奇的是,Chris 压根没用过 Rust,也没提供过任何编译器源代码。
所以 Rust 版本的 C 编译器就是净室实现,但也跟大模型的工作原理存在出入。Chris 的所有工作都体现在了大模型的训练数据当中;LLVM 得到广泛应用,无数项目都基于它构建,其中也包括各种 C/C++ 编译器。将其转换为 Rust,本质上就是在训练数据的片段间进行插值。所以本质上,这就是风格迁移的问题。所以最多只能称之为组合式创造力。从生成的代码仓库就能发现,新项目直接复制了 LLVM 代码片段,而 Chris 坦言“我当初犯了错,就不该采用这种没人用的办法”。
而 AI 是唯一照搬了 Chris 这种办法的开发者。之所以会这样,就是因为大模型还没能真正发挥创造力。它还是在训练数据当中寻找某种非线性的平均点——比如在 Rust 技术和编译器构建技术间找交集。
Dr. Tim Scarfe:这些说法都成立。首先,我们不能也不该低估这种组合式创造力的规模。虽然很多代码片段都来自网上公开的结果,但它也确实搭建了完整的测试框架——每次代码提交都会触发测试,相当于建立了实时审查机制。这就是 AI 自己搞的自主反馈循环。
某种程度上,这跟 OpenAI 和 Gemini 最近的研究非常相似——让 AI 自建评估函数来尝试解决数学问题。但人们往往忽略了一点:运用评估函数本身,就代表着 AI 对问题并不完全理解。它仍然在通过暴力搜索和统计模式匹配来解题,并将验证器当作约束。
Jeremy Howard: 所以说大模型根本没必要这么搞。因为训练数据中已经有构建编译器的方法,而且很多现成的软件都可以实现。所以它直接借用现有方案并将其转换成了 Rust 语言。单凭这点,就已经相当惊人。
虽然我对数学不像对计算机科学那么熟悉,但我也常跟数学家们交流,发现在埃尔德什差异问题(对于任意常数 C,总能找到等距的有限子序列,使其元素累加和的绝对值超过 C)等领域也存在类似的现象。部分问题虽然得到了新解,但并非顿悟式的突破。大模型往往还是在整合人类已知的相关知识点来解题。
“这帮人都没当过现代软件工程师”
Dr. Tim Scarfe:再来聊聊 Claude Code。你曾经深入探讨过氛围编程的问题,Rachel 也写过一篇有趣的文章,引用 METR 研究所的成果,发现人们在进行氛围编程时生产力反而有所下降。
还有 Anthropic 的研究,这里我们稍做回顾。Dario 前段时间发表了一篇题为《技术的青春期》的文章,大意是:Anthropic 拥有众多顶尖软件工程师,在 AI 辅助下开发效率极高。而后他将这种情况粗暴推广到普通软件工程师群体,宣称 AI 很快就能全面实现工作自动化,届时将导致大面积失业。
Jeremy Howard:这根本说不通。 几天前马斯克也讲过类似的话,说什么大语言模型可以直接输出机器码。到那个时候,我们就完全不需要库文件和编程语言了。
问题在于,这帮人都没当过现代软件工程师。我不确定 Dario 有没有做过真正的软件工程师岗。软件工程是门特殊学科,很多人误以为软件工程就是简单把代码输入到集成开发环境。根本不是,编程的本质是另一种风格迁移问题。我们拿到待解决问题的规范说明,而后运用组合式创造力找出训练数据中能够填补两者间隙的部分来解决问题,再将其与目标语言的语法进行插值处理,最终形成代码。
Fred Brooks 几十年前曾写过一篇著名论文《没有银弹》,其内容对当下的情况做出了精准预言。当时很多人都觉得即将出现第四代编程语言之类的东西,类似“软件编写越来越简单,再也不需要程序员和软件工程师了,谁都可以生产代码”。但他则预言称,技术的进步最多只能带来 30% 的效率提升。
这就是他的结论,未来十年之内软件开发的效率提升空间只有 30%。我虽然觉得没必要这么悲观,但软件工程中的绝大部分工作确实不止于编写代码。某种意义上,Dario 的部分观点也有道理,比如当下很多人已经在靠语言模型为生成代码。我自己就是这样,大概有 90% 的代码都是由模型代劳。但这并没有显著提升效率,因为编程从来就不是效率的瓶颈。
语言模型确实给我的研究工作带来不少帮助,比如预判哪些文件需要修改。但在我尝试让大模型设计前所未有的解决方案时,结果永远是场灾难。
实际上,它每次给我的都是看起来差不多的设计,而这往往就是灾难的根源。我明明想要创造新事物来消除这种相似性,但它总在延续过去,这就是最大的冲突点。
Dr. Tim Scarfe:我发现很多科技从业者对于认知科学和哲学概念都有严重误解。我们节目也采访过很多杰出人物,比如曾撰写了《知识法则》一书的 César Hidalgo,还有神经科学哲学家 Mazviita Chirimuuta 也反复强调过知识具有变幻莫测的特性。我认为知识在本质上是有视角属性的。
我不觉得单靠维基百科上那种纯抽象、脱离视角属性的条目就足以还原知识的全貌。换言之,我认为知识有着具象性且充满生命力,脱胎于我们体内。组织存在的意义就在于守护并演进知识。而在把认知任务委托给语言模型时,自然会产生一种诡异的悖论效应:组织内部的知识反而受到侵蚀。
Jeremy Howard:确实,这真的令人不安。网上经常出现这样的争论:有人坚称大语言模型根本就啥都不懂,只是装作可以理解。另一些人则反驳:别胡说八道,看看大模型刚刚帮我搞定了什么问题。有趣的是双方都有道理——大语言模型实际上确实是在扮演一个理解了问题的人。
它们假装可以理解,恰恰呼应了 Daniel Dennett 早期认知科学研究的精髓,中文房间实验(设想一个仅懂英语的人通过操作中文翻译程序手册处理外部中文提问,使外界误判其具备理解能力,以此论证计算机仅模拟智能表象而缺乏真正认知状态)的核心思想也正是如此。房中人的表现确实很像懂中文,因为我们提的所有问题都能得到答案。但实际其只是在海量的书籍或机器中查找信息。当然,在装懂不影响结果的范围之内,到底是装聪明还是真聪明并不重要。
所以 对于很多任务,大语言模型只需要装懂就足够了——毕竟在实际应用中,是不是真懂根本无关紧要。可如果哪天越过了边界,很多人才会惊觉:天哪,大模型这玩意原来这么蠢……
Dr. Tim Scarfe:顺带一提,我是 Searle 的拥趸,他曾提到因果具有可还原性、但本体不具备可还原性,也就是强调存在现象学这个维度。这也是知识变幻莫测的精妙所在,它本质上承袭了康德的思想:世界错综复杂,无人能够完全理解。正如盲人摸象,我们不可避免各自拥有不同视角。
由于复杂度过高,因此每个人都在进行建模。但有趣的是,语言模型有时似乎表现得能够理解事物,而这种理解的根源在于监督者为其提供了框架。在这套框架内,当我们从大象的视角观察,认知结论竟然出奇连续。只是现在,我们往往忽略了监督者为模型设定的这套框架。
Jeremy Howard: 没错,所以这相当于 Searle 与 Dennett 之争,也就是《意识的解释》与“中文房间”这两种视角的思辨。有趣的是,当时的讨论跟我们当下的争议有着完全相同的本质,只是从纯思想实验转向现实层面。回归抽象讨论很有必要,因为这能让我们抽离当前困境、不再受到现实中具备强大模仿能力的模型影响,真正回归问题的本质。
总之我想强调的是,我们正身处一种微妙的历史节点:人们极易对 AI 的能力产生误解。尤其是那些分不清编程和软件工程区别的朋友,就更容易误解。
是的,这就正好转回了你提出的问题——这种认知差异会对组织产生怎样的影响。要知道,许多组织的本质就是在押注一个投机性的前提:AI 将有能力比人类更出色地完成一切工作,至少在编程领域可以做到。我对此深感忧虑,无论是从组织还是从全人类的角度讲都是。对人类来说,一旦没有机会主动运用设计、工程和编程能力,也就失去了发展和成长的机会。人类可能逐渐凋零。身为研发型初创公司的 CEO,我必须要强调:如果团队成员停止成长,我们就注定会失败。
我们绝不能让这种情况发生,而单纯提升针对 AI 的特定提示词技巧或者 CLI 框架使用能力,并不算成长。这就像在不理解互联网原理的情况下死磕亚马逊云科技的接口细节——毫无价值。这类知识既不可复用,又没有继承意义。虽然它能够在当下解决实际问题,但必然随着时间推移逐渐侵蚀从业者的信心。
大模型反而让开发者变笨了?
Dr. Tim Scarfe:我认同这种自然规律,而且对你尤其重要。在整个职业生涯中,你一直致力于提升人们的技术与 AI 素养。而你说的大模型编程技巧,很像是开自动驾驶汽车了——人根本没多少机会上手。
这里存在一个临界点——当我们不再专注于亲自解题,而把能力委托出去,就会积累下认知债。这就是当前的现实。几周前 Anthropic 自己的研究就完全推翻了 Dario 的观点,研究结果甚至发现,确实有少数参与者通过提出概念性问题来保证对实现技术的掌控。他们确实能展现出学习曲线,但大多数人根本做不到。
我有个假设:生成式 AI 编程的理想状态应该是看齐人类开发者,毕竟我们几十年来一直在编写软件,也具备抽象认知能力、能在熟悉的领域灵活运用。我们还能明确需求,消除大量模糊性、跟踪进展、反复调整,且全程掌控开发流程。但现实情况是,现在的人们会默认进入自动驾驶模式,对实际发生的情况一无所知——这反而让开发者变笨了。
Jeremy Howard:我在 2014 年创立了首家医疗深度学习公司 Enlitic。初期我们专注于放射学领域,当时许多人就担忧这会削弱放射科医生的专业能力。但我坚信恰恰相反——为此我还深入研究了飞机电传操纵系统、汽车防抱死刹车系统等技术应用案例。当可以自动化的任务环节成功实现自动化之后,专家反而可以专注于真正关键的环节。
我们在实践当中也难了这一观点。在放射学领域,我们发现如果能自动识别肺部 CT 扫描中的潜在结节,那么放射科医生可以专注于分析结节性质,判断其恶性程度并制定治疗方案。这正是微妙的差别所在。如果能有效实现某些环节的完全自动化,从而减轻人类认知负担、专注于核心工作,结果无疑是积极的。至于软件开发领域的情况,我觉得更难以断言——毕竟我搞开发已经有四十多年,亲自写过大量代码。除非遇到特别奇怪或者复杂的情况,否则只需瞥一眼代码,我就能立刻判断出代码功能和运行状态等结论。
我凭直觉发现的这些可优先的点,还有预见到的潜在风险,如果没有长期编程积累恐怕很难很难达到。目前我觉得真正受益于 AI 的人群有两类:要么是完全不会编程的初学者,现在他们可以把脑海中的想法快速转化成应用。只要 AI 有能力帮他们快速实现需求,就完全可以了。另一类是像我和 Chris Latner 这样的资深开发者,因为我们能让 AI 代劳相当一部分编程工作和研究任务。但处于中间水平的人才是真正的绝大多数,这让我非常担忧,他们几乎失去了进步的空间和可能性。
不用亲自写代码也许没什么,但我们没办法确定,因为之前没出现过这种情况。这就像回到小学阶段,学校禁止孩子们使用计算器,就是为了锻炼他们对数字的感觉和运算能力。那开发者还要不要经历前五年的磨练,亲手编写所有代码?我真的不知道。
总之我自己比较悲观,对于大部分从业经验从 2 年到 20 年之间的开发者,这可能是在慢慢侵蚀他们的竞争力。
Dr. Tim Scarfe:没错,这又涉及 Cesar Hidalgo 提出的知识本质论。他认为知识具有不可替代性,即无法直接交换。其核心观点是:学习过程在某种意义上不可能被简化。学习者必须亲身经历,直面摩擦和考验。学习的过程就是构建世界模型的过程,会经历所谓“现实的反噬”——我们不断犯错、不断更新自己大脑中的模型,并向其中持续添加一致性约束。但直接使用大模型输出的代码,显然是回避了这种“必要之难”。Anthropic 的研究也提出类似的结论:由于回避了摩擦,开发者根本学不到任何东西。
Jeremy Howard: 没错,所谓“必要之难”是教育学领域提出的概念,最早可以追溯到十九世纪重复间隔学习的开创者 Ebbinghaus。Piotr Wozniak 的近期研究也发现了相同的规律:记忆的形式需要付出艰辛努力。这也解释了为什么“过度复习”反而有害,因为信息会过早浮现。而间隔重复学习法(例如 Anki 和 SupereMemo)则努力在记忆即将遗忘的临界点处安排复习。
这确实需要付出艰辛的努力。我花了十年时间学习中文,只为探究学习的本质。在使用 Anki 时我深刻体会到:它总在记忆即将消退的临界点安排复习,抓住濒临遗忘的节点刺激神经元连接。这种模式执行起来特别特别累,但效果确实惊人。所以哪怕后面十几年不再坚持系统学习,我仍能流利使用中文。
Dr. Tim Scarfe:说回你提的放射学案例,还有人们常说的客服中心。我们总觉得组织中的岗位存在着高智力需求和低智力需求之分。但我觉得,智能的本质就是对知识的适应性获取和整合。假设低智力需求岗位(比如客服)不需要适应变化,就意味着组织中存在着某些稳定不变的环节。
这部分环节可以自动化,无需更新知识储备。但结合放射学案例,这种观点可能忽略了整体性知识的重要性。比如客服中心也会遇到大量特殊的、极端的案例。各种意外状况层出不穷,这些信息会向上传递,促使组织逐步适应。所以在推广自动化流程之后,工作人员实际上会丧失创造流程的能力,进而削弱组织知识的演化能力——这无异于自毁长城。
Jeremy Howard:完全正确。在我的公司,我始终提醒同事们:我真正关注的只有一件事——你们的个人能力在多大程度上得到了提升。我并不在意大家提交了多少 PR,开发出了多少功能。就像 Tcl 语言的发明者 John Oustenrhout 最近在斯坦福讲座中提出的精彩观点:一点点斜率就能弥补大量截距。
这里的核心论点是,人生中若能专注于加速成长的事物,那效果要远胜于执着那些已经擅长、拥有高横坐标值的事物。因此我真正关心,也是我认为对公司至关重要的唯一目标,就是让团队专注于提升斜率。没错,如果只专注于在现有 AI 的能力边界之内追求成果,那关注的就仍然是横坐标值。
所以我觉得这就是在把企业和员工往被淘汰的绝路上推。无法理解现在竟有这么多大公司的高管在推动这种做法,简直令人惊讶。
毕竟这是个大家都不熟悉的领域,MBA 课程里也从没提到过,所以一旦判断失误——也很可能就是失误,那人们根本就意识不到。这本质上是为公司埋下了毁灭的种子。
更令人费解的是,股东们竟然会纵容这种行为。这将催生出高度投机性质的市场操作。众多企业正因 AI 编程累积的技术债走向衰亡,这些债务使他们既无法维护现有产品、也难以开发新产品。
Dr. Tim Scarfe:像 François Chollet 这样的行家其实也不少,他们真的很懂。他就始终强调 AI 发展的本质,就是领域认知模型的拟态式共享,以及如何配合人类共同蒸馏这些模型。说到共享,这恰恰是 AI 编程面临的另一大扩展难题。
在理想状态下,只要我们深谙某个领域,有能力用极致的细节做出定义,那么只需告知 Claude Code 执行任务即可——我们脑袋里的模型框架并不重要。
但在组织环境下,我们需要把知识共享给全体成员。必须承认,知识的获取瓶颈就是组织内部真实存在的严重问题。如果只有我一个人在使用 Claude Code,效率大概能提升 50 倍——人们的兴奋之情也正来源于此。但要跟其他人共享,AI 编程工具就起不了什么作用了。大家似乎并没有意识到这个瓶颈,也没发现这就是大多数组织难以将 AI 转化为现实生产力的原因。
Jeremy Howard:实际上没人能在保持高质量的前提下产出 50 倍的软件。 我们刚刚完成相关研究,发现人们实际交付的成果只能说略有增加。这就是残酷的事实。我本人其实热衷于发掘 AI 的潜力,但我妻子 Rachel 最近发文指出,所有激发人们热烈追捧的因素汇聚起来只是一股暗流。
Dr. Tim Scarfe: 对,暗流这个概念我也想提来着。
Jeremy Howard: 所以这就很尴尬了。我认识的几乎每位前段时间对 AI 驱动编程充满热情的人,在回头审视自己一路走来构建的成果时,都彻底改变了看法:这些东西还有人在用吗?还有受众吗?还能帮自己赚钱吗?其实几乎所有利润,都被意见领袖或者炒币那帮家伙卷走了。
氛围编程就像老虎机
Jeremy Howard:依托 AI 的编程本质上更像是老虎机——让人产生可以掌控一切的错觉。我们当然可以精心设计提示词、管理模型参数清单、调整 skill 参数等等,最后再拉下拉把。
输入指令,然后得到结果,这就像凭运气拉出三颗樱桃并排。“我再改条指令,再多加点上下文”,之后再次拉动拉把、不停重复。
这就是随机性。我们偶尔能赢一把,觉得太棒了、AI 这东西太牛了!但这本质上具备赌博的全部特征:伪装成胜利的失败、高度随机、虚假的控制感——这些都是博彩公司精心编排的元素。虽然这并不代表 AI 没用,但……真的也没多有用。
Dr. Tim Scarfe:明白。Rachel 还提到赌博的另外一个标志性特征,就是让人自欺欺人地以为掌握了局势,但实则不然。但我们也可以探讨一下乐观情绪:我觉得 AI 编程在受控场景下的确非常有用,前提是我们能够理解并设定约束。从好的角度来讲,那我们确实不会因此失业,毕竟这部分工作量会相应增加。至于成瘾性,那也是真实存在的:我曾经连续 14 个小时使用 Claude Code 输出代码,确实非常上瘾。你说得对,就像老虎机一样,非常贴切。
而且那也是我最疲惫的一次编码经历,精疲力竭之后我连着休息了好几天才恢复,那状态实在糟透了。
Jeremy Howard: 一点没错。我也获得过一些不错的结果,过去几年还围绕已知的成功路径构建起完整的产品体系,也就是专注于中等规模的模块化开发:确保各个模块完全可控、可设计,并能通过自定义抽象层逐步构建起超越组件本身功能的整体系统。最近我们还遇到个很有意思的情况,其实也可以算是实验:我们之前高度依赖 IPKernel 组件,它也正是驱动 Jupyter Notebook 的核心。但在 IPyKernel 从版本 6 升级到版本 7 之后,就彻底失效了。我们尝试使用的两款产品都出现了故障:其一是名为 nbclassic 的原始 Jupyter notebook,其二是我们自主开发的 solve it 产品。
它们会随机崩溃。IPyKernel 的代码超过 5000 行,结构极其复杂,涵盖多线程、事件处理、锁机制、与 IPython 的接口、ZMQ 通信协议以及 DebugPy 调试框架等等。我完全摸不着头脑,找不到崩溃的原因——所有测试都能顺利通过。于是我好奇,AI 能不能帮我解决这个问题?真的,我一直好奇目前的 AI 能够独立处理的任务规模上限在哪里。
事实证明,它确实能够解决。前后花了两周时间,虽然没能深入理解 IPyKernel 的运作机制,但我还是花了不少精力把它拆解成一个个独立组件。最终 AI 在两小时内就给出了答案——我最早用的是 GPT 5.2,没能搞定;花每月 200 美元升级到 GPT 5.3 Pro 版后就好了。
总之,通过在两个版本和两套模型之间反复切换,我花了几周时间才让系统正常运行。如你据说,整个过程毫无乐趣可言,既疲惫又焦虑,因为我始终无法掌控局面。但有趣的是,这是我目前唯一能够让新版 Python Jupter 内核成功运行的办法——至少就我所知,它找到了完美兼容版本 7 协议的办法。这让我不禁陷入深思:我不喜欢 AI 辅助的工作感受,但因为传统软件工程理论不足以解决问题,我又别无选择。
新的难题又来了——我并不理解解决问题的这段代码,那我该不该把公司产品押在上面?我真的不知道该怎么办,我不知道它会不会引发内存泄漏;如果协议稍作改动,它后续还能不能正常运行;是否存在会导致全盘崩溃的极端状况等等。这真是个前所未见的巨大困局。
“AI 写代码很厉害,但软件工程一塌糊涂”
Dr. Tim Scarfe:那我们还是得从控制权的角度讨论——必须承认,我们对代码的控制能力正受到严重侵蚀。最初由 AI 生成的代码占比仅为 10%,随后这个比例不断攀升,而且我们无能为力。大约半年之后,提交上来的 PR 中就有约 60% 代码由 AI 生成。这就是后果。
人正逐渐跟自己的代码脱节。乐观的判断认为:AI 编程只强调功能主义即可——只要智能体可以正确完成任务,我们就可以认可 AI,无须深究其构成原理。毕竟软件领域从来都是这样。
商业领域肯定很认可这套逻辑,毕竟人家做的是业务,本来就没办法亲自编写代码、也掌握不了快速排序算法的实现细节。所以只要所有测试都能顺利通过、代码可以成功部署,流程按部就班推进,那不就得了?
Jeremy Howard: 实事求是讲,这种观念我觉得还满有道理,但还不够。我 们必须重视软件工程的重要意义,因为它的核心就是强调各个组件到底是什么、应该如何运作,再以此为基础将其组合成更庞大的整体,进而持续迭代以构建出宏大的系统。
只有做好了这一点,我们才能在十年之后靠 AI 打造出远超当下想象的顶尖软件。没错,只有卓越的软件工程能力才可以实现这种突破。以 IPyKernel 为例,我发现它本身就是个极其庞大的组件。
因为很明显,IPyKernel 的原始开发团队没能打造出一套可以正确验证其功能的测试集,所以才导致包括原始 nbclassic(即 IPyKernel 的源项目)在内的众多实际应用项目都无法正常运行。这正是我们 Answer.ai 开发团队的当前重点:寻找规模适应的模块,并确保其正确性。
要如何识别这些模块、如何加以设计、如何进行组合——这些能力都需要几十年的开发经验才能掌握。 我自己也是,自认为经过二十年的历练才算掌握到个中精髓。这确实是个大问题,毕竟软件工程能力的重要能力远超以往任何时候,但当下又恰恰欠缺培养这种能力的场景。未来的开发者要如何保证自己可以胜任这份工作,已经成为极具挑战性的课题。
Dr. Tim Scarfe:还有种观点是这样:抽象和表征事物的方式其实有很多。要知道这个世界如此复杂,我们人类熟悉的软件抽象与表征方式,可能更多是自身认知局限的映射。即使是在科学和物理领域,人们也更倾向以高度简化的方法来建模。但复杂科学往往必须直面事物的构造性、耗散性以及缠杂交织的本质。
也许当下就有很多软件已经超出了人类的理解上限,对吧?比如许多采用 actor 模式的全球分布式软件应用,其本质上已经属于复杂系统。我们只能通过模拟和测试来尝试理解,因为没人真正知道所有组件间如何协同运作。所以乐观地看,也许软件工程的顶层设计已经在践行这种新理念,而这也正是 AI 有望达成的终极目标。
Jeremy Howard: 倒也未必。比如说 Instagram 和 WhatsApp 这类公司,仅凭十余名员工就主导了各自领域,甚至击败了谷歌和微软等巨头。我觉得这只说明大厂那种软件开发模式正在失败,我们也亲眼目睹许多巨头正陷入日益绝望的境地。就拿微软 Windows 和苹果 MacOS 的质量来说,过去五到十年间已经遭遇显著下滑。还记得当初 Dave Cutler 逐行审阅 NT 内核代码,确保每一行都完美无瑕的时代吧?那才是真正优雅卓越的软件典范。但如今世上不会有人觉得 Windows 11 是优雅精妙的软件。所以我们可以真的需要先打造出完全可按的小组件,再把它们堆叠起来实现构建。
问题是 AI 在这方面表现相当糟糕。我这可是基于实证得出的结论,它们在软件工程领域简直不堪一击,而且这种情况可能永远不会改变。因为我们总要求 AI 突破训练数据的边界,尝试构建前所未有的事物,追求超越现有方案。换言之,我们一方面只提供有限的训练数据,另一方面又指望它别单纯照搬训练过的内容。这点常常让人们困惑——他们看到 AI 编程能力如此出色,便误以为这等同于软件工程能力。但这二者的本质完全不同,重合度也很低。目前还没有任何实证数据表明大语言模型在软件工程领域实现了任何显著的能力提升。
每当我们审视 AI 完成的软件工程案例,比如 Cursor 开发的浏览器或者 Anthropic 搞出来的 C 编译器——另怀疑,我认真看过这些项目的源代码,再加上更熟悉编译器的 Chris Latner——其本质都是对现有成果的明显照搬。这正是我眼中最核心的挑战所在:要想做出真正原创性的成果,就不能依赖大语言模型。
理论上我们没办法相信大模型会涌现出这种原创能力,实证数据也同样支撑不了这样乐观的猜想。
最先进的 AI,却在用 40 年前的开发环境
Dr. Tim Scarfe:没错,我觉得这场对话最大的价值就在于,我们需要实现 AI 与人类的协同合作。由人类提供理解力,还有我们之前讨论过的各种知识层面的支持。但与此同时,AI 仍然不失为一种重要且强大的工具。我们只要设计出运作模式或者工作方式,确保自身的独特能力、特别是理解力不被削弱就行。
Jeremy Howard: 没错,这里确实有条微妙的分界线,也是我们在教学与内部开发时关注的核心点。我这二十年来持续探索的方向,终将成为支撑整个体系的关键。Stepehn Wolfram 创造了 notebook 界面,虽然其中很多理念可以追溯至 Samlltalk、Lisp 和 APL,但其意义仍然非常值得肯定。他的核心思想在于:当人类能够实时操作计算机内部对象、研究它们、移动它们并加以组合,就可以通过计算机实现更多可能。
而 Smalltalk 的核心理念也正是基于对象,APL 同样以数组为基础。Mathematica 本质上就是功能强大的 Lisp 语言,只是在此基础上融入了优雅的 notebook 界面,让开发者能够构建出动态生成的活文档。
几年前我开发了 nbdev 工具,它能在 notebook 界面跟丰富的动态环境中构建起生产级软件。我发现这极大提升了自己的编程效率。虽然我从来没做过全职编程工作,但大家可以看看我的 GitHub 代码仓库产出——根据统计数据,我几乎是全澳大利亚最高效的程序员。这证明我的办法确实行之有效。我开发的许多工具被大量用户采用,凭借的就是出色且丰富的构建方式。
如今我们发现,在把 AI 置与跟人类相同的交互环境中时,其表现同样会显著提升。可以看到,常规的 AI 编程工具,比如大家使用 Claude Code,其运行环境跟人类 40 年前使用的环境极为相似。这本质上仍然是基于代码行的终端界面。它当然可以使用 MCP 或者其他工具,但目前多数时候借助的仍然是经典的 bash 工具。
我非常喜欢 bash 工具,在日常工作中也会频繁使用各类命令行工具。从本质上讲,它就是依赖文本文件作为与外界交互的媒介,这实在有点简陋。所以我们将人类与 AI 置于 Python 解释器内,立刻就得到了能帮助人类与 AI 对话的强大工具——一种优雅且富有表现力的编程语言。
现如今,AI 能与计算机对话,人类能与计算机对话,计算机又能与 AI 对话。在这种丰富的交互生态中,人类与 AI 得以实时协作,共同构建起双方都能使用的工具。这也是我所追求的核心价值,创造一个让人类能够参与、成长且共享的环境。
于我而言,使用 SolveIt 的体验跟你之前提到的 Claude Code 恰恰相反。用了几小时后,我感觉神清气爽,快乐而充实。
Dr. Tim Scarfe: 我来谈谈自己的看法。你刚刚的核心观点,就是具备交互性、状态感知且能够提供反馈的环境,具有某种神奇的魔力。这是因为我们的大脑能够处理特定的工作单元,我们会通过反复推敲加现实检验的方式来思考问题。正因为如此,我才会在攻读博士期间选择使用 Mathematica 和 MatLab。
我完全赞同你的结论。这种 REPL 环境能让我们直接操作数组、生成图像图谱、实时调整参数以即时呈现变化效果。这确实是优化思维模型的绝佳方式。不过 Claude Code 也能实现类似的功能,关键在于适当使用操作技巧。高效使用 Claude Code 的开发者普遍具备这种能力。我也开发过内容管理工具,也就是 Rescript,它在制作纪录片视频时能自动提取字幕文本,帮我核查陈述内容的真实性。
总之,AI 素养的核心在于理解语言模型在能力上的不对称性。在要求其处理鉴别型任务时,它们的表现往往非常出色。例如在子智能体模式下要求其逐条验证主张时,它的准确性就远高于生成模式下批量生成的主张。关于状态反馈机制,我们可以采用结构化 XML 导出方案,配合侧边栏可视化应用来形成反馈循环。
对我而言,这文治武功 AI 的优势所在,也是善于借 AI 之力的使用者们的首选用法。
Jeremy Howard: 是的,但我并不完全认同你的观点。我知道也可以在 Claude Code 中实现相同的效果,也同意具体效果取决于使用者的 AI 素养,但 Claude Code 的设计初衷并不在此。它并不擅长此类操作,这也不是跟 Claude Code 交互的自然方式。我倒不觉得这是 AI 素养的问题——在我看来,如果工具无法以人类熟悉的方式获取更深的知识、更愉悦的体验和更紧密的联结,还有对工作内容的透彻理解并建立情感纽带,那这绝对是工具的问题,不能说是人的问题。
工具的设计就应该符合人体工程学。但如今,很多模型和工具的评估标准就只是能否接管完整任务并独立完成。这在我看来是种重大谬误。真正的关键在于:人类在使用之后,能否真正掌握该领域的知识,进而轻松构建出更多成果。
Claude Code 正在背离“人机共创”的软件传统
Dr. Tim Scarfe:我完全赞同。但还有另一个有趣的视角——Joel Grus 曾有一场著名的演讲,我们稍后会具体聊。他说 Notebook 程序糟糕透顶,从软件工程角度看简直不堪入目。当时,哪怕是到现在可能也仍然如此,我其实挺认同他的观点。毕竟我也从事过机器学习的运维工作,在大型机构中负责探索数据科学与软件工程之间的连接。
相较于 Notebook,Claude Code 其实更偏重软件工程领域,因为它能生成幂等、无状态及可重复的成果。如你所说,从教育角度看这种基于状态的反馈其实很好,因为我能够理解到底发生了什么。之后只要把它转化成可部署的成果就行了。
所以你能聊聊 Joel Grus 的观点吗?记得你当时的回应还闹得挺大的,给我们讲讲呗。
Jeremy Howard: 他当时拍了段精彩的视频,就叫《我不喜欢 Notebook》,制作精良而且超级搞笑。现在我承认,我当时的观点完全错了。
他列举了很多 Notebook 做不到的事,但其实都能做到。他说 Notebook 实现不了的功能,其实我每天都在靠 Notebook 实现。可那场演讲虽然错误百出,却实在妙趣横生。后来我模仿他的风格做了段《我喜欢 Notebook》的视频,基本照搬了他的大部分 PPT 并注明了出处,然后逐条反驳了每条谬误。
不过你提到的核心问题确实切中了要害——这本质上其实是软件工程与科学研究等领域在工作方式上的根本差异。我认为这种二元对立确实存在,这样的割裂也着实令人遗憾。软件开发的推进方向出了偏差,当前的模式完全聚焦于可复现性,却无视僵化代码与文件的持续膨胀。 项目里全都是死代码、死文件,这事我强烈推荐大家去看看 Brett Victor 的论述,他的讲解特别精彩。他反复证明:最重要、最正确的方向,永远是跟所做之事建立起直接且符合直觉的联结。
他也将此作为自己的使命,确保人们能够建立起这种联结。我也把这当作自己的使命。于我而言,传统软件工程已经大大偏离了这样的联结。我觉得它令人作呕、简直恶心,更可悲的是人们正被迫以这样的方式工作。这不止反人道,而且模式本身根本就行不通——经验证明其效果极差。对 AI 是如此,对人类更是如此。
事情并不总是这样的。回到早期,比如 Alan Kay 的 Smalltalk,Iverson 的 APL,还有 Wolfram 的 Mathematica。在我看来,那才是“黄金时代”。
那个时代的人真正关心的问题是:如何让人类尽可能紧密地与计算机一起工作。 比如鼠标的诞生也是如此,通过点击和拖拽操作将计算机中的对象可视化为可移动的实体。可多年过去,如今我们却失掉了正确的方向,这实在令人痛心。
而像现在用 Claude Code 这样的工具时,默认的工作方式却完全相反:你需要深入到一个系统内部,那里有一整个文件夹的代码文件,但你甚至从来不会去看它们。你与系统的全部互动,只是通过一个 prompt。
老实说,这让我真的感到反感。我是真的觉得这种方式有点不人道。
而我的使命,其实二十年来一直没有变:就是想办法让人们不再用这种方式工作。
Dr. Tim Scarfe:明白。但回想起来,我当初跟数据科学家们共事时,他们都在用 Jupyter Notebook。当时我就发现,如果把这些 notebook 直接提交到 Git 仓库,效果通常不太理想。
大多数数据科学家根本不懂 Git 操作,他们会打乱单元格的执行顺序,导致结果无法复现,类似的问题层出不穷。我同意你的观点,这些工具确实更能融入工作流程。但这又回到了我之前提出的核心问题:就像我们讨论客服中心时说的,那属于低智力需求的工作。要知道,数据科学家之所以属于高智力工作,是因为他们在创造前所未有的事物。他们在探索问题的边界,在认知模糊的领域开疆拓土。当然有人会争辩,说如果数据科学家能够清晰界定问题的边界,也许就能借助 Claude Code 实现精准落地了。但是我们该如何在这两个世界之间架起桥梁?
Jeremy Howard: 我觉得这个主意实在没有必要,你总不是想把人从探索性的环境中剥离出来吧?科研的进步源自人们建立洞见的过程。包括费曼在内的众多大师,那些伟大的科学家总会强调通过构建思维模型来深化直觉,而这些模型需要经年累月与研究对象的交互才能形成。以费曼为例,由于从事理论物理研究,他不可能实际接触旋转的夸克,但他会尝试研究旋转的盘子。我们必须自己想办法找到深度交互的方式。我见过很多数据科学团队,他们不只是对 Git 不熟悉,他们对自己本该理解的事物也不熟悉。
所以他们的头头往往是一位软件工程师,解决方法就是要求所有数据科学家都停止使用 Jupyter Notebook。现在,他们被迫使用各种可复现的虚拟环境,而这种做法在不断摧残团队。我目睹过太多类似的情况了。正确的解决之道并不在于增设更多纪律条文和官僚职位,而在于解决实际问题。比如我们开发了一款名叫 nb merge driver 的工具——很多朋友不了解,其实 notebook 本身非常适合 Git。只是 Git 并没有默认为 notebook 提供合并驱动,而仅支持基于行的文本文件。可 Git 系统是支持插件扩展的,所以我们可以轻松通过插件兼容 JSON 文件。
于是我们开发了这类驱动程序。现在只要使用我们的 merge 驱动进行 Git 差异比较,就能在单元格级别上看到差别。每次遇到合并冲突,可以直接定位到单元格级别的具体冲突点,保证 notebook 始终可以在 Jupyter 中打开。NBDime 也实现了相同的功能,大家可以随意选择。我认为这才是解决之道:继承 Brett Victor 的理念,让人们紧密把握探索性工具。所以一定要完善探索性工具,我甚至 认为所有软件开发者都应该采用探索式编程,以深化对于所处理对象的理解。这样我们才能建立起对目标的强大思维模型,进而逐步提出更优解、建立更加完善的测试。
我自己几乎不需要调试器,因为我的程序里基本不存在 bug。这并不是因为我编程技艺超群,而是我采用微步迭代的方式开发——每个小步骤都经过验证,我会亲眼见证其运行效果并且实时交互。如此一来,bug 根本就无处藏身。
Dr. Tim Scarfe:其实我对这事有点矛盾。我认同你的观点,但也会质疑那些宣称组织运作模式终将固化、不再有进一步优化空间的家伙。可创新的本质就是适应性嘛,对吧?我们应该尽可能扩大适应性的覆盖范围,所以必然需要有人持续测试新想法、发现新的限制条件。
但同样的,我们也需要那些稳健可控的技术,比如用云服务和持续集成 / 持续交付(CI/CD)等方式将成果投入生产环境。
Jeremy Howard:没错。比如 nbdev 就自带开箱即用的 CI 集成,还内置了测试功能——毕竟源代码都是 notebook 形式,整个探索过程都包含在内:API 如何动作、调用时的效果、函数实现方式、使用示例、说明文档等等。在这样的环境下,大家自然能把软件工程处理得更好。总之就应该全都要。
AI 没大家说得那么吓人
Dr. Tim Scarfe:你还记得那份关于《应将存在性风险列为紧急优先事项》的声明吗?当时 Hinton 和 Demis Hassabis 都有联合署名。而你基本上是通过反驳来回应的。聊聊那时候的情况吧,你觉得我们应该担心 AI 带来的存在性风险吗?
Jeremy Howard: 那只是特定时期的问题,对吧?如今的形势已经有所转变,实在是谢天谢地。我们所处的整个学术社群,从某种意义上赢下了这场论战。现在我们面临其他更为紧迫的问题,但当时的主流观点是:AI 即将实现自主化。这种随时可能实现的自主,也许会将世界推向毁灭。这种观点很大程度上源自 Alizia Yukowski 的研究,但其结论已经在多个层面被证明是错的。
Dr. Tim Scarfe: 他们当然也有反驳的理由。
Jeremy Howard:没错,就像邪教做出的末日预言一样,只要不给出具体的日期,他们就总有话说。
Dr. Tim Scarfe: 那我稍微修正一下:当前的大模型在特定领域确实可以作为智能体,ARC 挑战赛的结果已经证明了这一点。因此如果把方向收窄一些,可能自主的目标真会更快实现。而这就带来了新的难题:当全面的智能化与自主性实现之后,如果缺少知识和约束,AI 只会更快走向错误方向。很多人其实没有意识到大模型在认知层面的匮乏……
Jeremy Howard: 但这些都跟我反驳的核心观点无关——我们始终强调,那份声明对于真正的危险所在做出了误判。没错,当一种极具颠覆性的技术涌入世界,就会让某些人获得颠覆性的力量。而那些痴迷权势的家伙必然会试图垄断这项技术。
技术越强大,渴求者们的欲望就会越强烈。所以真正的问题在于:如果不在乎这些潜在风险,单纯想尽快推进自主 AI 的崛起,那么唯一的结果就是权力得到空前的集中。这正是当下我们已经反复见证的现实。所有的权力都被交给了超大型科技企业和政府,普通人根本就无法染指。而在我的威胁模型当中,这是最糟糕的结果,因为它带来了权力的过度集中。而渴望权力的人只要拿下那个集中的点,就能获得一切。
Dr. Tim Scarfe:那我们能不能明确一下“权力”的定义?因为我们刚刚也聊过,AI 的实际影响力并不像大众想象中那么强。
Jeremy Howard:我认为 AI 到底有没有那么强大或者那么深远的影响,其实都不重要,因为这纯属推测。我坚持的是,这种权力就不该集中在少数公司或者政府手中。因为一旦集中,贪婪者会迅速将其垄断,进而摧毁整个人类文明。过去几百年来,人类社会曾经反复遭遇过这种困境。
就像文字发明之初,只有极少数精英能够掌握书写能力,而史册也就在他们的指尖流转。当时也有类似的论调:若放任大众书写,他们必将写下我们不愿见到的内容,后果不堪设想。
可印刷术的普及证明,根本没这回事。选举制度的推行也是如此。社会始终在与既得利益者的本能性偏见对抗,试图证明变革并不是威胁。所以当我们讨论 AI 可能变得极其强大时,那带来的成果到底是让少数人掌控收益,还是把成果共享给整个社会?
我的观点肯定是后者。当然也有人会说,不用担心啦,AI 不可能发展得那么强大。这个不重要,因为大家根本就没有确凿的证据,谁也说不准未来会发生什么。但我可以明确地讲:万一那么强大的技术出现了,那我们应该放任马斯克或者特朗普一人将其掌控吗?这明智吗?
Dr. Tim Scarfe:Dan Hendricks 曾经讨论过攻防不对称性的话题。建立制衡性的防御体系确实非常重要,但权力失衡又是一种不容辩驳的现实。无论是 Meta 还是 Facebook,这类平台掌握着所有用户数据,知晓我们的全部行为。至于 OpenAI 和 Claude 这类技术,实际效果反而不如预期,因此允许人类继续参与其中。可数据确实还是由他们掌握的,对吧?
假设我们在研发创新技术时使用 Claude,那上传的信息就能让他们轻松复制我们的成果。所以具体来讲,你指的是哪些风险?
Jeremy Howard: 我指的风险并不是这些具体的情况,而是一个假设性的问题:如果 AI 变得极其强大,未来会是什么样的样貌?
Dr. Tim Scarfe:比如现在就有人宣称,AI 代表着新的生产方式。这在我看来完全是夸夸其谈,那依你的判断,这里具体存在怎样的风险?
Jeremy Howard: 按目前的技术状态来讲,我认为最大的风险就是人们会丧失持续提升自身能力的机会,逐渐陷入能力衰退的陷阱。这才是我最担忧的问题。
隐私风险确实存在,但我至少不觉得比谷歌和微软早期的情况更严重。你之前在微软工作过,肯定清楚他们掌握着多少普通用户的 Outlook 和 Office 数据。谷歌也是如此,Google Workspace 和 Gmail 用户的数据量已经说明了一切。这些隐私问题确实存在,但我认为更可怕的是企业只是外包商,负责替政府进行数据收集的可能性。
过去是 ChoicePoint 和 Acxiom 这类公司,如今又出现了 Palantir 等企业。美国政府不能亲自建立大规模公民数据库,但法律却不禁止企业自建数据库,这就相当于政府把业务外包给了企业。这才是最大的问题,当然并不是 AI 时代的独有难题。
以你所在的英国为例。众所周知,英国的监控体系早已实现全面覆盖,这也让对监控数据的利用更加便捷。以及需要资源充足的机构投入足够的人手,才能让土地上发生的一切都尽在掌握,但现在 AI 能够轻松完成。所以我不是说 AI 时代才带来了隐私问题,但它至少让隐私问题扩大化了。
原文链接:
https://www.youtube.com/watch?v=dHBEQ-Ryo24&t=3914s
本文来自微信公众号 “InfoQ”(ID:infoqchina),作者:核子可乐、Tina,36氪经授权发布。















