02 - 语言的进化:从「记地址」到「说人话」
上一章我们得出结论:人和机器之间需要一座「翻译桥」。但这座桥不是一天建成的,它经历了好几代进化。看懂这个进化过程,你就能理解「高级语言」到底高级在哪。
第一层遮羞布:汇编语言
既然记不住一长串 0 和 1,人们的第一个念头很自然:给每一串 0 和 1 起个好记的名字。
比如:
- 机器码
10111000太难记 → 就叫它mov(搬运); - 某串表示「相加」的编码 → 就叫它
add。
于是程序从「一串 0 和 1」变成了这样:
mov ax, 1 ; 把数字 1 放进 ax
add ax, 2 ; 给 ax 加上 2
这就是汇编语言。它本质上还是机器码,只是把难记的数字换成了好记的单词。旁边再放一个叫汇编器的小程序,负责把 mov、add 这些词换回对应的 0 和 1。
汇编解决了「记不住」的问题,但还是很累:
- 你还是得一步一步地指挥机器搬数据、算数,颗粒度极细。
- 换一种 CPU,这套单词表又变了,程序还得重写。
汇编是「离机器很近」的语言:好记了一点,但你思考的方式,还是机器的方式。
真正的飞跃:高级语言
人们真正想要的,是能用接近自己思维的方式写程序。我想算「1 加 2」,我就想直接写:
result = 1 + 2
我根本不想关心数据被搬到了 CPU 的哪个位置、用了哪个寄存器。
于是高级语言出现了(C、Java、Python、JavaScript 都属于这一类)。它们的特点是:
- 你用接近数学和自然语言的方式表达想法;
- 那些「数据放哪、怎么搬」的脏活,交给翻译程序去操心;
- 一份代码,往往能在不同的机器上跑(不用为每种 CPU 重写)。
关键的直觉:越「高级」,离人越近、离机器越远
把这几代语言排成一条线,你会看到一个清晰的规律:
机器码 → 汇编语言 → 高级语言
0 和 1 add/mov result = 1 + 2
离机器最近 离人最近
翻译最省事 翻译最费劲
- 越往右,写起来越舒服、越接近人的想法;
- 但也正因为离机器越来越远,中间那个「翻译」要干的活就越来越重。
这是个此消彼长的关系:人省下来的力气,其实是翻译程序替你扛了。
所以「高级语言」的高级,不是说它更厉害,而是说它更贴近人、把更多麻烦甩给了翻译。这也是为什么后面几章我们要重点搞懂:这个「翻译」到底是怎么工作的。
小结
- 汇编语言:给难记的 0/1 起好记的名字(如
add、mov),本质还是机器思维。 - 高级语言:让你用接近人的方式表达想法,脏活交给翻译程序。
- 一条规律:语言越高级,离人越近、离机器越远,翻译要做的事就越重。
- 人省下的力气,都是翻译程序替你扛了。
- 下一章我们换个角度:如果让你来设计一门全新的语言,你到底要设计哪些东西?
上一章 ← 01 - 机器只认识 0 和 1 | 下一章 → 03 - 设计一门语言,到底要设计什么? | 回到 README 目录