专题 · 8 · 2 环的主人不在馆里

计算机

终点:你手边任何一台机器里的那颗处理器

「照着步骤做」这件事本身被一点点看清楚:先有了名字,再有了记数法,再被写成代数,最后被问「有没有做不到的事」——答案是有,而正是这个答案给出了机器的设计图。

缩略轴按先后排列,间距不表示年数;实心=馆里有他,空心=还没有。

  1. 约820

    把解题写成一串照着做就行的步骤算法

    花拉子米约780–约850algebra 与 algorithm

    他那本讲印度数字的书,十二世纪的拉丁译本开头一句是「花拉子米如是说」,Algoritmi dixit。译名在欧洲变成了这类步骤的通称,「算法」这个词就是这么来的。他本人没有定义过算法,是他的书名替他做了这件事。

  2. 1703

    只用 0 和 1 记数语言

    莱布尼茨1646–1716只用 0 和 1

    二进制不是他先想到的,但他是第一个把它写成一篇正式论文、并且认真对待它的人。他关心的其实是别的:他觉得 0 与 1 能造出万物这件事有神学意味。要再等两百三十四年,才有人发现二进制真正的用处在开关上。

  3. 1847

    逻辑可以写成代数结构

    布尔1815–1864x 乘 x 还是 x

    他的 x 从头到尾是一类东西,不是真假值:乘是取交,1 减是取补。x·x = x 这条在数的代数里只有 0 和 1 满足的式子,在他这里对每一类都成立——这正是后来能落到开关上的那一条。

  4. 1931

    任何一套够强的公理系统,都有它证不出来的真话边界

    哥德尔1906–1978这句话证不出来

    他的办法是给每一个公式编一个号,让系统能谈论自己。这一步——把程序当数据编码——后来被图灵直接搬进了机器的设计里。

  5. 1936

    一条纸带、一张规则表,就够了语言

    图灵1912–1954机器的描述,也是数据

    真正改变世界的不是那台机器,是下一页:既然每台机器都能写成一张表,那张表也能当作另一台机器的输入——一台机器就能模拟全部机器。通用机的概念在这里,而不在任何一台实物上。

  6. 1937

    一个开关网络,就是一个布尔表达式结构

    布尔1815–1864一个开关网络,就是一个布尔表达式

    香农二十一岁的硕士论文把布尔代数按在继电器电路上:串联是与,并联是或,电路的化简成了式子的化简。九十年前写下的一套符号,忽然成了造电话交换机的工具——「结构」型数学最干净的一例。

  7. 1945

    程序与数据住在同一块存储器里语言

    冯·诺依曼1903–1957不在馆里

    《EDVAC 报告初稿》把机器分成运算、控制、存储、输入、输出五部分,并且让指令和数据用同一种方式存放。今天所有通用处理器仍是这个样子。这份报告署名只有他一个人,而莫奇利与埃克特的贡献被这件事盖住了,是计算机史上争议最久的一桩公案。

  8. 1971

    有些问题算得出,却算不快边界

    库克1939–不在馆里

    图灵划的是「能不能算」,这一条划的是「算得动算不动」。库克证明布尔可满足性是 NP 里最难的一类;莱文在苏联独立得到同样的结论。P 是不是等于 NP 至今没有答案,而现代密码学的安全性正建立在「不等于」这个假设上。