计算简史

在这一个世纪中,计算有跳跃性的进展,对人类文明产生十分巨大的影响。在人类漫长的历史里,计算如何从古代懵懵懂懂的操作经验,慢慢提升到了解到它的本质,逐渐从数学里分化出来,有自己研究的目标、方法,作为一个成熟的知识领域。李国伟教授从软体、硬体双方的发展来看计算如何从数学逐渐演化出来的历程,以横贯东西文明的观点看其历史的纵深。

计算简史

● 建构数学知识的两大方式——论证、计算

数学知识主要是由「论证」与「计算」的方法建构成。人类古文明从两河流域到埃及,人们发觉某些几何命题的真确性是无庸置疑的,于是作为推导其他看似复杂命题的起点,并以这种思维发展出公理法的论证方式。

在西元前300年,欧几里得(Euclid)将过去人们丰硕的思想,统整出缜密的逻辑系统,写进《几何原本》(Elements)中。这本著作成为西方知识发展的重要基石,在近代仍然发挥它深远的影响力,像是史宾诺沙(Baruch de Spinoza)的《伦理学》(Ethica Ordine Geometrico Demonstrata)、牛顿的《自然哲学的数学原理》(Philosophiæ Naturalis Principia Mathematica)、美国《独立宣言》都是参照《几何原本》公理法写成的。

1820年,伽罗瓦(Évariste Galois)发展「群」与「有限体」等概念,用结构性的论证得到多项式可用根式解的充要条件,以更高层次来看待数学的结构,成为数学史上重要的分水岭,推理论证成为数学的主流。到19、20世纪最具影响力的数学家——希尔伯特(David Hilbert)巧妙深刻的存在性证明,将论证数学带上高峰,领导整个20世纪数学的发展。然而,这也使得计算方法在漫长的岁月受到贬低。

每种学术方法都各有各个的存在的价值与意义。计算作为建构数学知识的方式尽管在过去被轻视,但在人类文明的发展上占有一席之地。它的起源远远早于论证,本身人类对量的处理就是「计算」。计算可视为由三大要素「算法」、「表征」、「工具」所组成。

-算法

算法(algorithm)是一组明确的规则,给出一系列操作后,得以解决特定类型的问题。具有限性、清晰性、有效性、输入输出的特征。

《几何原本》是论证数学的经典著作,但其中也包含了古代最具代表性的算法——辗转相除法(欧几里得算法)来求得最大公因数。在中国古代数学里,也有本质完全一样的「更相减损法」,最早被记载在西汉问世的《筭数书》中:

「约分术曰:以子除母,母亦除子,子、母數交等者,即约之矣。有曰:约分术曰:可半,半之。可令若干一、若干一。其一术曰:以分子除母,少,以母除子,子、母等,以为法。子、母各如法而成一。不足除者可半,半母亦半子。」

另一本东汉的著作《九章算术》也提到约分术,本质跟前两者完全一致。

「约分术曰:可半者半之;不可半者,副置分母、子之數,以少减多,更相减损,求其等也。以等數约之。」

这本《九章算术》是中国古代数学最重要的著作。三国时代,魏国数学家刘徽为这本著作注解,他不仅得出圆周率的近似值为3.1416,也用「出入相补术」证明了毕氏定理。虽然刘徽没有发展出像欧几里得那套严密的逻辑系统,但仍然在他的著作中看见中国数学完整的思想脉络。古代中国数学常以「问题集」的方式呈现其成果,依序用这五条项目来表达:

  1. 问,很具体的带着数据的问题。
  2. 答,给出这个问题的数字解。
  3. 术,得出答案的方法,也就是「算法」。
  4. 注,解释前人算法为何是对的,呈现一套思想脉络。
  5. 草,在宋朝之后加了演算过程的细节。

-表征

表征(representation)就是在计算的过程中有输入跟输出,在脑中抽象的概念必须转化成具体的形象来代表,作为可以让人彼此沟通的实像。表征经过漫长岁月的演变渐渐变得抽象、复杂,现在几乎任何东西都可以透过适当的表征,一层一层的化为表征计算最基本对象「数」。再透过数字的编码(coding),可以针对各式各样的对象进行计算来解决问题,像是物理学中的问题等等。

●中西文明的合金与辉映——十进位、二进位

中世纪的欧洲因为经历黑暗时代,科学发展受到宗教的钳制。此外,数学的发展也受到希腊数字系统本身的限制而停滞很长一段时间,一直到斐波那契(Leonardo Fibonacci)在1202年出版了《计算之书》(Liber Abaci),引进十进位制的印度数字系统(123456789)以及0的符号,让欧洲社会摒弃过去传统的罗马数字,对商业、金融、科学发展产生深远的影响。在这本著作中讨论到的算法、算题,其中像是:分数加法、配分比例等与《九章算术》的内容相似。这背后可能暗示着中国知识透过这本著作接枝到欧洲的文明发展。

近代欧洲强盛的文化发展不单单只是靠自己的力量发展起来,在12世纪传递与交融的时代中,欧洲本身的文化脉络与阿拉伯、印度、中国的文化紧密交织成多股合成的绳子,构成新欧洲的十分坚实核心,推动下个时代的科学革命与工业革命。

莱布尼兹自己发展出对于电脑计算十分重要的二进制记数法,博学多闻的他十分景仰中国文化。当时在中国的耶稣会教士白晋(Joachim Bouvet)寄信给莱布尼兹,介绍中国学术思想以及中国史,其中他特别强调《易经》这本著作,认为它是中国科学和哲学的源头。1701年,莱布尼茨写信给白晋,详细介绍了他发明的二进制后,白晋回信给莱布尼茨,附上了「伏羲64卦方位图」。他的慧眼看出中国古代数学依循的原理就是莱布尼茨提出的二进制,易卦中的阳爻「—」比作二进制中的「1」;把阴爻「--」比作「0」 。1703年,莱布尼茨透过《关于二进制算术的说明并附其应用以及据此解释古代中国伏羲图的探讨》这篇论文向欧洲社会阐明出东西文化思想的辉映。

-工具

工具(tool)是外在的媒介,透过这些工具帮我们处理计算。西元前300年,巴比伦人已经开始使用大理石制的算板;印加人利用结绳(khipu)来计数;古罗马也曾出现过金属算盘。中国古代运用算筹来计算,至于中国算盘出现的时间目前还有争论。一直到明朝中叶1592年,程大位撰的《直指算法统宗》集珠算之大成,使得珠算盘在民间广为流传,从此取代了算筹。

一直到近代,随着机械计算器的问世,西方社会才开始出现计算工具较大的进展。17世纪中叶,帕斯卡(Blaise Pascal)为了减轻父亲计算税率税款的繁复计算,自己制作出一台可以加减、进位的机械式计算机(若遇到乘除则是使用连加、连减的方法来进行运算)。当帕斯卡的「加法器」论文流传到莱布尼兹手上,莱布尼兹为帕斯卡的齿轮计算机的设计添增了莱布尼兹轮,可以进行加减乘除的四则运算。然而单靠他的力量无法完全的制造出一台没有瑕疵的计算机,后来他请钟表匠Oilvier帮他制作新型的计算机。虽然莱布尼兹的计算机没有完全成功,但他仍然被后人推崇为计算机器的先锋。

● 分析机织出代数的式样

巴贝奇(Charles Babbage)得到比前人更高明的想法,他将复杂的数学运算分解成许多步骤,来简化每一次计算的过程。把机器结构分为两大部分,分别是「计算」和「储存」单元,可以将计算过程中的暂时结果储存在机器中。接着他发想出分析机(analytic engine),透过指令的输入让机器自动进行各种运算,避免计算结果受到人为错误的影响。甚至可以在机器中进行程式逻辑的处理,条件判断、回圈等等。

巴贝奇所提出的革命性构想,控制和逻辑渗入计算工具的演化,作为当代电子计算机的雏型。这个想法也不是凭空迸出来的,这位天才的造就也跟当时的文明发展有密切的相关。分析机中的「计算单元」和「储存单元」来自于当代工业「工厂」(mill)、「仓库」(store)。自动化的概念深受当时雅卡尔(Joseph Marie Jacquard)发明的缇花纺织机启发,借用自动化的纺织机的输入媒介——打孔卡,作为分析机的输入工具。

「正如雅卡尔的缇花纺织机提出花朵与树叶一样,分析机织出代数的式样。」

爱达.拜伦(Augusta Ada Byron 

●符号逻辑变成了计算机语言

自从亚里斯多得,逻辑学首次最大革新,在1854年,布尔(George Boole)出版了一篇跨时代的著作The Laws of Thought,将逻辑符号化,使逻辑成为数学的一部分,建立了命题逻辑的体系。其中详细介绍了一种代数化的逻辑系统,后人称之为布尔代数(Boolean algebra)。在1937年,由仙农(Claude Shannon)阐明如何使用开关来实现逻辑和数学运算,把电路的解释与布尔代数结合起来,写在他的硕士论文《继电器与开关电路的符号分析》(A Symbolic Analysis of Relay and Switching Circuits)中,奠定了数位电路的理论基础。

然而命题逻辑不足以表达对于所有或存在某些的量化词的语句性质,所以缺乏符号陈述所有数学命题的能力,所以命题逻辑必须要升级到谓词逻辑(Predicate Logic)。谓词逻辑的兴起从1879年弗雷格(Gottlob Frege)开始有深刻思想,他给出「集合」严格的定义。中间经过了罗素等人发展悖论,最终在1928年,希尔伯特定下来谓词逻辑的最终型态,提出「判定式问题」:有没有一种算法,能够判定在谓词逻辑下的命题是否可以证明成立?

为了解决某个问题是否存在算法解,在1930年代许多论述相继提出,像是埃尔布朗(Herbrand)与哥尔德(Kurt Gödel)的方程组、丘奇(Alonzo Church)的λ演算、克林尼(Stephen Kleene)的递归函数、波斯特(Emil Post)的机器模式。在1936年,丘奇与图灵解决了判定性(decidability)问题,谓词逻辑不存在一种判定算法,论证与计算之间有本质上的差异,证明原先希尔伯特提出的用计算来代替论证的计画永远无法实现。

●现代计算机科学的鼻祖——图灵

最终在1936 年,图灵(Alan Turing)发表了跨时代的文章《论可计算数及其在判定性问题上的应用》(On Computable Numbers, with an Application to the Entscheidungsproblem),将逻辑跟计算机完全的整合在一起,发明了理论计算机,证明通用计算机的存在以及证明计算机无法解决的问题,像是停机问题。换句话来说,上述提到的算法、表征、工具都是错觉!在理论的层次,它们能整合在一个架构里去理解。起初,人类在外面操作机器;现在,把机器的操作跟机器整合在一起。

「在图灵之前,一般都认为机器、程式、资料三个范畴,是全然不同的区块,机器是物理性的物件,我们今天称之为硬体。程式是准备做计算的方案……资料是数值的输入。通用图灵机告诉我们三个范畴的区分只是错觉。」

●图灵机实体的实现

在二战结束后,图灵参与国家物理实验室的自动计算引擎(Automatic Computing Engine,ACE)计画,但最终ACE计画以失败收场。直到1948年,威廉斯(Frederic Williams)才成功地让图灵计算机变成实体。然而,第一个制造出全自动数位计算机的人不是威廉斯,而是德国工程师楚泽(Konrad Zuse)。他为了处理土木工程很庞杂的计算,他在父母的家中,独自完成了纯机械式计算机Z1,是史上第一台采用二进位系统的计算机。在1941年,楚泽在农庄地下室里所制作出世界上第一台由程式控制的全自动数位计算机——Z3。

在图灵思想的指引下,计算为这个世界敞开了一扇大门,让人类得以进入崭新的文化层次与时代中。在这快速展开新历史中,相信还有更多值得期待的新发明,带领人们进入更广阔的世界中。

参考 视频地址

本文来自CASE报科学,本文观点不代表沙鸥科报立场,转载请联系原作者。

相关文章

  • 计算机无所不能?目前还做不到

    我们在日常生活中享受着各种智慧产品所带来的方便,由于电脑强大运算能力带来的低延迟,很容易就让人忘记这些方便其实来自于电脑在背后进行的巨量运算,也容易忽略电脑能解决的问题其实有其限制。董世平教授将从简单的数学问题出发,介绍电脑的可算性、可行性,探讨当今电脑科学界数一数二重要的问题,带我们认识现在计算科学的样貌。

    2020-01-16