第三章 · 生产工具的演变

3.2 高级语言与 IDE

本节最后更新:2026-05-11
验证环境:无(纯理论章节)

代码从"指令"变成了"表达"

如果说汇编语言是把二进制翻译成了人类能读的单词,那么高级语言就是把几十条指令打包成了一个人类能理解的句子。

1957 年,IBM 的约翰·巴克斯和他的团队发布了 Fortran——第一个被广泛使用的高级语言。它的名字来自 "Formula Translation"(公式翻译),目标很明确:让科学家和工程师能用接近数学公式的方式写程序,而不是整天和寄存器、内存地址打交道。

Fortran 的诞生背景很有意思。巴克斯本人就是一位"厌烦了汇编编程"的程序员。他在 IBM 704 计算机上用汇编写了一段时间之后,产生了一个想法:"为什么不能让计算机来做翻译工作?我写一个接近数学公式的表达式,计算机自己把它翻译成机器码。"这个在今天看来理所当然的想法,在当时是革命性的——因为当时的主流观点是"计算机只认识二进制,任何翻译层都是不必要的浪费"。

Fortran 团队用了三年时间证明了这种"浪费"是值得的。第一个 Fortran 编译器生成的目标代码,效率达到了手工汇编代码的 80% 以上。对大多数科学计算场景来说,这个性能损失完全可以接受——相比于用汇编写同样的程序,使用高级语言的开发时间可能节省了 90%。

这是编程历史上的一次大爆炸。突然之间,你不用再关心"这个值存在哪个寄存器里""这个循环要手动处理计数器",你只需要写:

SUM = A + B

这行代码翻译成汇编可能是五六条指令,翻译成机器码可能是几十个二进制位。但你不需要知道那些。你只需要表达"我想要 A 加 B 的结果"。

Fortran 之后,更多高级语言如雨后春笋般出现。1958 年,Lisp 诞生——它引入了函数式编程的核心概念,成为 AI 研究领域几十年的主力语言。1959 年,COBOL 诞生——它用接近英语的语法,让商业领域的非技术人士也能理解代码逻辑。1960 年代的 ALGOL 影响了后来几乎所有现代语言的语法设计。1972 年的 C 语言更是统治了系统编程领域半个世纪。

这些语言的语法各异,但它们共享同一个核心理念:你不需要了解计算机的硬件细节才能写代码。 你只需要了解编程语言的语法——这是一个纯逻辑层面的知识,和计算机的物理实现完全解耦。

高级语言解放了什么

高级语言真正的贡献不是让代码更好写了,而是让更多人可以写代码

在汇编时代,编程需要你理解计算机的硬件结构——寄存器、内存、栈、中断。你是在"指挥机器怎么工作"。在高级语言时代,编程只需要你理解逻辑——条件、循环、函数、变量。你是在"表达计算过程"。

这个差异决定了两个完全不同的群体:汇编时代的程序员是硬件专家,高级语言时代的程序员可以是数学爱好者、业务分析师、科研工作者。高端语言的普及直接催生了"软件工程"这个职业的诞生——1968 年 NATO 会议上第一次有人提出"软件工程"这个概念时,世界上已经有几十万人在用高级语言写程序了。

高级语言的普及还带来了一个间接但深远的影响:代码开始被阅读,不再只是被运行。 汇编代码通常是"写一次,跑很多次,很少有人读"。因为它的可读性太差了。但高级语言的代码可以被其他人阅读和理解。这意味着代码开始承担"沟通"的职能——不只是告诉机器怎么做,还在告诉其他开发者你在想什么。程序注释、变量命名、函数拆分——这些"非功能性"的做法开始被认为是好代码的标准。

但这个时期的"写代码"和今天仍然有很大不同。在 1970 年代,你用 FORTRAN 77 写程序,写完之后要经过编译、链接、生成可执行文件,然后把可执行文件通过磁带或软盘传输到目标机器上。没有联网,没有版本控制,没有包管理器。你的"开发环境"是一个文本编辑器加一个命令行编译器。

IDE:把"写代码"这件事再简化一层

高级语言普及之后,下一个重要的生产力跃迁来自集成开发环境(IDE)。

早期的编程是一个"拼凑感"很强的流程:你在一个文本编辑器里写代码,在另一个命令行窗口里编译,通过打印语句来调试,最后手动复制文件到目标机器上运行。每一步都需要不同的工具和不同的知识。

IDE 把所有这些步骤整合到了一个界面里。你在同一个窗口里写代码、编译、调试、运行。随着时间推移,IDE 越来越智能:语法高亮让你一眼看出拼写错误,代码补全让你少打一半的字符,自动重构让你能安全地修改代码结构,调试器让你能直接在代码上设置断点、观察变量变化。

IDE 的发展有几个关键的里程碑。1980 年代的 Smalltalk 环境是第一个真正的"集成"开发环境——它不仅是编辑器加编译器,还包括了运行时系统和图形界面工具,你在开发时看到的就是最终用户会看到的东西——这在当时是极其超前的概念。1990 年代的 Visual Basic 把"拖拽式界面设计"引入了主流——你不需要手写界面代码,把按钮拖到窗口上就完成了。2000 年代的 Eclipse 和 IntelliJ IDEA 把 Java 开发的标准提升到了"自动补全 + 自动重构 + 静态分析"三位一体。2010 年代的 VS Code 用插件生态重新定义了"轻量级但功能齐全"的 IDE 体验。

这些功能在今天看来理所当然——但每一条都是让"写代码"这件事更接近"思考"、更远离"打字"的一步。

IDE 发展的深层趋势

如果我们用一条主线串起 IDE 的进化史,会发现一个清晰的趋势:IDE 在承担越来越多的"认知负担"。

在纯文本编辑器的时代,你的脑子里要记住:这个变量叫什么名字、这个函数需要几个参数、这个 API 的返回值是什么类型、这个框架的配置文件放在哪个目录下。这些都是"记住"的成本,不是"思考"的成本。

IDE 的语法高亮帮你减轻了"检查拼写"的负担。代码补全帮你减轻了"记住 API 名称"的负担。编译错误提示帮你减轻了"自己查错"的负担。重构工具帮你减轻了"手动修改所有调用点"的负担。

每一步都在做同一件事:把开发者的注意力从"机器的细节"解放出来,放到"逻辑的设计"上。

这正是 Vibe Coding 在做的事的延续版本。IDE 时代,你无需记住 API 名称——自动补全帮你。AI 时代,你无需写整个函数——AI 替你生成。下一个阶段,你甚至可能不需要写任何代码——只需要描述你想要的行为。

从 IDE 到 AI:同一方向的延伸

如果你把 IDE 的发展史看作一个趋势——让开发者越来越少地关注"怎么输入",越来越多地关注"怎么思考"——那么 AI 编程工具就是这个趋势的自然延伸。

每一步都在做同一件事:降低从"想"到"做"之间的认知摩擦。 这是编程工具演化的主线,从 1957 年的 Fortran 一直延续到今天。

有趣的是,在这个趋势中,每一次进步都会引起一部分人的抵触。当 IDE 刚出现时,有经验的程序员认为"使用自动补全是能力不足的表现"。当 AI 代码补全出现时,同样的质疑又出现了:"用 AI 写代码?那你自己会写什么?"这些质疑的背后其实是对同一件事的恐惧:我的技能会不会变得不值钱?

回顾历史,答案是:你的技能不会变得不值钱,但它会变得和过去不同。IDE 时代的程序员不再需要记住几百个 API 名称了,但他们需要理解系统的整体架构——因为有了 IDE,他们有了时间去思考更大的问题。AI 时代的程序员不再需要手写每一行样板代码了,但他们需要判断 AI 生成的代码对不对——因为有了 AI,他们有了时间去验证更多的可能性。

🖼
图3-2:编程工具的认知负担转移
▲ 图3-2:从纸带打孔到自然语言编程,编程工具的演进一直在做同一件事:把认知负担从"记住机器细节"转移到"思考逻辑设计"。横轴是时间,纵轴是开发者注意力的分配比例。
本节要点
Vibe 练习

在一个在线代码 playground 或你的本地编辑器中,用两种方式写同一个功能:

第一步:用 AI 工具生成一个"根据输入的数字返回对应的中文星期几"的函数。

第二步:读 AI 生成的代码,理解它。

第三步:不靠 AI,自己手动改一下——改成支持英文输出。

做完后问自己:理解代码和重写代码,哪个更难?这个体验本身就是 Vibe Learning 的核心。如果你发现"理解"比"手写"更容易——你不是"不会编程",你只是"不需要从零写编程"了——这正是 Vibe Coding 的基本前提。