《计算机 : 一部历史》 - 书摘

显然,无论从事哪一个行业,要想赚取巨额财富,通晓计算机是必不可少的条件。

不过,正如本书所述,如果你洞悉了改善计算机技术的秘诀,那么,下一个计算机先驱很可能就是你。

计算机的美妙之处并不在于其闪烁的灯光、旋转的磁盘、成排的芯片和电线,而在于,这些部件的背后隐藏着一个优雅而简单的想法。这个想法同晶体管、操作系统、网络和文字处理器毫无关联,也不可能有任何关联,因为它的诞生时间比这些设备都早。这一想法是24岁的艾伦·图灵在1936年提出的。

计算机是由数学和工程学领域的先驱在政治动荡和战争时期发明的,它不仅仅是电子机器那么简单。在不计其数的精密电路和软件的背后,闪耀着一种数学的纯粹,那本身便是简洁质朴的美。为计算机的诞生打下根基的数学理论反映了现实世界自身的本质。
如今,挑战不可能之事的科学家依然在竞相探索宇宙的极限。数学和技术领域的革命,是以数百万美元的投资风险换来的,但是谁又能责怪他们呢?
1926年,英国由于煤矿劳资纠纷问题而爆发总罢工(1),汽车和火车全线停运。

这是一个令人惊叹的开端,但是艾伦·图灵在新学校的成绩并不太好——以前也从来没有好过。他的字迹潦草,英语写作奇差。英语老师给出了这样的评语:“我可以原谅他的写作,但我这辈子都没见过写作水平这么差的。他的作文一向用词不当、粗制滥造、字迹潦草,不管写多少篇都是这样,我已经尽了最大的努力容忍他的劣质作文了……”

痛失挚友的创伤使他开始深入思考生命与物理学的关系——他在余生的大部分时间里也在研究这些学科

同时期的俱乐部成员概括了图灵在这个问题上的观点:“他认为,不能只从逻辑的角度看数学;一个数学命题可以有多种解读方法,逻辑解读只是其中的一种。”换句话说,图灵认为,数学可能比逻辑学更加博大精深。

探索不可能解开的谜题 
图灵在剑桥大学修读高级课程期间接触到了一个课题,以此为契机,他将向全世界展示自己的天才。这个课题非常适合图灵,因为它宏大而重要,直击数学的核心,而且尚未被人解决。 

如果没有数学,那么科学、工程学和经济学根本不可能存在。数学上的漏洞一旦被发现,将在很大程度上决定未来哪些事物可以计算、哪些不可以计算。这些想法很快就激发了图灵的想象。

他发现了一个悖论——也就是看起来既正确又不正确的论断。数学家经常寻找悖论,因为你如果觉得某件事情既正确又不正确,那么你的想法肯定有漏洞。

哥德尔最杰出的贡献在于提出了哥德尔不完备定理。其中第一条定理或许最为出名,它与一条悖论相似。这条悖论称为“说谎者悖论”。请大家思考一下,下面这句话是对的还是错的?这句话是错的。

在1935年,如果你去翻阅词典,查找计算机的定义,就会查到这样的解释:“执行计算工作的人”

图灵机是一台理论计算机。由于它可以完成任何可能的数学运算,现代计算机能做的事情都难不倒它(只不过它的运算速度要迟缓许多)。

该论题认为,任何可计算的问题都可以由图灵机计算。

图灵从来没有变得像邱奇那么爱干净,不过他也培养了一些高度逻辑化的习惯,而且这些习惯有时显得很古怪。博士毕业回国后,图灵喜欢戴着防毒面罩骑车,以预防花粉症。如果他发现自行车经常在他踩14圈以后掉链子,他就会每踩完13圈以后下车调整链子。

1952年,图灵向警方报告了一起入室盗窃案。他承认,行窃的人正是他以前的同性伴侣的朋友。但是同性恋在当时是非法的,因此图灵被控以严重猥亵罪而遭到起诉。审讯期间,他的老朋友马克斯·纽曼为他出庭作证,但是于事无补。图灵不幸被定罪,他的选择只有两个,要么坐牢,要么接受“化学阉割”——注射女性荷尔蒙(雌激素)。他选择了注射雌激素,为此不得不遭受乳房发育等药物副作用的伤害。

通用图灵机(Universal Turing Machine)已成为世界上所有电子计算机的理论蓝图。

理论计算机科学家罗宾·赫希(Robin Hirsch)研究了这些思想。“这个世界上存在三种类型的事物,”他说,“第一种在理论上可能做到,但却无法解决;第二种在实际上可能做到(因此在理论上也必定可能做到);第三种在理论上可能做到,但在实际上却未必可能做到——虽然说是在理论上可能做到,但往往是比较匪夷所思的类型,即使宇宙的寿命终结也不一定能够完成,所以从实际角度讲,我们也解决不了。在计算机科学领域,大多数有趣的问题都属于这个范畴。”

我们不想把时间浪费在解决不可能解决的问题上,但我们很乐意花时间提高自己的能力,对难度极大的问题发起挑战。

在计算机科学领域,我们常用的词是“算法”,而不是“方法”。这个术语主要用于描述我们打算写入计算机程序的方法或过程,它给出了程序运行的所有步骤。

计算机科学家有一种通俗直观的方法来表述算法的时间复杂度。我们称之为“大O符号”(Big O notation,一种描述函数渐近行为的数学符号)。

如果你把每一个排序对象都与其他对象进行比较,那么算法的时间复杂度为O(n×(n—1))——在这里,我们一般会把常数项和低阶项忽略不计,因为当n的数值非常大时,低阶项和常数对结果的影响就会微乎其微,所以,O(n×(n—1))可以简化为O(n的平方)。

需要指出的是,算法之所以在理论计算机科学领域举足轻重,不仅仅是因为我们可以借此让软件运行得更高效,而且还因为它能够告诉我们,从实际角度看,哪些问题容易解决,而哪些问题难以攻克。

P是否等于NP的问题实际上是在问:难度很大的NP类问题究竟能否用多项式算法求解?

我觉得人的大脑就像计算机,”他说,“人的大脑经过了漫长的进化,尽管未必达到了最优的状态,但说不定就能找到P=NP问题的正解,谁知道呢?或许问题的答案已经通过硬编码写在大脑里了,只不过我们还没发现,总有一天我们会把它破解出来的。”

莱斯定理的内容是,对于图灵机使用的特定语言,我们无法判定它是否具有非平凡性。这句话放到编程语言上就是指,没有任何通用的方法可以判定关于语言的非平凡问题。简单说来,这意味着,要想写出能够完美调试其他程序的计算机程序,是不可能做到的事情。换言之,我们永远无法避免软件出现错误。

算我们算不出具体的极限值,也会希望文件的压缩幅度能够超越理论的极限,因此,有损压缩软件应运而生。MP3就是一个典型的例子,它的压缩幅度超过了理论的极限,压缩过程中损失了一定的信息,因此,与未经压缩的原始CD文件相比,MP3文件播放起来有一定程度的失真。音乐文件在保存为压缩格式的过程中,只损失了人耳不易分辨的信息,但是如果将一首曲子的MP3版和CD版对照起来播放,你还是能听出其中的细微差别。同样的道理也适用于jpeg和tiR格式的图片。

在当今时代,理论计算机科学领域最重要的思想,就是时间复杂度等级的构建及其研究,它们是解决P=NP问题的关键。P=NP问题是数学和计算机科学领域最重要的一大未解之谜。”

图灵要是在世,或许已经为我们解开了P=NP问题。不过,千禧年难题百万大奖依然有效,P=NP这道难关一旦被攻克,计算机的性能和效率必将提升一个台阶,届时,一场新的计算机革命必将势不可挡。

一战后,随着英国国外煤炭危机的发生和国内经济的衰退,英国煤炭企业经营陷入了困境,煤矿资本家为了提高煤炭市场竞争力、降低经营成本,企图对矿工采取削减工资、增加工时的政策,引起了矿工的极大不满。当矿工与煤矿资本家之间的矛盾被激化时,随即导致了1926年这场声势浩大、席卷全英国的总罢工。

每天下午茶时间,图灵都会和实验室里的一位研究人员在食堂里长谈,这位研究人员名叫克劳德·香农(Claude Shannon)。两个人似乎都对计算机的问题非常热衷。图灵看问题主要从数学的视角出发,而香农的视角则完全不同。

年轻的香农发现,有两个看似截然不同的事物其实具有共同的本质。

香农已经知道,数学上有一种逻辑代数系统,叫做布尔逻辑,它得名于英国数学家乔治·布尔(George Boole)。在布尔逻辑中,任何逻辑表达式的计算结果都不是数值,而是“真”、“假”这两种真值(3)。你只需要使用逻辑运算符“与”、“或”、“非”,就可以表达任何你想表达的逻辑语句。这个逻辑语句可以是一个英文句子,比如“在下雨且阴天或无风的时候,我会带伞。”

所有的数学问题都可以归结为逻辑问题)。
香农取得的突破在于,他注意到,逻辑和开关电路(4)具有共同的本质。他借鉴了布尔逻辑,并运用它来定义带有机电式继电器(电气开关)的电路。此外,他还将开关的连接方式改写成了逻辑表达式。

如果你想设计一个电路,让它像逻辑运算符“与”一样运转,那就可以把开关串联(也就是将两个开关头尾相连,逐个顺次连接)。这样一来,电路只有在两个开关都接通的情况下才会接通。这和逻辑运算符“与”(有时候写成一个“+”号)的特点相符,因为逻辑表达式“X与Y”只有在X和Y都为真的情况下才为真。同理,如果你想设计一个电路,让它像逻辑运算符“或”一样运转,那就可以把开关并联(也就是将两个开关头头相连,并列连接在两点之间)。这样一来,只要接通其中任意一个开关,就可以接通整个电路;如果两个开关都断开,则整个电路也断开。这和逻辑运算符“或”(有时候写成一个“·”号)的特点相符,因为逻辑表达式“X或Y”为真的情况有三种:X为真、Y为真或二者都为真。香农的理论表明,整个电路都可以用布尔逻辑表述出来,只要巧妙地运用逻辑表达式,就可以简化和改善电路设计。

由于所有的数学问题都可以归结为逻辑问题,而逻辑问题又可以通过电气开关表现出来,香农的理论表明,人们可以设计专门的电机,用来计算任何可计算的数学函数。

由于他名气很大,美国国防部邀请他参与曼哈顿计划(Manhauan Project,美国政府制造第一颗原子弹的计划),负责设计原子弹的爆炸外护层(explosive outer jacket)。要完成这项工作,必须进行大量复杂的数学计算。冯·诺依曼意识到,他需要一台全新的计算机,其性能必须远远超越当前所有的计算机。

挑战主要来自两大方面,一是保存数据的存储器,需要解决的问题是,数据能否存储在某种形式的雷达甚至电视显像管里?二是指令系统,这里需要考虑的是,有哪些功能是计算机应该具备的?

值得注意的是,这个设计方案包含五大逻辑元件:第一是中央算术器,负责执行所有的运算操作;第二是中央控制器,它决定机器的下一步动作;第三是存储器,用于保存程序及程序输出的结果;第四是输入设备,比如键盘;第五是输出设备,比如打印机。

ALU的运作模式固定不变,受到布尔逻辑电路的支配。它设有临时存储区域,称为寄存器,寄存器的运作方式和存储器一样(但是访问速度要快很多),用于保存ALU和存储器输出的结果。
玛丽代表的是存储器。信息以二进制编码1和0的形式存储下来,二进制编码1和0则分别由“高”、“低”两种电压转换而来。在现代计算机中,这种类型的存储器通常被称为随机存取存储器(random access memory,简称RAM )。RAM这个缩写虽然看似神秘,但它的作用其实很简单。用通俗的话来讲,它可以帮助我们直接调取任何零散的信息,不需要像磁带或纸带那样,在庞杂的信息当中大海捞针。伊恩对应的是输入电路,它为键盘等输入设备提供接口;奥利弗对应的则是输出电路,它为显示器、打印机等输出设备提供接口。上文的“谈话”展示的就是一个计算过程。由输入电路(伊恩)提供、并保存在存储器(玛丽)中的七个数字构成了一个程序,即一系列指令和数据的组合。由此开始了“提取—执行”的循环。处理器(康妮和阿尔伯特)依次询问每个数字的大小,将指令解码并加以执行。

这台机器的一大重要方面在于,它依据的不是算术原理,而是逻辑原理。非真即假的逻辑系统从本质上讲就是一个二进制的系统。

现代的计算机系统虽然日新月异,但万变不离其宗,大框架都是冯·诺依曼1952年在普林斯顿构建起来的。

从理论层面讲,晶体管能做到的事情和电子管完全相同,但从实际角度讲,晶体管具有无可比拟的优越性,不仅速度快了好几倍,而且耗电量和体积也小了很多。

但是,第一台晶体管计算机才问世五年,电子工程师就已经面临一个严峻的问题——“数字的暴政”(tyranny of numbers):为了提高运算能力,就必须安装更多的晶体管,但是一旦安装更多的晶体管,制造和维护成本就会增大,因为每个部件都需要手工焊接到电路板上。

几个月后,到了1959年,另一位研究人员——罗伯特·诺伊斯(Robert Noyce)也独自想出了同样的主意,只不过他使用的不是锗晶片,而是硅晶片。集成电路(integrated circuit,简称IC),也就是硅芯片就此诞生。

1957年,约翰·冯·诺依曼去世,时值图灵去世三年后,硅芯片问世两年前。

发明硅芯片后,罗伯特·诺伊斯继续和同事戈登·摩尔(Gordon Moore )在飞兆半导体公司(Fairchild Semiconductor Corporation )研究集成电路技术,直到1968年,两人成立了一家新公司,即著名的英特尔。

20世纪60年代早期,集成电路技术之所以迅猛发展,很大程度上是因为美国导弹计划和阿波罗太空计划的推动。

如今的计算机处理器通常有如下配置:少量超快内部存储器(称为寄存器);一个内部高速缓冲存储器(cache,简称高速缓存)(或许还会加装一个容量稍大、但速度稍慢的高速缓存);一个比高速缓存更慢,但却更大的外部存储器;一个比外部存储器还慢,但却大很多的硬盘;此外或许还会加装一个比硬盘还慢,但却更大的备份存储器(磁带或硬盘)。

现代计算机处理器还有一种典型的优化设计方案,称为流水线(pipelining,又称管线)。

计算机处理器的流水线技术也是一样的道理:将一条或一组指令的执行过程拆分为多个步骤,然后通过硬件处理单元尽可能多地并行执行这些步骤。处理器的流水线段数越多,在理论上可以并行执行的指令数也就越多。

过去十年到十五年的时间里,我们为了提升计算机的性能,不断地增加晶体管的数量。每一次增加晶体管的数量,都会使硅芯片的功耗和散热压力更大。每块芯片约100瓦的功耗已经是其散热能力的极限。我们大概在2003年达到了这个水平。要想继续利用摩尔定律提升计算机的性能,唯一的出路就是制造并行计算机。这就意味着我们必须改变编程模型,这是六十年的计算发展史上最重大的变革。

唯一的解决办法是,制造更小、更简单的处理器,使单个处理器的功耗减小,同时在单个芯片上集成多个处理器。计算机处理器的设计理念已然开始发生变迁。

不过这里面有一个问题:既然有了并行或多核处理器,就理应配备能够高效利用其性能的软件,但是编写这样的软件对于程序员来说,是一件极其困难的事情。如今,硬件条件已经齐备,但是软件设施明显跟不上前进的步伐,无法充分发挥计算机的全部运算能力。帕特森同意这一观点,他在最近发表的一篇文章中写道:“处理器的并行化和微型化是计算发展史上的一个里程碑。

帕特森写道,“但是我们已经陷入绝境,实在没有别的出路可走,只能孤注一掷,希望将来有人能够写出好的并行程序,将硬件的性能充分利用起来。”

计算机图形往往由成千上万个微小的多边形拼接而成,多边形的表面覆盖着照片质量的图像。打个比方,假如你想制作某件物品的三维模型,可以先用铁丝网将其形状构建出来,然后在表面覆盖图像,用以表现物品表面的图案。计算机图形也是一样的道理。无论是展示动画效果(比如游戏角色的动作、行驶在车道上的汽车),还是纯粹显示窗口和图标,计算机都在同时改变成千上万个多边形和图像的位置,而且每个多边形和图像的位置改变方式都非常相似。由此可见,计算机不费吹灰之力,就可以并行处理这些计算过程,提升运转速度。

不过,弗伯虽然是正统的计算机设计师出身,但在1998年却决定改变方向。他意识到,生物大脑似乎比计算机处理器的计算和存储部件要优越许多。
“最后,我一咬牙,就转方向了,”弗伯表示,“管他呢,反正我感兴趣的是神经网络。”

在逻辑中,真值或逻辑值是指示一个陈述在什么程度上是真的。在计算机编程上多称作布尔值。在经典逻辑中,唯一可能的真值是真和假。但在其他逻辑中其他真值也是可能的。

虽然人的思想、财富、记忆乃至娱乐活动对于计算机来说都是镜花水月,但是计算机的思想并不简单,它和人的心理机制一样,分为不同的层面。最低级、最原始的层面是机器的本能,最高级的层面涉及到对抽象概念的识别和理解。介于两者之间的,是硅芯片处理器的算术运算和逻辑运算活动。

虽然人的思想、财富、记忆乃至娱乐活动对于计算机来说都是镜花水月,但是计算机的思想并不简单,它和人的心理机制一样,分为不同的层面。最低级、最原始的层面是机器的本能,最高级的层面涉及到对抽象概念的识别和理解。介于两者之间的,是硅芯片处理器的算术运算和逻辑运算活动。
计算机和我们不一样,它们在每一个思想层面上都有相应的语言。要想给它们灌输新的理念,只要在任何一个层面上下功夫,都可以达到预期的效果。我们可以输入指令,让计算机识别和理解宏观抽象、而又错综复杂的概念,然而,一旦指令中出现任何细小的错误,都有可能让我们的数字奴隶在刹那间全盘崩溃,就像癫痫症发作一样。
既然唯命是从的计算机不懂得灵活变通,怎样构建其思维方式,才能使计算机成为我们值得信赖的可靠助手?

课程采用讲座的形式,主题是电子数字计算机的设计。这是世界上第一门关于计算机科学的课程,香农发现,课上所学的许多思想在他的头脑里擦出了灵感的火花。他最近从莫奇利那里学到了一个新词——“编程”。

只要破译了高频词,那么整条加密信息指的是什么内容,或许就能猜出个大概了。因此,要想增加破译难度,必须尽量减少冗余信息。但是,如果你想尽可能多地保留原始信息,而记忆存储系统又很容易出错,那就最好少删除一些冗余信息。

检验信息是否出错的方法之一,就是设置奇偶校验位(parity )。至于奇偶校验位是指什么,还得从比特的概念说起。比特(bit )是内存中的最小单位,也称作“位”、它只有两个状态,分别以1和0表示。我们将8个连续的比特叫做一个字节(byte ),比如(1、0、0、1、1、1、1、0)就是一个典型的字节。如果其中某一位存储了错误的值,那就会导致信息出错。为了检测信息是否出错,我们在每一个字节(8位)后面又额外增加了一位,称为奇偶校验位。这样一来,原来的8位字节就变成了新的9位字节。奇偶校验位也只有1和0两种值。如果原字节中1的个数为奇数,那么奇偶校验位就设为1,这样一来,新字节中1的个数就变为偶数;反之,如果原字节中1的个数为偶数,那么奇偶校验位就设为0,这样一来,新字节中1的个数依然为偶数。也就是说,凡是带有奇偶校验位的字节当中,1的个数始终应该为偶数,如果你发现某个字节不是这样,那就说明它有错误,这段字节包含的信息就需要重新读取。

香农发明了术语“比特”来指代二进制数位(binary digit ),同时阐述了如何利用比特来衡量信息量,并对信息进行传输、加密、压缩、纠错。

他和艾伦·图灵在同一时期学习了同一门课程,但是两个人似乎从未注意到对方的存在。

剑桥大学的电子延迟存储自动计算机(Electronic Delay Storage Automatic Calculator,简称EDSAC )于1949年5月6日投入运行,直到1958年才光荣退役。
它是世界上第一台实用的存储程序计算机。

1949年6月,惠勒第一次意识到了编程的艰难。他后来回忆起了当时的情形:“那时候,我正试着让自己编写的第一个真正意义上的程序运转起来。有一次,我像往常一样从EDSAC 机房出来,准备去操作打孔机,突然站在楼梯转角处犹豫了,心里意识到,单是给自己的程序除错,可能就要花掉我大半辈子的时间。”

比方说有个好端端的句子:
一只小猫坐在地毯上。
结果被你写成了:
一种以“只”为度量单位、称为“猫”的小型家养猫科食肉动物,以臀部着物的方式坐在一种名为“地毯”的装饰地面的厚实织物上。

为了简化编程过程,威尔克斯的方法是建立子程序库,也就是将常见的函数单独列出,集中起来,就像把常见的词语及其释义收录在词典中一样。一旦程序在运行的过程中需要使用到某个常见函数,计算机就会在子程序库中“查找定义”,执行相应的子程序代码,根据输入值进行运算,再将运算结果返回。
在这一方面,威尔克斯的理念已经领先于同时代的大多数人

我们发现,只要将复杂的问题进行分解,用一个个子程序加以解决,然后将子程序置于主程序的控制之下,就可以逐步形成模块化设计的思维方式,到时候程序设计自然水到渠成,根本不需要使用到程序框图。

我们剑桥大学的研究团队很早就开始采用了一种叫做‘汇编程序’的工具。”它能够转换编程语言,从十进制转为二进制,使用助记符,可引用代码,可分隔字段,可自动定位子程序,还具备其他各种功能。我们基本上从开展项目的第一天起就已经在使用汇编程序了。这极大地简化了编程过程。

汇编程序读取的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。

20世纪90年代的所有程序都是由汇编语言写成。

1951年,计算机开始搭载好几个层次的软件。第一层是微代码,它完全依赖于芯片内部的硬件连接。第二层是机器代码,它比微代码更抽象一些。第三层是汇编语言,它比机器代码可读性稍强。

有些人认为,凡是试图绕开困难的做法都是误入歧途

程序员只有老老实实地恪守本分,编程领域才会取得更大的发展。另一方面,还有一些人认为,只有新的技术才具有实实在在的实用价值。”(时至今日,计算机科学家当中依然存在这两派的纷争。)

自动代码是世界上最早出现的编译型高级编程语言。

初学者通用符号指令码(Beginner's All—purpose Symbolic Instruction Code,简称BASIC )

在面向对象的语言(Object—Oriented Language )中,数据及其操控方法都封装在“对象”中,以实现代码的模块化,防止数据的意外损坏(这一点也是程序的“副作用”)。函数式编程语言利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是像过程语言一样,设计一个复杂的执行过程。此外,还有更多适用于并行计算机的程序语言相继问世。

软件设计师的角色类似于建筑师和土木工程师,尤其是规划城市、工厂等复杂建筑的设计师。因此我们应该学会从这些领域吸取灵感,攻克我们遇到的设计问题。”

这一概念在模块化编程和面向对象的编程领域举足轻重,它可以确保数据及相关函数封装在对象内,与其他的数据和函数分隔开来

集成开发环境(Integrated development environment,简称IDE )的发明,就是为了让编程变得更加轻松。

研究人员很快意识到,要做到这一点,必须确立一个明确的软件生命周期。首先,你必须合理定位产品和项目需求。接下来要做的,就是设计、运行和测试软件,并将其运行情况清晰地记录下来。最后要做的,就是发布软件,或许在这个阶段,你还需要指导用户如何高效地使用软件、如何进行必要的维护工作。

这些事情说起来容易,做起来难。产品或项目的需求并不好确定,因为顾客往往并不知道自己真正的需求到底是什么,因此可能会举棋不定、自相矛盾,甚至改变主意。

有的时候,编程人员连目标用户是哪些人都无法确定,因此,真正应该提要求的人反而没有这个机会。

软件工程学着眼于软件开发的方方面面,比如对软件体系结构进行建模,采用可视化程序设计,使用形式化方法测试软件、提高其性能的可靠性。

统一建模语言(Unified Modelling Language,简称UML )将多种建模概念融合在一起,如今已成为软件系统建模的标准方式。

正因为有了软件工程学的帮助,程序员才得以高效利用时间。“如果没有软件工程学,我认为硬件与软件之间的性能差距会进一步扩大。制约软件开发的主要因素就是缺少训练有素的人才,现在也是如此。如果当初没有足够的人才投身于软件工程行业,我们就无法取得今天的成就了。”

由于某种原因,软件每次升完级以后,其运转速度似乎都会变慢。

维尔特定律的内容是:软件变慢的速度永远快过硬件变快的速度。

造成这一现象的罪魁祸首是软件膨胀(software bloat)——新版本的软件往往只是在原版本的基础上叠加了新的代码,而并没有经过重新编写。维尔特定律表明,纵使计算机的运行速度快得惊人,新一代的软件的运行速度也比不上十年前的老版本。

软件测试是衡量软件质量、寻找优化方法的关键手段之一。测试的内容之一,就是寻找特定的输入,使程序执行特定的代码片段

有时候,问题只是出现在成本和时间上——我们并不擅长估算软件开发产生的耗费。“我们的软件估算水平很差,”芬克尔斯坦表示,“如果你让我‘开发一个售卖二手教科书的网页前端,’我可能一时半会儿没法告诉你需要多少时间。

芬克尔斯坦认为,问题的症结并不在于分析师和开发者经验不足。“个人认为,这些系统之所以失败,都是一些人们很熟悉的问题造成的:比如在项目设计和开展阶段犯了低级错误,”他表示,“你必须问自己,既然人们对这些问题都很熟悉,为什么还要一次又一次地犯同样的错误?他们是傻子吗?他们没看过萨默维尔的书吗?这些问题前十页就讲了,哪怕稍微翻翻也好啊,又不一定要全读完!我觉得,问题的症结是,企业结构、管理决策结构与开发软件的技术过程存在不协调。因此,这些系统之所以会失败,问题出在管理上,而不是工程上。”

“软件工程领域面临的另一大挑战就是多核技术。如果软件无法充分发挥多核技术的优势,那么一台计算机就算内核再多也于事无补。

要是采用一个内核就足以运行所有软件,那么剩下15个内核留着干嘛呢?总不可能都用来运行杀毒软件吧。

优化软件就相当于优化一切。

存储程序计算机在体系结构上主要特点有:以运算单元为中心;采用存储程序原理;存储器是按地址访问、线性编址的空间;控制流由指令流产生;指令由操作码和地址码组成;数据以二进制编码。

为了寻找更好的存储器,人们费尽了心血,几乎所有能利用的物理现象,电、光、声、磁都被探索过来。研制埃尼阿克的工程师莫奇利想到了水银延迟线(Mercury Delay Line)——二战期间为军用雷达开发的一种存储装置,作为最早的计算机上的内存。

吼猴(1)是世界上叫声最响的动物之一。即使在厚厚的密林中,它们震耳欲聋的吼声依然可以传到几公里以外的地方。

计算机是喜好社交的机器,它们在横越高山大海、遍布广袤大陆的网络中一刻不停地互相交流。

此次对弈是两名计算机先驱人物的偶遇,尽管当事人对此浑然不知。香农已经功成名就;柯尔斯坦则是未来的新星,他将在香农的基础上取得新的成就,这样的成就是两个人都未曾预料的。 

香农的思想催生了数字通信技术,其原理就是将音频信号转化为二进制数位(一连串的比特),二进制数位携带了关于音频波形的信息。音频信号在呼出端转化为数字信号,以1和0组成的比特序列传播,并在接收端还原成模拟音频信号

香农以此为基础,撰写了一篇论文——《通信的数学理论》(A Mathematical theory of Communication )。《通信的数学理论》为一个全新的研究领域奠定了基础,这个研究领域称为信息论(3)。

1949年,香农和他在贝尔实验室的同事贝蒂(Beuy )结婚。两人育有三子。1956年,香农进入麻省理工学院,并在那里度过了下半辈子的职业生涯。他虽然一生成就卓著,但却平易近人,安稳顾家,而且为人很有幽默感,兴趣广泛得惊人。

克劳德·香农在晚年患上了阿尔茨海默氏症(Alzheimer"s disease,即所谓的老年痴呆)。可惜的是,他虽然推动了信息革命的兴起,却始终未能充分享受到信息革命带来的便利。2001年,香农在疗养院逝世,享年84岁。

将计算机连成“网络”的思想正日渐成为研究领域的热门话题。早在20世纪60年代早期,约瑟夫·利克莱德(Joseph Licklider,人称JCR或“Lick”)等美国计算机科学家就提出,全球的计算机网络终有一天或许会取代图书馆。

为了将欧洲的网络与阿帕网相连,柯尔斯坦不得不开发协议转换器。“我别无选择,只能将截然不同的网络连接进来,”他说。这时候,莫里斯·威尔克斯正在研究自己的网络解决方案——剑桥环网(Cambridge Ring )。威尔克斯曾对柯尔斯坦说:“我们之间有一个很大的不同——我可以随心所欲地做自己想做的网络,而你却得时刻迁就别人的标准和协议!”

1974年,他们发布了一种新的“连接语言”,也就是便于不同的计算机之间互相沟通的互联网协议。他们的方法在今天被称为互联网协议套件,其实,更通行的叫法是TCP/IP,它是“传输控制协议和互联网协议”(Transmission Control Protocol and the Internet Protocol )的英文缩写。

为了便于大家理解互联网协议的概念,我来给大家打个比方。假设有两家大企业的总裁想要共享某些信息。第一家企业的老板决定跟第二家企业的老板商谈,给她发送一份文件。当然,他身份地位高,手头事务忙,不可能亲力亲为,于是就命令手下的通信总监打理细节问题。通信总监办事情非常彻底。首先,他联系了对方公司的通信总监,确认了接收事宜。接着,他仔细地将文件切分成细小的信息块,对每个信息块都附上了标签,注明了信息内容和接收人。然后,他将信息块连同标签一起送到公司的收发室,将每一个信息块精心打包,将地址标注在包裹上,等待邮递员派送。邮递员将好几个包裹收集起来,放在箱子里妥善保管,然后确定将邮件派送到对方企业收发室的最佳路径。如果他在中途损坏了某些包裹,或者发现它们的包装不够严实,就会折返回来要求更换。对方企业收到包裹后,会将它们转交给通信总监。通信总监则根据标签,细心地将零散的信息块重新整合成完整的文件。如果发现有的信息块在派送的过程中不幸丢失或损坏,她就会要求第一家企业重新发送相应的信息块。等到所有的信息块都顺利送到、组装到位后,她就会将整合好的文件提交给自己的老板。
计算机网络通信或多或少也是这个道理。

瑟夫认为,网络协议只要有一种就够了,没有必要开发那么多种。但是柯尔斯坦觉得应该把视野放宽一些,他深知,现在世界上存在许多不同类型的网络。“我并不认为有哪种协议能够做到一家独大,”柯尔斯坦表示,“不过我必须承认,文特一直是个有远见的人。他认为TCP/IP 协议能够通行全球。所以我们合写了论文,把两种观点都收录了进去,无论事情朝哪个方向发展,这篇论文都能给人们提供一定的参考。”

柯尔斯坦继续致力于连接不可兼容的网络,确保它们能够支持TCP/IP。“每当新的网络技术问世,我们都会确保它能够得到有效利用,并且从一开始就与互联网整合。许多从事网络技术的人根本不知道、也不关心互联网的存在。”经过艰苦卓绝的努力,文特·瑟夫的预测变成了现实。1981年,TCP/IP 成为了阿帕网的标准协议。

在接下来十年里,新的网络纷纷将原来的协议改成TCP/IP。至此,世界上大多数网络终于开始使用同一种语言:互联网的语言。

为了便于大家理解,我先给大家讲解一下周实接下来会提到的一些重要概念。所谓节点,通俗地说,就是指某个大环境中的一个点。在计算机领域,每一个工作站、服务器、终端设备、网络设备,即拥有自己唯一网络地址的设备,都可以称为网络节点。整个网络就是由这许许多多的网络节点组成的。所谓节点的度,就是指直接和某个节点相连的节点数目;一般认为,节点的度越大,该节点所代表的个体就越居于网络的中心,占有的网络资源越多。网络中度大的核心节点为富节点(rich node)。互联网的一大重要特性在于,它表现出异配连接倾向(disassortative mixing ),周实表示,也就是说,度小的边缘节点倾向于和度大的核心节点(也就是富节点)相连。互联网还表现出所谓的“富人俱乐部现象”(rich—club phenomenon ),也就是说,少数富节点紧密地连接在一起,形成了一个“俱乐部”,将网络资源集中起来,在互联网中发挥了中枢的作用,能够为信息传输提供大量可选的捷径。因此,互联网中典型的信息传送路径可以分为三步,第一步是从源节点传输到富人俱乐部中的一个富节点,第二步是在富人俱乐部中的两个节点之间传输,最后一步是从富节点传送到目的节点。这些重要的特性是随着互联网规模的扩大而自然产生的,没有经过任何人为的计划和设计。

“可以说,彼得·柯尔斯坦造就了互联网,”克劳克罗夫特表示,“因为他使原本互不兼容的网络兼容并包,使互联网成为了最广泛的网络之网。”
“这话说得不假,”柯尔斯坦笑了笑,说道,“文特认为,全世界的网络都可以统一起来,人们只需要使用一种网络协议。我不这么认为。我觉得,我们还有很长的路要走。文特的想法在美国可以实现,但在英国不行,英国总有人开发不同的网络协议。因此,必须有人发挥桥梁的作用,使各种类型的网络兼容并包。我们必须考虑到,不同的国家和地区有着不同的发展步伐,这不仅仅表现在技术上,也表现在政治上。要想推动互联网的发展,必须因地制宜。”

互联网的诞生既是技术推动的结果,也是政治努力的结果,这一点并不奇怪,毕竟,互联网的影响范围遍及全世界。

将域名转换为IP地址的过程称为域名解析,域名解析需要专门的服务器,称为域名服务器(domain name server,以下简称DNS )

2011年3月,日本发生大地震,造成超过10,000人伤亡,大部分地区受灾严重,满目疮痍。“发生了这么大的地震,互联网却几乎没怎么受到影响,”他说,“从亚洲进出的互联网流量只是略微有所下跌,下跌的幅度只有5%左右,而且没过多久就恢复正常了。互联网有足够的冗余和足够的鲁棒性。一条线路出了问题,总是可以换别的线路。”

43亿的数字听起来很大,但实际上根本供不应求。这给互联网的未来造成了很大的威胁。
为了解决这个问题,一个常用的方法是网络地址转换(Network Address Translator,简称NAT ),它能使整个子网的所有主机只通过一个公有IP 地址访问互联网。

IPv4采用的是32位地址长度,而IPv6采用的是128位地址长度。可以说,有了IPv6,地球上每一粒原子都能分配到一个IP 地址。

如今,一旦IPv6得到推行,需要改动的计算机将达到几十亿台之多,而且这一数字每天都在以几千台的速度增长,因为联网的手机和平板计算机越来越普及。要想在一夜之间改变整个互联网的编址系统,已经是天方夜谭。

和当年互联网问世时一样,IPv6的推进,不仅需要工程上的努力,还需要政治上的努力。

新程序的设计围绕着一个中心概念,称为超文本。伯纳斯—李并不知道前人在这方面的研究成果。他编写的程序可以将数据库中的信息放在页面中展示,页面中有许多词语可以“链接到”数据库中的其他页面。选定其中一个词语后,程序会将相关的页面调取出来。通过这种方式,用户可以快速、直观地访问大量的信息。伯纳斯—李将这个新程序称为ENQUIRE。

1989年,伯纳斯—李和他在欧洲核子研究组织的同事建立了一个简单的Web 系统,用于处理电话号码。这个Web 系统分为两个部分:一是“服务器”,它由一台计算机充当,在收到请求后会运行程序,提供信息;二是“浏览器”,它们分别在多台计算机上运行,会根据用户的指令向服务器发出请求,然后将收到的信息以易于读取的形式展现给用户。

“从那时候开始,我收到了很多对Web 感兴趣的互联网用户发来的反馈,他们的想法、灵感、源代码以及精神支持让我受益匪浅。这些都是我在身边的环境中难以得到的。可以说,是互联网的用户造就了Web。”


鼠标/图形用户界面风行开来,Web 服务器的数量呈现出指数式的增长。

伯纳斯—李为万维网的诞生立下了三大不可埋没的功劳。第一个重要贡献在于,他提出了一个重要的思想:每个文档或图片都应该有自己的标识符,正如每台计算机在互联网中都有自己的标识符。


伯纳斯—李的第二个重要贡献在于,他发明了一种特殊的高级语言,称为超文本标记语言(hypertext markup language,简称HTML )。它可以告诉浏览器如何显示Web 网页中的复杂内容,使用起来简易灵活,任何想设计Web 网页的人都可以轻松上手。

伯纳斯—李的第三大贡献在于,他发明了超文本传送协议(Hypertext Transfer Protocol,简称HMP),HMP协议可以将HTML文件从Web服务器传送到Web浏览器。

1994年,伯纳斯—李转职到麻省理工学院,并在麻省理工学院创立了万维网联盟(World Wide Web Consortium,又叫做W3C),该机构旨在为万维网未来的发展保驾护航。

网络安全理论的起步,离不开两名先行者——克劳德·香农和艾伦·图灵取得的突破性成果。

“香农不仅是通信学和信息论之父,还是密码学之父。他在20世纪40年代发表了两篇关于通信学和密码学的论文。直到20世纪70年代,这两篇论文还是密码学领域仅有的文献。他把密码学从一门艺术变成了一门科学。他的成果为密码学日后所有的发展埋下了种子。”

只要给他们足够的时间和咖啡,他们就能侵入系统。

“香农发表过一些成果,但是这些成果近50年来一直没有引起重视。他曾经在论文中说,破解复杂密码的过程,实质上就是对一个代数方程系统求解的过程。这也是他定义一个加密算法是否安全的标准。近50年来,没有人能从中找到密码破译的方法。我是最早证明出这种代数数学方法可以破解加密系统的人之一。”

这个方法最早由英国政府通信总部的研究人员于1973年发明,但被列为绝密,不能发表。直到三年后,美国的研究人员惠特菲尔德·迪菲(Whitfield Difle )和马丁·赫尔曼(Martin Hellman )做出了同样的成果,新的方法才公诸于世。

第三代加密算法称为非对称密钥加密(又叫做公开密钥加密)。

1994年,网景(Netscape)浏览器推出HMPS——即HMP 的安全版,采用公开密钥加密技术对HMP 数据进行加密

“到目前为止,身份验证比信息加密要重要得多,几乎不可能从中作假。在当今时代,要想将重要的信息完全保密,已经变得难上加难。但是要想进行身份验证,乃至在出错的时候进行补救,都是轻而易举的事情。”

“诈骗犯罪在互联网发明之前就已经很猖獗了,你不能指望它在新的平台上就会有所收敛。”

与此同时,我们也需要思考一个问题:为了换取网络安全,我们愿意在多大程度上牺牲隐私?这是一个艰难的权衡。要想提高身份验证方法的安全性,就必须暴露更多的私人信息,让计算机采集指纹、虹膜、甚至DNA。但是私人信息暴露得越多,就越有可能被人滥用。

“人们正在用隐私来换取安全,”汉德利表示,“这是一个艰难的取舍。隐私对于一个人来说事关重大。但人们对隐私的重视还远远不够。”

“新的通话系统完全以互联网技术为基础,”汉德利表示,“信号都转换成了数据包,不再在电路中传输了。”当然,在此之前,大多数国际长途电话网都至少铺设了部分互联网线路。

我儿子今年十岁,他现在不看广播电视,只看iPlayer。他对电视节目的固定播放时间已经没有概念了,因为现在想看什么节目随时都可以看。

汉德利表示,“有一点我比较清楚:我预见不了哪些应用会在市场上走火。每次出现什么新的杀手级应用,我都觉得很突然。它们总是在出乎意料的地方出现,并不走主流的路子,而是属于剑走偏锋的类型。”

物理界面能将操作者的动作转换为指令。可视化界面则能通过直观的图形,在人机之间搭建双向交流的桥梁。

1968年12月,在秋季联合计算机会议上,恩格尔巴特及其研究小组在合作伙伴的协助下展示了他们的研究成果。此次演示因其生动、直观的形式和前瞻性的成果而被人冠以“演示之母”(he Mother of All Demos )的美名——这样的赞誉可谓实至名归。

如果事情按照这样的趋势发展下去,他兴许就能发明万维网,或者与之非常类似的网络了。
然而不幸的是,在接下来的十年里,情势急转直下。随着管理层的洗牌和赞助问题的涌现,斯坦福研究院的内部乱成一团,四分五裂。1977年,恩格尔巴特遭到解雇。

1981年,施乐推出了Star 工作站(施乐8010信息系统),这是第一款采用图形用户界面的商用机。它探索了WYSIWYG(所见即所得)的设计理念。


苹果公司的创始人史蒂夫·乔布斯对Star 工作站的图形用户界面极感兴趣。他领导项目团队,开发了一款新的个人计算机,称为苹果Lisa。苹果Lisa 于1983年正式发布。没过多久,另一款计算机麦金塔(Macintosh )也于1984年亮相市场。

1984年,麻省理工学院为UNIX 系统开发了X—Windows 图形用户界面。

1985年,一款适用于MS—DOS 系统的图形用户界面横空出世,这就是日后名声大噪的Windows

随着个人计算机公司之间的竞争日益加剧,最好的设计理念往往能够在模仿和创新中保留下来,并不断改进。

亨利·高洛德(Henri Gouraud )发明了一种效果逼真的光影渲染技术,称为高洛德着色(5)(Gourand shading )。弗兰克·克罗(Frank Crow )发明了抗锯齿技术(anti—aliasing )

由于在3D 图像中,受分辨率的制约,物体边缘总是会或多或少地呈现出三角形的锯齿,而抗锯齿就是通过像素混合,对物体边缘进行柔化处理的方法(如今,这项技术在每台计算机和电视上都得到了广泛的应用)。

正如我们在第010章所看到的那样,如今世界上最快的超级计算机都是基于图像处理器而研制出来的。

尽管技术的发展态势喜人,但总体来说,整个计算机图形学体系还只是基于两个简单的概念:位图和矢量图。位图又叫做栅格图,简单地说,位图就是数码相机拍出来的相片。

位图放大后会变得模糊不清,看起来像是有许多小方格。这是因为,图片放大的其实只是像素点。相机上的光学放大之所以数码放大效果更好,原因在于,数码放大只是将像素点的尺寸放大,并未增加任何细节,而光学放大通过光学镜头结构的变化来实现变焦,就像显微镜一样,能够将更多的细节展示出来。

与位图不同,矢量图是计算机严格按照运算结果实时绘制出来的。这就好比我们小时候在数学课上做过的事情:在坐标纸上描点,用尺子画线,将点与点连接起来。在矢量图中,所有的图形都是由点和线构成,就连图中嵌入的文字也是如此。它的优势在于,每次放大或缩小图像时,计算机都会重新计算所有线段的长度和位置,然后在维持原有清晰度的情况下,将图像重新绘制出来。也就是说,矢量图不会失真。(伊凡·苏泽兰的几何画板可能是世界上第一款矢量图形设计软件。)

计算机图形学领域有大量令人称奇的美图方法,可以制造精巧繁复而又美不胜收的光照、雾化和渲染效果,模拟水波、皮毛、织物等丰富多彩的质感纹理。如果时间充裕,我们甚至还可以采用光线跟踪技术。

如今,《阿凡达》(Avatar )、《怪物史莱克》(Shrek )等好莱坞大片大量采用了光线跟踪等计算机图形学技术,用于后期制作。

为了解决这个问题,一个两全其美的办法就是,用矢量图网格图形进行三维建模,然后将精美的位图图案“粘贴”上去(这就是上文提到过的纹理贴图),最后用各种巧妙的渲染手法加以美化。


如今,计算机图形学或许已经十分发达,但是虚拟现实技术依然离我们的日常生活非常遥远。自苏泽兰在1968年取得开创性的成果后,头戴式显示器的研究工作一直停滞不前。直到20世纪80年代中期,情况才有了转机。

他们在现实世界中或许正置身于围墙之内,但却对此浑然不知。在虚拟现实中,他们唯一能感觉到的只有眼前的虚拟世界。

只要对完全沉浸在虚拟环境中的用户进行研究,就会发现一个有意思的结果:虚拟现实的投影无需太过真实,就能让用户的行为与在现实世界中毫无二致。任何让用户以为站在高楼上的简单错觉都足以使容易眩晕的人极度紧张

在虚拟现实的演讲场合,即便台下的观众都只是卡通式的虚拟人物,那些害怕在公众场合发表演讲的人还是会发抖。

“最近,我和我指导的博士生潘雪妮(Sylvia Xueni Pan,音译)一起观察了害羞的男性在虚拟世界中和异性互动的过程,”斯雷特笑着说。研究人员出乎意料地发现,当虚拟的异性靠近时,受试者还是会躲开。“这个实验非常成功,”斯雷特解释道。

研究人员甚至还探讨了如何利用虚拟现实技术帮助偏执的人克服偏执倾向。之所以会探讨这个问题,是因为研究人员发现,几乎所有受试者都会揣测他们遇到的虚拟人物的想法,而这种揣测往往只是胡思乱想。

研究人员给用户做出虚拟身体后,用户就会产生强烈的错觉,误以为这就是他们真实的身体。“产生这样的错觉是有原因的,”斯雷特说。“毕竟从小到大,无论什么时候低头看,你看到的都是自己的身体。所以从某种意义上来说,大脑已经形成了惯性——只要低头看,我就能看见自己的身体,这是我的身体——它没有别的选择。所以虚拟现实技术可以导致非常强烈的错觉。”

要想了解人类如何认识自身及世界的问题,虚拟现实将是一个强有力的工具。

“其实答案在电影里都已经放出来了。《星际迷航》里的那种‘全息甲板’就是我们想要的效果。虚拟现实所追求的境界就是以假乱真,人们知道眼前的景象是幻景,但它不是实景,胜似实景。”

有的时候,计算机外设要是使用不当,也有可能给身体造成损伤。“我们把鼠标之父恩格尔巴特请来做演讲时,曾经开玩笑说,那些‘鼠标手’患者应该在讲堂外举横幅抗议。”

有些玩家在Wii 上打网球时,喜欢投机取巧,用手腕的翻转动作代替手臂的大幅挥拍,这样连续打上几个小时后,可能会因为肌腱拉伤而入院。

问题并不在于技术本身,而在于,技术设备会把不自然的操纵动作强加到玩家的身上。

人机交互领域的科学家分为三类:第一类是认知科学家,他们着眼于人的思考方式及人与技术的互动过程;第二类科学家着眼于人的因素,他们研究的问题是,人类为了提高技术设备的性能、安全性和用户体验而与周边环境采取了哪些互动;第三类科学家关注的问题是,怎样才能设计出更好的软件界面或外设,使之满足用户的所有使用需求。

遗憾的是,在计算机科学领域,不如人意的设计比比皆是。有时候,之所以会出现这种问题,是因为一些不合时宜的旧方法没有被及时淘汰。

界面设计得差,那就意味着做同样的事情,用户花费的时间会比原本多得多,因此也就更容易犯错误。

已经有一些互联网公司在运用类似的原则来测试它们的新版网页了。“大网站通常会做A/B 测试,”布兰福德表示,“他们会把测试版网页上线。访问原网页的用户当中,有十分之一会被重定向到测试版页面上。公司会比较两个用户群的行为和反应,然后据此决定应该采用新版网页还是旧版网页。

眼动追踪(eye—tracking)是另一项卓有成效的人机交互技术。

同样是收集用户数据,如果其目的是为了改善人机互动的体验,那么这样的做法是喜闻乐见的;如果其目的单纯是为了牟利,那就是另一回事了。

随着智能界面的不断改进,人们开始担心终有一天,计算机会了解人的深层次需求,并据此开出难以抗拒的诱惑条件

“人们在决策时会梳理过去的经验,并与现状进行参照。有了过去的情感体验,人们会以更加灵活的方式进行决策,”

情感计算的目标是创造出一种新技术,这种新技术可以感知人类情感状态,然后对收集的情感数据进行处理,进而提高计算机的性能。在理想情况下,计算机还可以对人类的情感做出反应,甚至可以表达自己的情感。

“开发这些技术的目的,是为了激发他们主动参与体育运动,让他们多活动活动筋骨。正常情况下,患者在医院做完一个治疗周期后,就出院了。但这仅仅只是一个月的理疗而已,远远不足以治愈慢性疼痛。可是患者出院后就不再主动锻炼身体了。恐惧和焦虑会使患者产生疼痛的错觉,进而使他们不敢运动。但是不运动恰恰是他们应该极力避免的选择,因为这会使身体状况进一步恶化。”

我们观察到,患者为了避免感觉到疼痛,会做出许多保护性的动作。但如果他们不害怕的话,身体的动作就会放松许多。人在紧张的状态下,身体肌肉的调动方式与放松的状态下截然不同。

或许更令人惊讶的是,计算机科学正在与社会科学相融合,形成了一门交叉学科,这门学科以人为中心,着眼于人类如何与技术互动、怎样才能做出令人满意的人机交互界面等问题。

我们不妨再设想得远一点,思考一个有趣的问题:未来的计算机会不会因为受了委屈而变得沮丧甚至愤怒呢?

自计算机科学诞生以来,研究人员在私底下一直自视为人工大脑的构建者。毕竟,既然人类能够凭借神经元释放的数十亿个电脉冲产生思维活动,计算机为什么不能如法炮制,利用电子电路释放的电脉冲来产生思维活动,进而完成各种'各样的智能任务呢?

我想到了《1984》的作者乔治·奥威尔,他生前要是看过这台机器就好了。”

冯·诺依曼在研究经济学和博弈论时,就已经预见到了这个问题。他证明了最小最大定理(minimax ),该定理表明,博弈双方的任何一方都会采取最有利于自己、而最不利于对方的策略。香农在会下棋的计算机中应用了这一思想

在国际象棋中,对弈双方每走四手棋(双方各走两步)之后,就会形成新的局面,从中可以看出哪一方更占优势。所以计算机的目标就是,找出接下来可能是最高明的两步棋,尽量增加自己的胜率,同时压低对手的胜率——当然,前提是,对手的走法与计算机的设想完全一致。

对它来说,最坏的情况莫过于对手走出最强应招,但这也符合它的预期。最好的情况自然是对手不慎失策,下了一手昏招。这样一来,场上的局面或许会比它一开始预测的还要好。

香农取得的突破还在于,他发现了两种类型的博弈算法,一是暴力搜索,穷举双方在每一步可能采取的所有招法,从中找出最好的;二是上文所说的启发式搜索,只评估最有可能致胜的招法。香农更偏爱后一种算法,因为它的每一步运算量更少,因而可以运算更多的步数,起到料敌先机的效果。

以国际象棋为例,1997年,IBM 公司制造的计算机“深蓝”击败了国际象棋大师卡斯帕罗夫(Kasparov)。

1950年,香农和图灵都以会下棋的计算机为例,对机器智能进行了探讨。

图灵不像香农那么擅长制造设备,制作机器老鼠并不是他的风格,他更加注重的是理论思辨。

图灵所描述的模拟游戏是这样的:假设两个房间里分别有一个人、一台计算机,你作为提问人进入第三个房间,通过一些装置(如键盘)对他们随便提问。假如过了五分钟,你还判断不出谁是人、谁是计算机,那么这台计算机就通过了图灵测试。

比例俱乐部是由英国的一群年轻科学家在不久前新建而成,其宗旨是探讨两个问题:一是行为产生的机制,二是人脑和机器的信息处理机制。

比如:英文等自然语言能否用于编程?可模拟人脑神经元的程序能否编写出来?计算机能否通过学习而不断进步?计算机应该如何表达信息?在算法中增加随机性,是否就能提高创造力?

从很早的时候开始,科学家就开始为计算机智能的发展方向争论不休。他们分成三派,第一派以麦卡锡为代表,认为逻辑推理是计算机智能化的必由之路。第二派以麦卡洛克、皮茨为代表,认为构建神经元模型才是正道。第三派以明斯基为代表,认为计算机要想实现智能化,就必须首先具备现实世界的知识。

“如果曾经做出的某个选择带来了不好的结果,那么机器就会选择其他的反应方式。”

“塔克后来跟我说,他曾经拿着我的论文去找冯·诺依曼征求意见,他说,‘这篇文章看起来挺不错的,但是我有点拿不准,不知道它讨论的问题属不属于数学范畴。’冯·诺依曼回答他说,‘好吧,就算现在不是,以后保不准就是了。我们还是多鼓励一下年轻人,让他好好做完吧。’于是我就拿到博士学位了。”

“怎样才能制造一台会思考的全能机器?或者进一步说,就算制造出了一台全能的机器,你能把它解决问题的运算过程称为思考吗?所以这是我们要解决的第一个问题,”明斯基说,“第二个问题是,有没有什么指导性的理论可以界定机器能否思考的问题?人们能否弄清楚智能的本质、原则和一系列其他的奥秘?这两个问题其实涉及到对人工智能的本质定义,问题是它们太抽象了,没什么实际意义。

麦卡锡的思路就是要让计算机像人类一样推理思考,”罗宾·赫希表示,“不管你想做什么,你必须首先设计一套正确的逻辑,把它清晰地表达出来。

明斯基的方法并不是建立在数理逻辑的基础之上。他认为,单靠逻辑不足以创造出人工智能。所以他另辟蹊径,引入了一个新的概念,称为“框架”(frame )。我们知道,现实世界中的信息并不总是符合逻辑的,但它们一定可以反映这个世界的真实情况。

这就是大名鼎鼎的《感知起:计算几何学导论》(Perceptrons:An Introduction to Computational Geometry ),该书于1969年出版,给当时火爆的神经网络研究带来了巨大的冲击。

不过我书里的观点归根到底就是一句话——感知机无法将视觉上分散的东西汇总到一起。”说着,明斯基拿起一把勺子,将勺子藏到了碗的后面,“你其实知道这是一把勺子,虽然你并没有看到它的全部,只是看到了它的柄和勺尖。但是感知机做不到,它不能把这些信息汇总起来,得出一个真实可靠的结论。”

1973年,英国科学研究委员会(the British Science Research Council )发布了一份报告,对人工智能领域的研究工作进行了深入批判。报告称,人工智能研究耗费了大量的人力物力,其结果却令人失望,与明斯基、西蒙等科学家预计的结果相差十万八千里。

哲学家约翰·希尔勒(John Searle )将计算机比作一个待在“中文屋子”里的人。屋里的人不懂中文,但我们给这个人传递一条用中文写成的信息,他在文件柜里翻找合适的回复内容,最后用中文给我们回复了一条新的信息,而且由于他不懂中文,自然也不会理解信息的意思。在屋外的人看来,屋里看起来像是有一个以中文为母语的人,但事实上,这个人根本不懂中文。希尔勒认为,只会执行符号处理的计算机永远不会拥有智能,无论它们做出的成果有多么惊人,都不会改变这个事实。即使“聊天机器人”通过了图灵测试,它还是不懂它使用的文字,只不过是一台通晓测试游戏规则、且善于投人所好的邮件分拣机罢了。
人工智能又一次名声扫地,并在20世纪80年代末迎来了第二个冬天。少数坚守阵地的科学家甚至有点害怕使用“人工智能”这个词,转而采用了“智能系统”、“计算智能”、“机器学习”等词语替代。

布鲁克斯认为,传统的人工智能把主次给颠倒了。研究人员应当更多地采用一种以行为学为基础的方法,而不是盲目对大脑进行建模,而后将其输入计算机。智能应该自下而上地构建,而不是相反。

布鲁克斯说,“主流的研究思路是自上而下的,他们把大脑的每一块有感知能力的部分都纳入一个统一的模型当中,设计者再根据这个模型制定计划,每一个任务执行单元都要严格按照计划的程序一步一步执行命令,这太盲目了。生物系统里真正的情况不是这样的,从感知到行动的反应非常快。”

对布鲁克斯来说,世界本身就是它自己的模型,机器人的行为只是去适应这个世界而已。他们按照这个方式做出的机器人,运行结果令人惊叹。

传统的人工智能观点包含了一个中心假设,那就是,所有的行为都是通过对环境建模,然后依据模型进行逻辑推理后才产生的。

沃尔特在描述自己的机器人时写道:“这个模型看起来可以不像动物,但是它的行为一定要像。因此,它必须具有探索心、好奇心和自由意志,至少三者必须有其一。自由意志表现在很多方面,比如不可预知性、目标搜寻、自我调节、趋利避害、前瞻性、记忆力、学习能力、遗忘性、联想能力、形状识别,还有就是一些能使它适应社会的要素。这才叫生命。”

“人工动物理论的基本策略是,采用最少的特制机械,从底层做起,逐步向更高层次的智能迈进。”威尔逊说。他建议,研究人员应该先制造可以在简单环境下运行的简单人工生命,然后缓慢增加环境的复杂性,或是在同样的环境中,增加人工生命所需完成任务的复杂性。而且人工动物的复杂性不可以随意增加,只要这个复杂性足以使人工动物适应新环境就够了。在理想条件下,应该尽可能地使用自适应式的解决方案。

如今,计算机科学家正在与生物学家和哲学家紧密合作,共同探索智力和生命本身的起源。

大屏幕上播放着一段视频。视频中,有一个不明物体在游动,从它划水的动作看,感觉像是一只乌龟,它的身体由一系列小方块构成。紧接着,另一个奇怪的生物进入到画面当中。它的块状身体上有三对连续排列的桨。“这个演示视频展示的是,在模拟的物理环境中,为了完成特定任务而进化出来的虚拟生物。”画面中传来了一句美式口音的旁白。

西姆斯给他的虚拟生物制定的生存规则并不复杂,只是要求它们游得更好、走得更好而已

虽然没有受过优越的精英教育,霍兰德依然在全国物理联考中斩获了第三名,他也因为这次出色的表现获得了麻省理工学院的奖学金。

我是世界上最早拿到计算机科学博士学位的人,那时还是在1959年。”霍兰德说。

霍兰德的解决办法是创造一个计算机模型,他称之为遗传算法。这个算法是一个进化的模型,它带有一个由很多独立个体构成的种群,其中每个个体都包含了一组基因。基因用二进制数码表示。为了模拟自然选择,霍兰德首先做出了一个适应度函数,将需要解决的问题抽象画,然后后用这个函数去评价每组二进制数码(等位基因)的影响。如果数码组能够解决问题,就会获得较高的适应度评分。适应度评分较高的个体就被作为亲代,用来培育新的后代种群。后代会从父方继承一些基因,也会从母方继承一些基因,还可能伴随着一些随机突变。然后再用适应度函数给新一代的个体打分,较好的个体又被作为亲代。这样一代代地进行下去,就等于在计算机程序中实现了进化。于是霍兰德就可以在虚拟生物进化的过程中,观察和分析等位基因簇的变化频率了。

“我认为,如果将这个概念推而广之,我们可以看到,各种各样的事情中都存在这个现象。标准积木的重新组合是非常普遍的。我就拿内燃机举例好了,内燃机上的几乎每个零件都不是什么陌生玩意,都是人们已经用了一百年的东西,但它们的独特组合才是最重要的,单个部件其实并没有我们原来想象的那般重要。”

其他偷师于大自然的算法也被接二连三地开发出来。有些参考了蚂蚁种群里的蚁群运动模式。霍兰德的另一个学生斯特凡妮·福里斯特(Stephanie Forrest )根据免疫系统的运作机理发明了一种新的算法。还有一个学生克里斯·兰顿(Chris Langton )成为了人工生命领域的奠基人之一。进化计算领域的最新研究着眼于一些基础性问题。

“我非常认同罗德·布鲁克斯的观点。首先要做的就是找准定位,”霍兰德说,“必须存在一种环境,使人工智能体可以与它互动,换句话说就是,人工智能体要在环境的压力下生存下来。我从一开始就是这样想的。我不相信机器可以不通过学习和适应就获得真正的智能。”

学习如何学习,预测如何预测

自上而下的逻辑编程也好,自下而上的进化适应方法也好,无论采用哪种方案,都无法解决所有的问题。没有任何一款程序能够通过图灵测试。我们还是很难制造出一台具备智能的机器,无法在不可预测的环境中操控机器人。

近年来,人工智能领域取得的最重要的突破之一,表现在机器学习领域,也就是制造可以学习的计算机程序。

进化计算为机器学习提供了一种著名算法,那就是遗传编程。

只要给定一组输入数据和一些正确的样本输出数据,遗传编程就会先对一组候选函数进行比较,然后进化出一套程序或数学函数,以根据输入数据得出正确的结果。

在探索的旅途中,人们得以从全新的视角审视了困扰哲学家数百年的问题:人为什么存在?生命的起源是什么?生命体何以进化出了如此复杂多样的形式?智能是什么?意识是什么?

“我一直很喜欢这样的理念,那就是,用简单的规则创造复杂的事物,”他说。他要表达的意思很直白。复杂的经济活动是由无数较为简单的交易活动构成的。

怎样才能界定计算机是否在思考呢?如果计算机通过了图灵测试,那么,人类亲手缔造的数字智能或许就能与人类自身相媲美。或许我们可以假设,不管看起来多么智能的计算机。只要假以时日,就会暴露出它不会思考的本质。

机器人研究先驱欧文·霍兰德教授是少数几个对人工智能问题想得更远的人。“人们之所以制造机器人,肯定是受到了生物学的启发。在我看来,这就和制造工具一样,只不过制造机器人的目的是为了研究生物系统的行为,尤其是人类的行为,我们需要制造出有意识的机器人,这样才能更加深入地研究意识的本质。但是,到目前为止,没有任何证据证明,有意识的机器人比普通机器人、乃至低级机器人(比如僵尸)更好。事实上,我们有理由相信,有意识的机器人可能会变得穷凶极恶,就像《银河系漫游指南》(he Hitchhiker's Guide to the Galaxy)里的马文(Marvin)一样。

或许,对于人工智能领域现存的挑战,艾伦·图灵有一句话总结得最为精辟:“虽然前进的道路只有一小段是明晰的,但纵使是这一小段探索的道路,也充满了艰险的挑战。”

“想象力的桎梏一下子被打破了,”他说,“它还破除了你的偏见、成见和思维定势。利用进化式的生成过程,艺术家能与机器形成合力。这就好比一种‘创造力倍增器’,无论是人类无法想象的作品,还是单靠计算机无法创作的作品,它都能创作出来。我现在都还在想,这个主意实在是太厉害、太令人振奋了。”

争议的焦点在于,计算机生成的图像能否算作真正的艺术?“艺术圈肯定痛恨我的工作,”莱瑟姆坦言道,“很多人对我说,‘威廉啊,你本来可以成为一名杰出的艺术家的,唉,可惜了。’投身计算机行业让我与艺术圈生分了不少。我也理解他们的想法。归根到底,艺术圈也是门生意,作品还是要拿来卖的,所以它讲究一个稀缺性。我用计算机一下子就弄了上亿件作品,这怎么能当艺术品卖呢?”

创造力非常复杂,其中涉及到创作者的意图、情绪、反思还有批判性思维等等。


“为了达成这种转变,”她说,“计算机就得创造出复杂的社交系统,这样才能具备良好的哲学、政治社会学还有经济学条件基础,进而萌发艺术思想,就艺术的本质达成共识。也许有一天,计算机能做到这些,但在可预见的未来,我看不到任何的迹象。”

如果说机器可以运用审美标准作出自己的判断,那么这个标准由谁说了算?一旦我们把创造力的评判工作都交给机器,这样做会产生怎样的长期影响?”

莱瑟姆在IBM 工作了六年,但是当经济衰退来袭时,公司削减了大量的研究项目和经费,他也难逃被辞退的厄运。

他们与伦敦帝国理工学院的生物信息学研究人员劳伦斯·凯利(Lawrence Kelley )和本·杰佛里斯(Ben JeRerys )合作开展了“形状生长与变异子”项目。这个项目运用莱瑟姆的“形状生长”语言实现蛋白质结构的可视化,并综合蛋白质数据库(Worldwide Protein Data Bank,简称PDB )中的生物信息学数据,直观地展现蛋白质过去的进化过程,并预测其未来可能的进化方式。

“我学到了一个道理,”他说,“有时候,你不一定要自己具备专业知识,要学会借助别人的力量。相反,如果你自信满满,以为自己已经掌握了某方面的知识,那就得当心,说不定你只是一知半解而已。所以你得找到可以合作的人,而且要让自己表现得值得信赖,这才是最关键的。”

人类基因组里的基因数在23000左右,碱基对数目更是高达三十亿。如果一个碱基对用两比特存储的话,整个基因组的数据量将在725Mb 左右。

“我认为,戴霍夫建立的第一个生物数据库,还有一些检索数据库的早期工具,将作为重要的研究成果,为后世所铭记。”

霍吉维格说,“我们认为,要想把生物系统当成信息处理系统来理解,就有必要向生物学界重新介绍、吸收那些受生物学启发的计算方法。我们现在见到的大多数生物学模型都是不充分的,它们忽略了一个重要事实,那就是,局部互作(6)通常会很快波及多个层面,而这些影响常常千差万别。”

这门学科要解决的根本问题是‘什么是生命?

生命是如何从非生命物质中产生的?它们是如何进化的?简单的相互作用是怎么导致如此复杂的生物行为的?

“建模的诀窍在于你必须首先收集大量的原始数据。不同条件下细胞行为的每个方面,譬如基因活化的水平,还有蛋白质的表达水平,这些都要考虑到。然后你要对数据进行整合,从简单的基因序列数据到3D 影像资料都是如此,它们的来源都很分散,整合工作必不可少。最后你才能将它们纳入一个计算机模型里,”

这些研究的成果就是X 射线计算机断层扫描,也就是我们熟知的CT 技术。

时至今日,我们甚至可以吞服“摄像机胶囊”,即胶囊内镜,达到检查目的。这些胶囊会用无线传输的方式,将照片发送到体外的计算机上。而病人在服用这种胶囊后,胶囊会如正常食物一般,穿过消化道,最后被排出体外。

从能量的角度看,我们合并图像的目的就是要将信息熵降低,合并后图像的熵应该要比两张独立图像的信息熵之和要小。

在别的结构开始萎缩前,海马就已经开始萎缩了。我们可以用图像配准技术进行准确的测量。然后再用机器学习技术密切注意其他病理关联结构的大小变化。每个人的大脑在22岁以后都会萎缩,但是有些人大脑萎缩的情况与常人不同。他们正是痴呆症的高危人群。”

最新一代的平板计算机和手机其实就是装满传感器的强大计算机。

这些人之所以从事研究,并不是为了探求智能的本质,而是因为,他们想要开发出精巧的软件来解决实际生活中的复杂问题。

头两年,他们一边上学,一边做一些咨询工作。特里莱文回忆道:“一开始,他们为我工作,我给他们发工资。后来他们为自己工作,我还是要给他们发工资!后来他们就自己单干了。”1995年,研究小组的成员搬进了自己在伦敦的办公室。

“正所谓心有多远,人就能走多远,硅谷的故事离你并不遥远,”


Searchspace 取得了辉煌的成功,这家计算机软件企业也成为了其他行业的经营榜样。但在公司成立十周年之际,几名创始人重新评估了现状,一致认为目前公司在技术上已经足够成熟,是时候功成身退了。“2005年,我们把公司卖掉了,套现1.48亿美元,”金登说,“在我们的眼里,Searchspace 是一家通常意义上的高科技企业。在反洗钱和金融诈骗的监测领域,我们成为了绝对的领跑者。有的时候,我们甚至觉得自己有点独孤求败的意思。我们完全可以转战其他领域,让别人继续完成未竟的事业。”

本书的翻译过程历经坎坷,编辑自始至终给予了我最大的支持,也费了很大的心思,我想借此机会致以最诚挚的感谢。

posted @ 2022-06-20 08:54  zh89233  阅读(700)  评论(0编辑  收藏  举报