按:2018年,一个偶然的机会,我以审校者的身份,参与到蒋楠先生翻译的《计算机简史》的过程当中来,并在这个过程中获益良多。今天这本书终于上市了,这是我的推荐序。
我始终认为,有一些课程是计算机专业本科应当认真教,却很遗憾没有做好的,比如软件工程,再比如今天我要说的计算机简史。
如今,但凡学习一个新的知识领域,多半要从了解其历史开始。对我们普通人来说,知道了起源和由来,知道了“背后的故事”,理解起来才更加容易。但是回忆我们对计算机的学习,似乎全然不是这样。计算机似乎是从石头缝里蹦出来的,“正经”的教育直接从二进制开始的,因为计算机“就是”这样工作的。
我们很多人也听说过图灵、冯·诺伊曼、ENIAC、分析机等等名词,但羞愧的是,在很长的时间里,我都只有一些模糊的印象,也不知道它们之间的联系到底如何。总之,计算机科学不需要了解历史,身后无足轻重,前方充满未知,不善交流的技术狂人不经意之间就改变了世界。
但是,事实真的如此吗?
软件行业流传着一幅漫画,开发软件就像制造小轿车,不是一开始就有设计图,轮子、车身、车门、发动机按部就班安上去就可以的,大概先是独轮车,接着是自行车,然后是滑板车,之后是三轮自行车,继而是两轮摩托车…… 如此反复迭代,最后才得到成型的小轿车。这幅漫画讽刺的是开发新系统时“想当然”的做法,反映的是真实的探索过程。
其实,不只开发新系统是这样,计算机本身的发展也是这样。了解计算机发展的曲折过程,才能把各种关于计算机的知识归纳为有机的统一体,找到它们之间千丝万缕的联系,才能立体地了解这个行业。不信的话,且让我举几个例子。
第一个例子是差分机。
19世纪30年代,银行家查尔斯·巴贝奇先发明了差分机,用来计算数学用表,这样,复杂的计算只要查表就能完成。差分机获得了广泛的赞誉,但巴贝奇不满足,他希望机器不应当只用来算数,还应当有更广泛的用途。
于是,他把自己剩下的生命都投入到了分析机的制造当中。巴贝奇设计的分析机有几大突破:第一,它应当可以解决各种问题而不局限于计算;第二,应当有一般性的办法来描述解决问题的过程,而不是每个过程都有自己的语言;第三,它的计算和存储是分离的。
如今我们看到,第一点正是后来图灵的突破性贡献,所谓“通用机”,其“通用”正在于此;第二点中的“一般性办法”,就是如今大家熟悉的编程;第三点是极具前瞻性的,如今大家熟知的冯·诺伊曼结构里,计算器、控制器、存储器、输入输出是互相分离的部分。有意思的是,冯·诺伊曼在设计时深受生物学的影响,所以计算机的“内存”才叫memory,与生物体的“记忆”是同一个单词。
可是,从巴贝奇设计分析机到哈佛大学和IBM实现真正意义上的通用计算机,中间还有一百多年,为什么花了这么久呢?因为巴贝奇当时完全以齿轮、条杆的机械方式制造分析机,而分析机的制造工艺远远超出了当时机械加工的水平。一份设计当然可以很巧妙,但如果超前于当时的技术实现,多半只能遗憾停留在蓝图上。这个道理不只适用于巴贝奇,在如今的软件开发中仍然成立。
而且,因为分析机不成功,后人干脆停止了这种“通用机”的探索,转而采用模拟方式解决问题。比如有重大现实意义的潮汐计算,它不是通过数学和物理公式来完成,而是通过一系列线缆、滑轮、传动轴、齿轮,来从物理上微观模拟海上的重力变化,再绘制出水位的变化。对今天的科研人员来说这大概有点荒谬,但当时这办法的确解决了问题。这个故事再一次告诉我们,科学从来也不是直线前进的。
第二个例子是实时系统。
如今大家都习惯于计算机的“实时”反馈,点击马上就得到反应,运行就可以看到结果。但是在计算机诞生的很长时间里,它只要能足够快地计算预先设定的任务,正确给出结果即可。“实时”这种奢侈的特性,在强烈的需求诞生之前,是不会有资源去实现的。
“实时”的第一个强烈需求,来自美国海军的飞行模拟器。随着军用飞机速度的不断提升,机型的不断增加,传统的真机培训飞行员的做法已经日益过时,海军必须有成本足够低、效率足够高、效果足够好的办法来批量培训合格飞行员,这就是飞行模拟器。飞行模拟器要真正起作用,就必须实时对飞行员的操作给出反馈,传统的机械结构已经无能为力。
1945年,通过一个偶然的机会,负责研制飞行模拟器的麻省理工学院伺服机构实验室助理主管福里斯特知道了数字计算机。他迅速意识到,相比传统的圆盘、齿轮、电阻来模拟飞机的状态,数字计算机有无与伦比的优势,于是他力排众议改变项目计划,以数字计算机为基础研制飞行模拟器。
这种方案在理论上可行,但实现上还有困难,因为当时的计算机采用水银延迟线存储,每秒计算速度只有不到一万次,而飞行模拟器要求运算速度至少达到每秒十万次。关键时刻,福里斯特又做了一个重大决策,斥巨资投入当时前景尚不明朗的静电存储管。结果到后来,飞行模拟器反而成了次要目标,配备静电存储管的,性能强悍的“旋风”计算机才是最终结果。尽管海军对这一结果并不满意,但有价值的新技术总会在意想不到的领域找到落脚点。
1949年,苏联爆炸了第一颗原子弹,美国空军发现,如果要构建安全有效的防空网,必须要有足够强的计算能力,把各方面信息综合起来,并统一调度截击机、高射炮以及后来的防空导弹。
又是一个偶然的机会,防空工程委员会的主要委员瓦利教授知道了海军正在研制的“旋风”计算机,于是空军接力提供后续的资金,同时技术制造工作也从麻省理工逐渐转向IBM。最终诞生的“半自动地面防空系统(SAGE)”,其价值虽然因为洲际导弹的出现大打折扣,却催生了包含软件、硬件、通信在内的一整套生态,无数的民间承包商从中获得了宝贵的机会,最终在IT领域大展拳脚。
在SAGE开发中获得了足够多宝贵经验的IBM迅速发现,民用航空市场对实时计算的需求极其旺盛。当时民用航空市场正在井喷式增长,但订票服务仍然保持着相对原始的方式,许多人为了保险起见,不得不一次订两张票,起飞前再退掉一张,这反而又加重了订票系统的压力。依靠SAGE的经验,IBM斥巨资开发了SABRE系统,并于1964年首次投入使用。第二年,航空公司就因为客座率提高、客户服务的提升收回了成本。
从此,实时计算开始蔓延开来,在信用卡等等新的领域大显神威,结果,才有今天我们“想当然”的实时服务。
第三个例子来自IBM。
如今许多人提到IBM,想到的是蓝色巨人,想到的是它历史上制造的各种大型机。但是,IT行业的成功从来也不单纯是技术的成功,IBM显然深谙此道。
计算机的流行,很大程度上得益于它成为了通用的“办公机器”。而真正大规模生产的办公机器的历史并不长,19世纪出现的打字机,堪称最早的办公机器。在打字机刚诞生的日子里,市场上充斥着大大小小、各种品牌的打字机。最后,只有一家胜出,那就是雷明顿打字机公司。
雷明顿公司为什么能够胜出呢?依靠的并不是独树一帜的产品质量,也不是独步天下的专利技术,而是通过探索准确把握了三大特点:
第一,要有完善的产品,而且价格能让客户负担得起;
第二,有专门的销售机构负责销售,在各地设立销售代表的做法并无先例,所以一开始颇受行业排斥,雷明顿公司不得不依靠一己之力,在欧洲各大城市设立办事处;
第三,需要有专门的培训机构,保证有足够多的用户使用自己的产品,据统计,1900年美国已经有8.6万名女打字员,而1880年只有2000人。数量庞大的女打字员成了一股不可忽视的惯性,对雷明顿公司的市场地位是非常好的保障。
雷明顿公司探索出的这三点玩法,后续被计算机行业的公司完整继承下来。今天我们带着这种视角去看IBM就会知道,IBM的成功从来不单纯是技术的成功:在IBM如日中天的岁月,谁也没法忽略IBM庞大的销售团队;而PC的市场份额之所以远高于Mac,赢得了广大开发者支持正是关键因素之一。
遗憾的是,虽然在这个行业工作了十多年,所有这些精彩的故事,这些巧妙奇特的联系,都要等到如今读《计算机简史》才算懂得。到今天,我们的计算机教育在谈起历史的时候,仍然只强调技术的贡献,结果许多人印象里,计算机的世界就是“技术决定一切”。到工作之后,“技术至上”的思维惯性仍然存在,“技术至上”的傲慢不经意间就冒出来。
然而纵观计算机的历史,成功永远是充满了机遇巧合的复杂过程,是多种因素角力的结果,是多种考虑综合的权衡。技术从来不是唯一的决定性因素,所谓“(单凭)技术改变世界”,其实是玫瑰色的泡影。拥有了技术创新就斗志昂扬,希望横扫天下,最后碰得头破血流的例子,几乎随处可见。
没错,技术的伟大力量激励了无数人想要成功,想要改变世界。但是要想成功,想要改变世界,单凭技术好是绝对不够的,还必须尊重其它力量,顺应客观规律——所以我时常在想,如果我们早早在学校里能明白这样的道理,该是多好?
好在,现在补课,也不算晚。
From Life Sailor, post 《计算机简史》推荐序
家长应当和儿童,尤其是低龄儿童谈论“空气动力学”吗? 我的答案曾经是非常肯定的:不应当。不要说儿童,就是成年人也不见得理解这些抽象的概念,与儿童谈论这些名词,只会让人望而生畏。身为父母,我们应当做的是,以孩子能理解的、感兴趣的方式谈论相关的具体问题,但绝对不要提这些大词。 不过世界的奇妙就在于,父母对教育并没有绝对的权威,总是需要根据实际情况来修正自己的观点。在“空气动力学”的问题上,我就吃到了教训。 那是一个下午,家里小朋友在iPad上看完他最喜欢的Blippi(这个节目我之前介绍过,对80后父母来说,Blippi可以理解为“带你见识各种新鲜玩意的董浩叔叔”),忽然抬起头来问我:“爸爸,你知道什么是aerodynamics吗?” “什么?你问我知不知道什么是aerodynamics?”我的下巴都要掉下来了。“空气动力学”这种词还是上中学时,身为军迷的我们在《航空知识》上知道的。再往后英语好一些,能看原版科普视频了,才知道“空气动力学”的原文就是aerodynamics。可是,我家这个还没上小学的家伙,竟然就能真诚地瞪大眼睛,一本正经地问我“知不知道什么是aerodynamics”。 (more…)
我本来是不应该认识孟老师的。 2001年,我在寝室夜谈里第一次听到孟老师的名字。当时有同学说“公共选修课的《法学概论》讲得真好,那个老师叫孟繁超”,开始我不怎么在意,慢慢才发现这么说的人还不少。那个年月网上的资料正丰富,出版管制也不那么严格,刚进大学不久的我正自由自在地看得过瘾,心想“大学里的法学概论讲再好,能讲些什么,还不是教科书上老一套”,所以这种课,不听也罢。 但生活就在这么奇妙。那年冬天,有天中午我吃过饭正准备午睡,忽然有人敲门问“计算机系有位叫余晟的同学在这里吗?” 大中午的谁会来找我?我正好奇这个问题,门一推开就有同学喊“孟老师,孟老师来了”。 那是我第一次见到孟老师,中年人,国字脸,身材高大,打扮很精神,披在身后的深色大衣让我一下子想起电影里的斗篷。他笑眯眯地说“你是余晟?听同学说你搞电脑很厉害,我家的电脑坏了,想请你去看看。” (more…)
中国人大概都对历史有一些特别的偏好。对我们普通人来说,历史首先是文化的象征,一个人“懂历史”,基本等于这个人“有文化”;历史也是民族自豪感的来源,哪怕考古上仍然存在争议,但是“五千年文明”的说法是普通人都耳熟能详的。 不过等我长大之后才发现,这种偏好大概还有更深层次的原因,那就是历史看起来有种道德的意味,因为我们从小就熟悉“以史为鉴”的智慧,也熟悉各种“历史的选择”:每当我们对现实感到失望、困惑的时候,我们经常去历史——而不是先贤的智慧中——中寻找解答。找到曾经发生的类似的故事,就可以预言未来的结局。 于是乎,失望也好、困惑也罢,总归会有光明的未来,历史总会给我们支撑的信念。 我曾经很相信,熟谙历史是种智慧,而且是深层次的智慧。但是看得越多、经历得越多,我就越觉得,这很难称之为“智慧”。 为什么? (more…)
“无人出租车要来了”。以百度“萝卜快跑”为代表的无人出租车,眼看就要在国内多个城市成规模运营。 熟悉IT的人都知道,IT的独特优势就在于“大规模扩展时边际成本极低”。在软件时代,微软开发的Windows,多卖一份的成本只是多刻录一张光盘而已。在无人驾驶时代,从10辆车到10万辆车的成本,也遵循同样的规律。换句话说,一旦模式“跑通”了,就可以迅速大规模铺开。无人出租车的大规模应用,也是“指日可待”了。 只不过,新技术这一次似乎没有那么激动人心,反而引起了很多争议——无人驾驶出租车大规模推广,会不会影响广大出租车、网约车车主的收入甚至生计?如果是,这样的技术进步,真的是我们所需要、所期待的吗?对于这个问题,不同的人有相差迥异的答案。 按照我的观察,许多人对此是相当乐观的。理由在于,“技术的每一次飞跃发展,虽然有阵痛,最终都创造了更多的新岗位”。既如此,无人出租车短期“看似”抢了许多人的饭碗,但也只是短期的“阵痛”而已。看看历史,纺织机的发明,蒸汽机的改良,汽车的诞生,无不证明了“阵痛说”的正确性。 坦白说,这种观点我是怀疑的。 (more…)
因为小朋友放暑假,近期带小朋友回国待了几个礼拜。最深的感受就是标题所说的:松弛一点,愉快一点。 我第一次突出意识到这点,是在上海下飞机乘地铁。当时我们乘的直梯就要关门,远远看见有个年轻小伙子跑过来,我连忙按住开门按钮,并招呼他”别着急,慢慢来“,等他进了轿厢才关门。本来我以为大家起码会打个招呼,露个笑脸,因为我已经习惯如此,但完全出乎我意料的是,他进来之后对我们完全视若不见,自顾自掏出手机,盯着看得入迷。 我继而发现,不管是在电梯里,站台上,还是车厢里,虽然四下里都是广播”请扶好站稳,抓好扶手,不要看手机“,但是似乎人人都盯着自己的手机。年轻人在打手机游戏,年纪大一点的在滑各种小视频,还有不少人在聊天软件里打字如飞……对着屏幕的表情都很生动,可是一旦抬起头来,似乎马上又换了个人。 后来又有一次,我乘地铁的时候,因为比较拥挤,一个小伙子倒退时踩了我一脚,他大概意识到了,很快把脚挪开,脸上闪过一丝不安,马上又恢复正常,我也没有计较。不幸的是,过了十来分钟,他又踩了我一脚,同样是先有一点不安,很快又恢复正常。 这次我忍不了了,于是我开口告诉他:“小伙子,你已经踩了我两脚了。” (more…)
前几天,国内朋友发来一条消息,原来是乌克兰F-16坠落,飞行员丧生的新闻。我本来以为他要讨论此事的真假和原委,他真正的问题却完全出乎我的意料: 新闻里说,飞行员叫阿列克谢·“月鱼”·梅斯,对应原文是Alexei “Moonfish” Mes,为什么会有人把“月鱼”写在自己的名字里,而且还打引号。 之前看新闻,乌克兰还有一个著名的飞行员叫安德烈·“果汁”·皮尔希科夫(Andrii “Juice” Pishchykov),怎么“果汁”也是正式的名字? 未必Moonfish和Juice之类,还有什么特别的含义吗?…… 这堆问题看的我有点想笑,因为自己以前也很苦恼外国人的名字,只有在国外长期生活,才逐渐搞清楚这其中的名堂。所以,除了解答朋友的问题,我也把自己的解释写下来,搞清楚两个最不容易理解的点,就不会对外国人名有那么多问题了。 (more…)