永恒的承诺:消灭程序员的尝试史

永恒的承诺:消灭程序员的尝试史

Hacker News 摘要

原标题:The Eternal Promise: A History of Attempts to Eliminate Programmers

回顾软件开发的历史,可以发现一个非常稳定的模式:人们不断承诺要简化软件创建过程,降低成本,并最终消除对程序员的需求。这种雄心壮志自20世纪60年代以来一直是行业的驱动力。尽管每一代人都认为自己正在经历前所未有的变革,但实际上这只是一个重复了六十多年的循环。

初始的原罪:COBOL 与业务用户的梦想

在20世纪50年代后期,编程是一项极其晦涩的工作。程序员使用汇编语言或机器码,直接操作寄存器和内存地址。1959年,葛丽丝·霍普和相关委员会创建了 COBOL 语言。

革命性目标:创造一种接近英语的编程语言,让业务经理能够阅读、理解并最终亲自编写程序。

语法设计:故意使用冗长的词汇,如 MOVEADDMULTIPLYPERFORM,使程序读起来像一份备忘录。

营销承诺:消除专业程序员造成的瓶颈,让业务分析师自行编写程序。

实际结果:COBOL 在商业领域取得了巨大成功,成为了银行和保险系统的核心。但它并没有消除程序员,反而创造了一个全新的职业——COBOL 程序员。编写正确且高效的 COBOL 代码仍然需要深厚的系统知识和多年经验。

第一次 AI 寒冬:专家系统与70年代的炒作

20世纪60年代和70年代初,人们对 AI 的乐观情绪远超现在。1965年,AI 研究奠基人之一赫伯特·西蒙预测,二十年内机器将能完成人能做的任何工作。

愿景:通过自然语言描述需求,计算机就能自动编程。

失败原因:1973年的《莱特希尔报告》暴露了 AI 承诺与成就之间的巨大差距。在简单模型中有效的系统在处理现实世界的复杂性时宣告失败。

后果:资金枯竭,研究计划取消,迎来了第一次 AI 寒冬。这证明了将人类意图转化为有效软件是一个根本性的挑战,而不仅仅是技术问题。

第四代语言:80年代的承诺

20世纪80年代初,出现了第四代语言(4GL),如 FOCUS、PowerBuilder 和微软 Access。

核心理念:用户不再编写过程化代码,而是通过高层声明和图形界面定义数据结构、业务规则和屏幕。

结果:4GL 在报表生成和简单数据库应用方面取得了成功,但面对复杂的业务逻辑、性能要求和系统集成时,其局限性暴露无遗。最资深的使用者依然是理解底层原理的专业开发人员。

CASE 工具与教堂建筑师

20世纪80年代末到90年代初,计算机辅助软件工程(CASE)工具兴起。

愿景:通过图表和规范对整个系统建模,工具会自动生成完整的应用程序。

现实:生成的代码往往臃肿且效率低下。随着需求变化,维护模型变得异常困难。事实证明,把规范写对的难度一点不比直接写代码小。

第二次 AI 浪潮与日本的五代机

80年代还出现了以专家系统为核心的第二波 AI 热潮。

尝试:日本的“第五代计算机计划”投入巨资,旨在创建能用逻辑编程进行推理的机器。

失败:专家系统非常脆弱,一旦超出其狭窄的专业领域就会失效。维护庞大的规则库变得越来越难,第二次 AI 寒冬在90年代初到来。

互联网时代:网页开发与民主化梦想

90年代中期,HTML 被认为非常简单,任何人都能构建网页。但随着 JavaScript、CSS、服务器端编程、数据库和安全性要求的加入,网页开发变得空前复杂。Dreamweaver、WordPress 和 Wix 等工具虽然降低了门槛,但专业网页开发却分化出了更多需要特殊技能的岗位。

模型驱动架构与 UML 梦想

2000年代初,模型驱动架构(MDA)提出通过自动化工具将独立于平台的模型转化为具体实现。统一建模语言(UML)成为标准符号。

结果:由于模型与代码之间的同步非常困难,且模型本身变得极其复杂,这种方法在主流实践中逐渐淡出。

无代码与低代码的复兴

2015年左右开始,Bubble、Zapier 和微软 Power Platform 等平台再次承诺让“全民开发者”构建应用。

现状:这些工具在简单任务和工作流自动化方面非常成功。但当需求超出平台能力时,用户依然会遇到瓶颈。无代码并没有减少对传统开发者的需求,反而因为数字应用数量的爆炸式增长,增加了对程序员的需求。

大语言模型:当前的浪潮

GPT-4、Claude、Gemini 以及 GitHub Copilot 能够根据自然语言生成功能代码。现在的预测依然很大胆:编程工作将被消除,软件开发将实现彻底的民主化。

为什么承诺总是落空?

软件简化工具之所以无法完全兑现承诺,是由软件开发的本质决定的:

1. 软件是精确的行为规范:当你说想要一个简单的电商应用时,隐含了数以千计关于身份验证、支付处理、错误恢复、性能和安全性的决策。这些细节在高级描述中是不可见的。

2. 复杂性的转移:自动代码生成只是把复杂性从代码转移到了规范说明中。弄清楚软件究竟应该做什么,并确保它在所有情况下都能正常运行,这才是最难的部分。

3. 权衡与判断:性能与可维护性、安全性与可用性之间的权衡需要人类的判断。

历史的教训与启示

极端预测通常是错误的:宣称编程将在几年内消失的说法低估了挑战的复杂性。

真正的进步确实存在:每一波工具都降低了简单任务的门槛,增加了软件的总量,从而催生了对更复杂软件和更高级开发者的需求。

编程工作的演变:未来的开发者可能直接编写的代码更少,但在理解需求、设计系统架构、调试意外行为和与利益相关者沟通方面的能力将变得更加重要。

理解力的价值:软件是“结晶化的思维”。没有任何工具能替代清晰的思考。

历史表明,关于“编程已死”的报道在过去六十年里被多次夸大。未来的程序员可能会在更高的抽象层级工作,但将人类意图转化为可靠软件的核心工作依然需要人类的技能、判断和理解。


原文:https://www.ivanturkovic.com/2026/01/22/history-software-simplification-cobol-ai-hype/

评论:https://news.ycombinator.com/item?id=47147597

Report Page