氛围编程 vs. 传统编程:学哪个?
互联网上对此正进行着激烈的争论。大多数争论完全偏离了重点。
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo
互联网上对此正进行着激烈的争论。大多数争论完全偏离了重点。
如果你最近在互联网上技术相关的角落里待过,你可能已经注意到这场辩论已经变得真正白热化了。
一方面:人们对 vibe coding 感到兴奋——这种 AI 辅助的、用日常英语描述来构建软件的方法——他们认为传统编程正在变得过时,任何人都能构建任何东西,大门已经敞开,旧的守门人只能接受现实。
另一方面:经验丰富的开发者强烈反驳,认为 vibe coding 产生的是脆弱、不安全、不可维护的代码,那些不了解自己在构建什么的人将会导致真正的问题,而宣称传统编程已死是既尴尬又天真的。
双方都在提出有道理的观点。但双方也都忽略了一些重要的事情。
而被夹在这场争论中间的是你——一个试图决定是否要投入时间学习正统编程、是否要依赖 AI 工具并跳过基础知识、或者选择某种尚未有人明确定义的两者结合方式的人。
这就是我今天想要真正回答的问题。不是 Twitter 上正在发生的部落式争论版本。而是实用的版本,立足于根据你是谁以及你想要构建什么来真正服务于你的选择。
1、每种方法在实践中实际意味着什么

在深入选择之前,让我们精确地定义我们实际上在比较什么——因为这两个术语都被随意使用,模糊之处多于揭示之处。
传统编程意味着正确地学习一门编程语言。理解语法、逻辑、底层概念。逐行编写你理解的代码。能够调试问题,因为你知道代码在做什么以及为什么这样做。建立在随时间积累并跨项目适用的知识基础上。这需要数月达到基本能力,数年达到真正的熟练。学习曲线是真实的,回报随时间显著复合,你能构建的深度随着技能的发展而急剧增加。
Vibe coding 意味着使用 AI 工具——Cursor、Claude、ChatGPT——通过自然语言描述生成代码。你描述你想要什么,AI 编写代码,你测试它是否做了你想要的,然后迭代。你可能不理解生成的大部分代码。你是按结果导航,而非按理解导航。让东西跑起来的门槛显著降低。对于没有底层编码知识的人来说,复杂度的上限也较低——而构建出的代码质量和可维护性在很大程度上取决于指挥 AI 的人实际理解了多少。
这些是真正不同的方法,有着不同的权衡。把它们视为通往同一目的地的等价路径,是这场辩论中大部分混淆的起点。
2、先学习传统编程的理由

让我好好阐述这个论点,因为它值得比"你需要理解基础"更好的理由——这在技术上是正确的,但没有告诉你任何有用的东西。
当你传统地学习编程时,你不仅仅是在学习语法。你是在学习如何以特定、结构化的方式思考问题。如何将复杂问题分解成更小的部分。如何推理系统在做什么以及为什么这样做。如何阅读错误消息并理解它实际在告诉你什么。如何思考边界情况——你的代码将遇到但你并没有明确为之设计的情况。
这种思维方式的价值远远超出了你所学的那种特定语言。深入理解编程概念的开发者可以相对快速地掌握一门新语言,因为底层逻辑是相通的。他们可以审查 AI 生成的代码,发现那些不立即显现的问题。他们可以设计在复杂度增长时仍然稳固的系统。他们可以在出问题时有效调试——而问题总是会出现的。
还有一个值得诚实面对的天花板效应。仅靠 vibe coding——对代码在做什么没有任何底层理解——能构建的东西是真实且有用的。但它们是有边界的。随着项目变得更加复杂,需求变得更加具体,边界情况不断积累,没有深厚知识的人指挥 AI 会开始撞墙,而拥有真正编程知识的人则可以轻松越过。
对于任何想要认真构建软件的人——作为职业、作为他们自由职业的重要部分、作为产品业务的基础——传统编程知识仍然是值得建立的基础。AI 工具一旦你有了这个基础,会让你变得极其高效。它们不能替代这个基础。
3、Vibe Coding 作为起点的理由

这里我想反驳一下传统编程的绝对主义者,因为认为每个想要数字化构建东西的人都应该花几年时间学习正统编程的论点,不是一个中立的技术立场。这是一个守门立场,值得被质疑。
对于大量的人来说——自由职业者、小企业主、内容创作者、想要自动化部分工作的专业人士——他们需要构建的东西其实并没有那么复杂。一个简单的内部工具。一个基本的自动化。一个具有特定有限功能的小型 Web 应用。一个以特定方式处理数据的脚本。
对于这些用例,学习传统编程是一种巨大的过度投资。这就像因为你想开车就去学做汽车修理工。这些技能在某种抽象意义上是相关的,但它们不是一回事,你不需要一个就能做另一个。
Vibe coding 给了这些人前所未有的真正能力。构建以前需要雇佣开发者或只能放弃的东西的能力。自动化那些吞噬他们时间的任务的能力。创建适合他们特定情况的工具,而不是强迫他们的工作流程去适应通用软件的能力。
他们用 AI 辅助生成的代码是否和和经验丰富的开发者写的一样好?几乎从来不会。这对他们应用的场景是否重要?通常,并不特别重要。一个仅供你使用、不处理敏感数据、解决你特定问题的小型内部工具——它的代码质量标准与需要扩展和多年维护的面向客户的应用是完全不同的。
错误在于将企业软件工程标准应用于个人生产力工具。它们不是同一类东西。
4、谁实际上应该学哪个

让我在这个问题上直截了当地说,大多数关于这个话题的文章都避免这样做,可能是因为直截了当意味着有些人不会喜欢这个答案。
如果以下任何一点描述你,就学传统编程。你希望软件开发成为你谋生的重要部分。你计划构建他人依赖的产品,这些产品需要扩展、处理敏感数据、或者需要长期维护和改进。你觉得编程作为一种手艺本身就很有趣,而不仅仅是达到目的的手段。你想在超越使用的层面上理解数字系统是如何工作的。
如果以下任何一点描述你,就从 vibe coding 开始。你有特定的、有边界的想要构建的东西,能解决你工作或业务中的实际问题。你想快速制作原型来测试是否值得投入。你是一个非开发者,想要构建内部工具而不必为每件小事雇佣开发者。你想现在就做出能用的东西,以后再根据需要深入学习。
如果你真的不确定自己属于哪一类,这里有一个有用的测试。想一个你具体想要构建的东西。打开 Cursor 或 Claude。尝试用自然语言描述来构建它,看看你能走多远。如果你撞到了感觉会随着更深的编程知识而消失的墙,那就是指向传统学习的信息。如果你做出了能用的东西并满足了你的实际需求,那就是指向 vibe coding 目前已经足够的信息。
经验是比推测你更喜欢哪种方法更好的老师。
5、大多数人最终落脚的混合现实

在线辩论掩盖了一件事,因为辩论需要分明的阵营:大多数使用 AI 工具构建东西的人最终会落在中间的某个位置,而这个中间位置实际上是非常自洽的。
拥有传统编程知识并使用 Cursor 和 AI 辅助进行实现的开发者,与没有编程知识、纯做 vibe coding 的人做的事情是完全不同的。前者使用 AI 在他们已经理解的事情上更快地推进。后者使用 AI 来做他们完全不理解的事情。两者根据目标不同都是有效的,但它们不是一回事,也没有相同的上限。
对于从零开始并希望随时间获得真正能力的人来说,最实用的路径大致是这样的:从 vibe coding 开始。构建东西。熟悉代码长什么样、错误长什么样、AI 对不同类型提示会生成什么。你会从迭代和解决问题的过程中吸收比你以为的更多的东西。
与此同时,学习一些编程基础——不是为了成为开发者,而是为了成为 AI 编码工具更有效的指挥者。理解变量、函数、基本逻辑、数据如何在程序中流动——这些知识不需要数月的专门学习。花几周时间专心学习一个入门课程,就能给你足够的基础来向 AI 提出更好的问题、在更高层次上理解它的输出、并在明显问题累积之前抓住它们。
这种组合——动手的 vibe coding 经验加上对基本编程概念的工作性理解——能让大多数非开发者达到一个可以构建真正有用的东西并长期维护它们的位置。虽然达不到训练有素的开发者的上限,但这个上限对于非开发者实际需要构建的大部分东西来说已经足够高了。
6、问题背后的问题

我想用一个在大多数版本的辩论中都没人说的话来结尾。
关于 vibe coding 与传统编程的争论,实际上是一个更大问题的代理:在当前这个工具变化如此之快、以至于具体技术技能的价值以五年前所没有的方式变得真正不确定的时候,什么值得你把学习时间投入进去。
而这个问题没有一个干净的普适答案。它有一个个人化的答案,取决于你试图构建什么、你的工作中有多少涉及构建东西、你有多喜欢为了学习本身而学习技术技能、以及学习时间的机会成本对你个人来说是多少。
我想坚定反驳的是那种你必须在网络争论中选边站的框架。那些最响亮地主张传统编程不可替代的人,以及那些最响亮地主张 vibe coding 让所有先验知识都过时的人,都在夸大其词——原因和人们在网络辩论中一贯夸大其词的原因一样。
现实更无聊但也更有用:不同的工具服务于具有不同目标的不同的人,这个格局确实在演变,而你能做的最好的事情就是用现在对你来说最可行的方法去构建真实的东西,让经验教会你真正需要知道的东西。
这不如一个清晰的结论令人满意。但它也更诚实。
原文链接: Vibe Coding vs. Traditional Coding: Which One Should You Actually Learn?
汇智网翻译整理,转载请标明出处