# 编程的演变

从插线、汇编到高级语言、AI辅助编程，看八十年来人们如何把想做的事写成计算机能执行的指令。

By cosmic\-panda\-06d658e3

Topic: Computing, AI &amp; Electronics

[Open the interactive Jig](https://ask.jig.com/j/LmJjBrHr9B0J)

## Transcript

### 1. 写代码，到底在做什么？

想让计算机算出这个月一共花了多少钱，它需要知道：支出记在哪里，哪些属于本月，怎样相加，结果显示在哪里。编程，就是把我们想让计算机做的事，变成它能执行的指令。这张长桌从左到右，摆着八十年来人们写指令的方式。

拖动画面可以转动桌子，看看每台机器的背面。

### 2. 接线、拨开关的年代

早期的ENIAC没有“程序文件”：插线把运算单元连起来，开关设定数字，电流怎么走，就算什么。后来的存储程序计算机，把程序也变成数字，和数据一起存进存储器。机器反复做三件事：取出下一条指令，看懂它，执行它，这叫“取指—执行”循环。从哪里取数、做什么运算、结果存到哪里，每一步都要人亲自写成数字。

1945年完成的ENIAC，换一道题往往要花好几天重新接线，再花好几天检查。存储程序以后，换题只要换一串数字。

### 3. 给数字指令起名字：汇编

一串数字太难记，于是人们给每种操作起一个好记的名字，比如用A表示加法。写好的符号程序交给“汇编程序”，它一行一行查表，把名字换成操作编号，把位置换成存储单元的地址。一行汇编基本就对应一条机器指令。程序好读了，可每一步怎么执行，还是人来安排。按下按钮，看汇编程序把A 80 F换成数字。

1949年剑桥大学的EDSAC计算机上，A 80 F的意思是：把80号存储单元里的数加进来。换成二进制（只用0和1的写法）后，A是11100，接着空一位0，80是0001010000，末尾的F记作0。

### 4. 更像数学：高级语言

高级语言让人直接写计算逻辑。叫“编译器”的程序在运行前读完整段代码，把一行公式拆成许多条机器指令，再交给计算机执行。1957年的FORTRAN编译器还会优化，翻译出的程序几乎和手写的一样快。1964年的BASIC面向学生，配合“分时”系统：很多人坐在各自终端前，计算机轮流为每人服务一小会儿，敲下RUN几秒就能看到结果。按下按钮，看一张写着公式的卡片送进机器，被拆成好几行指令，最后打印出结果。

BASIC第一次运行是在1964年5月1日凌晨，在美国达特茅斯学院的终端上敲下RUN。

### 5. 一行代码，规则还得你定

今天用Python，把支出加起来只要写 sum\(expenses\)。Python的“解释器”边读边执行，替你逐个取出数字、相加、记住总数。可它只会照字面做事：哪些记录属于本月、退款要减掉、重复的记录只算一次，这些规则还得由人写成判断条件。按下按钮，看看规则怎样一张张筛选小票。

灰色小票是上个月的，被“只算本月”筛掉；红色是退款，要减去；黄色那张是重复记录，只留一张。

### 6. 像搭积木一样做软件

软件越做越大，记账工具还需要输入框、按钮、图表和数据保存。常用功能做成了库和组件，常见结构做成了框架，不用每次从零写。1991年的Visual Basic，先在窗口里拖放按钮和输入框，再给每个“事件”写一小段代码。程序平时安静等待，用户点一下按钮，就运行对应的那一段，这叫“事件驱动”。按下按钮，点一下窗口里的按钮，看它对应的那段代码一行行运行。

低代码和无代码工具更进一步，用拖拽和配置搭应用，一直和传统编程并行发展。

### 7. AI开始帮忙写代码

2021年，GitHub发布Copilot技术预览。背后的AI模型读过大量公开代码，学会了“接下来最可能写什么”。你写下一句注释，比如“统计每个分类的支出”，它就根据注释和周围代码，猜出后面几行。后来，AI还能读整个项目、修改多个文件、运行测试，再根据报错继续改。按下按钮，看灰色的建议出现，再按Tab键接受它。

AI的建议是一种预测，不是保证正确的翻译，所以仍要人来看一看。2025年发布研究预览的Claude Code，就展示了这些能力。

### 8. Vibe Coding：说想法，看结果

2025年2月，Andrej Karpathy提出Vibe Coding：主要用对话表达想法。它像一个循环：你说出想要什么，AI写出或修改代码并运行，你看结果，再提下一个要求。你不必先写出完整的技术说明，也不用读懂每一行代码，可以一边试用一边改。点按钮，向AI提出下一个修改。

先做出记账初版，再说“支付方式改成下拉选择”，最后加上分类统计。

### 9. 试一试，才知道对不对

编译器按明确的语言规则翻译程序，同样的代码每次结果都一样；AI则根据你的话生成一种方案，可能会误解，也可能漏掉情况。所以要亲自试用：总额对不对？分类能不能改？关掉再打开，记录还在不在？发现问题就告诉AI，改完再试一遍，直到每项都通过。写成自动“测试”，以后每次修改都能一键重查。

Karpathy复盘自己的项目时说，界面很快就出来了，可连接服务、部署和排错还要花不少功夫。
