专题 · 8 环 · 2 环的主人不在馆里
计算机
终点:你手边任何一台机器里的那颗处理器
「照着步骤做」这件事本身被一点点看清楚:先有了名字,再有了记数法,再被写成代数,最后被问「有没有做不到的事」——答案是有,而正是这个答案给出了机器的设计图。
缩略轴按先后排列,间距不表示年数;实心=馆里有他,空心=还没有。
- 约820
把解题写成一串照着做就行的步骤算法
花拉子米约780–约850《algebra 与 algorithm》
他那本讲印度数字的书,十二世纪的拉丁译本开头一句是「花拉子米如是说」,Algoritmi dixit。译名在欧洲变成了这类步骤的通称,「算法」这个词就是这么来的。他本人没有定义过算法,是他的书名替他做了这件事。
- 1703
只用 0 和 1 记数语言
二进制不是他先想到的,但他是第一个把它写成一篇正式论文、并且认真对待它的人。他关心的其实是别的:他觉得 0 与 1 能造出万物这件事有神学意味。要再等两百三十四年,才有人发现二进制真正的用处在开关上。
- 1847
逻辑可以写成代数结构
他的 x 从头到尾是一类东西,不是真假值:乘是取交,1 减是取补。x·x = x 这条在数的代数里只有 0 和 1 满足的式子,在他这里对每一类都成立——这正是后来能落到开关上的那一条。
- 1931
任何一套够强的公理系统,都有它证不出来的真话边界
他的办法是给每一个公式编一个号,让系统能谈论自己。这一步——把程序当数据编码——后来被图灵直接搬进了机器的设计里。
- 1936
一条纸带、一张规则表,就够了语言
真正改变世界的不是那台机器,是下一页:既然每台机器都能写成一张表,那张表也能当作另一台机器的输入——一台机器就能模拟全部机器。通用机的概念在这里,而不在任何一台实物上。
- 1937
一个开关网络,就是一个布尔表达式结构
香农二十一岁的硕士论文把布尔代数按在继电器电路上:串联是与,并联是或,电路的化简成了式子的化简。九十年前写下的一套符号,忽然成了造电话交换机的工具——「结构」型数学最干净的一例。
- 1945
程序与数据住在同一块存储器里语言
冯·诺依曼1903–1957不在馆里
《EDVAC 报告初稿》把机器分成运算、控制、存储、输入、输出五部分,并且让指令和数据用同一种方式存放。今天所有通用处理器仍是这个样子。这份报告署名只有他一个人,而莫奇利与埃克特的贡献被这件事盖住了,是计算机史上争议最久的一桩公案。
- 1971
有些问题算得出,却算不快边界
库克1939–不在馆里
图灵划的是「能不能算」,这一条划的是「算得动算不动」。库克证明布尔可满足性是 NP 里最难的一类;莱文在苏联独立得到同样的结论。P 是不是等于 NP 至今没有答案,而现代密码学的安全性正建立在「不等于」这个假设上。