50年来,人类在编程领域仍需进步。Fixie联合创始人Matt Welsh表示,他不确信进一步的50年发展就能解决当前的问题。
译自 If Computer Science Is Doomed, What Comes Next?,作者 David Cassel。
讲堂上洋溢着兴奋的气氛。10月,哈佛大学极受欢迎的(并且对所有人开放的)计算机科学入门课程 CS50 有一位特邀讲师加入:人工智能应用构建平台 Fixie 的联合创始人 Matt Welsh。但他是这样开始他的演讲的。
“我来这里是为了告诉你们,计算机科学这个领域注定失败。”
如果“计算机科学”意味着将思想转化为机器可以运行的东西——那么,其中最薄弱的环节......是人类。正如其中一张幻灯片所言......
“我的意思是这个,尽管我会用有些幽默的语言来表达它。”
Welsh 之前也曾担任 Google 和苹果的首席工程师,并且也是哈佛大学计算机科学的教授。但他来到这里是为了用一种全新的视角面对学生们——或者与他们分享一些残酷的事实。
50 年来,编程语言在疯狂尝试新的数据类型和方法论,构建了大量复杂的工具生态系统,但我们人类在编程方面依然很糟糕。“我不认为再花 50 年去解决它。”
但是 Welsh 的演讲不仅止于通常的悲观,而是问了一个更有趣的问题:接下来会发生什么?我们如何规范与大型语言模型一起工作的方式?我们的工程团队会变成什么样子?是否存在某种必须保留的人类本质——或者我们是否应该欢迎程序设计能力更广泛可及的时代的到来?
最后,Welsh 正面提出了也许是最重要的问题:那么,我们应该向年轻的计算机科学本科生教授什么?Welsh 做出了一份思虑周详、知识渊博的尝试,历史可能会将其记为第一场承认一个新时代来临的计算机科学演讲。
但是一位捣蛋鬼确切地告诉一群眼神明亮的年轻 CS 学生们他们即将进入一个被 AI 改变了的领域要说些什么呢?
今年早些时候,Welsh 预测了“编程的终结”,警告说人类在未来最好的状况也只能处于监督者的角色。但是在他的个人博客上,Welsh 写了一篇配套文章,试图推演这个世界最终应该变成什么样子。“我们需要弄清楚后 AI 时代的软件行业会变成什么样,以及现在我们可以做些什么来为此做准备。”
因此在哈佛,Welsh 分享了在利用 AI 进行编程的新前沿获得的见解,这里的程序员们正在努力获得一种新的技能:有效地教导 AI 模型。在一个你需要使用全部大写字母来强调“不要”这样的词的世界里,“最佳实践是什么?更重要的是,我们如何将这门暗艺变成一门科学?转变为一门工程学科?”
将“工程”这一词加到“提示工程”这个词组中有些语带嘲讽,Welsh 说。“这现在还不是一门真正的学科。但是如果我们做得对,它在未来很可能会成为一门学科。”
后来 Welsh 提供了一个澄清的例子:一位工程师在几个月前发现“魔力语”是“让我们一步一步地思考”。“如果你对模型说这句话,它就会切换到计算模式。它不再只是复述某些答案。它会说,‘好的,我需要逐步阐述每一个指令。’” 后来 Welsh 强调了一个关键点。“这是通过经验发现的。没有在任何模型中训练过。没有人知道它就在那里。这是这些模型的一个潜在能力,有效地说,某个人偶然发现了它并写了一篇论文......”
在后来回答问题时,Welsh 认为“我们必须通过实验来推导出手册”。
“我所担心的是,学生们只将这件事看作一个神奇的黑盒子,可以为他们做任何事情,而没有对此进行任何批判性思考。”
所以,让大型语言模型出错并不难。困难的部分在于理解为什么会出错——并且足以知道下一步该做什么。“我认为,随着时间的推移,我们会进入一个编程最终被教会这些模型新技能所取代的地方......教会它们如何调用 API,从数据库中拉取数据,转换数据,以及如何与面向人类的软件交互。”
“这本身就会成为一个完整的学科。”
后来他将其描述为一个潜在的“棘手”和“不确定”的问题。“我们如何以正式的方式推理这些模型的能力?也就是说,当要求模型执行某项任务时,我们如何对模型的正确性做出任何陈述?”
但是当谈到 AI 取代人类程序员时,Welsh 说:“我认为这是我们真正需要认真对待的事情......” “我不认为这只是——我夸大其词。但这个行业将会改变。那么自然的问题是,如果我们把人类排除在循环之外会发生什么情况?我们如何构建软件?我们如何交付产品?”
Welsh 思考了这个世界的影响。我们当前的代码优化,如可读性和可重用性,“仅仅是因为可怜的人类必须与之打交道”。但想象一个世界,“它是否有重复或重复或模块化或抽象得很好并不重要。” Welsh 提出了他设想的未来软件团队的图示......
Welsh 规避说明他“不确定”计算机科学的所有内容是否有朝一日都会成为历史文物——但提出了他对“合理”未来的设想,人们“不会以我们今天的常规方式编写程序,而是让 AI 按他们的意愿去做”。这在一定程度上是通过使用像他公司的 Fixie 平台这样的平台来轻松创建基于 AI 的应用程序实现的。
好消息是这样的未来会为更广泛的人口群体解锁计算能力。“这令人极其振奋。我认为作为一个领域,我们都应该期待达到那种水平的计算能力。它不应该仅限于某个圈子。”
Welsh 并不盲目乐观。“这并不是说所有问题都已经解决了,根本不是。”
“这个领域最大的肮脏秘密是,地球上没有一个人理解语言模型的工作原理。一个都没有。”
听众中一个勇敢的学生问到,软件工程师的角色是否会持续存在。也许未来的程序员在 AI 的帮助下会提高 1 万倍的效率。他们提出的可能性是,“使软件工程师成为软件工程师的不只是实际数据”。
Welsh 思索着总结了这个问题。“成为一名人类软件工程师可能有某种无法言表的质量——我们的训练、我们对世界的了解、我们的伦理道德、我们与其他人类的社会化互动,这些语言模型无法捕捉到。”
“我认为这是一个好问题。”
但是 Welsh 似乎更关注这种情况的另一面,我们可怜的人脑具有“带宽限制,即一个独立的思想必须通过这些可怕的语言(如 CSS、JavaScript、Python 和 Rust)对他们想要做的事情的语法描述......这是计算能实现的东西实际上成为现实的障碍。这就像通过一根非常细的吸管喝水。”
在下一个问题中,Welsh 正在构想“人类和 AI 模型一起迭代......AI 模型擅长的事情由其完成,人类擅长的事情由人类完成”。
但是最后一个问题问到,所有这一切对今天的 CS50 学生意味着什么。在 AI 驱动的界面已经将整个层抽象出来的未来,今天的“经典”编程培训是否在任何程度上有帮助?
“这才是真正的问题。” Welsh说。 他似乎回顾了自己的职业生涯——在康奈尔大学本科学习电路是如何工作的,然后是研究生课程,了解操作系统、系统编程,以及“什么是堆栈?”
但是,如果社会希望其学生了解他们世界中的程序是如何被创造出来的,“我认为,如果例如大学项目不关注这一点,假设教授计算机科学的方式与过去 25 年相同是正确的,那将是一种错误。”
Welsh 接着说他没有一个明确的视角去准确地教授什么。当然,学术界和现实世界之间已经存在很大的差距。 “但是我确实认为我们必须考虑,人们如何推理这些模型?”
Welsh 表达了对未来编程课程的一个希望,可以“深入理解一些 ChatGPT 等东西背后的机制。了解数据——它是如何输入的。了解模型是如何构建的,如何训练的,它们的局限性是什么,如何评估它们。因为我所担心的是,学生们只是将这件事看作一个神奇的黑盒子,可以为他们做任何事情,而对此没有任何批判性思考。”
但是他以最令人震惊的宣言结束了演讲——也是最人性化的。“然而,根据我自己的经验,我知道这确实是一个神奇的黑盒子。我也不明白它是怎么工作的。
“但是,你看,我没关系,因为它为我做了这么多伟大的事情。
“不管怎样,非常感谢你们。我也会留下来吃比萨的。”