前言 石头中的魔术
在一块石头上,我蚀刻了一系列几何图案,在外行看来,这些图案显得神秘而又复杂,但我清楚地知道,只要布局正确,这些图案就会赋予这块石头一种特殊的能力,即对人类从未说过的一种咒语做出回应。如果我用这种语言提问,石头便会应答:这是一个我用符咒创造的世界,一个在石头图案中想象的世界。
如果我在几百年前的老家新英格兰说出自己从事的职业,可能会被当作巫师送上火刑柱。实际上,我的工作和巫术没有任何关系,我从事的是计算机设计和编程,而上文提到的石头是硅晶片,符咒是软件程序。虽然蚀刻在芯片上的几何图案和指示计算机工作的程序看起来复杂且神秘,但根据一些基本的生成原理,我们很容易将其解释清楚。
虽然计算机是人类有史以来最复杂的人造物,但从基本原理上来说,它们又十分简单,仅有数十人的团队就能设计并制造出包含数十亿个零部件的各类计算机。如果将其中一台计算机的线路图在纸上画出来,那么所用的纸张便能塞满一座大型公共图书馆,没有人会有耐心将其浏览一遍。幸运的是,计算机的设计具有规律性,没有必要将线路图看一遍。计算机是由不同层次的部件构建起来的,而每一层次的部件都会被重复多次。只要理解了这些层次结构,你就能读懂计算机。
还有一个使计算机易于理解的原理,那就是其各部件之间交互作用的本质。这些交互作用很简单,而且定义明确,通常具有单向性,可以准确地排列成一系列因果关系,这使计算机内部的运行原理比汽车发动机或者收音机的运行原理更容易理解。虽然相比于汽车和收音机,计算机拥有更多零部件,但这些部件协同工作的方式非常简单。计算机更多依据的是概念,而非技术。
这些概念与组成计算机的电子元件没有任何关系。现代计算机由晶体管和电路组成,不过,根据同样的原理,计算机也可以由阀门和管道,或者棍棒和绳索搭建起来。这些原理是计算机能够进行计算的根本所在。计算机最引人称道的一点是,其本质远胜于技术,而本书就旨在介绍计算机的本质。
我多么希望在刚开始学习计算机这门学科时就能读到这样一本书。大多数计算机类书籍不是介绍计算机的使用方法,便是介绍具体的创造技术,比如只读存储器(ROM)、随机存储器(RAM)、磁盘驱动器等。这本书讨论的重点是“概念”,而且会介绍计算机科学领域的大多数重要概念,包括布尔逻辑、有限状态机、编程语言、编译程序和解释程序、图灵准则、信息论、算法及其复杂度、启发式方法、不可计算的函数、并行计算、量子计算、神经网络、机器学习和自组织系统等。对计算机感兴趣的读者可能已经听说过其中的许多概念,但对于非计算机专业出身的人来说,很难明白这些概念是如何结合在一起的。本书将会介绍这些关联——从类似开关的闭合等简单的物理过程开始,一直深入到自组织并行计算机所呈现出来的学习和自适应能力。
计算机的本质基于几条基本原则。第一条原则是功能抽象原理(functional abstraction),它奠定了前文提到的因果关系层次结构。计算机的结构就是这一原理的应用范例,即许多层次结构能够被不断重复。计算机之所以易于理解,是因为你可以专注于某一层次结构发生的情况,而不必担心较低层次结构上发生的细节。功能抽象原理是使概念与技术脱离的关键。
第二条原则是通用计算机原理(universal computer),即所有的计算机都属于同一种类型,更确切地说,所有类型的计算机在能做和不能做哪些事上是相似的。我们也可以这样说,一台通用计算机能够模拟所有类型的计算机,无论其组成材料是晶体管、棍棒、绳索,还是神经元。这是一个非常重要的假设,它表明,制造一台能像大脑一样思考的计算机只是一个进行正确编程的问题,我将在后面详细解释这一点。
从某种意义上来说,第三条原则是第一条原则的对立面,我将在最后一章展开详述。也许存在一种全新的计算机设计和编程方式,它并不基于标准的工程设计方式。这一设想令人感到无比兴奋,因为当系统过于复杂时,常规的系统设计方式将不再有效。实际上,第一条原则会导致系统带有一定程度的脆弱性和低效性。这个缺点与信息处理器的基础性缺陷没有关系,而是层次设计方式的一个缺陷。那么,如果我们采用一种与生物进化相似的设计过程,情况会如何呢?在这个设计过程中,系统行为源自很多简单交互作用的累积,而非“自上而下”的控制。通过这种进化过程设计出来的计算机可能具有生物体的某些健壮性和适应性。至少,这是一种希望。我们还未完全参透这一设计方式,它也可能会被证明行不通。这是目前我研究的一个课题。
为了全面了解计算机的本质,我们需要先掌握一些基本知识,再研究深层次的内容。本书前两章将介绍以下基本内容:布尔逻辑、二进制和有限状态机。在读完第3章时,你便能自上而下地理解计算机的工作原理。这也为理解第4章的内容奠定了基础,第4章将介绍有关通用计算机的有趣概念。
哲学家格雷戈里·贝特森(Gregory Bateson)曾将信息定义为“非同小可的差异”。换句话说,信息存在于我们选择用来表示意义的差异之中。例如,在原始的电子计算器中,信息是以电流流通与否造成的灯的开启和关闭来表示的,而信号的电压和电流方向则无关紧要。这其中起关键作用的是一根能够传输两种可能的信号的线路,其中一种信号是让灯亮起。在这里,产生关键作用的差异之处,也就是贝特森所说的“非同小可的差异”,就是电流的流通与否。贝特森给出的定义很明确,这个定义于我而言有着更为丰富的含义。在短短几十年间,世界发生了翻天覆地的变化。信息技术的发展引发或者促成了我们在商业、政治、科学和哲学领域所目睹的许多变革。当今世界,许多事情已异于往昔,而这一非同小可的变化皆源自计算机。
人们普遍认为,计算机是一种能够融合文本、图像、动画、声音等所有已有形式的多媒体设备。然而我认为,这一观点低估了计算机的潜力。计算机当然能够综合处理各种形式的媒体,但其真正的威力是它不仅能处理概念的表示形式,而且能处理概念本身。计算机最令我震惊的地方不在于它能够储存图书馆中所有书籍的内容,而在于它能够识别并总结出书中所述的各种概念之间的关系;不在于它能展示出飞鸟或者星系自旋的图像,而在于它能猜想并预测出创造了这些奇迹的物理定律将会产生的结果。计算机不只是一台先进的计算器,或一架高级的照相机,或一支具有神奇功能的画笔,它更是一种能够加速和扩展思维过程的工具。计算机是一架富有想象力的机器,它从我们输入的概念演变为人类从未抵达的情境。