文章摘要
文章作者Stephen Ramsay表达了对编程的热爱,认为编程充满乐趣而非工作。他虽教授编程25年,仍保持热情,但反对"氛围编程",认为这剥夺了编程的乐趣,感觉像作弊。
文章总结
标题:如果要用AI辅助编程,为何不直接用C语言?
作者:Stephen Ramsay
在深入探讨这个看似冒昧的想法之前,我需要先澄清几点,因为这并非一句简单的讽刺。
首先,我并不特别喜欢“氛围编程”(vibe coding)。我热爱编程,从90年代中期初次接触时就深陷其中。编程对我来说充满乐趣,甚至让我觉得这不该算作正经工作。我曾以编程为职业,也将其作为爱好。有人说过:“做你热爱的事,人生便无需工作。”编程于我正是如此。我教授编程已有25年,至今仍对每学期开学充满热情。将非程序员培养成程序员是我毕生的事业,也是我作为大学教授最自豪的成就。
然而,氛围编程让我感到一种难以言喻的“不适”。它不仅像在“作弊”,还剥夺了编程的乐趣。我常对学生说,编程如同解开世界上最棒的填字游戏,而谜底揭晓时,答案会翩翩起舞。氛围编程却让我失去这种成就感,因为代码并非真正出自我的手笔。尽管程序员永远无法完全理解编译器的运作(即使懂编译器,也未必真正理解虚拟内存子系统),但透彻理解每一行代码带来的满足感,与面对AI生成代码时的困惑焦虑形成鲜明对比。
但我的第二个观点必须明确强调:氛围编程确实有效。它能构建健壮复杂的系统。你或许会像我曾那样质疑其能力,但事实会证明你错了。从解决小问题到实现完整程序创意,AI的表现令人惊叹。若非如此,要么你未曾真正尝试,要么尚未接受现实。它不完美,但人类程序员亦然。这是未来吗?答案不言自明。
这引出了我的核心问题:
初学编程时,我读过《计算机程序的构造与解释》,这本20世纪教学杰作让我领悟到一个关键理念:编程语言不仅是操控计算机的工具,更是表达方法论思想的形式媒介。程序首要为人阅读,其次才是机器执行。我始终向学生强调,计算机不需要代码对人类“可读”或“符合人体工学”——它只需满足机器的低标准。
所有编程语言(包括汇编)本质上都是为了人类读写便利而设计。语言的创新之处通常不在于实现自动内存管理、并发或安全等特性,而在于让人类更轻松地表达和思考这些问题。当我们赞美Rust的安全性、C++的“零成本抽象”或Go的并发模型时,讨论的始终是人类程序员获得的便利,而非计算机。面向对象、函数式编程等范式解决的也主要是人类组织代码与思维的需求,对计算机而言,这些不过是堆内存的奇特偏好。
因此我的疑问是:既然氛围编程主要由AI完成,为何还要使用为人类设计的语言?为何不直接生成C代码,甚至x86汇编?理论上,专为氛围编程设计的“VOP语言”(Vibe-Oriented Programming)应该摒弃人类便利性,专注于机器效率。这种语言可能是极致的伪代码,背后实际生成汇编;或是某种接近自然语言但包含固定习语的形式,能更精准引导AI生成解决方案。
当前AI擅长JavaScript和C++,只因它们训练于海量相关代码和讨论。虽然创建VOP语言存在挑战,但考虑到越来越多程序员已在生产环境中实践氛围编程,大语言模型很可能已在学习这种未来语言的雏形。
想到“手工编码”可能沦为编程教育中的蒙氏启蒙阶段——就像要求未来Photoshop用户学习素描,或让永远携带计算器的人掌握方程配平——我难免感伤。但每个计算范式的诞生都伴随阵痛。从ENIAC的插线板编程到EDVAC存储程序计算机的普及,当年人们同样抱怨新范式不可靠、速度慢、剥夺操作权、威胁专业岗位。正如计算机先驱Grace Hopper曾不得不反驳“机器绝不可为另一台机器编写指令”的主流观点。
历史总是循环往复,正如当下年轻人爱说的——Same vibe(同样的氛围)。
关键词:编程,人工智能
最后修改时间:2025年12月7日
评论总结
以下是评论内容的总结,平衡呈现不同观点并保留关键引用:
支持"氛围编程"的观点
效率提升:多位用户认为AI编程工具显著提高了开发效率,能快速完成复杂任务。
- "I have achieved to code a full webapp... in five days" (naths88)
- "This feels like i hit the fabled 10x productivity mark" (nphardon)
未来潜力:部分评论认为当前局限是暂时的,AI编程将重塑开发范式。
- "Vibe coding has only been around a year or two... Imagine what another 10 years will look like" (pfbtgom)
- "LLMs would remain the 2nd most important thing to happen over my career" (sneak引用tptacek)
反对"氛围编程"的观点
代码质量堪忧:普遍反映AI生成的代码存在安全隐患和逻辑错误。
- "produces hot garbage when it needs to bring together two tokens from far ends" (noosphr)
- "they all produce erroneous spaghetti slop" (barrister)
缺乏可维护性:认为未经人工审查的代码不可靠,尤其对复杂系统。
- "Do you want to depend on a product that has not been vetted?" (esafak)
- "code is documentation for business processes... needs to be explainable" (epgui)
语言选择的争议
低级语言风险:多数反对用C/汇编,推荐Rust等安全语言。
- "letting an LLM handle memory... feels scary" (bildiba)
- "Rust might be the language for vibe coding" (stared)
高级语言优势:认为简洁语言更适合AI生成。
- "higher level languages tend to be terser... valuable for LLMs" (matthewowen)
- "Python... although has horrible complexities" (flatline)
关键分歧点
- 定义争议:部分用户区分"辅助编程"和纯"氛围编程"
- "not just asking an LLM to write some code... pure vibe coding" (xandrius)
- 应用场景:原型开发vs生产系统
- "great one shot proofs of concept" vs "real world robust systems" (noosphr vs flatline)
(注:所有评论均无评分数据,故未包含认可度指标)