前言
计算机在人类日常生活的各个方面已经并将继续发挥广泛而深刻的作用。当前人工智能、大数据、高性能计算等方兴未艾,出现了一些基本的重要问题,引起了专业及非专业人士的广泛兴趣,比如:什么是智能?什么是计算?什么是计算机?什么样的问题是可计算的?什么样的问题是不可计算的?为什么需要计算机?计算机是怎样设计的?什么是云计算中的虚拟化技术?什么是标签化体系结构?什么是开源芯片?什么是异构计算?每一个问题毋庸置疑都很重要,但想要真正弄清楚每个问题并不容易,把所有这些问题联系起来、融会贯通更不容易。为了取得实质性的科技创新突破,需要更多的人能真正彻底地搞明白这些问题,而不是仅停留在表面化的理解上。
本书选择的14篇文章是计算机系统方向的经典文献,在计算机科学的发展史上具有奠基性的重要意义,具有极高的原创性,在某种意义上和某些历史阶段代表当时的智慧之巅,是人类智能水平的标志。其中,第1、2篇(《计算机器与智能》《论可计算数及其在判定性问题中的应用》)是艾伦·图灵的作品,第3、4篇(《关于EDVAC的报告初稿》《计算机与人脑》)是约翰·冯·诺依曼的作品,第5、6篇(《论以单处理器的方式实现大规模计算能力的有效性》《多高速缓存系统中一致性问题的一个新解决方案》)是关于并行计算(Parallel Computing)的源头文献,第7篇是关于现在云计算需要的虚拟化(Virtualization)技术的开创性文献,第8篇是关于摩尔定律(Moore's Law)的文献,第9篇是关于精简指令集计算机(RSIC)的源头文献,第10篇是提出存储墙(Memory Wall)问题的文献,第11篇是较早论述数据流(Data Flow)体系结构的文献,第12篇是论述RAID结构的文献,第13、14篇是在不同的时间论述当时看来微处理器(Microprocessor)会有怎样的发展趋势的文献。
可以设想,如果没有这些文章中的某一篇对应的理论或技术(除去第13、14篇的综述预见性文章),计算机系统的面貌将可能会发生缺憾性甚至颠覆性的变化,现有的体系将可能会不完整甚至局部坍塌。如果没有存储程序的思想,没有关于“运算器-存储器-控制器-输入设备-输出设备”的组成和结构设计,没有并行计算,没有摩尔定律,没有虚拟化,没有艾伦·图灵对智能机器的信心,没有精简指令集计算机,没有关于存储墙问题的研究,这些情形只要发生一个,计算机科学还会是现在的面貌吗?
上述文章在计算机学术界具有极高的知名度,听闻其名的人很多,但读过并读懂其中一篇全文的人不多,读过并读懂全部14篇全文,并对比、分析、综合,然后形成整体观的人就更寥寥无几了。本书的一大特色就是融会贯通,充分挖掘和发现这14篇文章之间的联系,这种联系对我们准确、深入理解事物的完整面貌是重要的,甚至是必需的。从这个意义上来说,本书是一篇大文章,跨越了75年(从1936年到2011年)撰写的14篇文章是这篇大文章的组成章节,我们和这14篇文章的作者怀着揭示计算机科学真理、建设更美好世界(为人类设计更快、更自动化乃至更智能的计算机器)的梦想,分别贡献自己的智慧,共同谱写了这既客观具体又宏伟壮丽的诗篇。
纵观全书的14篇文章,几乎篇篇都有预见性,例如第1章中艾伦·图灵对能否制造出能思考的机器做出预见(论证),第2章中艾伦·图灵对不可计算问题做出预见(形式化证明),第3章中约翰·冯·诺依曼对存储程序式计算机做出预见(设计),第4章中约翰·冯·诺依曼对计算机与人脑的异同做出预见(比较),第5章中吉恩·M.阿姆达尔对单处理器达到较高的计算性能做出预见(分析),第6章对多处理器的高速缓存一致性问题的解决方案做出预见(分析与设计),第7章对第三代计算机体系结构的可虚拟化条件做出预见(形式化证明),第8章对电路的集成度的发展趋势做出预见(分析),第9章对精简指令集计算机的发展前景做出预见(论证),第10章对存储墙问题即将到来做出预见(分析),第11章对数据流体系结构的可行性和前景做出预见(设计和论证),第12章对廉价磁盘冗余阵列的可行性和前景做出预见(设计),第13、14章分别在1996年和2011年对微处理器的未来做出预见(分析和预测)。“在客观全面地回顾历史的基础上对未来做出精准的预见”是这些文章的共同特征。
本书的出发点是希望做“发扬光大”的工作。什么是“发扬光大”?《周易·坤》:坤厚载物,德合无疆;含弘光大,品物咸亨。宋代黄榦在《黄勉斋文集·刘正之遂初堂记》中说:备前人之美发挥而光大之。我们可以设想,14篇文章的作者艾伦·图灵、约翰·冯·诺依曼等如果看到本书,会有惊喜的反应:“啊,我很久之前写的那篇文章你还在研究,感谢你的理解、认可。”或者可能是:“我生有涯,感谢你替我在科技发展日新月异的背景下(纵向)重新评估我的论文,而且能够(横向)相互联系,相互佐证,有很多新的认识。这是对我的工作的继承、整理、提高,也就是你们中国典籍中说的‘发扬光大’,完成了我未竟的心愿,感谢你们这些来自中国的志同道合的研究者。”
水有源,故其流不穷;木有根,故其生不穷。计算机科学当前正处于一个极为关键的阶段,人工智能、大数据、云计算、计算机体系结构都在蓬勃发展,但相对以往都更加需要在基础理论上取得突破。但是基础理论研究谈何容易!从哪里寻找突破口,是首先要解决的问题。计算机的文献浩如烟海,完全掌握几乎不可能。回归原始文献,追溯本源,有助于寻找基础研究的突破口,这是本书的重要立意。在本书中,我们将会了解计算机工程之父约翰·冯·诺依曼、计算机科学之父艾伦·图灵、控制论之父维纳、集合论之父康托尔、模糊集合论之父扎德、进化论之父达尔文、精简指令集计算机和廉价冗余磁盘阵列之父帕特森等的思想,为我们进行从0到1的基础研究提供借鉴。
人类的时间、注意力、耐心均是稀缺资源。我们希望帮助读者解决时间、注意力、耐心有限与计算机科学文献数量庞大之间的矛盾。“与其伤其十指,不如断其一指。”根据基础性、代表性、影响力、权威性、不可替代性的标准,我们精心选择了14篇(仅仅14篇)文章,希望把这些文章解析透彻,把重要的概念和方法考察和梳理好,为当前的基础研究提供底层支撑,为其中的思考演绎提供素材和原料,本书希望构建计算机基础研究的“最小根据地”。
在国际竞争日益加剧的背景下,我国的发展将步入深水区,更加需要注重质量,需要啃很多硬骨头,所有这一切都依赖于科技的支撑。本书是国内第一本此类著作:第一次把计算机科学的源头文献精心选择并集中起来,用中文翻译并逐段解析,每篇有整体解析,篇篇之间有呼应和联系。科学是无国界的,但科学家是有祖国的。本书就是要服务于我国的计算机科学事业,服务于中华民族的伟大复兴事业,让中国人为人类计算机科学的发展做出更大贡献,为解决“卡脖子”问题略尽绵薄之力。
理解历史的目的,在于筹划未来。历史不只是一连串的单纯事实。理解历史,意味着需要在过去中寻求必然性、把握规律性,以便面向未来富于创造性。未来是还未出现的状况,充满机遇和挑战。要使得未来成为思想的对象,前提是先将过去转化为思想,使思想渗入历史性的事实之中,将过去与未来在思想的意义上贯通起来。本书采取文本细读和考证考据的办法,预期的目的是起到以下作用:
(1)纠正忽视哲学的倾向。哲学本身是极为重要的学科,来源于实际又高于实际,教好哲学不容易,学好哲学也不容易。有一位读计算机科学的学生在读研面试时,声称自己“热爱哲学”,有不少导师心里想:“这样的学生思想该不会有点问题吧?”“这样的学生会不会好高骛远?”这反映出工科教育中某种程度上存在着忽视哲学的倾向。当前,能将哲学用于所学专业,对计算机科学来说是急需的。没有哲学的指导,计算机系统的核心理论和结构设计问题等是难以被深入研究的。艾伦·图灵在《计算机器与智能》中一共批驳了9种对立的观点,其中第一种观点就是神学的观点,没有哲学思维,就很难有艾伦·图灵那样的创造力。
(2)纠正偏重工程的倾向。当代计算机体系结构领域的知名科学家奥努尔·穆特鲁(Onur Mutlu)指出中国的计算机体系结构研究一度过于偏重工程,现在已经有所好转。艾伦·图灵是一位既可以实际制造机器,又可以进行深刻理论研究的人,能同时做到这两点的人是凤毛麟角。钱学森、李政道都曾经因为理论较强、实验较弱受过老师的批评。李政道在人民大会堂的一次演讲中说,他的导师费米是一位理论和实验均强的科学家。我们要重视现实实验,也要重视思维实验。艾伦·图灵的具有无限存储容量的“图灵机”就是思维实验的结果,也只有思维实验才能完成,正因为如此,才展现出人类极高的智能水平。有些问题是计算机解决不了的,即使这台计算机具有无限的存储容量,允许运行无限长的时间,也无济于事。
(3)纠正只注重单一学科的倾向。《计算机器与智能》全文内容丰富,涉及神学、物理、化学、生物、医学、信息论、数理逻辑等多个学科,但紧扣“机器是否能够思考”这一主题。在军事领域,多军种或多兵种的立体联合作战或合同作战是一种有效的作战形式,因为在有限的空间、有限的时间内实现了高并发的火力集中。对智能这一目标,多学科融合协同可形成学科群的整体认识能力,以获得单一学科难以获得的认识成果。
(4)纠正不注重继承的倾向。创新本质是相对基础而言的增量。一些人因为不了解基础,而认为自己做的一定就是创新。为了避免重复的浅尝辄止的研究,就需要注重继承。计算机科学技术的创新不是线性直线上升的,某种技术的变化会导致某些思想过时,另一种技术的变化可能将那些“过时”的思想复活。本书对原始文献进行考证,把概念的内涵和外延考证清楚。我们希望本书能引领更多的同人一起开辟“计算考据学”这个方向。考据学是一种治学方法,包括对古籍加以整理、校勘、注疏、辑佚等。对于考据学,梁启超在《清代学术概论》中提到:其治学之根本方法,在“实事求是”“无证不信”。把我国古代知识分子擅长的考据学用于计算机科学的研究,是一种新颖的研究思路,本书就是对这一思路的尝试。
(5)纠正“盲人摸象”的倾向。智能的一个重要特征是整体性。中国近现代出现过一些像陈寅恪、胡适、季羡林、任继愈这样的国学大师。很多人希望在科学技术领域也能有这样的大师,这是钱学森晚年十分关心的问题。国内现在进行“双一流”建设,有各种领军人才的培养计划,也是为了实现这个愿望。计算机是一个复杂系统,涉及从科学到工程和从软件到硬件的多个层次和多个方面,全部掌握这些何其难啊!计算机科学的研究资料包括期刊论文、会议论文、技术报告等,本身是大数据。本书采用“精心抽样”(不是“随机抽样”)的办法,选择十余篇重要的、经典的、具有代表性的文献,每一篇分别论述不同的问题,但篇与篇之间存在着千丝万缕的联系,它们构成一个紧密的整体,其中的概念是读者进一步逻辑演绎的原料,其中的方法是读者进一步研究探索的参考,这样以极简的材料帮助读者建立一个相对全面的学科知识图景。
(6)纠正“叶公好龙”的倾向。当前追逐舆论的流行热点、追求短平快、急于出成果的研究者在一定程度上是存在的。费力的、基础性的问题需要得到更多的重视。中国工程院院士孙凝晖提出“重型科研”的倡议,其核心就是以更大的决心和力量在计算机科学的基础理论和基础技术上取得突破。看看艾伦·图灵的论文,篇幅很大,但内容极其深刻;约翰·冯·诺依曼的论文涉及大量工程细节,但深入之后还能浅出,思考量之大、原创性之大、工程量之大,都是我们需要学习的。我们现在就是要啃硬骨头,要拿下“上甘岭”。
对于“能否设计出能思考的机器”这个问题,在本书第1章中艾伦·图灵给出了肯定的断言。对于“计算机能否求解所有问题?”这个问题,在本书第2章中艾伦·图灵给出了否定的断言。需要指出,自20世纪50年代以来的70多年中,人造计算机在计算能力、记忆(存储)能力、通信(互连)能力上取得了多个数量级的进步,在编程上也有了很大的进步,但还没有设计出与人类一样能思考的机器。我们还有多大的差距?通过怎样的路径跨越这些差距?能否发展出可解释性人工智能?目前的数据科学对相关关系的研究取得了较大的进展,但在因果关系方面进展较少,如何突破?等等。这些无疑都是具有重大意义的基础理论问题,要解决这些问题,或者在这些问题上取得一些突破,现在计算机系统的研究范式可能需要革新,需要充分发挥哲学的作用。现在计算机系统的研究范式需要做哪些革新?这里抛砖引玉,提出三点倡议:
第一,我们需要解放思想,培养具有多面手(Multi-facet)才能和原始创新能力的领军人才。我们要在坚持问题导向、实事求是的原则下,鼓励研究者学哲学、用哲学,打破习惯势力和主观偏见的束缚,打破思维的桎梏,大胆进行原始创新。我看到国内有人提出目前没有必要研究强人工智能。对此目前我们不能说对或错,但需要指出,图灵奖得主曼纽尔·布鲁姆(Manuel Blum)在2019年提出了意识图灵机(Conscious Turing Machine),而我们国内这方面的研究目前很少。时不我待,我们一定要抓住机遇,富有建设性地推进人工智能的研究。需要培养和造就一批“顶天立地”的计算机系统的研究人才,这样的研究人才具有较高的哲学思维能力,是思想家,能领悟、运用和创造思想,还具有得心应手的设计能力,是科学家、架构师和工程师,能发明、实现和创造系统。
第二,我们需要重视思想,重视思想性创新。我们的计算机系统学科一般强调设计出具体可见的实物或可运行的系统,而没有充分重视思想或观念。思想或观念是不可见的,是潜在的,往往因此被忽视。一种思想或观念被提出之后,有的立即被重视并展现威力,如存储程序的思想;有的没有立即展现出巨大的威力、价值或影响力,但在条件或时机成熟的时候,往往展现出令人震撼的力量,如数据流体系结构、深度学习。本书的很多章节都涉及重要的思想,当然也有具体的设计,我们当然要看到设计在可落地实现方面的用途,也要看到思想在前瞻性、一般性、持久性方面的优势。
第三,我们需要梳理总结历史,淡化学科意识,强化问题导向,聚焦重大科学问题。之所以梳理总结历史,是为了解决有挑战性且有重大意义的科学问题。例如,智能或意识的本质是什么?智能或意识与物理载体的关系是什么?对这些问题,哲学上存在很多不同的但都非常深刻的观点,比如物理主义,由奥地利哲学家奥托·纽拉特(Otto Neurath)和鲁道夫·卡尔纳普(Rudoff Carnap)在20世纪30年代引进哲学,它的基本论点是“所有事物都是物理的”,或者说“一切都在物理之上”。它有各种版本:例如将意识视作人体的功能,或将意识类比为计算机的软件;还有涌现论,认为一些特定的物质结构复杂到一定程度会自然诞生意识;以及否定意识存在的取消论物理主义。这些观点都值得计算机科学领域的研究者了解参考。在计算机系统领域,图灵的一个基本观点是“通过编程的办法让机器(具体来说就是数字计算机)像婴孩那样不断地学习,是完全能够让机器可以思考的,或者说让机器通过图灵测试的”(见本书第1章)。本书的全部14章实际上都与物理主义有关,约翰·冯·诺依曼的存储程序结构、大卫·帕特森的精简指令集计算机、沃尔夫的存储墙问题等都是在讨论智能或意识所赖以存在的物理载体,甚至图灵的可计算性理论也与物理主义有关,机器的记忆或存储(Memory)是有限的,这也是为什么他要着重区分循环机器和非循环机器。
本书的编著者对自己的定位是学习者、思考者、研究者、实践者、传播者,我们阅读的专业文献有数千篇,其中精读的有300篇以上,同时读过比较经典的多部专业著作和比较著名的多部科普著作。
本书的编著者读过的且对撰写本书有所帮助的比较经典的专业著作有约翰·冯·诺依曼和摩根斯坦的《博弈论与经济行为》、图灵奖得主阿霍、霍普克罗夫特和乌尔曼的《数据结构与算法》、图灵奖得主沃思的《算法+数据结构=程序》、图灵奖得主亨尼斯和帕特森的《计算机体系结构:量化研究方法》(从第3版到第6版)、原南加州大学黄铠教授的《计算机结构与并行处理》、数学家华罗庚(1955年当选中国科学院学部委员,中国现代数学之父)的《高等数学引论》、诺贝尔物理学奖得主费曼的《费曼物理学讲义》、戴维斯的《可计算性与不可解性》、维特根斯坦的《数学基础研究》、南京大学莫绍揆教授的《可计算性理论》、中国科学院心理研究所潘菽(1955年当选中国科学院学部委员,中国现代心理学奠基人之一)的《中国古代心理学思想》,等等。这些专业著作“讲高度”,受众主要限于专业内部,实际的读者相对少一些,但将相关专业研究推到一个极高的高度上。
本书的编著者读过的且对撰写本书有所帮助的比较著名的科普著作有伽莫夫的《从一到无穷大》、乌镇智库理事长尼克的《人工智能简史》、美国经济学家曼昆的《经济学原理》、中国经济学研究者薛兆丰的《薛兆丰经济学讲义》、诺贝尔物理学奖得主薛定谔的《生命是什么》、南京大学周三多教授的《管理学——原理与方法》等。这些科普著作“讲面积”,受众不限于某个专业,发行量很大,具有极大的普及、推广和传播效应。
本书包括翻译和解析两个部分,译文采用宋体,解析采用仿宋体。大部分文章还没有看到中文译文。在本书撰写之前,我们只看到关于《计算机器与智能》《论可计算数及其在判定性问题中的应用》《计算机与人脑》的中文译文,发现有不少理解上的错误和表达上的瑕疵,因此我们没有采取拿来主义的办法,而是适当参考,然后从零开始,仔细推敲,按照“信、达、雅”的标准,力求严谨、准确、精当、通顺。
准确完整地理解原著,是一项非常不容易的工作。不仅仅是语言的问题,还有技术的问题,需要极高的语言功底、技术功底,还需要严谨的态度。我们在研究中坚持“会、批、判”的办法,“会”就是“站在作者的立场,领会作者的本意”,“批”就是“站在作者的对立面,质疑作者的本意”,“判”就是“站在客观中立的立场,给出科学的判断”。有点令人意外的是,我们在解析过程中发现了一些原文的错误。这些错误可能是原文作者的笔误,也可能是编辑的打印错误,无论如何,指出这些错误对于正确理解原文是非常必要的。
本书选题独特,原始素材及其分析综合均具有宝贵价值,有广泛的读者适用群体。一方面,具有专业性,可以作为计算机科学专业大学生和研究生的教学、教辅读物,特别是文献综述类课程的教材。另一方面,具有科普性,可以供非计算机专业的大学生、研究生、信息技术在职研究人员和工程师参考使用,以培养兴趣,扩大知识面和学术视野。我们预期并希望读者阅读本书之后对计算机科学的理解能够焕然一新,对计算机系统有更浓厚的研究兴趣,有更为端正的态度避免陷入各种不良的倾向,有更清晰准确的概念作为自己思考演绎的原料,有更具体的方法作为自己研究路径的参照。
本书的撰写得到众多老师和业界同人、学生的鼓励和支持。祝明发教授给予本书的编著者刘宇航以严格的学术训练、启发、鼓励和指导,中国科学院计算技术研究所和处理器芯片全国重点实验室提供了优越的软硬件环境,陈明宇、詹剑锋等多位老师给予了支持,学生周嘉鹏参与了第11、12章的校阅。在此向以上人士表示衷心的感谢!本书的编著得到了国家自然科学基金面上项目“高并发数据访问的基础理论与系统设计”(批准号:61772497)、国家自然科学基金重大项目“处理器芯片敏捷设计方法与关键技术”(批准号:62090020)、国家自然科学基金专项项目“信息与电子领域工程科技未来20年发展战略”(批准号:L2124012)、中国科学院战略研究与决策支持系统建设专项(批准号:GHJ-ZLZX-2021-06)的资助。尽管作者力求严谨细致,但限于篇幅和水平,本书可能存在错误和遗漏,欢迎读者指正。