如果您关注软件工程的趋势,您可能遇到过“氛围编码”这个术语,该术语最近由深度学习研究员兼 OpenAI 联合创始人 Andrej Karpathy 推广。1 他对这种方法的定义如下:
有一种新的编码方式,我称之为“氛围编码”,在这种编码方式下,你会完全沉浸于氛围,拥抱指数级增长,甚至忘记代码的存在。[…] 有时候法学硕士(LLM)的同学们无法修复某个 bug,所以我只能绕过它,或者要求他们随意修改,直到问题解决。对于一次性的周末项目来说,这还算不错。[…] 我只是看看代码,说说代码,运行代码,复制粘贴代码,大部分情况下都能正常工作。2
虽然“氛围编码”这个术语是今年才出现的,但软件工程领域的这一趋势可以追溯到更早。2020 年,GPT-3 明确指出,最初为自然语言翻译而开发的 Transformer 架构也能将自然语言翻译成代码。2021 年,我获得了 OpenAI 代码生成模型的早期使用权,这些工具加速软件编写过程的能力给我留下了深刻的印象,并期待着它们将对软件工程和计算机科学教育产生的影响。
我们中的一些人可能对大型语言模型、聊天机器人和氛围编码持负面看法。我们可能都曾尝试给学生的作业评分,而这些作业似乎是由这些工具生成的,并因此感到沮丧。虽然任何新技术都存在缺陷,但如果在适当的环境中经过深思熟虑地应用,这些工具就能带来真正的好处。
人们很容易认为,我们所有的工作都必须严肃、耗费脑力、持久。我努力在纯粹为了乐趣而读书、搭建乐高积木或解魔方的乐趣中找到意义。正如《传道书》作者所说:
人莫大于吃喝玩乐,劳碌中享乐。
传道书 2:24 和合本
十几岁的时候,我和朋友们拥有大量免费的木材,以及年轻人常有的不劳而获的自信。虽然我们没有任何建筑经验,但我们每个夏天都会用近十几棵树搭建一个树堡。我们会拼凑一部分,享受一段时间,然后再找一棵树来扩张我们的帝国。可以说,我们的建筑是“氛围编码”的。我们对应变、压力,以及建造一座坚固树屋所需的接头一无所知。它满足了我们当时的愿望,但如今却荡然无存。随着时间的推移,我们创造的大部分作品都被自然的力量摧毁了。我们缺乏智慧和经验,但这并没有阻止我们创造一些可以学习和享受一季的东西。
虽然并非所有事物都需要耐用,但我们必须考虑我们所使用技术的其他影响。我可以用火来娱乐、烹饪或取暖。作为造物主,我绝不能对它掉以轻心,否则它会造成巨大的破坏。氛围编码或许并无太大不同,但它那种漠视的氛围以及鼓励人们“忘记代码的存在”的做法可能会带来问题。
在创世记1:28中,上帝命令我们“管理”和“治理”受造之物。这直接适用于我们如何看待软件工程和计算机科学。德里克·舒尔曼巧妙地将这些点串联起来:“有时,当我们想到受造之物时,我们会想到星星、树木、花朵和动物。但事实上,受造之物是上帝所命定的一切,其中包括科技。”3
我们必须花时间去理解我们的工作及其对更广泛创作的影响。如同世间万物一样,大型语言模型和氛围编码所暴露的挑战并不新鲜。五十多年前,Edsger Dijkstra 就远离形式验证的潮流发表了如下言论:
我建议程序员应该持续理解自己在做什么,确保不断增长的产品始终牢牢掌握在自己的知识掌握之中。遗憾的是,我的经验告诉我,这个建议对于一般经验丰富的程序员来说很不友好,因为他们的职业激情很大一部分显然来自于对自身所做工作的不甚了解。4
迪杰斯特拉后来警告说,有些人混淆了“编程的容易程度和犯未被发现的错误的容易程度”。5 虽然现代工具使得创建代码变得容易,但负责任地设计和部署现代应用程序仍然需要我们有意为之并深思熟虑。
Vibe 编码似乎在赞扬“当工程师采取不符合最佳实践的捷径时产生的”技术债务。6大多数软件项目的大部分成本都来自于初始创建之后。随着系统规模的扩大,团队会添加功能、修复错误、修补安全漏洞并增强可靠性。虽然快速构建的系统原型可能很有价值,但如果系统漏洞百出、设计糟糕、不安全且不可扩展,那么它实际上可能比从零开始更糟糕。
大型语言模型也给教育带来了一些特定的挑战。这些工具使得一些简单的工作能够被计算机自动化。如果我们不理解这些简单的任务,就无法在需要解决更复杂挑战时介入。7我们的学生需要在学习过程中了解这些工具的优点和缺点。
将过多的人类自主权交给强大的工具,可能会让我们放弃通过精湛技艺影响创造的责任,并可能阻碍我们掌握领域的基本构成要素。箴言14:15警告说:“愚蒙人什么都信,惟通达人步步谨慎。” 由大型语言模型驱动的现代工具几乎可以实现毫不费力的创造,但其使用应该适度,并致力于深度思考、管理和更新上帝的创造。
脚注 Kevin, R. (2025年2月27日)。不是程序员?有了人工智能,只要有想法就够了。《纽约时报》。 Karpathy, A. (2025)。有一种新的编码方式。检索于2025年3月20日,来源:https://x.com/karpathy/status/1886192184808149383 Schuurman, D. (2017). 科技与圣经故事。Pro Rege,46(1),4-11。 Dijkstra, EW (1973)。《论程序的可靠性》。EW Dijkstra 档案:《论程序的可靠性》。(EWD303)。检索日期:2025 年 3 月 20 日,来源:https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD303.html Dijkstra, EW (1979)。论自然语言编程的愚蠢之处。EWDijkstra 档案:论自然语言编程的愚蠢之处。(EWD 667)。检索于 2025 年 3 月 20 日,来源:https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667.html Allman, E. (2012). 管理技术债务。ACM通讯,55(5), 50-55。 Bainbridge, L. (1983). 自动化的讽刺。载于《人机系统的分析、设计和评估》(第129-135页)。帕加马出版社。
评论