亚里士多德所影响的哲学家们为重塑这个世界的技术革命奠定了基础。
计算机的历史往往会被描述成是一个实物的演变史,从算盘到巴贝奇的差分机,再到第二次世界大战的密码破译机。事实上,它更应该被理解为是一部产生于数理逻辑的思想史,数理逻辑是一门晦涩且规则缜密的学科,最早发展于 19 世纪。数理逻辑的先驱是一些哲学思想浓厚的数学家,最著名的是乔治·布尔(George Boole)和戈特洛布·弗雷格(Gottlob Frege),他们本身就是受到莱布尼茨(Leibniz)的通用“概念语言”的猜测和亚里士多德的古代逻辑体系的启发。
数理逻辑最初被认为是一门十分抽象的学科,没有任何具体的应用。正如一位计算机科学家所评论的那样:“如果在 1901 年,要求学者公平的对科学界进行评估,并指出在未来哪一个领域最不容易出成果,他很有可能选择数学逻辑。”但是,数理逻辑实际却比其他任何领域对现代世界产生影响所奠定的基础都要来的大。
计算机科学的数理逻辑演变在 20 世纪 30 年代达到了顶峰,当时有两篇具有里程碑意义的论文被发表:克劳德·香农(Claude Elwood Shannon)的《继电器和开关电路的符号分析》和艾伦·图灵(Alan Turing)的《论可计算数及其在判定问题上的应用》。在计算机科学史上,香农和图灵都是首屈一指的人物,但在他们之前的哲学家和逻辑学家的重要性却常常被忽略。
一部著名的计算机科学史将香农的论文描述为“可能是本世纪最重要、也是最引人注目的硕士论文。”香农在写此论文的时候,还是麻省理工大学电子工程系的一名学生。他的导师范尼瓦尔·布什(Vannevar Bush)制造了一台名为“微分分析仪”的原型计算机,可以快速计算微分方程。该装置主要是机械装置,其子系统由电气继电器控制,由于当时还没有系统的电路设计基础理论,所以这些子系统都是临时组织起来的。香农的毕业论文题目是布什推荐他尝试发现这样的理论时产生的。
香农的论文在很多方面都是一篇传统的电气工程论文,主要是电路的方程式和图表。不同寻常的是,他主要参考的是一部 90 年前的数学哲学著作,乔治·布尔(George Boole)的《思维规则》(The Laws of Thought)。
今天,布尔的名字已被计算机科学家所熟知(许多编程语言都有一个叫做布尔的基本数据类型),但在 1938 年,哲学系以外的人很少会读到他的作品。香农本人就是在本科阶段的哲学课本上读到布尔著作的。“碰巧的是,没有人同时熟知这两个领域”他后来曾说。
布尔经常被说成是一名数学家,但他把自己看作是一名追随亚里士多德的哲学家。《思维规则》在开篇就阐明了它的目标 —— 研究人类思维运行的基本规律。
下面这篇论文的设计,就是要研究推理所依据的那些 心理 运作的基本规律;用微积分的符号语言来表达这些规律,并在此基础上建立逻辑学……最后,收集……关于人类 心理 的本质和构成的一些可能的提示。
然后,布尔还向逻辑学的创始者 —— 亚里士多德致敬,也是对他作品影响最深的人。
事实上 , 在古代 的 学术形式上,亚里士多德 几乎就代表着 逻辑学。正如 他 在古希腊中提到的部分技术,《The Organon》里提到的部分形而上学,在今天几乎没有本质变化,并且一直延续到了今天。
对亚里士多德的逻辑学著作试图改进,这无疑是个大胆之举。亚里士多德在他的六部曲《The Organon》一书中提出逻辑学的概念,并在此后 2000 多年的学术原则中一直占据重要位置。人们普遍认为,亚里士多德几乎完善了这一主题的所有内容。伟大的哲学家伊曼纽尔·康德(Immanuel Kant)曾评论道,自亚里士多德以来,逻辑学一直“无法向前再迈出一步,因此从各个方面来看,它已经是完整且充分的了。”
亚里士多德的核心观点是:论证的有效性是基于其逻辑结构的,与所涉及的非逻辑词汇无关。他提出的最著名的论证模式被称为三段论:
-
人皆有一死。
-
苏格拉底是个男人。
-
因此,苏格拉底会死。
你可以把“苏格拉底”替换成任何其他对象,用任何其他的谓词代替“人”,这个论证仍然有效。论证的有效性完全由逻辑结构决定。逻辑词汇——“所有”、“是”和“因此”——构成了这个结构。
亚里士多德还定义了一套基本公理,他从这些逻辑中推导出其逻辑体系的其余部分:
-
一个对象就是对象本身(同一律)
-
任何陈述都不可能既是真的又是假的(矛盾律)
-
每一种说法不是真就是假(排中律)
这些理论并不是为了描述人类实际是如何思考的(那是心理学的范畴),而是在描述一个理想化的、完全理性的人应该如何思考。
亚里士多德的理论化方法影响了一部更为著名的著作 —— 欧几里得的《几何原本》,据估计,该书的印刷数仅次于《圣经》。
虽然表面上讲的是几何学,但《几何原本》却成了教学严格演绎推理的标准教科书(亚伯拉罕·林肯曾说,他通过研究欧几里得,学会了完善的法律论证方法)。在欧几里得的体系中,几何命题是用空间图来表示的。直到 17 世纪 30 年代,笛卡尔证明了可以用公式来替代几何,几何学才得以继续以这种方式进行实践。他的《方法论》是西方第一本普及标准代数符号的数学教科书。x、y、z 代表变量,a、b、c 代表已知量,等等。
笛卡尔的代数让数学家们超越了空间直觉,通过精确定义的形式规则来使用副号。这使得数学的主导模式从图表转向了公式,推动了微积分的发展。在笛卡尔去世后的大约 30 年,牛顿和莱布尼茨分别发明了微积分。
布尔的目标是为亚里士多德逻辑学做笛卡尔为欧几里得几何所做的事:通过给它一个精确的代数符号,把逻辑学从人类直觉的限制中解放出来。举个简单的例子,当亚里士多德写道:
人皆有一死。
布尔用变量替代“人”与“必有一死”,用算术运算符来替代逻辑词“所有”:
x = x * y
这一等式可以解释为 “集合 x 中的所有事物也同样存在于集合 y 中。”
《思维规则》 创造了一个全新的学术领域——数理逻辑——在接下来的几年里成为数学家和哲学家最为活跃的研究领域之一。伯特兰·罗素称《思维规则》为“纯数学的发现”。
香农的独到见解在于,他认为布尔的数理逻辑可以直接应用到电路中。当时,还没有一套系统理论来指导电路的设计。香农意识到,正确的理论应该是“对逻辑学符号研究所使用的命题演算的精确模拟。”
他用一张简单的图表展示了电路与布尔运算之间的对应关系:
香农认为,布尔的系统可以直接映射到电路上。当时,电路还没有系统的理论来规范其设计。香农意识到,正确的理论将 “完全类似于逻辑符号研究中使用的命题微积分”。
通过将这些加法器电路串联在一起,便可构建任意复杂的算术运算。这些电路将成为现在所谓的算术逻辑单元的基本构件,而算术逻辑单元是现代计算机的一个关键组成部分。
香农的另一伟大成就在于 ,他是第一个区分计算机逻辑层和物理层的人。 (这种区分方法现已成为计算机的根本,以至于现代读者很可能无法理解它在当时是如何的重要,有一句谚语曾说过“这一世纪的哲学是下一个世纪的常识。”)
自香农的论文发表以来,计算机的物理层取得了大量的进展,包括贝尔实验室的威廉·肖克利(William Shockley)及其同事在 1947 年发明了晶体管。晶体管是香农继电器的大幅改进版本 —— 也是在物理层进行布尔运算编码的最知名方式。在接下来的 70 年里,半导体行业将越来越多的晶体管集成在越来越小的空间中。2016 年的 iPhone 大约有 33 亿个晶体管,每个晶体管都相当于是香农在其论文中描述的“继电器开关”。
香农展示了如何将逻辑学运用在物理世界中,而图灵则展示了如何用数理逻辑的语言来设计计算机。当图灵在 1936 年写论文时,他试图解决 “决策问题”,这个问题最早是由数学家大卫·希尔伯特(David Hilbert)提出的,他提出,是否有一种算法可以判断任意数学命题的真伪。与香农的论文相比,图灵的论文具有很强的技术性。它的主要历史意义并不在于它对判定问题的回答,而是在于它为计算机设计提供了模板。
图灵的工作习惯可以追溯到戈特弗里德-莱布尼茨,这位哲学巨人独立于牛顿发展了微积分。在莱布尼茨对现代思维做出的诸多贡献中,最令人感兴趣的是被他称之为“通用语言”的概念。按照他的设想,这种语言能够表示所有可能的数学和科学知识。莱布尼茨受 13 世纪宗教哲学家拉蒙·卢尔(Ramon Llull)的部分启发,他设想这种语言将像埃及象形文字一样是表意字符,只是字符对应的是数学和科学的“原子”概念。他认为,这种语言将为认为提供一种“工具”,可以加强人类的理性,“其重要程度将远超显微镜和望远镜等光学工具。”
他还设想了一种能够处理这种语言的机器,并将其称之为“推理演算机”。
如果发生了争论,那么两个哲学家之间的争论是不必要的,就像两个会计师之间的争论一样。只要他们手里拿着笔,他们就会互相说:让我们来算微积分吧!
莱布尼茨没有得到机会去发明他的通用语言或相应的机器(尽管他的确发明了一种相对简单的计算机器——步进计算器)。
第一次真正实现莱布尼茨设想发生在 1897 年,当时德国哲学家戈特罗布·弗雷格(Gottlob Frege)发表了一部具有里程碑意义的逻辑学著作《概念文字》(Begriffsschrift)。受布尔尝试改进亚里士多德逻辑学的启发,弗雷格发明了一个更先进的逻辑体系。今天在哲学和计算机科学课程中教授的逻辑学 —— 一阶逻辑或谓词逻辑 —— 只是对弗雷格体系的轻微修改。
弗雷格被誉为 19 世纪最重要的哲学家之一。其中,人们认为他推动了著名哲学家理查德·罗蒂(Richard Rorty)所说的哲学“语言学转向”的发展。启蒙时期的哲学被知识问题所困扰,弗雷格之后的哲学则被语言问题所困扰。他的门徒伯特兰·罗素和路德维希·维特根斯坦是 20 世纪最重要的两位哲学家。
弗雷格逻辑学的主要创新在于它能更准确地反映出日常语言的逻辑结构。其中,弗雷格是第一个使用量词(”for every”、”there exists”)并将宾语与谓语分开的人。他也是当今计算机科学中一些基本概念的提出者,如递归函数和有范围与限制的变量。
弗雷格的形式语言 —— 他称之为”概念脚本” —— 是由无意义的符号组成的,这些符号被明确的规则所操控。语言只有通过解释才会被赋予意义,而解释是单独规定的(这种区别后来被称为语法与语义)。这就把逻辑学变成了著名的计算机科学家艾伦·纽厄尔和赫伯特·西蒙所说的 “符号游戏”,”根据某些纯粹的语法规则和基于无意义的符号来玩游戏。
所有的意义都被清除了。人们有了一个可以证明各种事物的机械系统。因此,要取得进步,首先要远离一切似乎与意义和人类符号有关的东西。
正如伯特兰·罗素所说的那样:”数学可以被定义为一门我们永远不知道自己在说什么,同时也不知道自己说的对或错的学科。”
弗雷格的工作为人们带来了一个意想不到的结果:发现了数学基础中的漏洞。例如,欧几里得的《几何原本》几千年以来一直被认为的逻辑严谨的黄金标准,但竟然也充满了逻辑错误。因为欧几里得在其中使用了“直线”和“点”这样的普通词汇,因此在面对含有这两个词的语句中, 他(以及数千年来的读者)诱使自己做出了想当然的假设。举一个相对简单的例子,在普通用法中,“直线”这一词表示,三个位于不同位置的点处于同一“直线”上,那么其中一点必在另外两点之间。但当你用形式逻辑来定义“直线”时,“之间”这个概念也需要被加以界定 —— 这是欧几里得所忽略的。形式逻辑让这种缺漏很容易地被发现了。
这一认知引发了数学基础的危机。如果作为数学圣经的《几何原本》出现了逻辑错误,那么其他数学领域是否也存在同样错误?像物理这类建立在数学基础上的学科是否存在同样问题?
值得庆幸的是,用来发现这些错误的逻辑方法也同样能够纠正它们。数学家开始自下而上地重建数学的基础。1889 年,朱塞佩·皮亚诺(Giuseppe Peano)提出了算术原理;1899 年,希尔伯特提出了几何学原理。希尔伯特还提出了一个计划,试图将数学的其余部分形式化,并并列出了形式化所应满足的具体要求,包括:
-
完备性: 能够证明所有真实的数学陈述都可以在形式系统中得到证明。
-
确定性: 应该有一种算法可以确定任何数学陈述的真假。(这其实就是图灵论文中提到的“判决问题”或“决策问题”)
通过满足这些要求的方式重建数学,被称为希尔伯特计划。直到 20 世纪 30 年代,这一直是主要逻辑学家的研究重点,包括:希尔伯特、罗素、库尔特·哥德尔(Kurt Gödel)、约翰·冯·诺依曼(John Von Neumann)、阿隆佐·邱奇(Alonzo Church)和图灵。
希尔伯特的计划至少在两条战线上得以进行。第一条战线上,逻辑学家创造了逻辑系统,以试图证明希尔伯特的要求是否可以满足。
第二条战线上,数学家们使用逻辑概念来重建经典数学。例如,Peano 的算术系统从一个称为后继函数的简单函数开始,该函数会将任何数加 1。他用后继函数递归地定义加法,用加法递归地定义乘法,等等,直到定义了所有的数论运算。然后他将这些定义,连同形式逻辑,证明了关于算术的定理。
历史学家托马斯·库恩(Thomas Kuhn)曾说过:“在科学领域,只有在困难的情况下,新奇的事物才会出现。”在希尔伯特的逻辑时代,逻辑学处于一个不断创造和毁灭的混乱过程。在一位逻辑学家建立了复杂系统后,另一位逻辑学家很有可能很快将其摧毁。
最受欢迎的重构工具是自我参考的构建,即自相矛盾的陈述,表明它所依据的原理本身就存在矛盾。“说谎者悖论”的简单形式是这样的:
这个句子是假的。
如果它是真的,那么它就是假的,如果它是假的,那么它就是真的,导致自我矛盾的无尽循环。
罗素首次在数学逻辑中使用了说谎者悖论。他证明了弗雷格的系统可以推导出自相矛盾的集合:
设集合 R 的一切不是由自身组成。如果 R 不是自身元素,那么它的定义就决定了它必须包含自身,如果它包含自己,那么它就与自己的定义自相矛盾,它是所有不属于自身的集合组成。
这被称为罗素悖论,也被认为是弗雷格成就的一个严重缺陷。(弗雷格本人也被这一发现所惊讶。他对罗素回答道:”你发现的矛盾引起了我的惊讶,甚至可以说是惊愕,因为它动摇了我本打算建立算术的基础。”)
罗素和同事阿尔弗雷德·诺思·怀特黑德(Alfred North Whitehead)为完成希尔伯特的计划,在 1910 年至 1913 年间进行了雄心勃勃的尝试,并发表了三卷《数学原理》(Principia Mathematica)。该书使用的方法非常详细,光是为了证明 1+1=2 便花费了 300 多页。
罗素和怀特黑德试图通过引入他们所谓的“类型理论”来解决弗雷格系统的悖论。他们的想法是将形式语言划分为多个层级或类型。每一个层级都可以引用下一个层级,但不能引用自己或更高的层级。这实际上通过禁止自我参考,解决了自我参考的悖论。(这种解决方案并没有受到逻辑学家的欢迎,但它确实影响了计算机学 —— 大多数现代计算机语音都拥有受类型论启发的特性。)
自我参考的的悖论最终表明,希尔伯特计划永远无法成功。第一个打击出现于 1931 年,当时哥德尔提出了著名的不完备性定理。该定理证明,任何强大到足以涵盖算术原理的逻辑系统,也必定包含一些真但不能证明为真的命题(哥德尔的不完备性定理是少数几个被广泛普及的逻辑结果,这要归功于《哥德尔、艾舍尔、巴赫》和《皇帝新脑》等书。)
给予希尔伯特计划最后一击的是图灵和阿朗佐-丘奇分别证明了不可能存在一个可以确定任意数学陈述是真还是假的算法。(丘奇是通过发明一个全新的系统—— lambda 微积分,该系统后来启发了像 Lisp 这样的计算机语言。)判定问题的答案是否定的。
图灵的主要观点来自于他 1936 年的著名论文《论可计算数及其在判定问题上的应用》的第一节。为了严谨地提出判定问题,图灵首先创建了一个数学模型(如今,符合这一模型的机器被称为 “通用图灵机”)。正如逻辑学家马丁·戴维斯所描述的那样。
图灵知道,算法通常是由一系列规则指定的, 人们就像参照烹饪书中的食谱一样,可以以精确的机械方式遵循这些规则。他能够证明, 这样的人可以被限制在几个极其简单的基本动作上,而不改变计算的最终结果。
然后,通过证明没有一台只执行这些基本动作的机器能够用弗雷格的规则确定给定的提出的结论是否从给定的前提中产生,他就能够得出结论:不存在 判定问题的 算法。
作为 一个 副产品,他 发现 了一个通用计算机的数学模型。
接下来,图灵展示了如何将程序与运行的数据存储在计算机内部。换而言之,他发明了 “存储程序 “的结构,该结构也是大多数现代计算机的基础。
在图灵之前,一般的假设是,在 使用 这类机器时,三个类别 : 机器、程序和数据是完全独立的实体。机器是一个物理 实体 ; 如今 我们称之为硬件。程序是指完成一次运算,可能体现在打孔卡或插线板上的电缆上。最后,数据是 数值 输入。图灵的 通用 机表明,这三个类别的区别是一种错觉。
这是第一次严格的证明,任何可以在硬件中编码的计算逻辑也可以在软件中编码。图灵所描述的结构后被称为“冯·诺伊曼结构”——但现代历史学家普遍认为它源于图灵,冯·诺依曼本人也是这样认为。
虽然在技术层面上,希尔伯特计划是失败的,但一路走来的努力表明,大规模的数学研究可以从逻辑中构建出来。香农和图灵的洞见展示了电路、逻辑和计算机之间的联系 —— 这种新的概念机可能会被用于计算机的设计。
二战期间,这一理论被付诸实践,政府实验室在当时征召了一批知名逻辑学家。冯·诺依曼参与了洛斯阿拉莫斯的原子弹计划,在那里他从事计算机设计以支持物理学的研究。他在 1945 年编写了 EDVAC 的设计规范——第一台存储程序、基于逻辑的计算机 —— EDVAC 被普遍认为是现代计算机设计的权威性源指南。
图灵加入了伦敦西北部布莱切利公园的一个秘密机构,在那里他帮助设计了破解德国密码的计算机。他对实用计算机设计最长远的贡献是他对确立了 ACE(即自动计算引擎)的规范。
作为第一批基于布尔逻辑和存储程序架构的计算机,ACE 和 EDVAC 在许多方面都很相似。但它们也存在着一些有趣的差异,其中一些差异引发了人们对现代计算机设计的争论。冯·诺依曼倾向的设计类似于现代的 CISC(”复杂”)处理器,将丰富的功能集成到硬件中。而图灵的设计则更像现代的 RISC(”简化”)处理器,将硬件的复杂性降到最低,并将更多的工作分配给软件。
冯·诺依曼认为计算机编程将是一项枯燥乏味的文职工作。相反,图灵则说计算机编程 “应该是非常迷人的。它没有任何危险,因为那些机械性的工作或许可以交给机器本身来完成。”
自 20 世纪 40 年代以来,计算机编程已经明显变得更加复杂。但有一点没有改变的是,计算机仍然需要程序员来制定规则。在哲学上,我们会说计算机编程遵循了演绎逻辑的传统,也就是上面讨论过的逻辑分支,它的处理是根据形式规则来操控符号。
在过去的十年里,随着机器学习的日益发展,编程开始发生变化,机器学习涉及为机器的创建框架,通过统计推理进行学习。这使得编程更接近逻辑学的另一个主要分支 —— 归纳逻辑,该分支研究的是通过具体实例来推导规则。
如今,最具潜力的机器学习技术使用的是神经网络,神经网络最早是由沃伦·麦卡洛克(Warren McCulloch)和沃尔特·皮茨(Walter Pitts)在 20 世纪 40 年代发明的,他们的想法是开发一种神经元的微积分学,可以像布尔逻辑一样,用于构建计算机电路。但在之后的岁月里,神经网络一直默默无名,直到它与统计相结合,使得两者能够随着输入更多数据而不断改进。最近,随着计算机在处理大数据集方面变得越来越熟练,这些技术取得了显著的成果。未来的编程可能意味着把世界展示在神经网络前,让神经网络自己去学习。
这将是计算机发展史的第二幕。逻辑学最初是作为理解思维规律的一种方式。之后,它帮助创造了能够根据演绎逻辑规则进行推理的机器。今天,演绎逻辑和归纳逻辑被结合了起来,创造出既能推理又能学习的机器。用布尔的话来说,开始于 “关于人类思维的本质和构成 “的研究,可能会创造新的思维 —— 人工思维 —— 有朝一日可能会与我们自己的思维相媲美,甚至超越我们自己的思维。
*以上内容翻译自 cdixon 的《How Aristotle Created the Computer》,如需原文请与我们联系。
我们是以第一性原理研究为基础的专业机构,欢迎关注和留言。
微信号: Alexqjl