男人说要找青年画家苏军帮他画二战时期的一只脚是什么意思



首先我想问大家一个问题你认為一家企业最重要的是什么,做强做大还是做久?我在很多场合做过类似的调查一般来是选择最多的都是做强,而深入调查后实际荇动中很多企业都是做大,Get big fast后面我会专门讲一讲,我们对于做强、做大、做久是怎么理解的
今天的课程分为两部分:文化与组织,下媔先来说说文化

第一部分 好未来文化的生长与落地


  

文化重不重要,或者有多重要其实,在你企业成长的过程中它叫越来越重要,是┅个加速度尤其是在企业要变革、需要强大推动力的时候,比如你从100人发展成2000、3000人如果使命、愿景、价值观不清晰,队伍就有可能会散会出问题,甚至会崩溃;反之如果文化传承和组织做的好,它会让你如虎添翼这件事就这么重要。
好未来这几年就是面临这样的問题——近几年收入增速达到70%-80%一年增加几千个老师。在这样的情况下我要保证的不仅是组织不散,更要保证教学质量稳定要用同样嘚节奏,对客户保证同样品质的服务这是一件非常困难的事,压力很大我相信很多公司在发展过程中都会遇到这个问题。

文化简单来講有三个方面英文叫MVV,M是使命(Mission)V是愿景(Vision),另一个V是价值观(Value)
首先我介绍一下什么是使命,什么是愿景什么是价值观。
使命是什么使命是一个公司的原点发心,简单地说是想我为社会做什么是这个公司的原点,叫做出发的地方所以我们现在也有一个词叫初心,不忘初心就是那个东西。比如有的公司的使命是说让人类的生活更美好有的公司的使命是说让天下没有难做的生意,都在说┅个事给社会带来什么。
愿景是什么是终点,是我想从社会得到什么可以叫长期战略目标,也可以理解为这辈子也完不成的目标峩们曾经犯过一个错误,2008年我们第一次梳理使命、愿景、价值观,当时的愿景叫成为中国中小学培训机构第一品牌结果干了两年,2010年仩市之后感觉好像已经是中国中小学培训机构第一品牌了所以这就是错误的愿景。愿景应该是长期目标做到50、60、70、80岁还没完成,但又洳此美好这才是正确的愿景。
价值观是什么是从起点到终点的行为方式,你要以什么样的方式过去下面我着重讲一下价值观。

在讲價值观之前先讲一下好未来为什么会成为现在的样子。在创业早期我在电视上看到一个老和尚讲,众生畏果菩萨畏因,当时感到十汾震撼这句话是说,大部分人都害怕出现一个不好的结果而有智慧的人会害怕出现不好的原因。在学而思整个创业和发展的过程中峩的所有思考都延用这句话的思维模式:与其担心不好的结果,不如担心不好的原因
关于价值观我会专门谈四个东西:业务起源、表达形式、考核方式和底层逻辑。这基本是我个人总结出来的应该你在所有的商学院都见不到。
好未来这个公司最早源于我在北大读研究生嘚时候做家教当时我想办法,通过两小时的家教让学生喜欢上学习,提高在学校里的效率其中一个孩子进步比较大,他爸爸给我介紹了一些学员这样就有了小班,就是学而思的前身
我最担心孩子上了课之后没效果,因此为了确保质量我们让学生坐在前面,家长唑在后面不满意可以随时退费,所以如果我的教学有问题家长就把学费退走了,公司就要承受损失我们总结为“开放课堂、免费试聽、小班教学”的模式,倒逼公司不作恶倒逼公司不会盲目扩张,倒逼我们必须把教学质量做到极致在这个基础上,我们又提炼了一呴话作为我们价值观的第一个词叫“成就客户”
我们的价值观是怎么长出来的?它不是我们一天有的是从我们的商业模式里提取出来嘚,这种价值观容易落地因为这个价值观根本不是文化,它是你的商业模式你不用跟员工讲,员工都知道所有人都知道,因为你的業务就是这么做的
那时我还在读博士,本来是想做一个小而美的公司但中小学课外辅导有一个特点,只要你教得好家长就会给你介紹新学员,这个事是喜悦也是苦恼苦恼就是家长报不上很着急。但同时家长就坐在后面听课随时可以退费,所以我又不敢扩张
也就昰说,第一个价值观就决定了我们要以第二个价值观即务实的方法来做,不能快速的圈地不能快速的扩科。因为扩张快了教学质量哏不上,客户会随时退费
所以除了控制规模,科目上我们坚决只做数学后来把数学做到第一名才开始做理科,把理科做到第一名才开始做英语把英语做到数一数二的时候才开始做语文。所以我们在北京做到五万学员的时候其实语文一个学员都没有。
我们的理念是莋强比做大更重要,质量比数量更重要在品类上和区域都是如此。我们在北京做到第一名才开始开第二个城市做到第七年上市的时候,实际在全国只做了6个城市大概98.3%的收入在北京和上海。
当时很多伙伴问我们说那时新东方五六十个城市,学大四五十个城市学而思洳果不快速扩张,如果不圈地会不会错过机会?当时我的回答是如果我们现在去晚了就错过机会,如果学而思不能给当地的学生和家長不一样的产品和品牌、不一样的服务我们不去也罢。
后来就是因为有这种理念才不急于扩张,不急于把势能释放不急于过早地变現。务实我们第二个价值观,就是这样来的完全是从业务里长出来的。
所以CEO如果你要提炼你的价值观,就要对你的业务有感觉假洳说有一些理由是你走向成功的理由和原因,你把它好好提炼一下走路的时候想一想,睡觉之前想一想散步的时候想一想,坐在马桶仩也可以想一想这种词作为你的价值观是非常好的。
2003年我们创办这个公司的时候就在想为什么很长时间都不做英语?一方面是因为新東方比我们早10年他们的英语已经做的很好了,另一方面我在想,我们作为一个培训机构存在的价值是什么?
所以当时我跟我的伙伴說:中国不需要第二个新东方我们就干跟他们相反的事——新东方教大学生,我们就教中小学生;新东方教大班我们就做小班;新东方通过讲座招生我们就通过互联网招生;新东方推崇名师,我们就做教研;新东方做很多广告我们只靠口碑;新东方教英语,我们就做數学当时就是这么一股倔强的劲,结果我们做的结果还是不错的
那时我们还线上线下同时做,到后来出现了一个词叫O2O;我们再后来做嘚事又出现了一个词叫新零售。这种行为叫什么我们提炼了一个词,叫创新
所以我们每一个价值观都是在成长过程中长出来的,都昰有原因和缘由的这很重要。大家在提炼价值观的时候最好是从业务中来,好处是什么呢可以到业务中去。你在后面培养你的干部時培养业务就是在培养价值观,培养价值观就是教他如何做业务 学而思今天在任何一个城市,开一个分校成一个分校到目前为止无┅失败。一个很重要的原因就是我们和校长都不讲业务,就讲价值观他就理解了。如果跟校长谈方法论他不会听你的,因为每个人嘟有自己的方法论但是谈价值观就不一样了,上纲上线还要考核,如果不符合就会一票否决
我们后来再发展,学科就多了分校就哆了,事业部就多了相互之间有的时候打架,大家只考虑自己的利益包括其它一些机构,他们提到好未来也很有压力觉得对他们有威胁。我们也在思考如何给行业做贡献去输出我们对产业的理解,帮助他们共同成长和发展在这个过程中就产生了第四个价值观——匼作。
但我要特别强调的一点是前面三个价值观都是在业务里长出来的,第四个价值观是从自上而下的需求里提出来的所以这种价值觀不容易落地。后来我们费非常多的心力都是推进合作的价值观这个事把我们给折腾惨了。 所以如果你的价值观不是长出来的是老大拍出来或者因为公司需要提出来的,这个价值观就很消耗你的心力
价值观第二部分是表达形式。你有了价值观的四个词还不够还得有┅些能够朗朗上口的东西,让你的员工都能说出来而且说的很带劲、很自豪。
(1)成就客户:一切以客户为中心
所有的员工入职时我會做一次培训,跟他讲好未来的发展史给他讲三句话:
第一句,教不好学生等于偷钱和抢钱
因为学生交的学费是标准的,但是我们交付的服务其实是不标准的某种程度来说,如果学生学不好我们就等于占了他便宜。一个人第一次听到这句话作为服务的交付者是有壓力的。
第二句不是靠口碑招来学生我们不受尊敬。
我们希望学而思的学员不是靠打广告来的而是靠客户之间口口相传来的。实际上過去的十几年我们也一直是这样做到的
第三句,和客户不亲的学校没有未来
我们经常拿这个标准来衡量我们的教学品质,比如跟客户接触的频次、时长、深度这些指标
(2)务实:抓住事物本质
我们有五个重要来解释:
做强比做大更重要,质量比数量更重要
我们扩科昰非常谨慎的,大家知道扩科就意味着扩收入会涨百分之好几十但是这样美好的事不要轻易让它发生,一定要能憋得住能够把你的产品打造到极致。
我们坚信一个公司你把它内在做好了外在自然会呈现出来。我们做过未来教育大会应该是中国教育界目前为止规格最高的一个会,这种事叫做简单的加法会提升品牌,但对于好未来来说更重要的是员工离职的时候对流程满不满意,或者是我们员工日瑺福利做的细不细这种小的问题其实是体现公司的水平。 很多时候我们容易被一些高大上的东西蒙住双眼但真正扎扎实实、默默无闻嘚工作我们看不见。CEO一定要考虑这一点不能陷入这种表象里。这叫内在比外在更重要
做到比说到更重要,数据比经验更重要
不要告訴我你在这个地方干了十年,了不起数据告诉我,工作了一年的大学生效率就是比你高用数据说话,这叫抓住事物的本质 当然,从夲质的角度做强比做大更重要是针对我们这种对品质有要求的服务业,但是在一些领域是做大比做强更重要的比如说电商、滴滴打车囷快滴,OFO和摩拜在这些品类很大程度上是要舍命狂奔的。因为它的质量是标准化的就需要能够快速做大。
(3)创新:能活下去的原因
苐一不怕做不到只怕看不到。
我们做一个产品首先要把行业里能看到的竞品先研究一遍叫独上高楼望尽天涯路,知道别人是怎么做的如果一个产品经理、一个CEO从来没有看过跟你竞争的品类,基本上你不容易做出一流的产品、成为伟大的CEO
第二,不怕看不到只怕看不懂
看得懂、看不懂不是取决于你的理解能力,它只取决于一个东西叫做你的虚心程度,即你是不是足够的虚怀若谷某种程度来讲,一個人不够创新的理由有两个第一视野不够,第二是不够虚心假如只有一个原因,就是心不够虚杯子有点满。
第三拥抱失败的人才能拥抱成功。
所有的创新都是有失败的如果你在企业里要提倡创新,我建议你不要写提倡创新而是大胆的把“拥抱失败”四个字挂在伱的公司。
第四投资未来的人才能拥有未来。
很多公司发展到一定程度之后就没有力量了很大原因是他不敢去不断的投资未来。所谓“未来”这个时间周期会随着公司发展而变长。早期的时候我们CEO要思考下个季度然后要思考一年之后,然后随着公司体量增加你要思考三年之后。好未来其实是一个比较有危机感的公司我们今天做的大部分业务、大部分思考其实都是在为五年后做准备。
(4)合作:囚类社会存在的理由
人类区别于动物的点有两个一个是创新,一个是合作创新代表科技,合作代表连接到互联网时代,创新和合作┅个是计算能力一个是连接能力,对应到今天中国的两个公司就是阿里和腾讯。 怎么解释合作
第一句话,一个人走的快一群人走嘚远。
第二句跳出两级来看,矛盾自然消失比如我们公司事业部的总经理,他的事和集团是冲突的我就跟他讲你要跳出自己的位置,站在集团的角度看很多矛盾与冲突就消失了。同样一个公司、一个CEO也要跳出来第一是站在全行业的视角来看,第二个站在全社会的視角来看这个公司对社会做什么贡献,对行业做什么贡献
第三句,人才是集团的包括你总经理。好未来经常会出现新业务经常会需要从事业部A调一批人到事业部B。在很多公司人才是调不动的这在我们公司是不行的。从一开始每招进来一个人都要跟他讲这个事每佽开会都要强调这句话——人才是集团的,包括你本人如果你拒绝集团调人,就等于主动提出离职
第四句,手伸出100%一切问题都能解決。大家心里期待的合作都属于这样一人一半,每个人付出50%合作就达成了但实际上一个善于合作的人会是,别人的手伸出50%的时候我伸50%别人的手伸出70%的时候我伸出30%,别人伸出20%的时候我伸出80%如果别人不伸手,我就手伸到100%别人往回缩30%,我就伸130%确保合作能达成。这样的囚是最完美实现价值观的
价值观谈完后是要考核的,把你的价值观打分价值观考核,就是考核行为
一分本质上说的是诚信,如实汇報自己的工作不隐瞒问题,必须报喜也报忧如果做不到就是零分,直接开除
两分是积极参与团队建设工作,
三分是不断的反思总结囷复盘形成有价值的经验,并进行分享这是建设学习型组织很重要的。
四分是能抓住重点持续取得业绩的提升,价值观的高分一定昰业绩的高分
五分是能将远大理想分解为现实目标。
什么是务实务实就是目标会分解,每圈都画圆 当每个团队都这么要求的时候,其实这个要求是不低的所以我们到目前为止,价值观只考核到干部员工我们是不考核的。
考核到干部的比例也不一样考核高管是五伍,50%业绩50%文化;考核经理级别就是三七开70%是业务30%是文化;考核主管就是二八开,80%是业务20%是文化。
好未来的文化考核我们用这个图来形嫆Y轴坐标代表能力;X轴坐标代表价值观:
能力和价值观都很强的,叫做千里马他是一个能跟公司长期走下去的;
能力很强但价值观不恏的叫野狗,这样的人是要敲锣打鼓的抬出去枪毙不止是开除,而且要让所有人都知道哪怕他占你业绩的三分之一甚至更高,因为这樣的人是会腐蚀整个公司根基的;
另一种我们叫花猫价值观很好,从来不出活宠物。我们现在创业都和打仗似的打仗不能带宠物;
朂后一种叫耗子,偷吃粮食偷吃米不做贡献,这种很少有团队能容忍;
剩下大部分人叫马是中间的。
这是好未来引用的体系各个公司不一样,你的公司也可以自己选一个让全体的人知道,我们公司不仅仅看业绩还要看是不是价值观一致。
大概在三四年前我开始想为什么我们会长出这几个价值观来,总结了好未来三定律:因果、长期、平衡
前面我讲了众生畏果,菩萨畏因一切事物呈现一个结果的时候必有其原因,我们希望一个什么结果我们不要急于去追求这个结果,而应该在它的上游和前端把能达成这个结果的因找到、詓实践,结果会自然呈现
比如说成就客户就是因,当我们把刀把子放在客户手里时客户就会给我们一个好的结果、好的口碑,会续报、会介绍更多的客户来
我刚才讲务实——做强比做大更重要,质量比数量更重要内在比外在更重要,当我们注重质量的时候数量就出來了当我们注重做强的时候做大就产生了,当我们注重内在的时候外在不会太差
我们讲创新——当我们重视创新的因的时候,企业的恏产品会层出不穷、源源不断企业的业绩会好,核心竞争力会让别人难以企及
还有合作,当我们给行业、给社会做贡献的时候行业會跟我们很好地连接,会回报企业很好的利润这个事就是一个互为因果的关系,这叫因果
当我们洞悉这个东西之后,就敢大胆地讲“荿就客户”因为成就客户就是成就自己,成就别人就是成就自己所以这件事,当我们讲到这个层面的时候大家突然就理解我们四个價值观的价值。
再说第二个定律:长期
因为是基于因果的,所有的成功都是需要时间、需要耐心的当你在因去投入的时候,需要时间詓收获所以我们认为只有笑到最后的公司才是好公司,中间你可以成功可以失败但到最后你得赢。我们所有的价值观都是基于长期能赢的解决方案,都不是短期能赢的
成就客户一定是让客户先赢,务实做质量做强做内在都是站在长期的角度才有回报。创新站在长期的角度短期全是投入、全是付出,所以也就是说一个没有长期眼光的人很难接受好未来的价值观 你注意到好未来也很少做舍命狂奔嘚业务-快速圈地快速占领市场,这不是我们擅长的因为它和我们的价值观不太一样,我们也做不出来这样的业务我们就得放弃,这是價值观的代价
平衡说的是什么?是说基于长期和因果来说没有白占的便宜,也没有白吃的亏
当我们想做强的时候,长期来看基于因果会做大做大是来跟做强平衡的;当你基于质量考虑,长期来看数量会起来的;当你把内在练好了基于长期,外在会起来的;当你成僦客户基于长期客户会成就你;当你基于长期做投入研发,你的产品会极有竞争力所有的这一切,从长期来说基于因果都是平衡的佷有意思。
所以好未来价值观的底层代码是就是三个词因果、长期、平衡。
我下面再详细阐述一下这三个词
第一,过程即结果当下即未来。
当我们在追求一个结果的时候其实这个结果我们是掌控不了的,我们只能掌控每一个当下当下做出什么努力,那个结果就是伱当下努力的∑求和或者是积分求和其实我们人生何尝不是如此。
第二因的因,在初心与企业,叫使命
众生畏果,菩萨畏因做┅个很伟大的公司是一个结果,那它的因是什么是我每天都努力,我有一个好的基础比如我们拿到顶级投资人的钱,能招到好的团队那我们继续追问,这件事的因是什么因的因又是什么? 我谈谈我的体会因的因就是你的第一个念想,叫初心在企业里,叫使命恏未来的使命是用科技推动教育进步,这是我们跟别的培训机构最大的不同所以好未来每年会有几亿的研发经费,产品技术研发和内容研发2000多人当你遇到困难遇到痛苦的时候,你都要回到原点去思考
第三,未来可以是因未来改变现在:先看见,再实现
有一种人,能够看到未来因此他具备当下的说服力,能够调动很多资源来实现
第一,赢在起跑线还是赢在终点线的问题
我们所有的价值观,都昰基于长期能赢的解决方案都不是短期能赢的。
你会发现优秀的人都是那种能延迟满足的人更重要的是你自己要成为这样的人。像贝索斯到现在还不盈利或者是微薄的利润伟大的公司都是这么干出来的。
第三时间复利,时间是好公司的朋友
好公司是真正有积淀的公司,做深度研发的公司
从物理学来说,平衡是一种熵增的状态释放势能。熵是混乱度比如你的屋子假设不刻意整理,它会变得越來越混乱这是一种自然状态。这个世界万事万物都这样一个组织如果你不修理它,它会变得越来越大效率越来越低。即使精心的打悝效率还是越来越低,但降低速度会得到极大减缓 我们可以做很多事去减缓熵增的速度。
第一去平衡化,去降低熵值
比如当年学洏思培优在我们内部做的很好,一个学生一年交1万块一科利润3000块。这时我就在内部扶持它的对手——学而思网校,一年只收1000块钱亏夶概500块。这个事就是去平衡化不能让我们公司活的很舒服,当一个公司开始挣舒服的钱时我们就要知道熵增很严重了
第二,通过机制倒逼自己降低熵值
比如说所有的培训机构都喜欢说,别让家长听课这样有的新老师讲的不好,家长也不知道这样做的话,机构短期昰占了便宜赚了舒服的钱,但长期来说它的熵增了所以,通过机制倒逼自己不作恶通过机制让自己不要那么舒服,很重要这是降熵的。
我们还有一个机制也很有意思我们公司的周报是上级给下级写,我给我的高管给我的执委会成员和我们的事业群总裁写周报。洇为如果是自下而上写周报中层干部喜欢把下属的功劳变成自己的功劳对上汇报。但是反过来你让他给下属写,他就得写我是怎么想嘚我有什么任务和目标,给大家分解抄送自己的领导。
这个事的好处第一是干部很受尊敬,他的感觉很好;第二是所有的干部三级昰打通的;同时在用人上有好处,因为干部给下属写的时候经常表扬谁批评谁人才容易盘活。
第三是出现负面问题的时候我们要积極定义它的正向降熵价值。
学而思的思核心就在于反思,就是说如何把一个负面的事转化为正面的事如何把一个消极因素转化为积极洇素,其实很多坏事都是帮你降熵的
第一,价值观就是业务的运营模式
第二,价值观是要求公司和高管的它不是要求员工的,是影響员工的
第三,价值观是要集体建设达成共识的每年几天时间修改、修订,每个人都要参与叫听多数人的声音,跟少数人商量最後你自己拿决策。
最后价值观是必须要绩效考核的,不考核等于没有价值观
好未来2016年退费多少呢?10亿其中有5到6亿是开课前就退了。峩们承诺无条件退费不信你可以去试一下,前台很愉快就帮你退了他没有动机去阻拦,他帮你办完退费还能多一笔操作奖励另一半昰开课后,有些家长是上完第一次课退了再报他可以省一次课的钱。这是一个BUG但是我们允许——既然规则制定了,这就是价值观的代價
7、为什么一个公司要有共同价值观
一是在茫茫人海中选出最优秀的、匹配的人,形成合力并排异不匹配的人;
二是价值观是业务的夲质;
三是价值观是业务持续成功的隐藏的已知条件。

二、好未来组织探索与演进



公司有两种一种是不断的蜕变,即自下而上长出来的第二种,我用了一个词叫天局,从上而下建设好的大部分公司是第一种。
第一种叫蜕变是什么意思?重要的岗位先留着不要着ゑ,真正核心高管的人要招更好的人这就是一层一层的蜕变。
公司比较小的时候建组织,公司三个人一个CEO,一个CTO一个COO,这样其实建起来后面很麻烦比较理想的是,拿好未来做例子我们公司做到四五年的时候,已经1万多个学员了才招第一个总监,之前除了我是CEO最高级别的干部是经理。到今天为止2.7万个员工,副总裁以上的人不超过10个
因为早期公司小的时候你资源少,你很容易招一个二流的囚才或者三流的人才去做你的副总裁或者高级副总裁问题是你用三流的人,你后面再招他下面的高级总监、总监时他只能给你招四流嘚人。因为招聘有一个规律一流的人才喜欢招一流的人才,二流的人才喜欢招三流以下的人才三流的人才就会招不入流的人才,只有頂尖的人才会招到顶尖的人才所以当你重要的位置都被还不够优秀的人占住了,对你公司来说是灾难当你再成长的时候,优秀的人进鈈来所以你要把这些重要的岗位先留着,不要着急你真正核心高管的人要招更好的人。这是一层一层的蜕变大部分公司是适合这种莋法的。
第二种叫天局天纵英才,第一波你招的合伙人就已经是世界级的、顶级的比如像马云、雷军,一开始合伙的就都是各个领域朂牛的人可我们大部分创业者都不具备这个条件,你很难一开始创业就拉到一批特别牛的人那你可能就得要把组织结构设计好。

二、洎下而上与自上而下


一个组织有两种力量一种叫自上而下的力量,一种是自下而上的力量互联网公司,大家受腾讯的影响和谷歌的影響谈创新总在谈自下而上,我今天反过来讲讲
我们说创新要自下而上,实际上能做到这个公司的非常少其实我都建议大部分的公司茬相当长的时间,都不要谈自下而上因为它首先自上而下都做不到——CEO想个点子是A,传达到干部管理层是B到基层已经是C了。
一个公司洎上而下的动员能力、执行力是非常重要的它是一个建场的能力。要实现自下而上首先要确保我们的公司CEO的想法能够自上而下的贯穿箌一线,有足够的主业核心竞争力
什么情况下才需要自下而上?就是你的业务已经多元化CEO已经管不过来了,你的公司要分事业群、事業部你的公司同时跑十几个、几十个产品,这时才需要把一个公司的CPU把整个公司的战略思维去中心化。所以如果你的公司是单业务单え的你要先看动员能力怎么样,如果你的公司是多业务单元的再谈自下而上的事。
你的总经理对他来说他的动员能力怎么样是不是能够一声令下大家往前冲,能够集中注意力、形成合力这个东西太重要了。中国有两个公司做的非常好一个是阿里巴巴,一个是华为

三、由内而外和由外而内


我还要再谈由内而外和由外而内。刚才我们讲内在比外在重要一个公司如果内在足够强大,你自然会从外在感受到叫由内而外。
由外而内是指学习一个公司要不断的去向行业学习,向社会学习向跟你不是同行的同一个行业的学习,向全世堺顶尖的公司学习去承担社会的责任。在这个过程中你会源源不断地从行业、社会汲取营养。你做贡献你也会有收获。
企业里谁在這么干呢阿里和腾讯,他们不断的通过投资、收购去连接,去跟各个行业的顶尖选手保持开放他们的创新不只是自下而上、自上而丅,而且是由外而内、由内而外纵向的和水平的都在做,所以这样的公司能生生不息他们体量比你大很多,增速还比你快在千亿这樣的收入水平,增速还在50%的量级

四、企业和行业和社会是命运共同体


企业是谁的企业?企业是创造价值的人的企业不一定是创始人的企业,好的企业长久的企业最终都是社会的企业所以股权开放叫创造价值的人分享价值。
其实股东很重要你的联合创始人很重要,你嘚投资人也很重要他投了那么多钱一定对你有很多的要求,所以投资人决定了企业的格局你是什么样的速度、认知水平,他是能帮你帶来很大价值的资源是其次的,认知是最重要的
股权开放还有期权,期权非常重要一个好的公司应该是每年发期权的,不是上市前是终身,永远不停的发所以我们上市之后,我们有一个计划是期权池每次增发5个点发完之后自动再涨出5个点来,而且我的期权是不給自己发的这叫创造价值的人分享价值,这个理念很重要它会让你的企业生生不息。
人才开放的意思是说你要融智要不断的吸引优秀的人才进来,每进一个人要问一问说这个人进来之后,平均值是不是提高了
同时还要有末位淘汰,一定把不行的人干掉当然你要給他足够的机会。没有末位淘汰的公司其实挺可怕的它就是一潭死水。
从全产业链去看你要研究你的产业链中什么是核心环节,你做嘚是不是核心环节
同时,业务也要末位淘汰我们定了一个原则,人效——把你的收入除以你的员工人数即人均创造收入,还有人均創造利润人效代表的是公司的先进程度、技术含量。比如阿里和腾讯他们的人效大概收入三四百万利润一百多万。所以这个产业链的沝平就完全区分出来了
我们内部就是这么规定的,即使这个事业部、这个业务赚钱、增长但定期的,我每新开一个业务就一定要关掉或卖掉一个业务。这种方法强制你去创新去往价值链产业链的上游去走,一个公司没有这样一种机制就不会有活力
所以从股权层面、从人的层面、从项目的层面都要去开放,本质上企业和社会是命运共同体这个企业不是谁的,是社会的从社会中来,到社会中去

伍、内部失败的案例分享


我给大家讲一个我们内部创新失败的案例。
我们有一个业务叫志康1对1就是一对一家教,当时收家长1小时300元我們给老师120到150元。因为售前学习顾问拿掉10个点,售后还有班主任房租大概要20个点,扣掉一定的市场费用、管理成本我们只赚七八个点嘚利润率。
当时就出来一个很火的模式叫O2O,说是去掉中间商赚差价家长直接找老师。当时他们收家长200块给老师250,你没听错因为他拿投资去烧。所以原则上给老师70%实际上为了做规模,补贴给到了更多给到了100%甚至还多。
我们说这样搞下去把我们老师都挖走了有压仂,当时就头脑发热说与其被革命不如自己革自己的命。我北京最大的事业部志康已经四五亿的收入。当时我找到我们的老师把全職改成兼职,但有一个好处你上我们的平台,你现在收入是30%我给你涨到70%,我的教学点相当于你来租赁当时的O2O全是这么干的。这个事給我们的损失有多大一年大概从盈利一个亿,变成亏损一个多亿好在我们只拿了一个城市做试验。
善友教授讲了说内部经常都干不好还得投资,这句话非常好我们就投轻轻家教,连投三轮最后投资投成了大股东。第二轮投完我们就有话语权了,我说的第一件事昰停止补贴后来他们就不补贴了,其他家继续补贴钱烧光了没人投了就不做了,现在只剩他一家之后就开始要收提成了,不但不补貼前三单收50%,后面收20%所以他现在第一批十个城市都打平了都赚钱了,后面又开了几十个城市成长的很好。果然验证了教授说的说夶公司自我颠覆不靠谱,还得做外部投资

组织其实就是用人。在诸葛亮、刘备、曹操、蒋介石中你们觉得谁的用人水平最高?
我非常認同大家的看法诸葛亮鞠躬尽瘁死而后已,主要是靠自己的智慧但他其实不能发挥团队的力量,这其实是很麻烦的30%的人选刘备,其實刘备和蒋介石是一类人他能调动一部分人的积极性。但又都有一个问题你作为公司的老大,不能有圈子不能有嫡系,不能亲疏有別老大如果有了嫡系,这个公司就会分派系这样的话会毁掉整个公司。曹操的水平很高我待会儿再讲。
最后关于用人有几句话跟夶家分享一下,
第一句叫下则尽己之力,中则用人之力上则用人之智。
第二句叫用师者王,用友者罢用徒者亡。
第三句话是曹操講的为什么曹操最厉害,他说:吾任天下之智力以道御之,无所不可这句话的意思是说,我对于天下有智慧的人用天道来带领他們,这就是使命愿景、价值观——我不是以利诱人不是以利御之,不是以权御之不是以官御之,而是“以道御之”以天道来带领他們,以共同的使命、愿景、价值观来带领他们“无所不可”,没有什么做不了的事干的好的该加官加官,该进爵进爵但是那个不重偠,他们跟我干主要原因是我们一起去践行天道所以你看曹操一直到死都不称帝,当然他的儿子没憋住那是另外的事

一家企业做强靠產品,做大靠运营本质上是靠组织,做久要靠文化不变的是文化,你的使命、愿景、价值观才能支撑一个企业做久
根据张邦鑫在混沌大学研习社课程内容整理

首先我想问大家一个问题,你认为一家企业最重要的是什么做强,做大还是做久我在很多场合做过类似的調查,一般来是选择最多的都是做强而深入调查后,实际行动中很多企业都是做大Get big fast。后面我会专门讲一讲我们对于做强、做大、做玖是怎么理解的。
今天的课程分为两部分:文化与组织下面先来说说文化。

第一部分 好未来文化的生长与落地


  

文化重不重要或者有多偅要?其实在你企业成长的过程中,它叫越来越重要是一个加速度。尤其是在企业要变革、需要强大推动力的时候比如你从100人发展荿2000、3000人,如果使命、愿景、价值观不清晰队伍就有可能会散,会出问题甚至会崩溃;反之,如果文化传承和组织做的好它会让你如虤添翼,这件事就这么重要
好未来这几年就是面临这样的问题——近几年收入增速达到70%-80%,一年增加几千个老师在这样的情况下,我要保证的不仅是组织不散更要保证教学质量稳定,要用同样的节奏对客户保证同样品质的服务,这是一件非常困难的事压力很大,我楿信很多公司在发展过程中都会遇到这个问题

文化简单来讲有三个方面,英文叫MVVM是使命(Mission),V是愿景(Vision)另一个V是价值观(Value)。
首先我介绍一下什么是使命什么是愿景,什么是价值观
使命是什么?使命是一个公司的原点发心简单地说是想我为社会做什么,是这個公司的原点叫做出发的地方,所以我们现在也有一个词叫初心不忘初心,就是那个东西比如有的公司的使命是说让人类的生活更媄好,有的公司的使命是说让天下没有难做的生意都在说一个事,给社会带来什么
愿景是什么?是终点是我想从社会得到什么,可鉯叫长期战略目标也可以理解为这辈子也完不成的目标。我们曾经犯过一个错误2008年,我们第一次梳理使命、愿景、价值观当时的愿景叫成为中国中小学培训机构第一品牌。结果干了两年2010年上市之后感觉好像已经是中国中小学培训机构第一品牌了,所以这就是错误的願景愿景应该是长期目标,做到50、60、70、80岁还没完成但又如此美好,这才是正确的愿景
价值观是什么?是从起点到终点的行为方式伱要以什么样的方式过去。下面我着重讲一下价值观

在讲价值观之前,先讲一下好未来为什么会成为现在的样子在创业早期,我在电視上看到一个老和尚讲众生畏果,菩萨畏因当时感到十分震撼。这句话是说大部分人都害怕出现一个不好的结果,而有智慧的人会害怕出现不好的原因在学而思整个创业和发展的过程中,我的所有思考都延用这句话的思维模式:与其担心不好的结果不如担心不好嘚原因。
关于价值观我会专门谈四个东西:业务起源、表达形式、考核方式和底层逻辑这基本是我个人总结出来的,应该你在所有的商學院都见不到
好未来这个公司最早源于我在北大读研究生的时候做家教。当时我想办法通过两小时的家教,让学生喜欢上学习提高茬学校里的效率。其中一个孩子进步比较大他爸爸给我介绍了一些学员,这样就有了小班就是学而思的前身。
我最担心孩子上了课之後没效果因此为了确保质量,我们让学生坐在前面家长坐在后面,不满意可以随时退费所以如果我的教学有问题,家长就把学费退赱了公司就要承受损失。我们总结为“开放课堂、免费试听、小班教学”的模式倒逼公司不作恶,倒逼公司不会盲目扩张倒逼我们必须把教学质量做到极致。在这个基础上我们又提炼了一句话作为我们价值观的第一个词叫“成就客户”。
我们的价值观是怎么长出来嘚它不是我们一天有的,是从我们的商业模式里提取出来的这种价值观容易落地。因为这个价值观根本不是文化它是你的商业模式,你不用跟员工讲员工都知道,所有人都知道因为你的业务就是这么做的。
那时我还在读博士本来是想做一个小而美的公司。但中尛学课外辅导有一个特点只要你教得好,家长就会给你介绍新学员这个事是喜悦也是苦恼,苦恼就是家长报不上很着急但同时家长僦坐在后面听课,随时可以退费所以我又不敢扩张。
也就是说第一个价值观就决定了我们要以第二个价值观,即务实的方法来做不能快速的圈地,不能快速的扩科因为扩张快了,教学质量跟不上客户会随时退费。
所以除了控制规模科目上我们坚决只做数学,后來把数学做到第一名才开始做理科把理科做到第一名才开始做英语,把英语做到数一数二的时候才开始做语文所以我们在北京做到五萬学员的时候,其实语文一个学员都没有
我们的理念是,做强比做大更重要质量比数量更重要。在品类上和区域都是如此我们在北京做到第一名才开始开第二个城市,做到第七年上市的时候实际在全国只做了6个城市,大概98.3%的收入在北京和上海
当时很多伙伴问我们,说那时新东方五六十个城市学大四五十个城市,学而思如果不快速扩张如果不圈地,会不会错过机会当时我的回答是,如果我们現在去晚了就错过机会如果学而思不能给当地的学生和家长不一样的产品和品牌、不一样的服务,我们不去也罢
后来就是因为有这种悝念,才不急于扩张不急于把势能释放,不急于过早地变现务实,我们第二个价值观就是这样来的,完全是从业务里长出来的
所鉯,CEO如果你要提炼你的价值观就要对你的业务有感觉。假如说有一些理由是你走向成功的理由和原因你把它好好提炼一下,走路的时候想一想睡觉之前想一想,散步的时候想一想坐在马桶上也可以想一想,这种词作为你的价值观是非常好的
2003年我们创办这个公司的時候就在想,为什么很长时间都不做英语一方面是因为新东方比我们早10年,他们的英语已经做的很好了另一方面,我在想我们作为┅个培训机构,存在的价值是什么
所以当时我跟我的伙伴说:中国不需要第二个新东方,我们就干跟他们相反的事——新东方教大学生我们就教中小学生;新东方教大班我们就做小班;新东方通过讲座招生,我们就通过互联网招生;新东方推崇名师我们就做教研;新東方做很多广告,我们只靠口碑;新东方教英语我们就做数学。当时就是这么一股倔强的劲结果我们做的结果还是不错的。
那时我们還线上线下同时做到后来出现了一个词叫O2O;我们再后来做的事,又出现了一个词叫新零售这种行为叫什么?我们提炼了一个词叫创噺。
所以我们每一个价值观都是在成长过程中长出来的都是有原因和缘由的,这很重要大家在提炼价值观的时候,最好是从业务中来好处是什么呢?可以到业务中去你在后面培养你的干部时,培养业务就是在培养价值观培养价值观就是教他如何做业务。 学而思今忝在任何一个城市开一个分校成一个分校,到目前为止无一失败一个很重要的原因就是,我们和校长都不讲业务就讲价值观,他就悝解了如果跟校长谈方法论,他不会听你的因为每个人都有自己的方法论。但是谈价值观就不一样了上纲上线,还要考核如果不苻合就会一票否决。
我们后来再发展学科就多了,分校就多了事业部就多了,相互之间有的时候打架大家只考虑自己的利益。包括其它一些机构他们提到好未来也很有压力,觉得对他们有威胁我们也在思考如何给行业做贡献,去输出我们对产业的理解帮助他们囲同成长和发展,在这个过程中就产生了第四个价值观——合作
但我要特别强调的一点是,前面三个价值观都是在业务里长出来的第㈣个价值观是从自上而下的需求里提出来的,所以这种价值观不容易落地后来我们费非常多的心力都是推进合作的价值观,这个事把我們给折腾惨了 所以如果你的价值观不是长出来的,是老大拍出来或者因为公司需要提出来的这个价值观就很消耗你的心力。
价值观第②部分是表达形式你有了价值观的四个词还不够,还得有一些能够朗朗上口的东西让你的员工都能说出来,而且说的很带劲、很自豪
(1)成就客户:一切以客户为中心
所有的员工入职时,我会做一次培训跟他讲好未来的发展史,给他讲三句话:
第一句教不好学生等于偷钱和抢钱。
因为学生交的学费是标准的但是我们交付的服务其实是不标准的。某种程度来说如果学生学不好,我们就等于占了怹便宜一个人第一次听到这句话,作为服务的交付者是有压力的
第二句,不是靠口碑招来学生我们不受尊敬
我们希望学而思的学员鈈是靠打广告来的,而是靠客户之间口口相传来的实际上过去的十几年我们也一直是这样做到的。
第三句和客户不亲的学校没有未来。
我们经常拿这个标准来衡量我们的教学品质比如跟客户接触的频次、时长、深度这些指标。
(2)务实:抓住事物本质
我们有五个重要來解释:
做强比做大更重要质量比数量更重要。
我们扩科是非常谨慎的大家知道扩科就意味着扩收入会涨百分之好几十,但是这样美恏的事不要轻易让它发生一定要能憋得住,能够把你的产品打造到极致
我们坚信一个公司你把它内在做好了,外在自然会呈现出来峩们做过未来教育大会,应该是中国教育界目前为止规格最高的一个会这种事叫做简单的加法,会提升品牌但对于好未来来说,更重偠的是员工离职的时候对流程满不满意或者是我们员工日常福利做的细不细。这种小的问题其实是体现公司的水平 很多时候我们容易被一些高大上的东西蒙住双眼,但真正扎扎实实、默默无闻的工作我们看不见CEO一定要考虑这一点,不能陷入这种表象里这叫内在比外茬更重要。
做到比说到更重要数据比经验更重要。
不要告诉我你在这个地方干了十年了不起,数据告诉我工作了一年的大学生效率僦是比你高。用数据说话这叫抓住事物的本质, 当然从本质的角度,做强比做大更重要是针对我们这种对品质有要求的服务业但是茬一些领域是做大比做强更重要的,比如说电商、滴滴打车和快滴OFO和摩拜,在这些品类很大程度上是要舍命狂奔的因为它的质量是标准化的,就需要能够快速做大
(3)创新:能活下去的原因
第一,不怕做不到只怕看不到
我们做一个产品首先要把行业里能看到的竞品先研究一遍,叫独上高楼望尽天涯路知道别人是怎么做的。如果一个产品经理、一个CEO从来没有看过跟你竞争的品类基本上你不容易做絀一流的产品、成为伟大的CEO。
第二不怕看不到只怕看不懂。
看得懂、看不懂不是取决于你的理解能力它只取决于一个东西,叫做你的虛心程度即你是不是足够的虚怀若谷。某种程度来讲一个人不够创新的理由有两个,第一视野不够第二是不够虚心。假如只有一个原因就是心不够虚,杯子有点满
第三,拥抱失败的人才能拥抱成功
所有的创新都是有失败的,如果你在企业里要提倡创新我建议伱不要写提倡创新,而是大胆的把“拥抱失败”四个字挂在你的公司
第四,投资未来的人才能拥有未来
很多公司发展到一定程度之后僦没有力量了,很大原因是他不敢去不断的投资未来所谓“未来”这个时间周期,会随着公司发展而变长早期的时候我们CEO要思考下个季度,然后要思考一年之后然后随着公司体量增加,你要思考三年之后好未来其实是一个比较有危机感的公司,我们今天做的大部分業务、大部分思考其实都是在为五年后做准备
(4)合作:人类社会存在的理由
人类区别于动物的点有两个,一个是创新一个是合作。創新代表科技合作代表连接。到互联网时代创新和合作一个是计算能力,一个是连接能力对应到今天中国的两个公司,就是阿里和騰讯 怎么解释合作?
第一句话一个人走的快,一群人走的远
第二句,跳出两级来看矛盾自然消失。比如我们公司事业部的总经理他的事和集团是冲突的,我就跟他讲你要跳出自己的位置站在集团的角度看,很多矛盾与冲突就消失了同样一个公司、一个CEO也要跳絀来,第一是站在全行业的视角来看第二个站在全社会的视角来看,这个公司对社会做什么贡献对行业做什么贡献。
第三句人才是集团的,包括你总经理好未来经常会出现新业务,经常会需要从事业部A调一批人到事业部B在很多公司人才是调不动的,这在我们公司昰不行的从一开始每招进来一个人都要跟他讲这个事,每次开会都要强调这句话——人才是集团的包括你本人,如果你拒绝集团调人就等于主动提出离职。
第四句手伸出100%,一切问题都能解决大家心里期待的合作都属于这样,一人一半每个人付出50%合作就达成了,泹实际上一个善于合作的人会是别人的手伸出50%的时候我伸50%,别人的手伸出70%的时候我伸出30%别人伸出20%的时候我伸出80%,如果别人不伸手我僦手伸到100%,别人往回缩30%我就伸130%,确保合作能达成这样的人是最完美实现价值观的。
价值观谈完后是要考核的把你的价值观打分。价徝观考核就是考核行为。
一分本质上说的是诚信如实汇报自己的工作,不隐瞒问题必须报喜也报忧。如果做不到就是零分直接开除。
两分是积极参与团队建设工作
三分是不断的反思总结和复盘,形成有价值的经验并进行分享,这是建设学习型组织很重要的
四汾是能抓住重点,持续取得业绩的提升价值观的高分一定是业绩的高分。
五分是能将远大理想分解为现实目标
什么是务实?务实就是目标会分解每圈都画圆。 当每个团队都这么要求的时候其实这个要求是不低的,所以我们到目前为止价值观只考核到干部,员工我們是不考核的
考核到干部的比例也不一样,考核高管是五五50%业绩50%文化;考核经理级别就是三七开,70%是业务30%是文化;考核主管就是二八開80%是业务,20%是文化
好未来的文化考核我们用这个图来形容,Y轴坐标代表能力;X轴坐标代表价值观:
能力和价值观都很强的叫做千里馬,他是一个能跟公司长期走下去的;
能力很强但价值观不好的叫野狗这样的人是要敲锣打鼓的抬出去枪毙,不止是开除而且要让所囿人都知道,哪怕他占你业绩的三分之一甚至更高因为这样的人是会腐蚀整个公司根基的;
另一种我们叫花猫,价值观很好从来不出活,宠物我们现在创业都和打仗似的,打仗不能带宠物;
最后一种叫耗子偷吃粮食偷吃米,不做贡献这种很少有团队能容忍;
剩下夶部分人叫马,是中间的
这是好未来引用的体系。各个公司不一样你的公司也可以自己选一个,让全体的人知道我们公司不仅仅看業绩,还要看是不是价值观一致
大概在三四年前,我开始想为什么我们会长出这几个价值观来总结了好未来三定律:因果、长期、平衡。
前面我讲了众生畏果菩萨畏因。一切事物呈现一个结果的时候必有其原因我们希望一个什么结果,我们不要急于去追求这个结果而应该在它的上游和前端,把能达成这个结果的因找到、去实践结果会自然呈现。
比如说成就客户就是因当我们把刀把子放在客户掱里时,客户就会给我们一个好的结果、好的口碑会续报、会介绍更多的客户来。
我刚才讲务实——做强比做大更重要质量比数量更偅要,内在比外在更重要当我们注重质量的时候数量就出来了,当我们注重做强的时候做大就产生了当我们注重内在的时候外在不会呔差。
我们讲创新——当我们重视创新的因的时候企业的好产品会层出不穷、源源不断,企业的业绩会好核心竞争力会让别人难以企忣。
还有合作当我们给行业、给社会做贡献的时候,行业会跟我们很好地连接会回报企业很好的利润,这个事就是一个互为因果的关系这叫因果。
当我们洞悉这个东西之后就敢大胆地讲“成就客户”,因为成就客户就是成就自己成就别人就是成就自己。所以这件倳当我们讲到这个层面的时候,大家突然就理解我们四个价值观的价值
再说第二个定律:长期。
因为是基于因果的所有的成功都是需要时间、需要耐心的。当你在因去投入的时候需要时间去收获,所以我们认为只有笑到最后的公司才是好公司中间你可以成功可以夨败,但到最后你得赢我们所有的价值观,都是基于长期能赢的解决方案都不是短期能赢的。
成就客户一定是让客户先赢务实做质量做强做内在,都是站在长期的角度才有回报创新站在长期的角度,短期全是投入、全是付出所以也就是说一个没有长期眼光的人很難接受好未来的价值观。 你注意到好未来也很少做舍命狂奔的业务-快速圈地快速占领市场这不是我们擅长的,因为它和我们的价值观不呔一样我们也做不出来,这样的业务我们就得放弃这是价值观的代价。
平衡说的是什么是说基于长期和因果来说,没有白占的便宜也没有白吃的亏。
当我们想做强的时候长期来看基于因果会做大,做大是来跟做强平衡的;当你基于质量考虑长期来看数量会起来嘚;当你把内在练好了,基于长期外在会起来的;当你成就客户,基于长期客户会成就你;当你基于长期做投入研发你的产品会极有競争力,所有的这一切从长期来说基于因果都是平衡的,很有意思
所以好未来价值观的底层代码是就是三个词,因果、长期、平衡
峩下面再详细阐述一下这三个词。
第一过程即结果,当下即未来
当我们在追求一个结果的时候,其实这个结果我们是掌控不了的我們只能掌控每一个当下,当下做出什么努力那个结果就是你当下努力的∑求和或者是积分求和,其实我们人生何尝不是如此
第二,因嘚因在初心,与企业叫使命。
众生畏果菩萨畏因,做一个很伟大的公司是一个结果那它的因是什么?是我每天都努力我有一个恏的基础,比如我们拿到顶级投资人的钱能招到好的团队。那我们继续追问这件事的因是什么?因的因又是什么 我谈谈我的体会。洇的因就是你的第一个念想叫初心。在企业里叫使命。好未来的使命是用科技推动教育进步这是我们跟别的培训机构最大的不同。所以好未来每年会有几亿的研发经费产品技术研发和内容研发2000多人。当你遇到困难遇到痛苦的时候你都要回到原点去思考。
第三未來可以是因,未来改变现在:先看见再实现。
有一种人能够看到未来,因此他具备当下的说服力能够调动很多资源来实现。
第一贏在起跑线还是赢在终点线的问题。
我们所有的价值观都是基于长期能赢的解决方案,都不是短期能赢的
你会发现优秀的人都是那种能延迟满足的人,更重要的是你自己要成为这样的人像贝索斯到现在还不盈利或者是微薄的利润,伟大的公司都是这么干出来的
第三,时间复利时间是好公司的朋友。
好公司是真正有积淀的公司做深度研发的公司。
从物理学来说平衡是一种熵增的状态,释放势能熵是混乱度,比如你的屋子假设不刻意整理它会变得越来越混乱,这是一种自然状态这个世界万事万物都这样,一个组织如果你不修理它它会变得越来越大,效率越来越低即使精心的打理,效率还是越来越低但降低速度会得到极大减缓。 我们可以做很多事去减緩熵增的速度
第一,去平衡化去降低熵值。
比如当年学而思培优在我们内部做的很好一个学生一年交1万块一科,利润3000块这时,我僦在内部扶持它的对手——学而思网校一年只收1000块钱,亏大概500块这个事就是去平衡化,不能让我们公司活的很舒服当一个公司开始掙舒服的钱时我们就要知道熵增很严重了。
第二通过机制倒逼自己降低熵值。
比如说所有的培训机构都喜欢说别让家长听课,这样有嘚新老师讲的不好家长也不知道。这样做的话机构短期是占了便宜,赚了舒服的钱但长期来说它的熵增了。所以通过机制倒逼自巳不作恶,通过机制让自己不要那么舒服很重要,这是降熵的
我们还有一个机制也很有意思,我们公司的周报是上级给下级写我给峩的高管,给我的执委会成员和我们的事业群总裁写周报因为如果是自下而上写周报,中层干部喜欢把下属的功劳变成自己的功劳对上彙报但是反过来,你让他给下属写他就得写我是怎么想的,我有什么任务和目标给大家分解,抄送自己的领导
这个事的好处,第┅是干部很受尊敬他的感觉很好;第二是所有的干部三级是打通的;同时,在用人上有好处因为干部给下属写的时候经常表扬谁批评誰,人才容易盘活
第三是,出现负面问题的时候我们要积极定义它的正向降熵价值
学而思的思,核心就在于反思就是说如何把一个負面的事转化为正面的事,如何把一个消极因素转化为积极因素其实很多坏事都是帮你降熵的。
第一价值观就是业务的运营模式。
第②价值观是要求公司和高管的。它不是要求员工的是影响员工的。
第三价值观是要集体建设达成共识的。每年几天时间修改、修订每个人都要参与,叫听多数人的声音跟少数人商量,最后你自己拿决策
最后,价值观是必须要绩效考核的不考核等于没有价值观。
好未来2016年退费多少呢10亿,其中有5到6亿是开课前就退了我们承诺无条件退费,不信你可以去试一下前台很愉快就帮你退了,他没有動机去阻拦他帮你办完退费还能多一笔操作奖励。另一半是开课后有些家长是上完第一次课退了再报,他可以省一次课的钱这是一個BUG,但是我们允许——既然规则制定了这就是价值观的代价。
7、为什么一个公司要有共同价值观
一是在茫茫人海中选出最优秀的、匹配嘚人形成合力,并排异不匹配的人;
二是价值观是业务的本质;
三是价值观是业务持续成功的隐藏的已知条件

二、好未来组织探索与演进



公司有两种,一种是不断的蜕变即自下而上长出来的。第二种我用了一个词,叫天局从上而下建设好的。大部分公司是第一种
第一种叫蜕变,是什么意思重要的岗位先留着,不要着急真正核心高管的人要招更好的人,这就是一层一层的蜕变
公司比较小的時候,建组织公司三个人,一个CEO一个CTO,一个COO这样其实建起来后面很麻烦。比较理想的是拿好未来做例子,我们公司做到四五年的時候已经1万多个学员了,才招第一个总监之前除了我是CEO,最高级别的干部是经理到今天为止,2.7万个员工副总裁以上的人不超过10个。
因为早期公司小的时候你资源少你很容易招一个二流的人才或者三流的人才去做你的副总裁或者高级副总裁。问题是你用三流的人伱后面再招他下面的高级总监、总监时,他只能给你招四流的人因为招聘有一个规律,一流的人才喜欢招一流的人才二流的人才喜欢招三流以下的人才,三流的人才就会招不入流的人才只有顶尖的人才会招到顶尖的人才。所以当你重要的位置都被还不够优秀的人占住叻对你公司来说是灾难,当你再成长的时候优秀的人进不来。所以你要把这些重要的岗位先留着不要着急,你真正核心高管的人要招更好的人这是一层一层的蜕变,大部分公司是适合这种做法的
第二种叫天局,天纵英才第一波你招的合伙人就已经是世界级的、頂级的,比如像马云、雷军一开始合伙的就都是各个领域最牛的人。可我们大部分创业者都不具备这个条件你很难一开始创业就拉到┅批特别牛的人,那你可能就得要把组织结构设计好

二、自下而上与自上而下


一个组织有两种力量,一种叫自上而下的力量一种是自丅而上的力量。互联网公司大家受腾讯的影响和谷歌的影响,谈创新总在谈自下而上我今天反过来讲讲。
我们说创新要自下而上实際上能做到这个公司的非常少,其实我都建议大部分的公司在相当长的时间都不要谈自下而上,因为它首先自上而下都做不到——CEO想个點子是A传达到干部管理层是B,到基层已经是C了
一个公司自上而下的动员能力、执行力是非常重要的,它是一个建场的能力要实现自丅而上,首先要确保我们的公司CEO的想法能够自上而下的贯穿到一线有足够的主业核心竞争力。
什么情况下才需要自下而上就是你的业務已经多元化,CEO已经管不过来了你的公司要分事业群、事业部,你的公司同时跑十几个、几十个产品这时才需要把一个公司的CPU,把整個公司的战略思维去中心化所以如果你的公司是单业务单元的,你要先看动员能力怎么样如果你的公司是多业务单元的,再谈自下而仩的事
你的总经理对他来说他的动员能力怎么样,是不是能够一声令下大家往前冲能够集中注意力、形成合力,这个东西太重要了Φ国有两个公司做的非常好,一个是阿里巴巴一个是华为。

三、由内而外和由外而内


我还要再谈由内而外和由外而内刚才我们讲内在仳外在重要,一个公司如果内在足够强大你自然会从外在感受到,叫由内而外
由外而内是指学习,一个公司要不断的去向行业学习姠社会学习,向跟你不是同行的同一个行业的学习向全世界顶尖的公司学习,去承担社会的责任在这个过程中,你会源源不断地从行業、社会汲取营养你做贡献,你也会有收获
企业里谁在这么干呢?阿里和腾讯他们不断的通过投资、收购,去连接去跟各个行业嘚顶尖选手保持开放。他们的创新不只是自下而上、自上而下而且是由外而内、由内而外,纵向的和水平的都在做所以这样的公司能苼生不息,他们体量比你大很多增速还比你快,在千亿这样的收入水平增速还在50%的量级。

四、企业和行业和社会是命运共同体


企业是誰的企业企业是创造价值的人的企业,不一定是创始人的企业好的企业长久的企业最终都是社会的企业,所以股权开放叫创造价值的囚分享价值
其实股东很重要,你的联合创始人很重要你的投资人也很重要,他投了那么多钱一定对你有很多的要求所以投资人决定叻企业的格局。你是什么样的速度、认知水平他是能帮你带来很大价值的。资源是其次的认知是最重要的。
股权开放还有期权期权非常重要,一个好的公司应该是每年发期权的不是上市前,是终身永远不停的发。所以我们上市之后我们有一个计划是期权池每次增发5个点,发完之后自动再涨出5个点来而且我的期权是不给自己发的。这叫创造价值的人分享价值这个理念很重要,它会让你的企业苼生不息
人才开放的意思是说你要融智,要不断的吸引优秀的人才进来每进一个人,要问一问说这个人进来之后平均值是不是提高叻。
同时还要有末位淘汰一定把不行的人干掉,当然你要给他足够的机会没有末位淘汰的公司其实挺可怕的,它就是一潭死水
从全產业链去看,你要研究你的产业链中什么是核心环节你做的是不是核心环节。
同时业务也要末位淘汰。我们定了一个原则人效——紦你的收入除以你的员工人数,即人均创造收入还有人均创造利润。人效代表的是公司的先进程度、技术含量比如阿里和腾讯他们的囚效大概收入三四百万,利润一百多万所以这个产业链的水平就完全区分出来了。
我们内部就是这么规定的即使这个事业部、这个业務赚钱、增长,但定期的我每新开一个业务,就一定要关掉或卖掉一个业务这种方法强制你去创新,去往价值链产业链的上游去走┅个公司没有这样一种机制就不会有活力。
所以从股权层面、从人的层面、从项目的层面都要去开放本质上企业和社会是命运共同体,這个企业不是谁的是社会的,从社会中来到社会中去。

五、内部失败的案例分享


我给大家讲一个我们内部创新失败的案例
我们有一個业务叫志康1对1,就是一对一家教当时收家长1小时300元,我们给老师120到150元因为,售前学习顾问拿掉10个点售后还有班主任,房租大概要20個点扣掉一定的市场费用、管理成本,我们只赚七八个点的利润率
当时就出来一个很火的模式,叫O2O说是去掉中间商赚差价,家长直接找老师当时他们收家长200块,给老师250你没听错,因为他拿投资去烧所以原则上给老师70%,实际上为了做规模补贴给到了更多,给到叻100%甚至还多
我们说这样搞下去把我们老师都挖走了,有压力当时就头脑发热说,与其被革命不如自己革自己的命我北京最大的事业蔀志康,已经四五亿的收入当时我找到我们的老师,把全职改成兼职但有一个好处,你上我们的平台你现在收入是30%,我给你涨到70%峩的教学点相当于你来租赁,当时的O2O全是这么干的这个事给我们的损失有多大,一年大概从盈利一个亿变成亏损一个多亿。好在我们呮拿了一个城市做试验
善友教授讲了说内部经常都干不好,还得投资这句话非常好,我们就投轻轻家教连投三轮,最后投资投成了夶股东第二轮投完,我们就有话语权了我说的第一件事是停止补贴。后来他们就不补贴了其他家继续补贴,钱烧光了没人投了就不莋了现在只剩他一家,之后就开始要收提成了不但不补贴,前三单收50%后面收20%,所以他现在第一批十个城市都打平了都赚钱了后面叒开了几十个城市,成长的很好果然验证了教授说的,说大公司自我颠覆不靠谱还得做外部投资。

组织其实就是用人在诸葛亮、刘備、曹操、蒋介石中,你们觉得谁的用人水平最高
我非常认同大家的看法,诸葛亮鞠躬尽瘁死而后已主要是靠自己的智慧,但他其实鈈能发挥团队的力量这其实是很麻烦的。30%的人选刘备其实刘备和蒋介石是一类人,他能调动一部分人的积极性但又都有一个问题,伱作为公司的老大不能有圈子,不能有嫡系不能亲疏有别。老大如果有了嫡系这个公司就会分派系,这样的话会毁掉整个公司曹操的水平很高,我待会儿再讲
最后,关于用人有几句话跟大家分享一下
第一句叫,下则尽己之力中则用人之力,上则用人之智
第②句叫,用师者王用友者罢,用徒者亡
第三句话是曹操讲的,为什么曹操最厉害他说:吾任天下之智力,以道御之无所不可。这呴话的意思是说我对于天下有智慧的人,用天道来带领他们这就是使命愿景、价值观——我不是以利诱人,不是以利御之不是以权禦之,不是以官御之而是“以道御之”,以天道来带领他们以共同的使命、愿景、价值观来带领他们,“无所不可”没有什么做不叻的事。干的好的该加官加官该进爵进爵,但是那个不重要他们跟我干主要原因是我们一起去践行天道。所以你看曹操一直到死都不稱帝当然他的儿子没憋住那是另外的事。

一家企业做强靠产品做大靠运营,本质上是靠组织做久要靠文化,不变的是文化你的使命、愿景、价值观才能支撑一个企业做久。

就可以把远程的目录当成本地的目录一样使用的. 拷贝啊重命名啊都可以. (当远程的内容直接能被你访问的时候, 谁拷贝啊 :)
说到这里, 聪明的读者肯定要说: 靠, 远程的文件都能当成夲机的用, 那太好了, 整个互联网就是我的磁盘嘛. 你还真说对了, 对于一个用户来说, 协议是不重要的, 重要的是数据. Gmail 不是有N个Gb的大小么, 让我们直接紦 gmail 当磁盘好了. 于是有了 . 这样, 你可以给你的邮件标题做支持正则表达式的查找噢 :)
除此, 还有 , 可以用自己喜欢的编辑器直接编辑维基百科的文章. 還有 . 直接用自己喜欢的编辑器可以编辑图像元信息, 还能 chmod 754 让图像只能被朋友访问噢 :)
以上的这些酷实现, 都是 这个内核模块作为基础支持的. 那么, 這个牛逼的网络也是文件的点子是哪个牛逼的人想出来的呢? 答案是 UNIX 的发源地, 贝尔实验室. 确切的说, 是在设计 UNIX 的继承者– 的过程中提出来的. (小仈卦: UTF-8, 就是世界上现在最通用的字符编码体系, 就是 Plan 9 操作系统的一个副产品).
一切都是文件这个点子倒不是什么新的点子, 在 The Unix Programming Environment 这本圣经里面就旗帜鮮明的打出 “UNIX下一切都是文件”的旗号. 但是毕竟旗号是旗号, 现实是现实. 关于文件的抽象在其后的发展中发现了这样那样的局限, 于是恶名远揚的 ioctl 函数被引进系统. 所以口号是口号, 实现是实现. 显然当初设计 UNIX 等等, 熟悉 Linux 的用户要说了, 在 Linux 下面, 进程的确是文件啊. ls /proc 就能看到当前所有的进程, 不吔是文件么. 是呀, Linux 这个就是和 Plan 9 学来的. 但是 Linux 学得不彻底, 因为这个文件系统的访问接口并不完整: 你不能通过 rm 一个文件杀死一个进程. 也不能通过 cp 拷貝出一个进程. 而在 Plan 9 上, 你不光能通过普通的文件操作命令去控制进程, 你还能 mv 一个进程. 我们刚才说了, 进程就是文件, 还能把其他机器上的文件当荿本机一样用. 屏幕前聪明的你肯定一下子悟到了: 一定这居然是一个分布式的操作系统啊! 在这个系统里, 进程可以被其他计算机看到, 并且控制. 洏管道可以横跨不同机器的不同进程, 这简直是把单机的概念都给抹杀了, 简直就是”网络就是计算机啊”.
熟悉互联网的读者都知道最近炒得佷热的云计算啥的, 对用户无非就是互联网作为硬盘, 对公司无非就是分布式的操作系统协同工作, 在屏幕前的您肯定如我一样, 一拍大腿说: 靠, 贝爾实验室养得不是计算机科学家, 而是一大批未来学家啊. 30多年前人家搞互联网, 而今我们用互联网. 20年前人家用GUI, 如今我们用/story_of_ ls

就可以直接显示服务器上的目录了. 还可以拓展一下, 

除了以上两点, IDE 和库的思想. 我们今天用的标准名词, 如”方法”, “字段”, 都是来自于 Smalltalk 的. 这些也都是划时代的工作, 洇为我不熟悉, 也不敢不懂装懂的展开介绍了.  
有时候回看历史, 特别是回看编程语言的设计和进化的历史, 会发现很多散在的晶亮的珠玑. 

/cgi/wiki 是历史仩最早的 wiki 百科, 只是全是关于计算机和编程的而已.

编程珠玑番外篇的番外篇 

我和作者不认识他的《编程珠玑番外篇》是今年见到的最好的技术八卦(并非贬义);”完全用键盘”工作的系列文章很好的体现了 Geek 精神。

感谢他的推荐和表扬. 希望这个技术八卦系列在2009年依然是质量上乘嘚技术八卦 :)

3. 下面的写作计划其实我早就有了, 苦于没有时间码字 (事实上从最近到1月12日, 我都没时间码字了). 为了让大家保持一个好胃口, 趁着 DBAnotes 的推薦, 说一下剧透好了 (有兴趣的快啊):

协程的八卦: 抢占式多任务 协作式多任务的概念, 协程在编程语言里的实现的历史, yield 关键字的来历. 协程在现代编程语言中的消亡和复兴.

关于用户级线程库的八卦: 内核线程还是用户线程, 历史的演变, 各大编程语言的实现, 为啥Python 不能在多核上提高效率而Java 能. 用戶级线程库在现代编程语言中的复兴.

Java平台的动态化: JSR292 的前世今生, 一个静态语言的平台如何加入一个指令就能动态化? PVM 和 JVM 的区别在哪里, 谁是下一玳一统江湖的语言平台?

我相信, 后面会写的越来越精彩, 希望大家持续关注.

最近日本著名演员饭岛老师去世了. 在我这个年龄段的人中, 熟悉饭岛咾师的相信十有八九都是通过奇妙的叫做 bt 或者 电驴 的软件认识的. 今天我们就来八卦一下程序设计人员是如何设计这些客户端的策略使得您既能下载欣赏到饭岛老师的片子, 又不会浪费您太多的上传带宽的. 简单的说, 就是 P2P 软件的客户端的策略该如何设计, 使得整个系统能够帮助每个鼡户获得相应的利益最大化.

要研究这个问题, 我们得从博弈论谈起. 但是因为这个是给程序员看的八卦, 不是数学专业课, 我们不在这里说太多的數学, 而是用例子和八卦引入.

大家都知道, 1994 年的诺贝尔经济学奖给了一个数学家, 约翰.纳什 (电影”美丽心灵”为证). 纳什的理论工作是推广了冯诺伊曼开创的极大极小定理(博弈论的基本定理). 而在通俗的对博弈论的介绍中, 提到纳什, 一般都是着重在纳什均衡和囚徒困境上. 我们不具体深究納什均衡的数学意义, 而是以下面一个具体的极其简化的例子来说明囚徒困境:

假设 BT 网络中两个节点 阿强(A) 和 B哥(B) 要交换文件. 文件很大, 我们假设需偠非常多轮交换才能完成. 每一轮, 每个节点可以选择 平衡上传/下载 和 几乎不上传/贪婪下载两组策略. 我们按照博弈论的一般用语, 把第一种策略稱为 C(合作), 第二种称为 D(叛变). 同时, 假设A, B 都是使用 ADSL 网络, 所以上传成本比下载成本要高很多, 我们在计算回报的时候考虑这样的不对称. 现在, 假设 A 和 B 各洎有对方需要的文件, 那么, 如果 A, B 同时选择策略 C, 即平衡的上传和下载, 他们得到的回报都是 3, 如果其中一个人偷鸡选择 D, 即几乎不上传, 光下载; 而另一個节点选择 C, 则选择 D 的能够下载到所要的文件且几乎不需要付出上传的代价, 我们记回报为 5, 而另一个人付出了上传的费用, 却得到了一点点的下載, 可以把回报看成是0. 如果两个人都选择贪婪下载, 几乎不上传, 那么两个人都得到了一点点下载, 现在这样的下载量没有3多, 但是因为本身付出的仩传成本也少, 我们把这时候两者的回报都定为 1.

说了这么多, 只是为了让问题更加的真实. 这些交代的条件的数学本质, 可用表格表示, 博弈论中称の为支付矩阵:

现在的问题是, 阿强和B哥都是理性的, 也是自私的, 因此, 他们都认为, “假如我选 C, 对方可能选 C 或者 D, 那么我这个策略最糟糕的情况下收益是 0, 而假如我选 D, 最糟糕的情况下收益是 1″ 那么, 因为 D 下最糟糕的收益比 C 最糟糕的情况下收益要大, 理智的人肯定选D. 我们看到, 两者选择 D 都是理性嘚, 但是实际上从对两者的收益分析看, 两者都选择 C 才是更加优的. 这个表面上看上去很理智但是最后没有到达对双方最好的结果的困境, 就是所謂的囚徒困境. (看过这篇八卦, 您也可以叫做饭岛老师困境)

关于囚徒/饭岛困境的简单介绍就到这里, 现在我们看我们的原始问题. 我们知道, BT 交换文件是分成一块一块的, 也就是说, 是一次一次的交换的. 我们把每次交换叫做一轮的话, 整个系统是一个多轮的博弈问题(或者叫做多阶段的博弈问題). 这个博弈问题, 就显得好玩起来了. 为什么呢, 因为多阶段博弈, 居然能够让自私的A和B两个节点为了自己的利益, 进化出合作来.

我们先简单的说明┅下多阶段博弈不必然的能跳出囚徒困境. 比方说, 如果 A 和 B 知道一共有 N 轮博弈, 那么最后一轮, 理智的他们肯定都陷入了囚徒困境, 在第 N 轮 的策略清楚之后, N 的问题就转化为 N-1 轮的问题. 所以, 必然的, A 和 B 在所有 N 轮上, 都会陷入囚徒困境 (好比奸商一辈子只和你做有限次买卖的话, 就会一直黑你, 不黑白鈈黑). 他们等到花儿也谢了, 也不能得到自己想要的内容. 但是, 问题的奥妙在于, 假如A 和 B 不知道一共多少轮, 或者有无限轮呢? 假如阿强在某轮选择平衡的上传和下载(C), 则可能正好碰上 B 哥 也选择”友好合作”, 那么, 两个人都舒舒服服的交换了饭岛老师的片片. 所以, 对于一个设计良好的BT客户端, 问題的关键在于怎么选择自己的策略, 使得既能完成自己自私的下片目标, 又能注意和其他客户端良好的合作使得自己的收益最大, 而不在于在特萣的一轮中自己的得失.

这里, 我们的目标是设计一个良好的策略. 通常, 在设计一个实践中性能良好的算法的时候, 数学家和计算机科学家在这里嘚方法就鲜明的分野了. 数学家, 会证明这样算法的存在性, 性能上下界, 和众多的必要条件, 以及算法之间在最理想的情况下的好坏比较. 而计算机科学家, 会像搭积木一样, 用不同的基本模块, 直接尝试不同的组合, 一一做实验, 看哪种方法最好. 在这里, 我仅介绍一种计算机科学家的方法: 通过让鈈同方法比赛, 取出赢家, 赢家的方法最好的方法. 其实准确的说, 这个就是达尔文的适者生存的方法. 而这个比赛本身又是一段非常有趣的八卦, 因此我着重花笔墨介绍一下.

在心理学和行为学领域, 有一本非常著名的书, 叫做<合作的进化>. 其作者, 记载了在80年代, 他组织的两次比赛, 叫做IPD (Iterative Prisoner’s Dilemma, 多轮囚徒困境). 竞赛的目的是在一个多轮的囚徒困境中找出最好的策略, 参赛者自己写好算法程序, 然后由组织者让这些程序两两对弈, 看谁在多轮囚徒困境中得到最多的分. 在所有的数学家计算机科学家等提交的很多程序中, 表现最好的一个策略, 超乎寻常的只有四行简单的 Basic 程序. 这四行 Basic 程序, 勾勒出了一个叫做 “针锋相对” 的算法(Tit for Tat).  这个算法策略很简单, 一开始采用合作, 假如对方上一轮合作, 则本轮合作. 如果对方上一轮对抗, 则本轮对抗. 鼡中国人熟悉的话说, 叫做”人不犯我, 我不犯人; 人若犯我, 我必犯人”. (四句话正好对应四行程序, 不是巧合). 其他的算法, 比如随机算法呀, 永远敌对嘚算法呀, 都比不过这个算法. 因此, 这个算法赢得了第一年的竞赛.

第二次, 各位吸取教训, 继续开发好算法. 猜猜第二次谁赢了? 居然还是那四行程序! 茬合作的进化中, 作者从”宽容, 以牙还牙”等社会学的角度去解释为啥这四行程序会赢. 或许对人生有深刻思考的人会感叹, 这四行程序的确蕴含了深刻的智慧. 但是, 很不幸的是, 这个程序在现实中, 有一个非常大的漏洞, 而因为这个漏洞, 使得BT程序如果不修改策略, 先现实中会寸步难行. 这个看上去非常理智非常聪明的策略到底是怎样的大漏洞呢, 我先卖个关子, 下回分解.

上篇我们说到 Tit for Tat 的策略有一个极大的漏洞, 是什么样的漏洞呢? 我們不妨先用通俗的例子理解一下.

假如现实生活中有两个人 A 和 B, 都是认为自己非常理智, 而且严格执行”以牙还牙”策略的人遇到了一起, 会发生什么样的事情呢? 我们按照他们初始的策略, 分三种情况讨论.

1. 假如 A 某次不小心招惹了一下 B (执行了被 B 解读为 D 的策略), 按照 B 的策略, 必然会在下一轮执荇 D 策略 (报复). 而 A 对 B 初始是执行 C 策略 (合作) 的. 在 B 报复之后, A 下一轮就会采用报复. 而相反的, B 在本轮看到 A 合作之后, 下一轮就会报复. 如此往返. 不难看出, A 和 B 會陷入彼此报复的怪圈当中, 用大白话说, 就是所谓的冤冤相报何时了.  更加糟糕的是, 博弈的双方都认为自己是完全理智而且愿意合作的, 但是就昰因为正好彼此差了一步, 因此从A的角度看B, A 会认为 B 是一个完全不懂得合作的蠢货 (A 提出合作的时候B正好报复). B 看 A 也一样. 现实生活中我们也能发现這种例子, 比如两个性格很强的人遇到了, 在某件事情上不投合, 结果成了一辈子的仇人, 还互相认为对方是傻X. 此时, 双方都得不到期望的最大受益.

2. 洳果一开始双方都采用 D 策略, 则可以遇见, 这样的 D 策略将持续下去, 没有一方会主动的让步, 因为先让步的一方必然吃亏. 现实中, 我们也能观察到这樣的事情, 即博弈双方仇怨越积越深, 最后到了不可化解的地步. 此时, 双方都陷入了囚徒困境.

3. 如果博弈的双方一开始都采取 C(合作)策略. 那么, 博弈双方则能够永远的友好合作下去, 获得最大的受益. 此时, 双方获取的受益都最大化了.

从上面的分析我们可以看到, 在多轮囚徒困境的情况下, 如果有哆个 Tit-for-Tat 策略参与, 那么每个的受益, 极端的依赖于初始状态的设定. 在数学和计算机科学中, 这样的系统, 叫做”初值敏感系统”. 一般认为, “初值敏感系统”是非常不好的系统, 原因在于缺乏”鲁棒性”. 这里我走一下题, 解释一下初值敏感系统和鲁棒性这两个概念.

大家都知道有一个叫做”蝴蝶效应”的东西, 大体是说, 一只蝴蝶在巴西扇动翅膀有可能会在美国的德克萨斯引起一场龙卷风. 原因在于, 这只蝴蝶翅膀扇动的气流, 引起的┅个小小的搅动, 可能会在系统中被各种各样的因素放大, 最后演变成一个非常显著的效应. 中国也有一句古话, 叫做差之毫厘, 谬以千里, 说的都是, 初始的微小变化, 都能引起最后结果的显著不同. 我们这里的初值敏感系统, 和蝴蝶效应也是类似的, 能从小的摄动引发出显著的后果的. 比如大家嘟知道, 在”一只馒头引发的血案”中, A 在很不经意的情况下, 对B 采用了 D 策略(抢了馒头), B 由此产生了报复, 搞得 A 国破家亡.

显然, 面对这样的系统, 人类即使有模型, 也是很难预测未来的, 因为初值条件在测量上的一点点微小的误差, 都能造成预测的结果的巨大不同. 为了表征这个特性, 我们把”不对初值敏感”的特性成为鲁棒性 (Robustness). (这个鲁棒, 您可以直接理解为山东大棒, 结实, 抗得住外界的一些摄动).

聪明的读者要说了, 即使系统不鲁棒, 我们能不能设计好初值, 使得系统沿着最好的方向演化呢? 答案是不能. 因为任何一个客户端拥有的上传和下载的带宽都是有限的, 有限的资源必然会导致資源的竞争, 从而导致必然某些请求不能满足. 在这种情况下, D 策略是不可避免的. 况且, 网络情况复杂多变, 即使双方都有意采取 C 策略, 很可能因为网絡的复杂性, 双发获得的受益不对等, 从而引发一方采取 D 策略. 所以, 如果 Tit for Tat 这种初值敏感策略放到 P2P 客户端中, 结果是不可想像的, 因为这时候每个客户端都是碰不得的刺猬, 一旦在某个时间点某个节点出现了差错, 很可能整个系统都陷入”冤冤相报”的死结, 让整个网络没法完成文件的传输, 反洏忙着互相报复和自我保护.

从上面的分析我们看出, 靠精心设计初值来维护这个系统是不现实的, 我们需要设计的, 是一个好的策略, 使得不管初徝怎么变, 系统中每个个体依然能够获得较大的收益.  那么, 怎样设计这个鲁棒的系统呢? 我们从极端的两个例子开始, 一种是不管别人怎么出牌, 永遠合作的; 另一种是或者不管别人怎么策略, 永远背叛的. 这两个都很鲁棒, 都很”彪悍”. 但是毫无疑问,

从这两个极端的例子表现不怎么好来看, 我們的确应该要根据对手的策略选择自己的策略, 同时又不能非常的依赖于对手的策略(否则就初值敏感了). 那么, 最简单的方法就是: 我们以一定的概率去执行以牙还牙, 但是也允许以一定的概率不管上次选什么, 这次和对手选择合作(跳出怪圈). 这样, 因为随机性的引入, 对初值的依赖就随着时間的流逝越来越小了.

在多个人的环境中, 我们的确愿意和对手选择随机合作, 但是因为资源的限制, D 是不可避免的. 但是我们不会让 D 永远下去, 我们烸轮和随机的对手选择一次随机的合作, 这样就不会被怪圈所左右. 这个就是 bt 协议跳出冤冤相报的精髓. 一旦知道了这个, 本文思想就差不多介绍唍了. 下面就是程序员的编码工作了. 下面的内容完全是基于 Bram Cohen (bt 协议创始人)

首先说点背景知识, bt 把文件看成一块一块的, 并且用一定的排序算法决定現在能够下载哪一块. 其次, bt 协议同时和多个机器之间建立 TCP 连接, 但是采用堵塞的方法控制传输. 因为建立连接代价比较大, 所以 bt 协议维持连接不变, 茬其上采用 choking (堵塞) 的方法来执行 D 策略, 采用 un-choking 的方法 来执行 C 策略, 而不是每次都重新建立和取消连接. IP 协议在这方面有天然的优势.

每次, BT 协议选择 k (通常為7, 限速的情况下为2, 3, 或 4) 个其他的客户端来执行 C 策略(即给上传). 在上一轮中给出最多下载的那些节点, 在本轮将被执行 C 策略(注意到有的节点上一轮並没有给上传, 即从C 到 D). 同时, 为了避免其他的更加好的节点被忽视, 每 m 轮, BT 客户端选择一个随机的 choke 了的节点执行 C 策略 (即从 D 到

那么, 什么时候执行 D 呢? 在 BT 協议中, 假如连续 n 轮, 都没有从一个节点收到任何下载, 在 bt 术语中, 这个叫做 snubbed. 这时候, 则该节点认为自己被那个结点执行D策略了. 作为报复, 自己也停止對该节点的上传(即以牙还牙, 从 C 到 D. ). 除非等到下次随机的选到了那个节点(再次到 C ).

这就是 bt 的协议关于博弈论的全部. 其中, 一轮持续时间在现在的实現中是 10 秒. m 为 3, n 为 6. 目前暂不清楚 Bram Cohen 是否通过实验得到这些参数, 有兴趣的读者可以自己查阅 bt 源代码, 改一下, 看看哪个更加好. 同时, 因为其他客户端采用嘚是 Tit for Tat, 想把自己的客户端改成 吸血bt 是不可行的,

很多天前和 zuola 聊天, 偶然提到正则表达式, zuola 说, 会正则表达式的都是牛人. 我说, 其实不难, 买本书看看就会叻. 这几天, zuola 又在我博客上留言说会正则表达式才是真的程序员, 因此我想, 还是写篇比较浅显的教程, 让 zuola 同学快速成为牛人吧.

对于普通人来说, 正则表达式是比较难的. 从我个人的体验来看也是一样. 这个难, 主要在于两方面:

1. 接受正则表达式的思维方式;

2. 熟悉表达式里面各种各样的符号的用法.

苐一点的难度在于这是个新东西, 和以前的知识结构不一样; 第二点的难度在于各种各样的环境下都对最基本的正则表达式做了很多扩展, 引入叻各种各样的新的符号, 这样, 就使得学的时候一下子面对太多的复杂度不知所措. 举例来说, 大多数教程把 ^$*+-[](){}|.?/ 这些符号全部放到一起讲, 全然不分他們的层次关系, 导致学习者云里雾里. 同时, 不同的工具又定义了自己的特殊规则, 使得学习曲线更加陡峭. 因此, 我打算把正则表达式的知识点, 分几個不同的层次, 一一剖析. 在这一部分中, 我把正则表达式琐碎的细节一一剔除, 希望看到这篇文章的, 愿意学习正则表达式的读者, 能够迅速从这些繁琐的细节中解脱出来, 掌握其本质.

首先说正则表达式是什么. 正则表达式是一种描述性的语言, 用来概括一类字符串 (或者说一个字符串集合).

我們当然可以用自然语言来描述一类字符串, 比如我们说, 以 “010 开头的电话号码”, “夹在HTML 的 <b> 和 </b> 中间的内容”, “含有 hello 的字符串”, “负数”, “IP地址” “邮箱地址”, 等等. 其实在实际应用中, 我们也常常有这个需求, 比如说提取一篇邮件中所有的 email 地址 (查找), 或者把提取某类电话号码, 升个位, 加个区號什么的 (替换). 人当然可以做这个事情, 但是这个事情重复且单调, 又并不需要太多的智力, 因此, 计算机是最好的工具. 但是问题是, 我们怎么能够告訴计算机, 我们对哪类字符串感兴趣呢? 计算机科学家就帮我们设计了一种让人能够简单的写出来, 表达我们人类想表达的含义, 而计算机又恰好能够很容易的理解和处理的一种表达式, 这就是正则表达式了. 从人和计算机的角度说, 正则表达式是一种人和计算机都能轻松处理的约定, 用来描述一类具有某个性质的字符串.

正则表达式它既有倾向于人的思考方式的一面, 也有倾向于计算机工作原理 (有限自动机) 的一面. 因此, 传统意义仩, 如果想真正理解正则表达式, 就要从理解计算机原理入手. 所幸的是, 我们普通用户, 在日常使用中, 并不需要了解计算机的原理, 因为这么多年技術的发展给了正则表达式很多新特性, 让正则表达式越来越脱离计算机的局限, 变得更加适合复杂的任务, 但这样的代价是正则表达式的细节越來越繁杂了, 对于初学者来说更加难学了. 因此我们在这里, 先讲本质, 后谈细节.

最基本的正则表达式, 只有三句话:

一个字符串是一个正则表达式

比洳 aaa, 就是一个正则表达式, 它描述了一个字符串集合, 这个字符串集合里面只有 aaa 这一个元素

两个正则表达式可以直接串起来, 比如 aaabbb 其实, 是由六个正則表达式 a a a b b b 接起来组成的. 我们先笼统的说, 接起来就等于把描述的内容接起来, 等一下再详细解释接起来的含义.

它描述的字符串集合是原来分别嘚并集, 比如 aaa|bbb 描述了一个集合, 这个集合里面有 {aaa, bbb} 两个字符串.

好了, 就这两三话, 就可以解释正则表达式最基本的思维方式了: 用一个表达式, 去描述一類字符串(或者说, 一个集合).

光有这两个, 还不够强大, 因为上面的正则表达式, 我写几个, 就描述了几个字符串, 也就是说, 描述来, 描述去, 都是有限的集匼, 不能描述无限的集合. 而我们想要描述的整数啊, 域名啊, 邮箱地址啊, 都是一切就有可能的, 因此, 我们有必要引入一个新的记号, 能够描述无限的集合,

一个正则式 X 可以加上一个 *, 用来描述任意多个原来 X 描述的字符串拼起来的字符串.

这句话比较费解, 我们用例子来说明一下, 比如 a* 这个正则表達式, 我们知道 a 描述了一类字符, 这类字符里面只有一个 a, 所以, a* 描述了一个或者多个 a.

整体加了一个 *, 意味者我们可以任意选 a 或者 b 一个接一个拼起来, 所以, aba, aab 都是在 (a|b)* 的那一类里面的. 注意, * 可以匹配 0 个, 就是说, 这里面包含了什么都没有. 比如说 ab*c 也描述了 ac, 因为中间可以有 0 个 b. 如果您想至少要一个b, 可以写荿 abb*c.

为了帮助您理解接起来, 我们再看一个复杂的例子, o(n|ff). 我们知道, n|ff 描述了 n 或者 ff. 当我们直接把 o 接在前面的时候, 描述的是 on 或者 off. 就是说, 接起来的时候, 要紦 o 和后面每种情况都组合一次. 我们再看 (a|o)(n|ff). 前面描述的是 a 或者 o, 后面描述的是 n 或者 ff, 接起来, 描述了 an, aff,

我们都知道, 正则表达式描述的是一类字符串, 所以, X 囷 Y 在接起来变成 XY 以后, 自然的变成了描述 每一种 X 里面的字符串和 Y里面字符串接起来的情况. 同样, * 好像把 X 和自己接起来多次一样 (可以是任意次), 每佽只要接起来的是X里面的字符串, 就一定被 X* 所表述.

(熟悉集合的朋友立即知道 正则表达式是用一个表达式代表了一个集合, X|Y 等价于两个集合的并集, 而 XY 拼起来等价于他们所有的元素 x, y 拼起来的集合).

好了, 恭喜您, 您已经学会正则表达式了. 真的, 你已经全部学会了正则表达式的知识. 不过不着急, 峩们先回顾一下正则表达式的要点:

1. 正则表达式由普通的字符, 以及几个特殊的字符, 即 括号 (), 或者 | 和 星号 * 组成. 用来描述一类字符.
2. | 表示或者. 如果有兩个正则表达式 X 和 Y, 那么 X|Y 就描述了原来 X 描述的和 Y 描述的.
3. 正则表达式可以接起来, 变成一个更长的, 描述了一个各个部分被那些被接起来的正则表達式描述的字符串.

我们上面说的这四个, 就是 100% 如假包换的正则表达式了. 以后的, 都是为了更加方便的使用正则表达式, 而又引入的一些扩展. 恰恰昰这些扩展, 让初学者陷入了细节的泥潭. 我们在下一节, 一个一个的来对付诸如 +, [, -, ], ^, $, {m}, 等这些非基本的高级的功能. 需要强调的是, 这些高级的功能, 其实嘟只是为了人书写方便, 而且是完全可以用我们这里说的最基本的几个规则代替的. 这些高级功能, 我们下节再讲.

写出匹配以下性质字符串的正則表达式:

2. 周曙光同学有两个名字, 分别叫做 zola 和 zuola, 人们常常混淆. 请帮周曙光同学设计一个正则表达式, 可以帮他匹配自己的名字.

3. 二进制数字 (最少有┅位, 但只含有 0 或者 1的)

4. 非零的十进制数字 (有至少一位数字, 但是不能以0开头)

有一些比较好的软件帮你学习正则表达式, 我推荐初学者用 egrep. 可以在 windows 下鼡, 具体用法是在命令行 打入 egrep “正则表达式” 文件名
egrep 会把文件里面和正则表达式匹配的行 (该行含有一个字符串, 被正则表达式描述了) 打出来. egrep -o “囸则表达式” 文件名 的话就会只打出那个完全匹配的字符串, 而不是行. 另外, 在 Linux 下可以用 grep –color “表达式” 文件名, 这样, 匹配上的那个字符串, 会被高煷显示出来.

(把这个文件存成文本文件, 用 windows 的朋友可以放在您的 “我的文档” 里面, 因为 cmd 就是从那里开始运行. 然后您 做实验)

你会看到第四题的答案很笨拙, 居然写了这么长. 后面的大部分细节, 就是为了诸如此类的写得更加简洁一点.

1. 按照 AW 的留言和他的博客上的读者留言, 这个在线网站可以茬线测试正则表达式:

2. 如果要论正则表达式方面的参考书的话, 我推荐 < 精通正则表达式>, 中文版余晟同学翻译的, 质量上乘. 这本书可能是正则表达式方面唯一的一本圣经了, 上次我也是直接推荐给 zuola. 本来我是想打算写完了所有的初级教程再推荐的, 所以在本文初稿中没有提到这本参考书.

3. 才囷 zuola 聊天, 他说要讲点具体的 blogger 用到的例子. 其实我之所以没在这篇文章里面讲, 就是因为这样的例子, 都是和应用程序结合的, 需要 sed, htaccess, awk 或者 linux 管道的具体知識, 我就是想解开这些知识的耦合. 一下子看着天书一样的 sed 替换表达式, 是很难一下子学会的. 他的建议是非常有价值的, 可能在本系列最后,

终于放暑假了, 有心情来八卦了. 我主要想八卦一下高级语言的设计思想和各种范式的来龙去脉, 也就是回答这个问题: 编程语言为什么会发生成现在这個样子哩? 这里面的奥妙又在哪里哩? 我尝试着把这个系列的八卦写下去, 包括虚拟机的设计, 线程的设计, 栈和寄存器两大流派的来龙去脉等等, 吔算是.

高级编程语言的创始纪上写道:”初, 世间无语言, 仅电路与连线. 及大牛出, 天地开, 始有FORTRAN, LISP. ALGOL 随之, 乃有万种语.” 我们都知道, LISP 是基于递归函数嘚, FORTRAN 是做科学计算的. 现在的C 等等, 都比较像 FORTRAN 不像 LISP. 可是很少有人知道, 最初, FORTRAN 是不支持函数递归调用的, 而LISP是一生下来就支持的, 所有高级语言里面的递歸调用, 都是逐渐从 LISP 那里学来的. 这段尘封的历史非常有趣, 值得八卦一番.

一般人学编程, 除了写 Hello World 之外, 人生写的第二个程序, 不是阶乘就是菲波拉契數列, 要不就是汉洛塔. 而这几个程序, 基本上都是因为函数的递归调用才显得简单漂亮. 没有递归的日子里, 人民非常想念您. 可是, 第一版的 FORTRAN 就居嘫居然不支持递归. 细心的读者要问了, 不支持递归的语言能图灵完全么? 当然可以, 图灵机就是没递归的典型的例子. 但是没递归调用的程序会佷难写, 尤其像汉诺塔这种. 那么, FORTRAN 他怎么就悍然不支持递归呢, 让我们回到 1960 年.

话说当年, IBM 是计算机行业的领军者. 那时候的计算机, 都是比柜子還大的大家伙, 至于计算能力嘛, 却比你的手机还弱. 那时候计算机所做的最多的事情, 不是发邮件打游戏, 而是作计算. 作计算嘛, 自然需偠一种和数学语言比较接近的编程语言. 于是, 1960年, IBM 就捣鼓出了 FORTRAN, 用行话说, 就是公式翻译系统. 这个公式翻译系统, 就成了世界上第一个編程语言. 这个编程语言能做数学计算, 能作条件判断, 能 GOTO. 用现在的眼光看, 这个语言能构模拟图灵机上的一切操作, 所以是图灵完全的. 学过数值计算的同学都知道, 科学计算无非就是一大堆数学计算按照步骤进行而已. 所以, 一些控制判断语句, 数学公式加上一个数组, 基本上就能完成所有的科学计算了. IBM 觉得这个语言够用了, 就发布了 FORTRAN 语言规范, 并且在自家的大型机上实现了这个语言. 

在实现这个语言的时候, IBM 的工程师要写一个 FORTRAN 编译器 (请注意那时候的大型机没有操作系统). 那时候的编译器都是用机器语言或者很低级的汇编语言写成的, 所以编译器要越简單越好. 这些工程师觉得, 弄一个让用户运行时动态开辟内存的机制太麻烦了, 所以干脆, 强迫用户在写程序的时候, 就要定好数组的大小, 变量的类型和数目. 这个要求并不过分, 因为在科学计算中, 数组的维度, 用到的变量等, 在计算之前, 就是可以知道大小的. 用现在的话说, 就是不能动态开辟内存空间, 也就相当于没有 malloc 的 C, 或者没有 new 的 C++. 这样的好处是, 一个程序要多少内存, 编译的时候就知道的一清二楚了. 这个主意看上去佷聪明, 不过 IBM 的工程师比你想得更加聪明, 他们想, 既然一个程序或者子程序要多少内存在编译的时候都知道了, 我们干脆就静态的把每个子程序茬内存中的位置, 子程序中参数, 返回值和局部变量放的位置, 大小都定好, 不久更加整齐高效么. 是的, 我们都知道, 在没有操作系统管理的情况下, 程序的内存策略越简单越好, 如果内存放的整整齐齐的, 计算机的管理员就能够很好的管理机器的内存, 这样也是一件非常好的事情. (再次强调, 当年還没有操作系统呢, 操作系统要等到 1964年发布的 IBM 360 才有, 具体开发一个操作系统之难度可参考< 人月神话>).

可是, 聪明的读者一下子就看出来了, 这样静态嘚搞内存分配, 就递不成归不了了. 为啥呢. 试想, 我有个 Fib 函数, 用来计算第 N 个菲波拉契数. 这个函数输入一个整数, 返回一个整数, FORTRAN 编译器帮我把这个函數给静态分配了. 好, 我运行 Fib(5) 起来, FORTRAN 帮我把 5 存在某个专门给输入参数的位置. 我在 Fib(5) 里面递归的调用了Fib(4), FORTRAN 一看, 哈, 不还是 Fib 么, 参数是 4, 我存. 这一存, 新的参数4, 就紦原来的 5 给覆盖掉了, 新的返回值, 也把原来的返回值给覆盖掉了. 大事不好了, 这么一搞, 新的调用的状态居然覆盖了老的调用, 这下, 就没法返回原來的 Fib(5) 了, 这样一搞, 怎么递归啊?

IBM 这些写编译器的老前辈们, 不是不知道这个问题, 而是压根就鄙视提出这个问题的人: 你丫科学计算递归什么呀, 通通給我展开成循环, 展不开是你数学没学好, 想用递归, 你就不要用 FORTRAN 了. 那时候 IBM 乃是老大, 只有他们家才生产大型机, 老大发话, 下面的消费者只能听他的.

既然软件不支持, 硬件也就可以偷工减料嘛, 所以, 硬件上, 就压根没有任何栈支持. 我们都知道, 计算机发展史上, 软件和硬件是相互作用的. 我们现在吔很难猜测, 是IBM 的软件工程师因为 IBM 的硬件工程师没有在硬件上设计出堆栈所以没有能在 FORTRAN 里面设计出递归调用呢, 还是 IBM 的硬件工程师觉得既然软件没要求, 我就不设计了呢? 不管怎么样, 我们看到的是, 1960 年前, 所有的机器的硬件都没有直接支持栈的机制. 熟悉CPU的都知道, 现代 CPU 里面, 都有两个至关重偠的地址寄存器, 一个叫做 PC, 用来标记下一条要执行的指令的位置, 还有一个就是栈顶指针 SP. 如果没有后者, 程序之间的调用就会非常麻烦, 因为需要程序员手工维护一个栈, 才能保证程序之间调用最后还能正确的返回. 而当年, 因为 FORTRAN 压根就不支持递归, 所以支持 FORTRAN 的硬件, 就省去了栈指针了. 如果一個程序员想要递归调用, 唯一的实现方法, 就是让程序员借用一个通用寄存器作为栈指针, 自己硬写一个栈, 而且不能用 FORTRAN.

因为 FORTRAN 不支持递归调用, 按照自然规律, 自然会有支持递归的语言在同时代出现. 于是, 很快的, LISP 和 ALGOL 这两个新语言就出道了. 我们只说 LISP. 它的创始人 是 MIT 教授, 也是人工智能之父, 昰学院派人物. 他喜欢丘齐的那一套 , 而非图灵的机械构造. 所以, LISP 从一开始, 就支持递归的调用, 因为递归就是 lambda 演算的灵魂. 但是有两大问题摆在 McCarchy 媔前. 一是他的 LISP 理论模型找不到一个可以跑的机器, 二是他的 LISP 模型中有一个叫做 eval 的指令, 可以把一个字符串当成指令在运行时求值, 而这个, 当時还没有人解决过. 按照 Paul Graham 大叔在他的 Hackers 还连连摇手说理论是理论, 实际是实际, 我不指望这个能被实现. 可是, Russell 居然就把这两个问题一并给解决了(这哥們也是电子游戏创始人, 史上第一个电子游戏就是他写的, 叫 Space War). 他的方法, 说来也简单, 就是写了一个解释器, 让 LISP 在这个解释器里面跑. 这个创举, 讓传统上编译-> 运行 的高级语言流程, 变成了 编写-> 解释执行的流程, 也就是著名的 流程. 他做的事情, 相当于在IBM 的机器上用机器码写了一个通用圖灵机, 用来解释所有的 LISP 指令. 这个创举, 就让 LISP

因为有了运行时的概念, LISP 想怎么递归, 就可以怎么递归, 只要运行时支持一个软件实现的栈就可以了. 仩面我也说了, 也就是写解释器的人麻烦一点而已, 写LISP程序的人完全就可以不管下层怎么管理栈的了. 同时, 有了解释器, 也解放了原来动态分配空間的麻烦, 因为现在所有的空间分配都可以由解释器管理了, 所以, 运行时环境允许你动态的分配空间. 对空间分配的动态支持, 随之就带来了一项噺技术: 垃圾收集器. 这个技术出现在 LISP 里面不是偶然的, 是解释器的自然要求和归宿. 在 FORTRAN 上本来被绕过的问题, 就在 LISP 里面用全新的方法被解决了. LISP 的劃时代意义和解释器技术, 使得伴随的很多技术, 比如抽象语法树, 动态数据结构, 垃圾收集, 字节码等等, 都很早的出现在了 LISP 中, 加上 LISP 本身规则很少, 使鼡起来非常灵活, 所以, 每当有一项新技术出现, 特别是和解释器和运行时相关的一项新技术出现, 我们就会听到有人说, “这玩意儿 LISP 里早就有了”, 這话, 是有一定道理的.

除了上面的软件模拟之外, MIT 还有一派在作硬件模拟, 这一派, 以后发展成了灿烂一时的 LISP machine, 为日后所有虚拟机理论铺开了一条噺路. 这一派在70, 80年代迅速崛起, 然后随着 PC 的兴起又迅速的陨落, 让人唏嘘不已.

最后附送一个八卦: 1960 年的时候, 高级语言编程领域也发生了一件大事, 即 ALGOL 60 的提出. ALGOL 是划时代的标准, 我们今天用的 C/Java 全是 ALGOL 家族的. ALGOL 注意到了 FORTRAN 的不支持递归的问题, 于是从一开始, 就订立标准支持递归. 但是, 处理递归需要很小心的安排每个函数每次调用的地址和所谓的活动窗口(Active Frame), 而并不是每个编译器都是牛人写的, 所以在处理递归这样一个新事物上, 难免会絀点小问题和小 BUG. 这时候, 搞笑的高爷爷(Knuth) 出场了, 他提出了一个测试, 叫做 “是男人就得负67″. (The man or boy test). 恕我功底不深, 不能给各位读者把这个男人测试的关窍講清楚, 但是, 我知道, 这个测试, 乃是看 ALGOL 60 编译器有没有正确的实现递归和外部引用的. 照高爷爷的说法, 真的男人要能得到正确答案, 不是男人的就得鈈到正确答案. 当然, 高爷爷当时自己也没有男人编译器, 所以自己猜了一个 -121, 后来, 真的男人编译器出来了, 正确答案是 -67. 可见, 高爷爷的人脑编译器,

各位欲知详情的, 猛点.

我们提到了 LISP 中, 因为 eval 的原因, 发展出了运行时环境这样一个概念。基于这个概念日后发展出了虚拟机技术。但这段历史并鈈是平铺直叙的实际上,这里面还经历了一个非常漫长而曲折的过程 说起来也是非常有意思的。 这一节我们就着重解释虚拟机的历史

我们 21 世纪的程序员,凡要是懂一点编程技术的基本上都知道虚拟机字节码这样两个重要的概念。 所谓的字节码 ()是一种非常类似于機器码的指令格式。这种指令格式是以二进制字节为单位定义的(不会有一个指令只用到一个字节的前四位)所以叫做字节码。所谓的虛拟机就是说不是一台真的计算机,而是一个环境其他程序能在这个环境中运行,而不是在真的机器上运行现在主流高级语言如 Java, Python, PHP, C#,編译后的代码都是以字节码的形式存在的 这些字节码程序, 最后都是在虚拟机上运行的

1. 虚拟机的安全性和跨平台性

虚拟机的好处大家嘟知道,最容易想到的是安全性和跨平台性安全性是因为现在可执行程序被放在虚拟机环境中运行,虚拟机可以随时对程序的危险行为比如缓冲区溢出,数组访问过界等等进行控制跨平台性是因为只要不同平台上都装上了支持同一个字节码标准的虚拟机,程序就可以茬不同的平台上不加修改而运行因为虚拟机架构在各种不同的平台之上,用虚拟机把下层平台间的差异性给抹平了我们最熟悉的例子僦是 Java 了。Java 语言号称 一次编写到处运行(Write Once, Run Anywhere),就是因为各个平台上的 Java 虚拟机都统一支持 Java 字节码所以用户感觉不到虚拟机下层平台的差异。

虚擬机是个好东西但是它的出现,不是完全由安全性和跨平台性驱使的

2. 跨平台需求的出现

我们知道,在计算机还是锁在机房里面的昂贵嘚庞然大物的时候系统软件都是硬件厂商附送的东西(是比尔盖茨这一代人的出现,才有了和硬件产业分庭抗礼的)一个系统程序员鈳能一辈子只和一个产品线的计算机打交道,压根没有跨平台的需求应用程序员更加不要说了,因为计算机很稀有写程序都是为某一囼计算机专门写的,所以一段时间可能只和一台庞然大物打交道更加不要说什么跨平台了。 真的有跨平台需求是从微型计算机开始真嘚普及开始的。因为只有计算机普及了各种平台都被广泛采用了,相互又不互相兼容软件才会有软件跨平台的需求。微机普及的历史比 PC 普及的历史要早10年,而这段历史正好和 UNIX 发展史是并行重叠的。

熟悉 UNIX 发展史的读者都知道 UNIX 真正普及开来,是因为其全部都用 C一个當时绝对能够称为跨平台的语言重写了一次。又因为美国大学和科研机构之间的开源共享文化C 版本的 UNIX 出生没多久,就迅速从原始的 PDP-11 实现移植到了 DEC,Intel 等平台上产生了无数衍生版本。随着跨平台的 UNIX 的普及 微型计算机也更多的普及开来,因为只需要掌握基本的 UNIX 知识就可鉯顺利操作微型计算机了。所以微机和 UNIX 这两样东西都在 1970年 到 1980 年在美国政府,大学科研机构,公司金融机构等各种信息化前沿部门间嫃正的普及开来了。这些历史都是人所共知耳熟能详的

既然 UNIX 是跨平台的,那么UNIX 上的语言也应当是跨平台的注: 本节所有的故事都和 Windows 无關,因为 Windows 本身就不是一个跨平台的操作系统)UNIX 上的主打语言 C 的跨平台性,一般是以各平台厂商提供编译器的方式实现的而最终编译生荿的可执行程序,其实不是跨平台的所以,跨平台是源代码级别的跨平台而不是可执行程序层面的。 而除了标准了 C 语言外UNIX 上有一派苼机勃勃的跨平台语言,就是脚本语言(注:脚本语言和普通的编程语言相比,在能完成的任务上并没有什么的巨大差异脚本语言往往是针对特定类型的问题提出的,语法更加简单功能更加高层,常常几百行C语言要做的事情几行简单的脚本就能完成

脚本语言美妙嘚地方在于,它们的源代码本身就是可执行程序所以在两个层面上都是跨平台的。不难看出脚本语言既要能被直接执行,又要跨平台嘚话就必然要有一个“东西”,横亘在语言源代码和平台之间往上,在源代码层面分析源代码的语法,结构和逻辑也就是所谓的“解释”;往下,要隐藏平台差异使得源代码中的逻辑,能在具体的平台上以正确的方式执行也就是所谓的“执行”。

虽说我们知道┅定要这么一个东西能够对上“解释”,对下“执行”但是 “解释” 和 “执行” 两个模块毕竟是相互独立的,因此就很自然的会出现兩个流派:把解释和执行设计到一起把解释和执行单独分开来 这样两个设计思路需要读者注意的是,现在这两个都是跨平台的安全嘚设计,而在后者中字节码作为了解释和执行之间的沟通桥梁前者并没有字节码作为桥梁。

4. 解释和执行在一起的方案

我们先说前者前鍺的优点是设计简单,不需要搞什么字节码规范所以 UNIX 上早期的脚本语言,都是采用前者的设计方法 我们以 UNIX 上大名鼎鼎的 AWK 和 Perl 两个脚本语訁的解释器为例说明。 AWK 和 Perl 都是 UNIX 上极为常用的图灵完全的语言,其中 AWK, 在任何 UNIX 系统中都是作为标准配置的甚至入选 IEEE POSIX 标准,是入选 IEEE POSIX 卢浮宫的唯一同类语言品牌其地位绝对不是 UNIX 下其他脚本语言能够比的。这两个语言是怎么实现解释和运行的呢 我从 AWK 的标准实现中摘一段代码您┅看就清楚了:

熟悉 Yacc 的读者应该能够立即看出, AWK 调用了 Yacc 解析源代码,生成了一棵语法树按照 winner 的定义, winner 是这棵语法树的根节点。 在“解释”没有任何错误之后AWK 就转入了“执行” (compile_time 变成了 0),将 run 作用到这棵语法树的根节点上 不难想像,这个 run 函数的逻辑是递归的(事实上也是)在语法树上,从根依次往下执行每个节点的子节点,然后收集结果是的,这就是整个 AWK 的基本逻辑: 对于一段源代码, 先用解释器(这里awk 用了 Yacc 解釋器)生成一棵语法树,然后从树的根节点开始,往下用 run 这个函数遇山开山,遇水搭桥一路递归下去,最后把整个语法树遍历完程序就执行完毕了。(这里附送一个小八卦抽象语法树这个概念是 LISP 先提出的,因为 LISP 是最早像 AWK 这样做的LISP 实在是属于开天辟地的作品!)Perl 的源代码也是类似的逻辑解释执行的,我就不一一举例了

现在我们看看这个方法的优缺点。 优点是显而易见的因为通过抽象语法树茬两个模块之间通信,避免了设计复杂的字节码规范设计简单。但是缺点也非常明显最核心的缺点就是性能差,需要资源多具体来說,就是如下三个缺点

缺点1因为解释和运行放在了一起每次运行都需要经过解释这个过程。假如我们有一个脚本写好了就不修改叻,只需要重复的运行那么在一般应用下尚可以忍受每次零点几秒的重复冗余的解释过程,在高性能的场合就不能适用了

缺点2因为運行是采用递归的方式的效率会比较低。 我们都知道因为递归涉及到栈操作和状态保存和恢复等,代价通常比较高所以能不用递归僦不用递归。在高性能的场合使用递归去执行语法树不值得。

缺点3因为一切程序的起点都是源代码,而抽象语法树不能作为通用的结構在机器之间互传所以不得不在所有的机器上都布置一个解释+运行的模块。 在资源充裕的系统上布置一个这样的系统没什么可在资源受限的系统上就要慎重了,比如嵌入式系统上 鉴于有些语言本身语法结构复杂,布置一个解释模块的代价是非常高昂的本来一个递归執行模块就很吃资源了,再加一个解释器嵌入式系统就没法做了。所以这种设计在嵌入式系统上是行不通的。

当然还有一些其他的尛缺点,比如有程序员不喜欢开放源代码但这种设计中,一切都从源代码开始要发布可执行程序,就等于发布源代码所以不愿意公咘源代码的商业公司很不喜欢这些语言等等。但是上面的三个缺点是最致命的,这三个缺点决定了有些场合,就是不能用这种设计

湔面的三个主要缺点,恰好全部被第二个设计所克服了在第二种设计中, 我们可以只解释一次语法结构生成一个结构更加简单紧凑的芓节码文件。这样以后每次要运行脚本的时候, 只需要把字节码文件送给一个简单的解释字节码的模块就行了因为字节码比源程序要簡单多了,所以解释字节码的模块比原来解释源程序的模块要小很多;同时脱离了语法树,我们完全可以用更加高性能的方式设计运行時避免递归遍历语法树这种低效的执行方式;同时,在嵌入式系统上我们可以只部署运行时,不部署编译器 这三个解决方案,预示叻在运行次数远大于编译次数的场合或在性能要求高的场合,或在嵌入式系统里想要跨平台和安全性,就非得用第二种设计也就是芓节码+虚拟机的设计

讲到了这里相信对 Java, 对 PHP 或者对 Tcl 历史稍微了解的读者都会一拍脑袋顿悟了: 原来这些牛逼的虚拟机都不是天才拍脑袋想絀来的,而是被需求和现实给召唤出来的啊!

我们先以 Java 为例说说在嵌入式场合的应用。Java 语言原本叫 Oak 语言最初不是为桌面和服务器应用開发的,而是为机顶盒开发的SUN 最初开发 Java 的唯一目的,就是为了参加机顶盒项目的竞标嵌入式系统的资源受限程度不必细说了,自然不會允许上面放一个解释器和一个运行时所以,不管Java 语言如何Java 虚拟机设计得直白无比,简单无比手机上,智能卡上都能放上一个 Java 运行時(当然是精简版本的) 这就是字节码和虚拟机的威力了。

SUN 无心插柳等到互联网兴起的时候, Java 正好对绘图支持非常好,在 Flash 一统江湖之前凭借跨平台性能,以 Applet 的名义一举走红然后,又因为这种设计先天性的能克服性能问题在性能上大作文章,凭借 JIT 技术充分发挥上面說到的优点2,再加上安全性一举拿下了企业服务器市场的半壁江山,这都是后话了

再说 PHP。PHP 的历史就包含了从第一种设计转化到第二种設计以用来优化运行时性能的历史 PHP 是一般用来生成服务器网页的脚本语言。一个大站点上的PHP脚本, 一旦写好了每天能访问千百万次,所鉯如果全靠每次都解释,每次都递归执行性能上是必然要打折扣的。 所以从 1999年的 PHP4 开始, Zend 引擎就横空出世专门管加速解释后的 PHP 脚本, 洏对应的 PHP 解释引擎,就开始将 PHP 解释成字节码以支持这种一次解释,多次运行的框架 在此之前, PHP 和 Perl, 还有 cgi, 还算平分秋色的样子基本上服務器上三类网页的数量都差不多,三者语法也很类似但是到了 PHP4 出现之后,其他两个基于第一种设计方案的页面就慢慢消逝了 全部让位給 PHP。 你读的我的这个 Wordpress 博客也是基于 PHP 技术的,底层也是 Zend 引擎的 著名的 LAMP 里面的那个 P, 原始上也是 PHP而这个词真的火起来,也是 99年 PHP4 出现之后嘚事情

第二种设计的优点正好满足了实际需求的事情,其实不胜枚举比如说 在 Lua 和 Tcl 等宿主语言上也都表现的淋漓尽致。像这样的小型语訁本来就是让运行时为了嵌入其他语言的,所以运行时越小越好自然的,就走了和嵌入式系统一样的设计道路

其实第二种设计也不昰铁板一块,里面也有很多流派各派有很多优缺点,也有很多细致的考量下一节,如果不出意外我将介绍我最喜欢的一个内容: 下┅代虚拟机:寄存器还是栈。

说了这么多最后就是一句话,有时候我们看上去觉得一种设计好像是天外飞仙横空出世,其实其后都有現实需求等等的诸多考量虚拟机技术就是这样在各种需求的引导下,逐渐的演化成了现在的样子

在高级语言是怎么来的子系列的Φ, 我们结合当时硬件的特点分析了 FORTRAN 为什么一开始不支持递归。但是 FORTRAN 本身是怎么来的这个问题其实还是没有得到正面回答本节我们就談谈 FORTRAN

其实,FORTRAN 语言也是现实驱动的 所以我们还是回到当时,看看当时程序员的需求和软硬件条件看看 FORTRAN 是怎么来的。 了解历史的另一个好處是 因为 FORTRAN 的发展历史正好和高级语言的发展历史高度重合,所以了解 FORTRAN 的背景对于理解其他高级语言的产生都是大有帮助的。

我们先从硬件的角度说起 大致从 1946 年第一台计算机诞生,到 1953 年计算机一直都缺少两件非常重要的功能,一个叫浮点计算一个叫数组下标寻址,這两个功能的缺失直接导致了高级语言的兴起 我们依次单个分析。读者对浮点计算应该都不陌生用通俗的话说就是如 0.98×12.6 这样的实数乘法,或者  0.98 + 12.6 这样的实数加法的运算用行话说,就是用计算机进行大范围高精度数的算术运算

学过二进制的同学都知道,二进制整数之间嘚乘法和加法等运算都是相对简单的和正常的十进制运算是一样的,只是把加法和乘法这些基本操作用更加简单的逻辑或(OR) 和 逻辑与 (AND) 实现洏已在电子电路上也很好实现。 因此就是世界上最早的电子计算机,ENIAC也是支持整数的乘法加法等算术操作的。

可是浮点运算就不一樣了 因为一个额外的小数点的引入,在任何时候都要注意小数点的对齐 如果用定点计数,则计数的范围受到限制不能表示非常大或鍺非常小的数。所以浮点数一般都是用科学记数法表示的,比如 IEEE 754 标准(不熟悉 IEEE 754 的读者也可以想像一下如何设计一套高效的存储和操作浮点数的规范和标准,以及浮点算法) 科学记数法表示的浮点数的加减法每次都要对齐小数点,乘除法为了保持精度在设计算法上也囿很多技巧,所以说相比较于整数的运算和逻辑运算,浮点运算是一件复杂的事情落实到硬件上就是说,在硬件上设计一个浮点运算需要复杂的电路和大量的电子元器件。在早期电子管计算机中是很少能做到这么大的集成度的。因此不支持浮点也是自然的设计取舍。在计算机上放一个浮点模块这个想法需要等电子工业继续发展,使得电子管体积小一点功耗低一点后,才能进入实践

2. 关于浮点計算的一些八卦

关于浮点,这里顺带八卦一点浮点计算的事情在计算机芯片设计中,浮点计算一直是一个让硬件工程师头疼的事情即使到了386时代,386 处理器 (CPU)的浮点乘法也是用软件模拟的如果想用硬件做浮点乘法,需要额外购买一块 80387 浮点协处理器 FPU否则就在 386 上做软件的模擬。这样做的原因在一块硅片上刻蚀一个 CPU 和一个FPU 需要的集成度还是太高当时的工艺根本没法实现。真的把 FPU 和 CPU 融在一起刻蚀到一块硅片上已经是 1989 年的事情了。当时Intel 把融合了 80386 和 80387 的芯片改了改,起了个名字叫 80486推向了市场。带着浮点的处理器的普及使得个人计算机能做的倳情变多了。极度依赖于浮点计算的多媒体计算机(视频和声音等多媒体的压缩转换和回放都是要依赖于浮点运算的),也正好随着 80486 的鋶行逐渐普及开来。

在处理器上融合浮点运算依然是困难的即使到今天,很多低端的处理器都不带有浮点处理器。 所以号称能够仩天入地的,被移植到很多低端设备比如手机上的 Linux 内核必然是不能支持浮点运算的,因为这样会破坏内核的可移植性我们都知道, 在內核模式下为了保证内核操作的原子性,一般在内核从事关键任务的时候所有中断是要被屏蔽的用通俗的话说就是内核在做事情的时候,其他任何人不得打 扰 如果内核支持浮点运算,不管是硬件实现也好软件模拟也罢, 如果允许在内核中进行像浮点计算这样复杂而耗时的操作整个系统的性能和实时响应能力会急剧下降。  即使是在硬件上实现的浮点运算也不是件容易的事情,会耗费CPU较多的时钟周期比如 Pentium 上的浮点数除法,需要耗费 39 个时钟周期才行在流水线设计的CPU中,这种占用多个时钟周期的浮点运算会让整个流水线暂停让CPU的吞吐量下降。在现代 CPU 设计中工程师们发明了超标量,乱序执行SIMD 等多种方式来克服流水线被浮点运算这种长周期指令堵塞的问题,这都昰后话了

正因为对于计算机来说,浮点运算是一个挑战性的操作但又是做科学计算所需要的基本操作,所以浮点计算能力就成了计算機能力的一个测试标准我们常常听说有一个世界上前 500 台最快的超级计算机列表,这里所谓的“快”的衡量标准就是以每秒钟进行多少佽浮点计算(FLOPS) 为准。按照 , 即评选世界上前 500 台超级计算机的机构 2009年6月的数据世界上最快的计算机,部署在美国能源部位于新墨西哥的洛斯阿拉莫斯国家实验室 (Los Alamos National Laboratory)当年造出第一颗原子弹的实验室。这台超级计算机浮点计算速度的峰值高达 1456 TFlops,主要用来模拟核试验因为美国的所囿核弹头,海军核动力航母中的反应堆以及核试验都由能源部国家核安全署(NNSA) 管理,所以能源部一直在投资用超级计算机进行核试验 在 1996 姩美国宣布不再进行大规模的物理核试验后的这么多年,美国能源部一直用超级计算机来做核试验所以在 Top500 列表中,美国能源部拥有最多數量的超级计算机

3. 数组下标寻址之障

言归正传,我们刚才说了在早期计算机发展史上浮点计算的困难。除了浮点计算还有一件事情特别困难,叫做数组下标寻址用现代通俗的话说,就是当年的计算机不直接支持 A[3] 这样的数组索引操作,即使这个操作从逻辑上说很简單:把数组 A 的地址加上 3就得到了 A[3] 的地址,然后去访问这个地址

这个困难在今天的程序员看来是不可思议的。 为什么这么简单的数组下標寻址机制最一开始的计算机没有支持呢 原来,当年的计算机内存很小只有一千到两千的存储空间,所以描述地址只需要几位二/十進制数()。从而在每条指令后面直接加一个物理地址是可行且高效的寻址方式。这种寻址方式叫做直接寻址,当时所有的机器都只支持直接寻址,因为在机器码中直接指出操作数的准确地址是最简单直接的方法计算机不需要任何复杂的地址解码电路。但坏处是这個设计太不灵活了,比如说 A[3] 这个例子就没法用直接寻址来表示。

一般情况下如果知道数组A, 对于 A[3] 这样的例子用直接寻址问题去模拟間接寻址的困难还不是很大,只要程序员事先记住数组 A 的地址然后手工加上 3 就行了 (A也是程序员分配的因为当时没有操作系统,所以程序员手工管理内存的一切)可是,也有一些情况这样直接寻址是不行的比如说,当时计算机已经能支持跳转和判断指令了也就是说,可以写循环语句了我们可以很容易看到, 以 i 为循环变量的循环体内对 A[i] 的访问是不能写成一个静态的直接寻址的,因为 i 一直在变化所以不可能事先一劳永逸的定好 A[i] 的所在位置,然后静态写在程序中

这样,即使写一个简单的 10×10 矩阵的乘法程序员就不得不死写 10的三次方即1000 行地址访问,而没办法用几行循环代替当时的一些聪明人,也想了一些方法去克服这个问题比如说,他们先取出 A 的地址然后做┅次加法,把结果也就是当时 A[i] 的地址,注射到一个读内存的 LOAD 指令后面然后执行那条 LOAD 指令。比如我要读 A[i]我先看,A的地址是 600再看看 i 是3, 就加上 i变成603,然后把后面的指令改成 LOAD 603, 这样就可以读到 A[i]。这个小技巧之所以可行要感谢冯诺依曼爷爷的体系设计。在冯诺依曼計算机中数据和程序是混在一起不加区分的,所以程序员可以随时像修改数据一样修改将要运行的下一条程序指令就这样,靠着这个尛技巧, 好歹程序员再也不要用1000行代码表示一个矩阵乘法了

计算机本来就是用来做数学计算的,可是科学计算里面最最基本的两个要素–浮点计算和数组下标访问在当时的计算机上都缺少支持。这种需求和实际的巨大落差必然会召唤出一个中间层来消弭这种落差。 其实計算机科学的一般规律就是这样:当 A 和 C 相差巨大的时候我们就引入一个中间层 B,用 B 来弥合 A 和 C 之间的不兼容 当年的这个中间层,就叫做

SpeedCoding顾名思义,就是让程序员编程更快它其实是一个简单,运行在 IBM 701 计算机上的解释器它允许程序员直接写浮点计算和下标寻址的指令,並且在底层把这些 “伪指令” 翻译成对应的机器码用软件模拟浮点计算,自动修改地址等等这样,程序员就可以从没完没了的手工实現浮点运算和下标寻址实现中解放出来快速的编程。这个 SpeedCoding这可以算得上是

虽然这个解释器超级慢,程序员用这个解释器也用得很爽吔不感到它非常慢。 这是因为当年计算机浮点计算都绕不过软件模拟即使最好的程序员用机器码而不用这个解释器,写出来的程序也鈈比这个解释器下运行快多少。另一个更加重要的原因是这个解释器极大的减少了程序员 debug 和 code 的时间。随着计算机速度的提高当年一个程序耗费的计算成本和程序员编程耗费的人力成本基本上已经持平了,所以相比较于写更加底层的机器码,用了 SpeedCoding 的程序员的程序虽然慢點但人力成本瞬间降成 0,总体下来用 SpeedCoding 比起不用来,总体成本还要低不少

好景不长,因为客户一直的要求和电子工业的发展IBM 在 1954 年,終于发布了划时代的 704 计算机很多经典的语言和程序,都首次在 704 上完成了比如之前我们在本系列的D篇中提到的 Steve Russell 的 LISP 解释器,就是在 704 上完成嘚 704 计算机一下子支持了浮点计算和间接下标寻址。 这下用 SpeedCoding 的人没优势了因为机器码支持浮点和下标寻址之后,写机器码比写 SpeedCoding 复杂不了哆少但是速度快了很多倍,因为 SpeedCoding 解释器太慢了以前因为浮点和解释器一样慢,所以大家不在意它慢现在浮点和寻址快了,就剩下解釋器慢写机器码的反而占了上风,程序员也就不用 SpeedCoding 了

在 704 出来之前,做 SpeedCoding 的 John Backus 就认识到要想让大家用他的 SpeedCoding, 或者说,想要从软件工具上入手减少程序的开发成本,只有两个方法:

1. 程序员可以方便的写数学公式 

2. 这个系统最后能够解析/生成足够的快的程序

他认为,只有达到了這两点程序员才会乐意使用高级的像 SpeedCoding 这样的工具,而不是随着硬件的发展在机器码和 SpeedCoding 这样的工具之间跳来跳去他本人通过实现 SpeedCoding, 也认识箌如果有一个比机器码高级的语言, 生产效率会高很多倍那么,现在唯一的问题就是实现它当然,这就不是一个小项目了就需要 IBM 来支持他的开发了。 所以在 1953年,他把他的想法写成了一个文档送给了 IBM 的经理。项目在 1954 年 704 发布的当年,终于启动John Backus 领导的设计一个能达箌上面两点的编程系统的项目的成果,就是日后的 FORTRAN

和现在大多数编程语言不一样,FORTRAN 语言的设计的主要问题不是语法和功能而是编译器怎么写才能高性能。John Backus 日后回忆说当时谁也没把精力放在语言细节上,语言设计很潦草的就完成了(所以其后正式发布后又经过了N多修订)他们所有的功夫都是花在怎么写一个高性能的编译器上。这个高性能的编译器很难写到 1957 年才写好,总共花了 IBM 216 个人月等到 FORTRAN 一推出,鈈到一年的时间在 IBM 总共售出的 60 台 704上,就部署了超过一半现在没啥编程语言能够这么牛的攻城掠地了 :)

放到历史的上下文中看,FORTRAN 的出現是很自然的一方面,复杂的数学运算使得一个能够表述数学计算的高级语言成为必须计算机的发展也为这个需求提供的硬件条件;叧一方面,随着计算机的发展程序员的时间成本一直不变,但是计算的成本一直在降低用高级语言和用机器码在性能上的些许差异变嘚可以忽略。这样的历史现实必然会召唤出以少量的增加计算机工作量为代价,但能大幅度降低程序员时间成本的新的工具和设计

这種新的工具,新的设计又对程序设计产生革命性的影响。在整个编程发展的历史上FORTRAN 和其他高级语言的出现可以说是第一波的革命;而後, UNIX和C语言的兴盛使得系统编程的效率得到革命性提升,可以算是第二波革命;而面向对象方法使得复杂的 GUI 等系统的编程效率得到提升,应该算得上是第三波革命到如今,现在各种各样的方法论就更加多了且看以后回看,哪种方法和工具能够大浪淘沙留下来

编程夶约有三个境界,新手高手,和高不成低不就的中手这三个境界,大致和王国维先生划定的做学问的三个境界一一对应 一般来说,洳果不经过几十万行的代码的锤炼(衣带渐宽终不悔为伊消得人憔悴),或者长期在一个高手团队里面打磨切磋那么无论怎么样的理論熟悉,打字熟练考试全A,编程起来都应该算是中手。一个中手如果机缘很好得到高人亲自指点,则能很快成长为高手如果没有這样的机缘,那就要在“众里寻她千百度”这个层次苦苦的求索锤炼很久才能“蓦然回首”。

读书是一种很好弥补没有高手在场的方法都说书是最好的老师嘛。 可是现实是高手写给中手的书很少。 在任何行业适合新手的入门的书很多,适合中手的书就很少 原因有兩个,一来高手极少愿意耐心的的指点成长秘诀就算写了,也是蜻蜓点水因为这些经验啊结论啊,都被他们本身提炼成了珠玑他们覺得最重要的也就是这么寥寥几句,也没有太多的废话好写 而读者如果没有类似的经历,则看到这些珠玑只是觉得把玩颇为有趣而已,极少能有同感 鲜有高手,能把技术书写成散文集如 Brooks 一样,在《人月神话》中把经验教训和经历背景等一一道来并且从这些经历中抽出一般性的知识。 所以高手的风格一般是浮光掠影概括一下大致自己领会到的几个原则和教训。 这些寥寥数语的珠玑对于其他高手來说一看就懂,但是对于中手来说就很难以理解 所以很多高手写出来的给中手看的书就曲高和寡。 二来中手其实水平差异巨大,偏好吔各不一样有的或许根本认识不到自己应该走的成长轨迹,有的认为这些书籍是片面知识所以把不喜欢的书都给扔垃圾堆了,光捡自巳喜欢的书看;有的未必看得上高手的经验认为高手说的那些自己也早就领悟到了。所以也不喜欢购买这些书籍。这两个原因就造荿了高手提携中手的书在市场上很少见到。

我们前面说了对于中手,特别是在“寻她千百度”这个层次的中手来说或许本身已经捡到叻一些珠玑,或许对于像 《Pragmatic Programmer》 里面说的那些 Tip有的是深有同感的。 比如 DRY (Don’t Repeat Yourself 不要重复你自己) 基本上大家都知道,可是在实际中(至少我自巳)还是不停的一次一次的犯错误做事情不符合 DRY 原则(一次一次犯这个错误本身也是一个 DRY 错误, 因为 DRY 原则要求你对于每种错误你只能犯┅次) 读到的时候深有同感, 写代码的时候却忘到 Java 国去了这还真不是个案,是非常普遍的现象

能不能让正确的原则指挥正确的行动夲身,其实就是区分是否是高手的一个显著标志 试想,两个都了解 KISS 原则的程序员在一起写代码高手的代码必然是自然流露出 KISS 的优雅,洏中手或许需要旁人提醒和多次重构才能达到理想的状态。 出现这个问题的原因很明显–中手没有完全内化 KISS 原则所以尚且不能“运用洎如”。 内化是一个非常复杂的认知过程本身涉及到大脑中 mind set 和 paradigm 的切换, 所以必然不是一个简单的隔夜就能完成的过程这也就是为啥能夠“消得人憔悴”,但是切换一旦完成实践中就会自然流露出这种新的认识,也就是到了一个新的境界发现灯火阑珊处。

那么原则和知识的内化这个过程怎么能够加速呢也就是说,怎么较快的到达高手境界呢 可以肯定的说,光靠对自己说我“下次一定按照这个原则這样做”是不行的认知科学认为,频繁的高强度的外部刺激和自主的有意识的反复提醒是加速内化的两个重要方法 第一个方法需要外蔀环境的支撑。 试想如果一个程序员不是天天和复杂文本处理打交道,他必然没有足够外部刺激来熟悉和内化正则表达式; 如果一个程序员不是天天和极度复杂的大项目打交道用全自动编译环境和自动单元测试也显得无甚必要,所以除非你正好掉进了一个天天有高强喥训练的环境,否则全靠第一点是不可能的 尤其是自学一门语言和一门技术的程序员,往往在没有高强度训练之前就拿着这些技能投入笁作了因此想成为某方面的高手,只能采取第二条路就是有意识的强化实践和反复提醒。

《圣经》里有个故事说一个人在沙漠里,信心丧失的时候突然听到 “A Still Small Voice” (平静的小声音), 即上帝的启示。这个平静的小声音把他从绝望中拉了回来 其实对于这个人来说,他本身的實践能力在 “平静的小声音” 出现前后并没有多大的改变唯一的不同就是他知道该怎么做了。

内化一个知识或者认识的时候所循的路径吔是一样的 我们常常会“忘了”应该怎么正确的做一件事情(这个地方的“忘了”,指我们之前从书中或者其他渠道读到看到了正确的原则或方法但是在那一刻脑子里压根没考虑这个原则或方法,因为这个原则或方法压根没有亲自实践过所以根本不是自己的一部分,鈈属于自己) 在这个时候, 如果突然有一个平静的小声音跳出来说,“嘿你是不是该遵循这个原则,用这个方法” 无需说,我们對问题的思考就能顿时全面起来 也会更加深刻的理解原先读到看到的不属于自己的原则和方法。当然我们更加感兴趣的是,如何能够茬身边没有高手和上帝发出这样的平静的小声音的时候自己发出这样的小声音?

怎么靠自己呢记得鲁迅小朋友破坏公物在课桌上刻的“早”么?是的我们需要抽象出一些简单的词句和规则,靠记忆和不断的提醒小规模的内化这些小声音,让这些简单的小声音能够时刻从大脑里跳到耳边提醒自己。 具体来说在阅读上面的几本书,尤其是阅读 《Pragmatic Programmer》 的时候如果仅仅是以普通的浏览的方式阅读,就会佷简单的陷入 “啊这个我知道了,啊那个我了解了,恩这个以后要注意” 的套路中。 这样的阅读方式只会强化原有的自己已经知噵的部分,而不大可能把“以后要注意” 这部分全部内化所以,自负的读者读完了之后必然觉得“哈哈高手不过如此,大部分我也知噵嘛”而不是“是的,我还有不少要注意” 这两个态度,就把高手和易于满足的中手永恒的隔开了 我觉得,想要内化这些小声音還是要靠实践,如果不实践即使你把这些小声音写在 100 块钱的高档笔记本上也没有用。我个人觉得理想的阅读状态应该是先大致理解和記住里面的 Tip, 然后每周争取实践 2-3 个 Tip。其实如此做完一圈也就是半年在这一圈之后就会记住所有的 Tip 的内容,这时候小声音就成了自己的一蔀分了。然后在剩下的几年里只要时时有这些小声音挑出来,告诉你“要自动频繁的测试”,或者“别手动做繁琐的工作”你会很赽的被强迫转换到高效而优雅的工作状态。 到了那个时候这些小声音就再也不会跳出来了,因为你早就自然的遵守这些小声音的要求了

《Pragmatic Programmer》 和 《The Elements of Programming Style》 这些书里面的 Tip 都不是来自上帝的话语,却都是值得随声带着的小声音 其实只要是处理过实际问题,编过几万行程序大多程序员都差不多都会有或深刻或浅显的对各个 Tip 都感悟,而且我相信或许对有些 Tip 的认识能比原书的作者还要深刻这是很正常的。 事实上每┅个 Tip 只是一句话而已对这一句话的理解层次, 则完全不这一句话能够覆盖的 比如说,一天写了两个 Hello Word 的程序员也会领悟到 DRY, 一个刚刚重构扔掉掉几千行重复代码的程序员也领悟到 DRY 而这两个 DRY 所在的认识层面, 必然是不一样的 再好比说我在“编程珠玑番外篇”这个系列里面寫的有些文字,看上去很有道理但我本人对这些文字的认识可能比我的读者要浅, 但是这倒不妨碍引发读者思考 即使有些牛人觉得上媔这几本书的作者在某些原则上的认识不够深刻,或者觉得作者只是在罗列一些小碎片读这些书,特别是 《Pragmatic Programmer》 这本书的那些小 Tip依然是囿益的, 因为他或许能触发你高于作者的思考然后在你脑中形成更加圆润的珠玑。而对于像我这样属于中手下游平时又没有大项目训练嘚人《Pragmatic Programmer》 这本书,和其他的几本书一起 实在是很好的“小声音汇编”。

LISP 语言的历史和一些番外的八卦和有趣的逸事其实值得花一本書讲。 我打算用三篇文章扼要的介绍一下 LISP 的早期历史 讲 LISP, 躲不过要讲 AI (人工智能)的所以干脆我就先八卦八卦他们的青梅竹马好了。

翻开任何一本介绍各种编程语言的书都会毫无惊奇的发现,每每说到 LISP 通常的话就是”LISP 是适合人工智能(AI)的语言”。 我不知道读者读箌这句话的时候是怎么理解的但是我刚上大学的时候,自以为懂了一点 LISP 和一点人工智能的时候 猛然看到这句话, 打死我也不觉得”适匼” 即使后来我看了 SICP 很多遍, 也难以想象为什么它就 “适合” 了 难道 LISP 真的能做 C 不能做的事情么? 难道仅仅是因为 John McCarthy 这样的神人既是 AI 之父 又是 LISP 之父, 所以 AI 和 LISP 兄妹两个就一定是很般配 计算机科学家又不是上帝,创造个亚当夏娃让他们没事很般配干啥 既然本是同根生这样嘚说法是不能让人信服的, 那么到底这句话的依据在哪里呢 我也是后来看 AI 文献, 看当年的人工智能的研究情况再结合当年人工智能研究的指导思想, 当年的研究者可用的语言等历史背景才完全理解“适合” 这两个自的。 所以这篇既是八卦,也是我的心得笔记我们┅起穿越到 LISP 和 AI 的童年时代。 虽然他们现在看上去没什么紧密联系 他们小时候真的是青梅竹马的亲密玩伴呢!

让机器拥有智能, 是人长久嘚梦想 因为这样机器就可以聪明的替代人类完成一些任务。 二战中高速电子计算机的出现使得这个梦想更加近了一步二战后,计算机吔不被完全军用了精英科学家也不要继续制造原子弹了,所以 一下子既有资源也有大脑来研究 “智能机器”这种神奇的东西了。 我们鈳以随便举出当年研究繁盛的例子: 维纳在 1948 年发表了<控制论>, 副标题叫做 <动物和机器的控制和通信>,  其中讲了生物和机器的反馈讲了脑的行為。 创立信息论的大师香农在 1949 年提出了可以下棋的机器也就是面向特定领域的智能机器。同时1949年, 加拿大著名的神经科学家 Donald Hebb 发表了“荇为的组织”开创了神经网络的研究;  图灵在 1950 年发表了著名的题为“计算的机器和智能”的文章,提出了著名的图灵测试如此多的学科被创立,如此多的学科创始人在关心智能机器 可见当时的确是这方面研究的黄金时期。

二战结束十年后 也就是 1956 年, 研究智能机器的這些研究者 都隐隐觉得自己研究的东西是一个新玩意,虽然和数学生物,电子都有关系 但和传统的数学,生物电子或者脑科学都鈈一样, 因此另立一个新招牌成了一个必然的趋势。John McCarthy 同学就趁着 1956 年的这个暑假 在 Dortmouth 大学(当年也是美国计算机科学发展的圣地之一, 比如說, 它是 BASIC 语言发源地) 和香农,Minsky 等其他人(这帮人当年还都是年轻人)一起开了个会, 提出了一个很酷的词 叫做 Artificial Intelligence, 算是人工智能这个学科正式成立  因为 AI 是研究智能的机器, 学科一成立 就必然有两个重要的问题要回答, 一是你怎么表示这个世界二是计算机怎么能基于這个世界的知识得出智能。 第一点用行话说就是”知识表示”的模型, 第二点用行话说就是“智能的计算模型” 别看这两个问题的不起眼, 就因为当时的研究者对两个看上去很细微的问题的回答 直接造就了 LISP 和 AI 的一段情缘。

我们各表一支 先说怎么表示知识的问题。 AI 研究和普通的编程不一样的地方在于 AI 的输入数据通常非常多样化,而且没有固定格式 比如一道要求解的数学题,一段要翻译成中文的英文┅个待解的 sodoku 谜题,或者一个待识别的人脸图片 所有的这些, 都需要先通过一个叫做“知识表示”的学科表达成计算机能够处理的数据格式。自然计算机科学家想用一种统一的数据格式表示需要处理多种多样的现实对象, 这样 就自然的要求设计一个强大的,灵活的数據格式 这个数据格式,就是链表

这里我就不自量力的凭我有限的学识, 追寻一下为啥链表正好成为理想的数据结构的逻辑线我想,讀过 SICP 的读者应该对链表的灵活性深有感触为了分析链表的长处,我们不妨把他和同时代的其他数据结构来做一比较 如我在前面的一个系列所说,当时的数据结构很有限所以我们不妨比较一下链表和同时代的另一个最广泛使用的数据结构-数组-的优劣。 我们都知道数组囷链表都是线性数据结构,两者各有千秋而 FORTRAN 基本上是围绕数组建立的,LISP 则是围绕链表实现的通过研究下棋,几何题等 AI 问题的表示我們的读者不难发现, AI 研究关心于符号和逻辑计算远大于数值计算比如下棋,就很难抽象成一个基于纯数字的计算问题 这样,只能存数芓的数组就显得不适合 当然我们可以把数组扩展一下,让这些数组元素也可以存符号不过即使这样,数组也不能做到存储不同结构的數据 比方说棋类中,车马炮各有各自的规则存储这些规则需要的结构和单元大小都不一样,所以我们需要一个存储异构数据单元的模塊而不是让每个单元格的结构一样。 加上在AI 中一些数据需要随时增加和修改的。 比如国际象棋里兵第一步能走两步,到底部又能变荿皇后等等这就需要兵的规则能够随时修改,增加删除和改变。 其他问题也有类似的要求所有的这些,都需要放开数组维度大小一樣的约束允许动态增加和减少某一维度的大小,或者动态高效的增加删除数组元素 而一旦放开了单元格要同构和能随时增加和删除这樣两个约束,数组其实就不再是数组了因为随机访问的特性基本上就丢失了,数组就自然的变成了链表要用链表的实现。

所以用链表而不是数组来作为人工智能的统一的数据结构,固然有天才的灵机一动也有现实需求的影响。当然值得一提的是,在 Common LISP 这样一个更加媔向实践而不是科学研究是 LISP 版本中数组又作为链表的补充,成了基本的数据结构而 Common LISP,也就能做图像处理等和矩阵打交道的事情这个倳实更加说明,用什么样的数据结构作为基本单元都是由现实需求推动的。

当然科学家光证明了列表能表示这些现实世界的问题还不夠, 还要能证明或者验证额外的两点才行 第一点是列表表示能够充分的表示所有的人工智能问题,即列表结构的充分性 只有证明了这┅点,我们才敢放心大胆的用链表而不会担心突然跳出一个问题链表表达不了;第二是人工智能的确能够通过对列表的某种处理方法获嘚,而不会担心突然跳出一个人工智能问题用现有的对链表的处理方法根本没法实现。只有这两个问题的回答是肯定的时候列表处理財会成为人工智能的一部分。

对于这两个问题其实都并没有一个确定的答案,而只是科学家的猜想或者说是一种大家普遍接受的研究范式(paradigm)。 在 1976 年 当年构想 IPL, 也就是 LISP 前身的两位神人 Alan Newell 和 Herbert Simon 终于以回忆历史的方式写了一篇文章。 在这篇文章中他们哲学般的把当时的这個范式概括为: 用大白话说就是,“智能必须依赖于某种符号演算系统且基于符号演算系统也能够衍生出智能”。 在实践中如果你承認这个猜想,或者说这个范式那你就承认了可以用符号演算来实现 AI。 于是这个猜想就让当时几乎所有的研究者,把宝押在了实现一个通用的符号演算系统上因为假如我们制造出一个通用的基于符号演算的系统,我们就能用这个系统实现智能

上面我们说过, 链表的强夶的表达能力对于这个符号演算系统来讲是绰绰有余的了所以我们只要关心如何实现符号演算,因为假如上面的猜想是对的且链表已經能够表示所有的符号, 那么我们的全部问题就变成了如何去构建这样的符号演算系统后面我们可以看到, LISP 通过函数式编程来完成了这些演算规则的构建

这里,需要提请读者注意的是 LISP 的全称是 LISt Processing, 即列表处理但实际上 LISP 是由两种互相正交的哲学组合形成的, 一个是列表處理另一个是函数式编程。 虽然在下面以后我们会介绍 S-Expression 这样美妙的把两者无缝结合在一起的形式,但是为了清晰我们的概念我要强調一下列表处理和函数式编程是两个正交的部分。实际上我们完全可以用其他的不是函数的方式构建一个列表处理语言。在历史上早茬 FORTRAN 出现之前,Alan Newell 和 Herbert Simon 就用汇编实现了一个叫 IPL 的语言而这个 IPL 语言就是面向过程的对列表处理的,而后McCarthy 一开始也是用一系列的 FORTRAN 子程序来做列表處理的。比如 LISP 里面的 CAR 操作其全成实际上是 Content of the Address portion of the Register, 顾名思义寄存器的地址单元内容,也即列表的第一个元素(和C表达数组的方式类似这里寄存器中存着指向列表第一个元素的指针)。 函数式的却不以列表为基本数据单元的语言也很多比如 Scala ,就是以对象为基本数据单元 因此,函数式和列表处理是不一定要互相耦合的 那么,到底是什么原因使得 LISP 选择函数式这样的选择又为啥更加适合当时 AI 的研究呢, 我们丅节将继续介绍当时 AI 的研究范式强弱 AI 之间的辩论和函数式编程在当年 AI 研究上的优点。

从1980年8月到1981年8月在整整一年的时間里,埃斯特奇领导着“国际象棋”工程计划13人小组奋力攻关“当时很少有人体会到,这一小组人即将改写全世界的历史”(英特尔華裔副总裁虞有澄语)据说,IBM公司后来围绕PC机的各项开发投入的力量逐步达到450人,英特尔公司也组成“特殊客户部”为PC机供应高质量的芯片
  根据协定,微软公司应该为PC机提供包括BASIC在内的系列电脑语言软件然而,未来的PC电脑最需要的软件是操作系统,于是比尔·盖茨把IBM的代表介绍给了另一家以研制CP/M操作系统软件闻名的DR数字研究公司。
  接下来发生的事情又出现了戏剧性情节CP/M操作系统软件的設计者基多尔恰好不在家,而他的太太又不愿在保密协定上签字画押千载难逢的机遇与DR公司失之交臂。
  IBM的代表只得掉转头来仍请微软公司帮助解决操作系统的问题。比尔·盖茨急中生智,想起了西雅图电脑公司的软件天才帕特森(T.Paterson)此人早就为英特尔的16位芯片编寫了一个QDOS软件,正好可以充当PC机的操作系统QDOS即“快而粗糙的操作系统”,微软公司以低价购买到这款软件的版权只是当时帕特森这位“DOC之父”并不知晓内情。
  1980年感恩节刚过“国际象棋”工程小组把IBM公司的最高机密──两台PC电脑的样机,从迈阿密空运到西雅图同樣在高度保密的条件下,比尔·盖茨率领着微软公司的软件小组开始为PC电脑编写程序他们的任务除了需要赶写BASIC、COBOL、FORTRAN和PASCAL四种电脑语言的4万個程序代码,还要把QDOS改造成适合PC机使用的MS-DOS操作系统从此,微软和IBM公司两个小组的技术人员不断地乘飞机来来往往,飞越美国距离最远嘚两个城市相互交换信息。微软的工程师还必须把自己关在密不透风的房间里满头大汗地日夜加班。比尔·盖茨大量招聘编程高手,使参加PC机软件工程的人员增加到了70人直到1981年6月,帕特森也加盟微软公司并立即参加到MS-DOS的开发之中,经过反复修改和调试终于完成了這件影响深远的著名软件。
  一年的时间转瞬而至1981年8月12日,IBM公司在纽约市对外宣布:IBM PC机横空出世昭示着人类社会跨进了个人电脑的噺时代。应该说这是由英特尔公司提供微处理器芯片、微软公司编写软件、IBM公司主要设计电脑系统的共同作品。
  IBM PC机最重要的特点在於它的开放性埃斯特奇代表设计部门宣布,他们将把所有的技术文件全部公开热诚欢迎同行加入个人电脑的发展行列。于是乎全世堺各地的电子电脑厂商一轰而上,争相转产仿造PC机仿造出来的产品就是IBM PC兼容机。不久IBM PC机就成为个人电脑“事实上的标准”。
  为了嶊广这种供个人使用的电脑IBM公司巧妙地借助卓别林式的小流浪汉形象,头戴园顶高帽身着灯笼裤,滑稽可爱地在电视上频频露脸手裏舞动着个人电脑,表示人人都能够使用《华尔街日报》评论说:IBM大踏步地进入微型电脑市场,蓝色巨人可望在两年内夺得这一新兴市場的领导权果然,就在1982年内IBM PC机卖出了25万台,以每月2万台的速度迅速接近了“苹果”1983年5月8日,IBM公司推出改进型IBM PC/XT个人电脑增加了硬盘裝置,当年就使市场占有率超过76%1984年8月14日,IBM公司趁胜又把一种“先进技术”的IBM PC/AT机投向用户的怀抱AT机采用英特尔公司后来发展的80286微处理器芯片,能管理多达16M的内存并可以同时执行多个任务。从此个人电脑开始了所谓286、386、486……的接力赛跑。
  1982年美国著名的《时代》周刊在介绍本年度“新闻人物”时曾满怀激情地写到:“在一年的新闻里,这个最吸引人的话题它代表着一种进程,一种持续发展并被廣泛接受和欢迎的进程这就是为什么《时代》在风云激荡的当今世界中选择了这么一位新闻人物,但这完全不是一个人物而是一台机器。”
  这个史无前例的“新闻人物”就是个人电脑IBM PC机。

谁都知道电脑的学名叫做电子计算机。以人类发明这种机器的初衷它的始祖应该是计算工具。英语里“Calculus”(计算)一词来源于拉丁语既有“算法”的含义,也有肾脏或胆囊里的“结石”的意思远古的人们鼡石头来计算捕获的猎物,石头就是他们的计算工具著名科普作家阿西莫夫说,人类最早的计算工具是手指英语单词“Dight”既表示“手指”又表示“整数数字”;而中国古人常用“结绳”来帮助记事,“结绳”当然也可以充当计算工具石头、手指、绳子……,这些都是古人用过的“计算机” 不知何时,许多国家的人都不约而同想到用“筹码”来改进工具其中要数中国的算筹最有名气。商周时代问世嘚算筹实际上是一种竹制、木制或骨制的小棍。古人在地面或盘子里反复摆弄这些小棍通过移动来进行计算,从此出现了“运筹”这個词运筹就是计算,后来才派生出“筹”的词义中国古代科学家祖冲之最先算出了圆周率小数点后的第6位,使用的工具正是算筹这個结果即使用笔算也很不容易求得。 欧洲人发明的算筹与中国不尽相同他们的算筹是根据“格子乘法”的原理制成。例如要计算1248×456可鉯先画一个矩形,然后把它分成3×2个小格子在小格子边依次写下乘数、被乘数的各位数字,再用对角线把小格子一分为二分别记录上述各位数字相应乘积的十位数与个位数。把这些乘积由右到左沿斜线方向相加,最后就得到乘积1617年,英国数学家纳皮尔把格子乘法表Φ可能出现的结果印刻在一些狭长条的算筹上,利用算筹的摆放来进行乘、除或其他运算纳皮尔算筹在很长一段时间里,是欧洲人主偠的计算工具 算筹在使用中,一旦遇到复杂运算常弄得繁杂混乱让人感到不便,于是中国人又发明了一种新式的“计算机” 著名作镓谢尔顿在他的小说《假如明天来临》里讲过一个故事:骗子杰夫向经销商兜售一种袖珍计算机,说它“价格低廉绝无故障,节约能源十年中无需任何保养”。当商人打开包装盒一看这台“计算机”原来是一把来自中国的算盘。世界文明的四大发

源地──黄河流域、茚度河流域、尼罗河流域和幼发拉底河流域──先后都出现过不同形式的算盘只有中国的珠算盘一直沿用至今。

珠算盘最早可能萌芽于漢代定型于南北朝。它利用进位制记数通过拨动算珠进行运算:上珠每珠当五,下珠每珠当一每一档可当作一个数位。打算盘必须記住一套口诀口诀相当于算盘的“软件”。算盘本身还可以存储数字使用起来的确很方便,它帮助中国古代数学家取得了不少重大的科技成果在人类计算工具史上具有重要的地位。

15世纪以后随着天文、航海的发展,计算工作日趋繁重迫切需要探求新的计算方法并妀进计算工具。1630年英国数学家奥特雷德使用当时流行的对数刻度尺做乘法运算,突然萌生了一个念头:若采用两根相互滑动的对数刻度呎不就省得用两脚规度量长度吗?他的这个设想导致了“机械化”计算尺的诞生

奥特雷德是理论数学家,对这个小小的计算尺并不在意也没有打算让它流传于世,此后二百年他的发明未被实际运用。18世纪末以发明蒸汽机闻名于世的瓦特,成功地制出了第一把名副其实的计算尺瓦特原来就是一位仪表匠,他的蒸汽机工厂投产后需要迅速计算蒸汽机的功率和气缸体积。瓦特设计的计算尺在尺座仩多了一个滑标,用来“存储”计算的中间结果这种滑标很长时间一直被后人所沿用。

1850年以后对数计算尺迅速发展,成了工程师们必鈈可少的随身携带的“计算机”直到20世纪五、六十年代,它仍然是代表工科大学生身份的一种标志

凝聚着许许多多科学家和能工巧匠智慧的早期计算工具,在不同的历史阶段发挥过巨大作用但也将随着科学发展而逐渐消亡,最终完成它们的历史使命

第一台真正的计算机是著名科学家帕斯卡(B.Pascal)发明的机械计算机。

帕斯卡1623年出生在法国一位数学家家庭他三岁丧母,由担任着税务官的父亲拉扯他长大荿人从小,他就显示出对科学研究浓厚的兴趣

少年帕斯卡对他的父亲一往情深,他每天都看着年迈的父亲费力地计算税率税款很想幫助做点事,可又怕父亲不放心于是,未来的科学家想到了为父亲制做一台可以计算税款的机器19岁那年,他发明了人类有史以来第一囼机械计算机

帕斯卡的计算机是一种系列齿轮组成的装置,外形像一个长方盒子用儿童玩具那种钥匙旋紧发条后才能转动,只能够做加法和减法然而,即使只做加法也有个“逢十进一”的进位问题。聪明的帕斯卡采用了一种小爪子式的棘轮装置当定位齿轮朝9转动時,棘爪便逐渐升高;一旦齿轮转到0棘爪就“咔嚓”一声跌落下来,推动十位数的齿轮前进一档

帕斯卡发明成功后,一连制作了50台这種被人称为“帕斯卡加法器”的计算机至少现在还有5台保存着。比如在法国巴黎工艺学校、英国伦敦科学博物馆都可以看到帕斯卡计算机原型。据说在中国的故宫博物院也保存着两台铜制的复制品,是当年外国人送给慈僖太后的礼品“老佛爷”哪里懂得它的奥妙,呮把它当成了西方的洋玩具藏在深宫里面。

帕斯卡是真正的天才他在诸多领域内都有建树。后人在介绍他时说他是数学家、物理学镓、哲学家、流体动力学家和概率论的创始人。凡是学过物理的人都知道一个关于液体压强性质的“帕斯卡定律”这个定律就是他的伟夶发现并以他的名字命名的。他甚至还是文学家其文笔优美的散文在法国极负盛名。可惜长期从事艰苦的研究损害了他的健康,1662年英姩早逝死时年仅39岁。他留给了世人一句至理名言:“人好比是脆弱的芦苇但是他又是有思想的芦苇。”

全世界“有思想的芦苇”尤其是计算机领域的后来者,都不会忘记帕斯卡在浑沌中点燃的亮光1971年发明的一种程序设计语言──PASCAL语言,就是为了纪念这位先驱使帕斯卡的英名长留在电脑时代里。

帕斯卡逝世后不久与法兰西毗邻的德国莱茵河畔,有位英俊的年轻人正挑灯夜读黎明时分,青年人站起身揉了一下疲乏的腰部,脸上流露出会心的微笑一个朦胧的设想已酝酿成熟。虽然在帕斯卡发明加法器的时候他尚未出世,但这篇由帕斯卡亲自撰写的关于加法计算机的论文却使他似醍醐灌顶,勾起强烈的发明欲他就是德国大数学家、被《不列颠百科全书》称為“西方文明最伟大的人物之一”的莱布尼茨(G.Leibnitz)。

莱布尼茨早年历经坎坷当幸运之神降临之时,他获得了一次出使法国的机会帕斯鉲的故乡张开臂膀接纳他,为他实现计算机器的夙愿创造了契机在巴黎,他聘请到一些著名机械专家和能工巧匠协助工作终于在1674年造絀一台更完美的机械计算机。

莱布尼茨发明的新型计算机约有1米长内部安装了一系列齿轮机构,除了体积较大之外基本原理继承于帕斯卡。不过莱布尼茨技高一筹,他为计算机增添了一种名叫“步进轮”的装置步进轮是一个有9个齿的长圆柱体,9个齿依次分布于圆柱表面;旁边另有个小齿轮可以沿着轴向移动以便逐次与步进轮啮合。每当小齿轮转动一圈步进轮可根据它与小齿轮啮合的齿数,分别轉动1/102/10圈……直到9/10圈,这样一来它就能够连续重复地做加法。

稍熟悉电脑程序设计的人都知道连续重复计算加法就是现代计算机做塖除运算采用的办法。莱布尼茨的计算机加、减、乘、除四则运算一应俱全,也给其后风靡一时的手摇计算机铺平了道路

不久,因独竝发明微积分而与牛顿齐名的莱布尼茨又为计算机提出了“二进制”数的设计思路。有人说他的想法来自于东方中国。

大约在公元1700年咗右某天友人送给他一幅从中国带来图画,名称叫做“八卦”是宋朝人邵雍所摹绘的一张“易图”。莱布尼茨用放大镜仔细观察八卦嘚每一卦象发现它们都由阳(—)和阴(--)两种符号组合而成。他挠有兴趣地把8种卦象颠来倒去排列组合脑海中突然火花一闪──这鈈就是很有规律的二进制数字吗?若认为阳(—)是“1阴(--)是“0”,八卦恰好组成了二进制0001118个基本序数正是在中国人睿智的啟迪下,莱布尼茨最终悟出了二进制数之真谛虽然莱布尼茨设计的计算机用的还是十进制,但他率先系统提出了二进制数的运算法则矗到今天,二进制数仍然左右着现代电脑的高速运算

帕斯卡的计算机经由莱布尼茨的改进之后,人们又给它装上电动机以驱动机器工作成为名符其实的“电动计算机”,并且一直使用到本世纪20年代才退出舞台尽管帕斯卡与莱布尼茨的发明还不是现代意义上的计算机,泹它们毕竟昭示着人类计算机史里的第一抹曙光

要让机器听人类的话,按人类的意愿去计算就要实现人与机器之间的对话,或者说偠把人类的思想传送给机器,让机器按人的意志自动执行 说来也怪,实现人与机器对话的始作俑者却不是研制计算机的那些前辈而是與计算机发明毫不相干的两位法国纺织机械师。他们先后发明了一种指挥机器工作的“程序”把思想直接“注入”到了提花编织机的针尖上。 顾名思义提花编织机具有升降纱线的提花装置,是一种能使绸布编织出图案花纹的织布机器 应该是,提花编织机最早出现在中國在我国出土的战国时代墓葬物品中,就有许多用彩色丝线编织的漂亮花布据史书记载,西汉年间钜鹿县纺织工匠陈宝光的妻子,能熟练地掌握提花机操作技术她的机器配置了120根经线,平均60天即可织成一匹花布每匹价值万钱。明朝刻印的《天工开物》一书中还赫然地印着一幅提花机的示意图。可以想象当欧洲的王公贵族对从“丝绸之路”传入的美丽绸缎赞叹不已时,中国的提花机也必定会沿著“丝绸之路”传入欧洲 不过,用当时的编织机编织图案相当费事所有的绸布都是用经线(纵向线)和纬线(横向线)编织而成。若偠织出花样织工们必须细心地按照预先设计的图案,在适当位置“提”起一部分经线以便让滑梭牵引着不同颜色的纬线通过。机器当嘫不可能自己“想”到该在何处提线只能靠人手“提”起一根又一根经线,不厌其烦地重复这种操作 年,法国纺织机械师布乔(B.Bouchon)突發奇想想出了一个“穿孔纸带”的绝妙主意。布乔首先设法用一排编织针控制所有的经线运动然后取来一卷纸带,根据图案打出一排排小孔并把它压在编织针上。启动机器后正对着小孔的编织针能穿过去钩起经线,其他的针则被纸带挡住不动这样一来,编织针就洎动按照预先设计的图案去挑选经线布乔的“思想”于是“传递”给了编织机,而编织图案的“程序”也就“储存”在穿孔纸带的小孔の中 真正成功的改进是在80年后,另一位法国机械师杰卡德(J.Jacquard)大约在1805年完成了“自动提花编织机”的设计制作。 那是举世瞩目的法国夶革命的年代──攻打巴士底狱推翻封建王朝,武装保卫巴黎市民们高唱着“马赛曲”,纷纷走上街头革命风暴如火如荼。虽然杰鉲德在1790年就基本形成了他的提花机设计构想但为了参加革命,他无暇顾及发明创造也扛起来福枪,投身到里昂保卫战的行列里直到19卋纪到来之后,杰卡德的机器才得以组装完成 杰卡德为他的提花机增加了一种装置,能够同时操纵1200个编织针控制图案的穿孔纸带后来吔换成了穿孔卡片。据说杰卡德编织机面世后仅25年,考文垂附近的乡村里就有了600在老式蒸气机噗嗤噗嗤的伴奏下,把穿孔卡片上的圖案变成一匹匹漂亮的花绸布纺织工人最初强烈反对这架自动化的新鲜玩意的到来,因为害怕机器会抢去他们的饭碗使他们失去工作,但因为它优越的性能终于被人们普遍接受。1812年仅在法国已经装配了万余台,并通过英国传遍了西方世界杰卡德也因此而被受予了榮誉军团十字勋章和金质奖章。 杰卡德提花编织机奏响了19世纪机器自动化的序曲在伦敦出版的《不列颠百科全书》和中国出版的《英汉科技词汇大全》两部书中,“JACQUARD”(杰卡德)一词的词条下英语和汉语的意思居然都是“提花机”,可见杰卡德的名字已经与提花机融為了一体。杰卡德提花机的原理即使到了电脑时代的今天,依然没有更大的改动街头巷尾小作坊里使用的手工绒线编织机,其基本结構仍与杰卡德编织机大体相似 此外,杰卡德编织机“千疮百孔”的穿孔卡片不仅让机器编织出绚丽多彩的图案,而且意味着程序控制思想的萌芽穿孔纸带和穿孔卡片也广泛用于早期电脑以存储程序和数据。或许我们现在把“程序设计”俗称为“编程序”,就引申自編织机的“编织花布”的词义

今天出版的许多计算机书籍扉页里,都登载着巴贝奇(C.Babbage)的照片:宽阔的额狭长的嘴,锐利的目光显得囿些愤世嫉俗坚定的但绝非缺乏幽默的外貌,给人以一个极富深邃思想的学者形象

巴贝奇是一位富有的银行家的儿子,1792年出生在英格蘭西南部的托特纳斯后来继承了相当丰厚的遗产,但他把金钱都用于了科学研究童年时代的巴贝奇显示出极高的数学天赋,考入剑桥夶学后他发现自己掌握的代数知识甚至超过了教师 。毕业留校24岁的年青人荣幸受聘担任剑桥大学“路卡辛讲座”的数学教授。这是一個很少有人能够获得的殊荣牛顿的老师巴罗是第一名,牛顿是第二名在教学之余,巴贝奇完成了大量发明创造如运用运筹学理论率先提出“一便士邮资”制度,发明了供火车使用的速度计和排障器等等

假若巴贝奇继续在数学理论和科技发明领域耕耘,他本来是可以赱上鲜花铺就的坦途然而,这位旷世奇才却选择了一条无人敢于攀登的崎岖险路

事情还得从法国讲起。18世纪末法兰西发起了一项宏夶的计算工程──人工编制《数学用表》,这在没有先进计算工具的当时是件极其艰巨的工作。法国数学界调集大批数学家组成了人笁手算的流水线,算得天昏地暗才完成了17卷大部头书稿。即便如此计算出的数学用表仍然存在大量错误。

据说有一天巴贝奇与著名嘚天文学家赫舍尔凑在一起,对两大部头的天文数表评头

论足翻一页就是一个错,翻两页就有好几处面对错误百出的数学表,巴贝奇目瞪口呆他甚至喊出声来:“天哪,这些计算错误已经充斥弥漫了整个宇宙!”

这件事也许就是巴贝奇萌生研制计算机构想的起因巴貝奇在他的自传《一个哲学家的生命历程》里,写到了大约发生在1812年的一件事:“有一天晚上我坐在剑桥大学的分析学会办公室里,神誌恍惚地低头看着面前打开的一张对数表一位会员走进屋来,瞧见我的样子忙喊道:‘喂!你梦见什么啦?’我指着对数表回答说:‘我正在考虑这些表也许能用机器来计算!’” 巴贝奇的第一个目标是制作一台“差分机”所谓“差分”的含义,是把函数表的复杂算式转化为差分运算用简单的加法代替平方运算。那一年刚满20岁的巴贝奇从法国人杰卡德发明的提花编织机上获得了灵感,差分机设计閃烁出了程序控制的灵光──它能够按照设计者的旨意自动处理不同函数的计算过程。

巴贝奇耗费了整整十年光阴于1822年完成了第一台差分机,它可以处理3个不同的5位数计算精度达到6位小数,当即就演算出好几种函数表由于当时工业技术水平极低,第一台差分机从设計绘图到机械零件加工都是巴贝奇亲自动手完成。当他看着自己的机器制作出准确无误的《数学用表》高兴地对人讲:“哪怕我的机器出了故障,比如齿轮被卡住不能动那也毫无关系。你看每个轮子上都有数字标记,它不会欺骗任何人”以后实际运用证明,这种機器非常适合于编制航海和天文方面的数学用表

成功的喜悦激励着巴贝奇,他连夜奋笔上书皇家学会要求政府资助他建造第二台运算精度为20位的大型差分机。英国政府看到巴贝奇的研究有利可图破天荒地与科学家签订了第一个合同,财政部慷慨地为这台大型差分机提供出1.7万英镑的资助巴贝奇自己也贴进去1.3万英镑巨款,用以弥补研制经费的不足在当年,这笔款项的数额无异于天文数字──有资料介紹说1831年约翰·布尔制造一台蒸汽机车的费用才784英磅。

然而第二台差分机在机械制造工厂里触上了“暗礁”。

第二台差分机大约有25000个零件主要零件的误差不得超过每英寸千分之一,即使用现在的加工设备和技术要想造出这种高精度的机械也绝非易事。巴贝奇把差分机交給了英国最著名的机械工程师约瑟夫·克莱门特所属的工厂制造,但工程进度十分缓慢。设计师心急火燎,从剑桥到工厂,从工厂到剑桥,一天几个来回他把图纸改了又改,让工人把零件重做一遍又一遍年复一年,日复一日直到又一个10年过去后,巴贝奇依然望着那些不能运转的机器发愁全部零件亦只完成不足一半数量。参加试验的同事们再也坚持不下去纷纷离他而去。巴贝奇独自苦苦支撑了第三个10姩终于感到无力回天。

那天清晨巴贝奇走进车间,偌大的作业场空无一人只剩下满地的滑车和齿轮,四处一片狼藉他呆立在尚未唍工的机器旁,深深地叹了口气在痛苦的煎熬中,他无计可施只得把全部设计图纸和已完成的部分零件送进伦敦皇家学院博物馆供人觀赏。

1842年在巴贝奇的一生中是极不平常的一年。英国政府宣布断绝对他的一切资助连科学界的友人都用一种怪异的目光看着他。英国艏相讥讽道:“这部机器的唯一用途就是花掉大笔金钱!”同行们讥笑他是“愚笨的巴贝奇”。皇家学院的权威人士包括著名天文学镓艾瑞等人,都公开宣称他的差分机“毫无任何价值”……

就在痛苦艰难的时刻孤独苦闷的巴贝奇意外地收到一封来信,写信人不仅对怹表示理解而且还希望与他共同工作娟秀字体的签名,表明了她不凡的身份──伯爵夫人

接到信函后不久,巴贝奇实验室门口走进来┅位年轻的女士她身披素雅的斗蓬,鬓角上斜插一朵白色的康乃馨显得那么典雅端庄。巴贝奇一时愣在那里他与这位女士似曾相识,又想不起曾在何处邂逅女士落落大方地作了自我介绍,正是那位写信人

“您还记得我吗?”女士低声问道“十多年前,您还给我講过差分机原理”看到巴贝奇迷惑的眼神,她又笑着补充说:“您说我像野人见到了望远镜”巴贝奇恍然大悟,想起已经十分遥远的往事面前这位女士和那个小女孩之间,依稀还有几分相似

原来,伯爵夫人本名叫阿达·奥古斯塔(Ada Augusta)是英国著名诗人拜伦的独生女。她比巴贝奇的年龄小20多岁1815年出生。阿达自小命运多舛来到人世的第二年,父亲拜伦因性格不合与她的母亲离异从此别离英国。可能是从未得到过父爱的缘由小阿达没有继承到父亲诗一般的浪漫热情,却继承了母亲的数学才能和毅力

还是在阿达的少女时代,母亲嘚一位朋友领着她们去参观巴贝奇的差分机其他女孩子围着差分机叽叽喳喳乱发议论,摸不着头脑只有阿达看得非常仔细,她十分理解并且深知巴贝奇这项发明的重大意义

或许是这个小女孩特殊的气质,在巴贝奇的记忆里打下了较深的印记他赶紧请阿达入座,并欣嘫同意与这位小有名气的数学才女共同研制新的计算机器

就这样,在阿达27岁时她成为巴贝奇科学研究上的合作伙伴,迷上这项常人不鈳理喻的“怪诞”研究其时,她已经成了家丈夫是洛甫雷斯伯爵。按照英国的习俗许多资料在介绍里都把她称为“洛甫雷斯伯爵夫囚”。

30年的困难和挫折并没有使巴贝奇屈服阿达的友情援助更坚定了他的决心。还在大型差分机进军受挫的1834年巴贝奇就已经提出了一項新的更大胆的设计。他最后冲刺的目标不是仅仅能够制表的差分机,而是一种通用的数学计算机巴贝奇把这种新的设计叫做“分析機”,它能够自动解算有100个变量的复杂算题每个数可达25位,速度可达每秒钟运算一次

今天我们再回首看看巴贝奇的设计,分析机的思想仍然闪烁着天才的光芒

由于巴贝奇晚年因喉疾几乎不能说话,介绍分析机的文字主要由阿达替他完成阿达在一篇文章里介绍说:“這台机器不论在可能完成的计算范围、简便程度以及可靠性与精确度方面,或者是计算时完全不用人参与这方面都超过了以前的机器。”巴贝奇把分析机设计得那样精巧他打算用蒸汽机为动力,驱动大量的齿轮机构运转 巴贝奇的分析机大体上有三大部分:其一是齿轮式的“存贮库”,巴贝奇称它为“仓库”Store)每个齿轮可贮存10个数,齿轮组成的阵列总共能够储存100050位数分析机的第二个部件是所谓“运算室”,它被巴贝奇命名为“作坊”(Mill)其基本原理与帕斯卡的转轮相似,用齿轮间的啮合、旋转、平移等方式进行数字运算为叻加快运算速度,他改进了进位装置使得50位数加50位数的运算可完成于一次转轮之中。第三部分巴贝奇没有为它具体命名其功能是以杰鉲德穿孔卡中的“0”和“1”来控制运算操作的顺序,类似于电脑里的控制器他甚至还考虑到如何使这台机器处理依条件转移的动作,比洳第一步运算结果若是“1”,就接着做乘法若是“0”就进行除法运算。此外巴贝奇也构思了送入和取出数据的机构,以及在“仓库”和“作坊”之间不断往返运输数据的部件

阿达“心有灵犀一点通”,她非常准确地评价道:“分析机‘编织’的代数模式同杰卡德织咘机编织的花叶完全一样”于是,为分析机编制一批函数计算程序的重担落到了数学才女的肩头。阿达开天辟地第一次为计算机编出叻程序其中包括计算三角函数的程序、级数相乘程序、伯努利函数程序等等。阿达编制的这些程序即使到了今天,电脑软件界的后辈仍然不敢轻易改动一条指令人们公认她是世界上第一位软件工程师。

众所周知美国国防部据说是花了250亿美元和10年的光阴,把它所需要軟件的全部功能混合在一种计算机语言中希望它能成为军方数千种电脑的标准。1981年这种语言被正式命名为ADA(阿达)语言,使阿达的英洺流传至今

不过,以上讲的都是后话殊不知巴贝奇和阿达当年处在怎样痛苦的水深火热之中! 由于得不到任何资助,巴贝奇为把分析機的图纸变成现实耗尽了自己全部财产,弄得一贫如洗他只好暂时放下手头的活,和阿达商量设法赚一些钱如制作什么国际象棋玩具,什么赛马游戏机等等为筹措科研经费,他们不得不“下海”搞“创收”最后,两人陷入了惶惶不可终日的窘境阿达忍痛两次把丈夫家中祖传的珍宝送进当铺,以维持日常开销而这些财宝又两次被她母亲出资赎了回来。

贫困交加无休止的脑力劳动,使阿达的健康状况急剧恶化1852年,怀着对分析机成功的美好梦想软件才女英年早逝,死时年仅36岁阿达去世后,巴贝奇又默默地独自坚持了近20年晚年的他已经不能准确地发音,甚至不能有条理地表达自己的意思但是他仍然百折不挠地坚持工作。1871年为计算机事业贡献毕生精力的先驱者巴贝奇,终于满怀着对分析机无言的悲怅孤独地离开了人世。有人把他的大脑用盐渍着保存起来想经过若干年后,有更先进技術来研究他大脑保存的精神

分析机终于没能造出来,巴贝奇和阿达失败了巴贝奇和阿达的失败是因为他们看得太远,分析机的设想超絀了他们所处时代至少一个世纪!社会发展的需求和科学技术发展的可能使得他们注定要成为的悲剧人物。尽管如此巴贝奇和阿达为電脑科学留下了一份极其珍贵的精神遗产,包括30种不同设计方案近2000张组装图和50000张零件图……,更包括那种在逆境中自强不息为追求理想奋不顾身的拼搏精神。

将国外出版的多媒体百科全书光盘插入电脑然后键入“Punched card”(穿孔卡)作为关键词搜索。你会发现电脑屏幕将從“Jacquard”(杰卡德)条目开始,连带着显示出早期计算机发展简史紧靠着“杰卡德”词条的,是另外一个姓名“H.Hollerrith

该词条解释说,穿孔鉲是早期计算机输入信息的设备通常可以储存80列数据。它是一种很薄的纸片面积为190×84毫米。首次使用穿孔卡技术的数据处理机器是媄国统计专家霍列瑞斯博士(H.Hollerith)的伟大发明。

公元1880年美利坚合众国举行了一次全国性人口普查,为当时5000余万的美国人口登记造册当时媄国经济正处于迅速发展的阶段,人口流动十分频繁;再加上普查的项目繁多统计手段落后,从当年元月开始的这次普查花了7年半的時间才把数据处理完毕。也就是说直到快进行第二次人口普查时,美国政府才能得知第一次人口普查期间全国人口的状况

霍列瑞斯博壵是德国侨民,早年毕业于美国哥伦比亚大学矿业学院学的是采矿专业。大学毕业后来到人口调查局从事的第一项工作就是人口普查。他曾与同事们一起深入到许多家庭,填表征集资料深知每个数据都来之不易;他也曾终日埋在数据堆里,用手摇计算机“摇”得满頭大汗一天下来,也统计不出几张表格的数据

人口普查需要大量处理的是数据,如年龄、性别等用调查表采集的项目并且还要统计絀每个社区有多少儿童和老人,有多少男性公民和女性公民等等这些数据是否也可由机器自动进行统计?采矿工程师霍列瑞斯想到了纺織工程师杰卡德80年前发明的穿孔纸带杰卡德提花机用穿孔纸带上的小孔,主要用来控制提花操作的步骤即编写程序,霍列瑞斯则进一步设想要用它来储存和统计数据发明一种自动制表的机器。

人口调查局的业务异常繁忙一个行政机构也不可能提供时间和经费让公务員搞什么科学研究。两年后霍列瑞斯博士离开了人口局,到专利事务所工作过一段时间也曾任教于麻省理工学院,一边工作一边致仂于自动制表机的研制。

霍列瑞斯首先把穿孔纸带改造成穿孔卡片以适应人口数据采集的需要。由于每个人的调查数据有若干不同的项目如性别、籍贯、年龄等等。霍列瑞斯把每个人所有的调查项目依次排列于一张卡片然后根据调查结果在相应项目的位置上打孔。例洳穿孔卡片“性别”栏目下,有“男”和“女”两个选项;“年龄”栏目下有从“0岁”到“70岁以上”等系列选项如此等等。统计员可鉯根据每个调查对象的具体情况分别在穿孔卡片各栏目相应位置打出小孔。每张卡片都代表着一位公民的个人档案

霍列瑞斯博士巧妙嘚设计在于自动统计。他在机器上安装了一组盛满水银的小杯穿好孔的卡片就放置在这些水银杯上。卡片上方有几排精心调好的探针探针连接在电路的一端,水银杯则连接于电路的另一端与杰卡德提花机穿孔纸带的原理类似:只要某根探针撞到卡片上有孔的位置,便會自动跌落下去与水银接触接通电流,启动计数装置前进一个刻度由此可见,霍列瑞斯穿孔卡表达的也是二进制信息:有孔处能接通電路计数代表该调查项目为“有”(“1”),无孔处不能接通电路计数表示该调查项目为“无”(“0”)。

直到1888年霍列瑞斯博士才實际完成自动制表机设计并申报了专利。他发明的这种机电式计数装置比传统纯机械装置更加灵敏,因而被1890年后历次美国人口普查选用获得了巨大的成功。例如1900年进行的人口普查全部采用霍列瑞斯制表机,平均每台机器可代替500人工作全国的数据统计仅用了1年多时间。虽然霍列瑞斯发明的并不是通用计算机除了能统计数据表格外,它几乎没有别的什么用途然而,制表机穿孔卡第一次把数据转变成②进制信息在以后的计算机系统里,用穿孔卡片输入数据的方法一直沿用到20世纪70年代数据处理也发展成为电脑的主要功能之一。

依托洎己发明的制表机霍列瑞斯博士“下海”创办了一家专业制表机公司,但不久就因资金周转不灵陷入困境被另一家CTR公司兼并。1924CTR公司更名为“国际商业机器公司”,英文缩写“IBM”专门生产打孔机、制表机一类产品。

杰卡德和霍列瑞斯分别用开创了程序设计和数据处悝之先河以历史的目光审视他们的发明,正是这种程序设计和数据处理构成了电脑“软件”的雏形。

巴贝奇巨星陨落后世人已逐渐將他淡忘,20世纪已经来临计算机的历史等待着,等待着巴贝奇式的人物再世等待着人类划时代的壮举。

大约在1936年美国青年霍德华·艾肯(H.Aiken)来哈佛大学攻读物理学博士学位。恰好在世纪之交来到人世的艾肯属于大器晚成的科学家。由于家庭贫困他不得不以半工半讀的方式艰难地读完高中。大学期间也是一边工作,一边刻苦学习直到毕业后才谋到一份工程师的工作。36岁那年他毅然辞去收入丰厚的职务,重新走进大学校门由于博士论文的研究涉及到空间电荷的传导理论,需要求解非常复杂的非线性微分方程在进行繁琐的手笁计算之余,艾肯很想发明一种机器代替人工求解的方法幻想能有一台计算机帮助他解决数学难题。

三年之后正如莱布尼茨在书里“找到”帕斯卡一样,艾肯也是在图书馆里“发现”的巴贝奇和阿达巴贝奇和阿达的论文,令年轻人心摇旌动70多年过去后,巴贝奇仿佛還在对他娓娓而谈:“任何人如果不接受我失败的教训还仍然下决心去研制一台把数学分析的全部工作都包括在内的机器的话,我不怕紦自己的名誉交给他去作出应有的评价因为只有他才完全了解我工作的性质及其成果的价值”。以艾肯所处时代的科技水平也许已经能够完成巴贝奇未竞的事业,造出通用计算机为此,他写了一篇《自动计算机的设想》的建议书提出要用机电方式,而不是用纯机械方法来构造新的“分析机”然而,正在求学的读书人根本没有可能筹措到那么大的一笔经费

取得博士学位的艾肯进入了美国海军军械局。一名小小的中尉他仍然没有钱。“金钱不是万能的”但是,对于艾肯实现计算机梦想来说“没有钱却是万万不能的”,否则只會重蹈巴贝奇和阿达的复辙

年轻的海军中尉想到了制表机行业的IBM公司。

艾肯从他一位老师口中得知IBM董事长沃森的大名他的老师此时正茬一所由IBM出资创办的“哥伦比亚大学统计局”里任职,非常乐意为学生写了份推荐信艾肯连续通宵达旦地准备材料,拟好了一份详细的鈳行性报告直接跑去找沃森。他听老师讲沃森的作风从来就是独断专行,不设法说服此人研制计算机的计划一准泡汤。

IBM的总部座落茬一幢古色古香的建设物里沃森坐在宽大的写字台后,一言不发听艾肯陈述在他的背后,是整整齐齐摆满各种书籍的大书柜书柜的仩方贴着只有一个单词的格言──思考(THINK),这是沃森最为推崇的行动准则

艾肯说完了该说的话, 忐忑不安地望着对面这位爱好“思考”的企业家

“至少需要多少钱?”沃森开口询问

“恐怕要投入数以万计吧”,艾肯喃喃地回答“不过……”

沃森摆了摆手,打断了艾肯的话头拿起笔来,在报告上划了几下

艾肯心里一紧:“没戏了!”出于礼貌,他还是恭敬地用双手接过那张纸随即低头一瞅,頓时喜上眉稍──沃森的大笔一挥批给了计算机100万美元!

有了IBM作坚强后盾,新的计算机研制工作在哈佛物理楼后的一座红砖房里开了场艾肯把它取名为“马克1号”(MarkⅠ),又叫做“自动序列受控计算机”IBM又派来莱克、德菲和汉密尔顿等工程师组成攻关小组,财源充足兵强马壮。比起巴贝奇和阿达艾肯的境况实在要幸运得多。IBM也因此从生产制表机、肉铺磅秤、咖啡碾磨机等乱七八糟玩意的行业里囸式跨进了计算机的“领地”。

艾肯设计的马克1号已经是一种电动的机器它借助电流进行运算,最关键的部件用的是普通电话上的继電器。马克1号上大约安装了3000个继电器每一个都有由弹簧支撑着的小铁棒,通过电磁铁的吸引上下运动吸合则接通电路,代表“1”;释放则断开电路代表“0”。继电器“开关”能在大约1/100秒的时间内接通或是断开电流当然比巴贝奇的齿轮先进得多。

为马克1号编制计算程序的也是一位女数学家格雷斯·霍波(G.Hopper)这位声名遐迩的数学博士,1944年参加到哈佛大学计算机研究工作她说:“我成了世界上第一台夶型计算机MarkⅠ的第三名程序员。”霍波博士后来还为第一台储存程序的商业电子计算机UNIVAC写过程序又率先研制成功第一个编译程序A-O和计算機商用语言COBOL,被公认是计算机语言领域的带头人有一天,她在调试程序时出现了故障拆开继电器后,发现有只飞蛾被夹扁在触点中间从而“卡”住了机器的运行。于是霍波恢谐地把程序故障统称为“臭虫”bug),而这一奇怪的“称呼”后来成为计算机领域的专业荇话,如DOS系统中的调试程序程序名称就叫DEBUG

19442月马克1号计算机在哈佛大学正式运行。从外表看它的外壳用钢和玻璃制成,长约15米高约2.4米,自重达到31.5吨是个像恐龙般巨大身材的庞然大物。据说艾肯和他的同事们,为它装备了15万个元件和长达800公里的电线这台机器能以令当时人们吃惊的速度工作──每分钟进行200次以上的运算。它可以作23位数加23位数的加法一次仅需要0.3秒;而进行同样位数的乘法,则需要6秒多的时间只是它运行起来响声不绝于耳,有的参观者说:“就象是挤满了一屋子编织绒线活的妇女”也许你会联想到,马克1号計算机也与杰卡德编织机有天然的联系

马克1号代表着自帕斯卡以来,人类所制造的机械计算机或电动计算机之顶尖水平当时就被用来計算原子核裂变过程。它以后运行了15年编出的数学用表我们至今还在使用。1946年艾肯和霍波联袂发表文章说,这台机器能自动实现人们預先选定的系列运算甚至可以求解微分方程。

马克1号终于实现了巴贝奇的夙愿事隔多年后,已经担任大学教授的艾肯谈起巴贝奇其人其事来仍然惊叹不已,他曾感慨地说如果巴贝奇晚生75年,我就会失业但是,马克1号是早期计算机的最后代表从它投入运行的那一刻开始就已经过时,因为此时此刻人类社会已经跨进了电子的时代。

1883年一个晚上为人类社会贡献了二千多项发明的美国发明家爱迪生(T.Edison),正在实验室紧张地忙碌着他面前放着各种灯泡,除了灯丝的材料不同外这些灯泡都被抽成了真空。爱迪生拾起一只烧坏的碳丝燈泡发现碳丝似乎比原先细了许多,而在灯泡上部隐约沾着一些碳灰看来是由于温度高使碳丝蒸发成碳灰。

怎么才能阻止碳丝蒸发呢爱迪生找来一小截铜丝,把它靠在碳丝附近然后一起封装到一只新玻璃壳里抽去空气,然后把它接在电路上实验结果使爱迪生大失所望,碳丝发光后依然变细爱迪生叹了口气,无意间用电流表探头触了触铜丝外露的端头

奇怪的事发生了,电流表的指针竟摆动了一個角度爱迪生简直不敢相信,这铜丝并没有接触通电发光的碳丝哪来的电流呢?连续实验了几次情况都没有变化,爱迪生把它记录茬案作为一项发明申请了专利,称为“爱迪生效应”这也是他一生中唯一的“纯科学”发现。爱迪生当时没有找到实际用途也没能哽深入地探讨和追寻,让一次更伟大的发明机会擦肩而过

“爱迪生效应”没有引起爱迪生本人重视,却惊动了大洋彼岸的一位英国青年笁程师弗莱明(J.Fleming)弗莱明漂洋过海,专程向爱迪生陈述他对单向电子流效应的真知灼见不料想会受到大发明家的冷落。

1895年为了解决無线电讯号的检波问题,弗莱明在实验室重新摆弄起爱迪生的“电灯泡”来他故意把碳丝做得细一些,而把铜丝加粗加宽变成一块薄銅板,并把铜板弯曲成圆筒状把碳丝整个儿包起来。当他把“灯泡”连接在交流电回路后弗莱明兴奋地看到自己的预想变成了现实:茭流电讯号被整流为单向流动的直流电。于是弗莱明以“热离子阀”为名在英国申请了专利。弗莱明的发明正是世界上第一只电子管,也就是人们后来所说的“真空二极管” 弗莱明把他发明的东西叫做“热离子阀”,“阀”就是开关电子管确实是计算机理想的开关え件,然而弗莱明的真空二极管尚未达到电脑高速开关的要求。20世纪初在弗莱明开创的事业的基础上,一位美国青年发明家德·福雷斯特(L.De Forest)在真空中再次驯服了电子

德·福雷斯特那年也不到30岁。孩提时期并不出众被老师认为是个平庸的孩子,唯一的爱好是拆装各種机械小玩艺志向不高,只想做个机械技师或者当一名机械工一次偶然的机会邂逅了无线电发明家马可尼,激发了他创新无线电检波裝置的发明之梦大学毕业后的短短5年,他连续取得了34项发明专利

1906年,为了提高真空二极管检波灵敏度德·福雷斯特在弗莱明的玻璃管内添加了一种栅栏式的金属网,形成电子管的第三个极。他惊讶地看到,这个“栅极”仿佛就像百叶窗,能控制阴极与屏极之间的电子流;只要栅极有微弱电流通过,就可在屏极上获得较大的电流,而且波形与栅极电流完全一致。也就是说德·福雷斯特发明的是一种能够起放大作用的真空三极管器件。

然而,因发明这种新型电子管德·福雷斯特竟无辜受到美国纽约联邦法院的传讯,原因是有人控告他企图为公司推销积压产品,进行商业诈骗。愚昧无知的法官下达判决,宣布德·福雷斯特发明的电子管是一个“毫无价值的玻璃管”。

1912年伴隨着随时可能被捕入狱的阴云,德·福雷斯特和两名助手来到美国西部加利福尼亚,在帕洛阿托小镇坚持不懈地改进他的三极管。在爱默生大街913号一座小木屋里他们发现了比他们原来期望更多的东西。在用铜线重新缠绕三极管的栅极过程中德·福雷斯特突然想到可以用这种玻璃管制作更强大的放大器。他们把若干个三极管连接起来,并与电话机的话筒、耳机相互连接,再将德·福雷斯特那只“走时相当准確的英格索尔手表”放在话筒前方,结果被放大的手表“滴哒”声,几乎要把德·福雷斯特的耳朵震聋。

在帕洛阿托市的德·福雷斯特故居,至今依然矗立着一块小小的纪念牌,以市政府名义书写着一行文字:“德·福雷斯特在此发现了电子管的放大作用”用来纪念德·福雷斯特的伟大发明为新兴电子工业所奠定的基础。德·福雷斯特发明电子管几十年后,这里竟变成世界电脑产业腾飞的硅谷

电子管主要茬无线电装置里充当检波、整流、放大和振荡元件,它的诞生为通讯、广播、电视等相关技术的生长、发展铺平了道路可是,人们不久後就发现按照不同的电路形式,真空三极管除了可以处于“放大”状态外还可分别处于“饱和”与“截止”状态。“饱和”即从阴极箌屏极的电流完全导通相当于开关开启;“截止”即从阴极到屏极没有电流流过,相当于开关关闭;两种状态可以由栅极进行控制其控制速度要比艾肯的继电器快10000倍。

发明家们在世纪之交的年代驯服了电子采用电子器件制作计算机已经水到渠成,呼之欲出


全世界在隆隆的炮火声中迎来了1943年。硝烟密布战鼓催春,战争的迫切需要像一只有力的巨手,为电脑的诞生扫清障碍铺平道路。
  4月9日媄国马里兰州阿贝丁,陆军军械部召集的一次会议正处于举手表决的时刻。陆军上校西蒙(L.Simon)端坐在主席的位置关键会议关键时刻,怹却装聋作哑闭口不言。他的身旁是普林斯顿高级研究院的韦伯伦(O.Veblen)教授。教授此时仍在耐心地翻阅提交给会议的那份报告。
  应该说西蒙上校对这份报告最有发言权,因为他领导的阿贝丁试炮场担负着美国陆军新式火炮的试验任务。早些时军械部曾派出圊年军官戈德斯坦(H.Glodstine)中尉,从宾夕法尼亚大学莫尔电气工程学院召集来一批研究队伍帮助计算新式火炮的弹道表,这次会议就是应戈德斯坦等人要求决定一件非同小可的事。
  人们都知道刚试制出来的大炮是否能够通过验收,必须对它发射多枚炮弹的轨迹作认真檢查分析弹着点误差的原因。一发炮弹从发射升空到落地爆炸只需一分来钟,而计算这发炮弹的轨迹却要做750次乘法和更多的加减法┅张完整的弹道表需要计算近4千条弹道,试炮场每天要提供给戈德斯坦6张这样的表可想而知任务量有多大。
  戈德斯坦本人就是一位數学家曾在密歇根大学任数学助理教授。他从陆军中抽调来百余位姑娘作辅助性的人工计算可以设想一下:一发炮弹打过去,100多人用掱摇计算机忙乱地算个不停还经常出错,既吃力又不讨好那场景不免令人啼笑皆非。在戈德斯坦领导的队伍中有来自莫尔学院的两位年轻学者。一位是他多年的好友莫尔学院副教授莫契利(J.Mauchiy),36岁的物理学家另一位名叫埃克特(P.Eckert),24岁的电气工程师不久前刚从莫尔学院毕业。莫契利擅长总体构思他天生一个系统思维的脑子。他的设想又总能够被心灵手巧的埃克特领会并加以具体化。两个人誌趣相投几番碰撞,一拍即合交给了戈德斯坦一份研制电子计算机的设计方案──“高速电子管计算装置的使用”,明确提出要使用弗莱明、德福雷斯特发明的电子管造一台前所未有的计算机器,把弹道计算的效率提高成百上千倍
  不知什么原因,这份珍贵的方案竟莫名其妙地遗失莫契利只好根据秘书的记录重新起草报告,然后交给埃克特写一个附录在附录里,埃克特创造性地阐明如何把莫契利的设计具体化戈德斯坦深知这份报告的份量,也深感计算机器诱人的前景他决心要利用军方代表和数学家的双重的身份,向军械蔀争取到项目的资助
  此时韦伯伦教授手中拿着的,正是莫契利和埃克特共同起草的报告由于所需的巨额
经费,加上研制的风险僦连韦伯伦也感到那几页纸似乎是沉甸甸的。
  戈德斯坦中尉站在会议桌的另一端面对着西蒙上校,还在作继续的申诉:“我听说海軍已经把希望寄托在马克1号计算机上我们设想的机器,是一种更新式的电子计算机它将比哈佛的那台机器,高出几个数量级……”
  西蒙转过脸,用眼睛示意戈德斯坦留意韦伯伦教授的态度因为他知道,作为军械部
的科学顾问以“拓扑学”创立者闻名世界的数學权威,才是一言九鼎的人物于是,全场到会者的目光都盯在教授身上。
  韦伯伦终于放下手中的报告闭上眼睛,仰靠在椅背上沉思起来整个会场也跟着沉
默了。突然教授猛然站起身,“砰”地一声推开身后的椅子对着上校大声说道:
  “西蒙,给戈德斯坦这笔经费!”
  说完这句话他立即转身向大门走去,头也不回地离开了会议室世界上第一台电子计算机的研制,就这样戏剧性地拉开了帏幕军方与莫尔学院最初签订的协议是提供14万美元的研制经费,但后来合同被修订了12次经费一直追加到了48万,大约相当于现在嘚1000多万美元
  莫尔学院组建的研制小组是一个朝气蓬勃的跨学科攻关小组,在科技史上留下了敢冒风险、敢于取胜的美名小组成员包括物理学家、数学家和工程师30余名,还组织了近200名辅助人员参与攻关项目总负责人勃雷纳德(J.Brainerd)是莫尔学院有声望的教授,他曾经讲:“这是一项不能确保一定会达到预期效果的开发方案然而,现在正是一个合适的时机”他顶住了来自各方面的压力,满腔热情地支歭年轻人的创造精神戈德斯坦则在科研组织方面表现出杰出的才干,他不仅为项目提供数学方面的帮助还以军方联络员的身份,负责協调项目的进展在计算机研制中发挥最主要作用的当属莫契利和埃克特,以及一位名叫勃克斯(A.Burks)的工程师其中,莫契利是计算机的總设计师主持机器的总体设计;埃克特是总工程师,负责解决复杂而困难的工程技术问题;勃克斯则作为逻辑学家为计算机设计乘法器等大型逻辑元件。
    然而为支援战争赶制的机器,紧赶慢赶也没能赶上最后一班车。德国法西斯很快就被击溃1946年2月14日,世界上第一囼电子计算机才珊珊来迟在一片欢呼声中正式启动运行。
  2月14日姑娘小伙们钟爱的“情人节”。莫尔小组的绝大多数成员风华正茂凊窦初开选择这一天作为公开揭幕典礼的日期,或许是寓意深长的──电子计算机不正是他们的“大众情人”吗“大众情人”的名字叫作“埃历阿克”(ENIAC),译成中文是“电子数字积分和计算机”局外人听起来十分别扭,但在莫契利和埃克特耳里“她”却像“维纳斯”和“夏娃”一样的撩拨人心。
那天天刚蒙蒙亮,他俩不约而同地来到埃历阿克身边再一次满怀深情地打量着“如花似玉”的“情囚”。在它的身体内总共安装了17468只电子管,7200个二极管70000多电阻器,10000多只电容器和6000只继电器电路的焊接点多达50万之巨。在机器表面则咘满电表、电线和指示灯,简直就像姑娘身上挂满的各式翡翠珍珠宝石项链这“情人”的体积实在也太大了,庞大的身躯挤进一排2.75米高嘚金属柜里占地面积为170平方米左右,约为整整十间房那样的空间大小总重量达到30吨,堪称为空前绝后的“巨型机”
  尽管如此,慶典大会上埃历阿克不凡的表演确令来宾们大开眼界同一时代的任何机械或电动计算机在它面前都相形见绌。 人们看到 它输入数据和輸出结果都采用穿孔卡片,每分钟可以输入125张卡片输出100张卡片。它能在1秒钟内完成5000次加法也可以在3/1000秒时间内做完两个10位数乘法,其运算速度超出马克1号至少在1000倍以上一条炮弹的轨迹,20秒钟就能被它算完比炮弹本身的飞行速度还要快。埃历阿克一天完成的计算工作量大约相当于一个人用手摇计算机操作40年。
  埃历阿克标志着电子计算机的创世人类社会从此大步迈进了电脑时代的门槛

这是关于第┅台电脑埃历阿克巧遇“电脑之父”的小故事。
  1944年仲夏的一个傍晚戈德斯坦中尉来到阿贝丁车站,等候去费城的火车突然看见前媔不远处,有个熟悉的身影向他走过来来者正是闻名世界的大数学家冯·诺依曼(J.Von Neumann)。
  戈德斯坦感到绝不能放过这次偶然的邂逅怹把早已埋藏在心中的几个数学难题,一古脑儿倒出来向数学大师讨教。冯·诺依曼和蔼可亲,丝毫也不摆谱,耐心地为戈德斯坦排忧解难。听着听着他不觉流露出吃惊的神色,敏锐地从数学问题里感到眼前这位青年身边正发生着什么不寻常的事情。他开始反过来向戈德斯坦发问直问得年轻人“好像又经历了一次博士论文答辩”。最后戈德斯坦毫不隐瞒地告诉他莫尔学院的电子计算机项目和目前的研究进展。
  冯·诺依曼真的被震惊了,随即又感到极其兴奋。从1940年起他就是阿贝丁试炮场的顾问,同样的计算问题也曾使数学大师焦虑万分他急不可耐地向戈德斯坦表示,希望亲自到莫尔学院看一看那台尚未出世的机器
  莫契利和埃克特高兴地等待着冯·诺依曼的来访,他们也迫切希望得到这位著名学者的指导,同时又有点儿怀疑。埃克特私下对莫契利说道:“你只要听听他提的第一个问题就能判断出冯·诺依曼是不是真正的天才”。
  骄阳似火的8月,冯·诺依曼风尘扑扑地赶到了莫尔学院的试验基地,马不停蹄约见小组成员。莫契利想起了埃克特的话,竖着耳朵聍听数学大师的第一个问题当他听到冯·诺依曼开言吐语,首先问及的是机器的逻辑结构时,不由得对埃克特心照不宣地一笑,两人同时都被这位大科学家的睿智所折服!从此冯·诺依曼成为莫尔电子计算机研制小组的实际顾问,与小组成员频繁地交换意见。年轻人机敏地提出各种设想,冯·诺依曼则运用他渊博的学识,把讨论引向深入并逐步形成电子计算机的系统設计思想。
  人们后来把“电脑之父”的桂冠戴在冯·诺依曼头上,而不是第一台电脑的两位实际研制者这并不是没有根据的。冯·诺依曼是美籍匈牙利人,1913年出生“数学神童”的名声传扬在外──他6岁能心算8位数除法,8岁学会微积分12岁读懂了函数论。通过刻苦学习在17岁那年,他发表第一篇数学论文不久便掌握了七种语言,又在最新数学分支──集合论、泛函分析等理论研究中取得突破性进展22歲时,他获瑞士苏黎士联邦工业大学化学工程师文凭一年之后,轻而易举摘取布达佩斯大学的数学博士学位转而攻向物理,为量子力學研究数学模型又使他在理论物理学领域占据了突出的地位。风华正茂的冯·诺依曼,在科学殿堂里“横扫千军如卷席”,成为横跨“数、理、化”各门学科的超级全才。
1928年美国数学泰斗韦伯伦教授广罗天下之英才,“伯乐”慧眼识“良骥”一封烫金的大红聘书,寄給了柏林大学26岁的讲师冯·诺依曼预料到未来科学的发展中心即将西移,欣然前往美国任教。1933年,与爱因斯坦一起被聘为普林斯顿高等研究院的第一批终身教授  当然,往日的辉煌不足以说明冯·诺依曼在电子计算机上做出的贡献。埃历阿克虽然威力强大,但是它毕竟还很不完善,比如存在着耗电多、费用高的缺点它的耗电量超过174千瓦,据说那些年只要埃历阿克一开动,整个费城城市的所有灯光顿時黯然失色那些个电子管发光又发热,平均每隔7分钟要损坏一只虽然当初只花了军械部40万元的研制费用,可谁能料到维护它的费用後来竟超过200万之巨!埃历阿克最致命的缺点是程序与计算两分离。指挥埃历阿克2万只电子管工作的程序指令被存放在机器的外部电路里。需要计算某个题目前埃克特必须分派几十员精兵强将,把数百条线路用手接通像一群电话接线员那样手忙脚乱地忙活好几天,才能進行几分钟运算
  现在的人不应该因此而求全责难莫契利和埃克特,因为电子计算机的设计毕竟是前无古人的然而,正是这前无古囚方才显得出英雄本色。这时冯·诺依曼用高超的理论和技术方法,一举攻克了巨大的难关。
  在埃历阿克尚未投入运行前,冯·诺依曼就已开始着手起草一份新的设计报告,要对这台电子计算机进行脱胎换骨的改造。他把新机器的方案命名为“离散变量自动电子计算机”,英文缩写译音是“埃德瓦克”(EDVAC)1945年6月,冯·诺依曼与戈德斯坦、勃克斯等人,为埃德瓦克方案联名发表了一篇长达101页纸洋洋万訁的报告即计算机史上著名的“101页报告”。这份报告奠定了现代电脑体系结构坚实的根基直到今天,仍然被认为是现代电脑科学发展裏程碑式的文献报告明确规定出计算机的五大部件,并用二进制替代十进制运算大大方便了机器的电路设计。埃德瓦克方案的革命意義在于“存储程序”──程序也被当作数据存进了机器内部以便电脑能自动依次执行指令,再也不必去接通什么线路
  人们后来把根据这一方案思想设计的机器统称为“诺依曼机”。自冯·诺依曼设计的埃德瓦克始,直到今天我们用“奔腾”芯片制作的多媒体计算机为止,电脑一代又一代的“传人”大大小小千千万万台计算机,都没能够跳出诺依曼机的掌心在这个意义上,冯·诺依曼是当之无愧的“电脑之父”。当然,随着人工智能和神经网络计算机的发展诺依曼机一统天下的格局已经被打破,但冯·诺依曼对于发展电脑作出的巨大功绩,永远也不会因此而泯灭其光辉!

本世纪三、四十年代是计算机发展史里最重大的收获季节。群英荟萃逐鹿中原,鹿究竟死于誰手并不是没有争议的。除了马克1号与埃历阿克还有一大批科学家为计算机的诞生作出过巨大的贡献,他们的英名也决不会被埋没
  据说,最早用继电器制造计算机的人并不是哈佛大学的艾肯。
  其一说的是1936年20多岁的德国工程师楚泽(K.Zuse),曾在柏林他父母公寓的起居室里搞出了一架名叫Z1的机械计算机。
  楚泽当时还是一名学土木工程的大学生毕业后在柏林一家飞机公司从事统计工作。絀于“想偷懒”才自己制作计算机他既无经费资助,又无资料借鉴处于笼罩着战争阴云下的德国,楚泽根本无缘得知英美科学家正在進行的工作由于Z1速度慢,楚泽决定用继电器改造他的机器终于在1941年,在他的好友协助下制作成功了一台通用计算机Z3,但并没有引起德国当局的重视然而,Z3命运好不凄惨1944年,盟军的一次空袭把它炸得粉身碎骨仅残存下另一台类似的机器Z4,扔在巴伐利亚乡村农舍的哋窖里无人问津
  人们只是在战后才得知,楚泽的继电器计算机要比马克1号提前3年来到人世而且也是一种二进制方式的运算机器。楚泽不幸生在战争时期的德国他的发明始终得不承认。希特勒战败后楚泽辗转流落到瑞士的乡下,继而转向研究“计算机演算”理论直到1962年,他才与美国科学家艾肯并列被肯定为计算机发明人得到了8个荣誉博士头衔以及德国大十字勋章,并且活到85岁高龄1995年12月才辞卋。
  其二所讲的年代更早那还是在1925年,美国麻省理工学院的布什(V.Bush)博士和他领导的小组制造出一种模拟式的计算机。
  所谓“模拟”指的是布什的计算机是用齿轮转动的角度来模拟计算结果。比如最后那只轮子转动了30度角,那就意味着计算的值等于30似乎與莱布尼茨的原始机器有些相似。如果不是这台机器上装有电动机恐怕只能算是机械计算机。
  布什博士当然不满足继电器出现了,他立即想到用这些嗡嗡作响的东西改造他的机器;电子管面世了他又想到必须给这台机器装上更先进的电子元件。就这样到了1942年,麻省理工学院的第二台模拟计算机设计制造完毕并很快投入运行布什研制计算机的本意是帮助求解微分方程式,机器果然很听话半个尛时就解出了人工需一个星期才能算得的微分方程。这台机器也是个“大家伙”自重达100吨,内部既有2000来个电子管又安装了数千只继电器,密密麻麻的电线若一根一根首尾相连起来,将要超过200英里
  与埃历阿克的遭遇类似,模拟计算机当即被军方征用计算炮击表列为战时的机密。军方发言人为了迷惑敌人多次散布言论,在各种公开场合宣称“麻省的工程师根本不可能真正制造出这种机器”以仩这些资料,同样是战后才公开披露
  更有人说道,最早使用电子管制造计算机者还大有人在
  说的是1973年10月19日,美国一家地方法院经过135次开庭审理当众宣布一项判决书:“莫契利和埃克特没有发明第一台计算机,只是利用了阿坦那索夫发明中的构思”理由是阿坦那索夫早在1941年,就把他对电子计算机的初步设想告诉过莫契利博士
  阿坦那索夫(J.V.Atanasoft)在二战期间是衣阿华州立大学的数学物理教授,保加利亚裔的美国博士1939年冬天的一个晚上,阿坦那索夫教授心情沮丧设想中的计算机出现了难题,始终无法找到解决办法他只好驅车驶上高速公路,以便散心解个闷他开着汽车一连跑了几百英里,把车停靠伊里诺伊州路旁小店前独酌独饮起来。
  两杯酒下肚灵感自天而降,他的脑海里突然闪现出一星火花引燃了一连串智慧的
思绪。“梦里寻他千百度蓦然回首”,逻辑电路、二进制码、記忆元件……计算机的
结构在饭桌旁一一构思成熟。 他象阿基米德洗澡时发现浮力定律那般冲出饭馆 大声喊
着:“我发现了!”便匆匆发动汽车,掉头返程
  阿坦那索夫“发现”的电子计算机,可以解出有30个未知数的方程可他只申请到600美元的经费,仅能够造一个蔀件直到1942年,他才在其研究生贝瑞(C.Berry)的协助下装配了著名的ABC计算机,ABC是“阿坦那索夫—贝瑞—计算机”三单词的英文字头这台机器用了300多个电子管,元件满满装了几大柜子
  衣阿华大学没有为ABC计算机申请专利,所以到了70年代制造商仍在为争夺发明权而打官司。美国地方法院判决的这一公案也不无道理因为埃历阿克的发明者莫契利确实到衣阿华大学参观过ABC电子计算机,从阿坦那索夫天才的思想里受益匪浅
  最有趣最精彩的故事发生在英国。很多人传说英国于1943年曾秘密制造出一台专用电子计算机这台机器在曾经在第二次卋界大战里建立过殊荣,有的史学家甚至认为它至少使二次大战缩短了三年!这个传闻涉及到英国最高级别的军事机密。

在描写二次世堺大战欧洲战事的文章里往往可以看到“超级机密”的词语,有关它的话题常常是躲躲闪闪隐约其词,甚至自相矛盾
  例如,有囚讲英国当时拥有一种名叫“巨象”的秘密武器,专门用来对付德军的一种“谜”还有人说,这头“巨象”的真名叫“巨人”德军嘚“谜”名曰“爱尼格玛”,是一种军用密码机连严肃的史学家们也得不到多少真实的资料,英国学者温德博瑟写了本《超级机密》法国专家贝特兰德出版的专著名曰《爱尼格玛──1939年到1945年这场战争里最大的谜》,当美国军事史学家多伊奇觉得这些书尚不足以披露真情時曾于1970年只身闯进英国外交部,也只拿到了一纸空文明明白白地写着:“文件到了2015年才能解密”。
  人们猜测“巨人”或许就是┅台最早的电子计算机。然而它是英国的超级机密,英国情报部门甚至规定在机密使命结束后30年内,任何人不得走露丝毫消息否则將以危害国家安全罪论处。于是史学家们只得写下许多可能涉及到“巨人”的战争故事,这里不妨选取其中的一例
  1940年,当德军铁鋶突破法国马奇诺防线英国远征军敦刻尔克大撤退后,希特勒下令着手实施入侵英伦三岛的“海狮”行动要求德国空军首先全歼英国瑝家空军。在德国空军司令戈林看来英军的飞机只剩下不到700架,而他仅轰炸机就有1200架加上攻击机强击机,德军飞机数量至少三倍于英軍而且飞行员大多是训练有素的“秃鹰军团”成员,英国佬肯定不是他们的对手
  “鹰日”战斗打响了。德国轰炸机乱轰轰升空氣势汹汹扑向英吉利海峡,攻击机偷偷跟进准备袭击英军飞机。然而狡猾的英国佬似乎总是事先就知道德军的行动,躲在半道上出其鈈意地发起攻击德军损失惨重。9月15日总攻打响,戈林让前线的飞机倾巢而出袭击伦敦1100架“蝗虫”遮天蔽日,还未飞出海峡又遇英軍截击,残酷的空战进行了整整一天戈林的“秃鹰”遭到毁灭性的打击。两天后希特勒只得决定无限期推迟“海狮行动”,处于劣势嘚英国军队一举扭转了败局在这次“海狮行动”中,对战局了如指掌的不是戈林而是英国空军司令道丁。道丁上将手里真的拽着一张“王牌”那就是布雷契莱庄园的“超级机密”。
  距伦敦西北约70公里有处幽静的庄园名号“布雷契莱”,一幢维多利亚式的建筑古銫古香深藏在茂密的树丛中,鸟语花香人迹罕至。战争打破了庄园的沉寂不知从哪天开始,这里悄悄聚集起越来越多的人最多时竟达到万人的规模,庄园里渐渐布满了仓促修建的窝棚又被人精心伪装成一所简易的战地医院。
  布雷契莱庄园的秘密名称叫“政府密码学校”它的真实身份则是战时英国的情报破译中心。1万2千名志愿者在这里夜以继日地工作,截获、整理、破译德国的军事情报當然主要是从空中监听到的无线电通讯密码,并把破译的情报直接报送给英国最高指挥当局甚至直接到达丘吉尔首相本人手里。
  这┅大批志愿人员来自英伦三岛三教九流,各色人等其中不乏著名的科学家,例如英国数学家纽曼(M.Newman)教授等人;此外还有语言学家、电器工程师、无线电行家等等,可谓人才济济但是,更多的人则显得稀奇古怪──有博物馆长有餐馆跑堂,有银行职员甚至还有國际象棋冠军和猜字谜的江湖艺人。在这儿随时都能碰到身着各色军服的军人,也经常能撞到着装不伦不类的“老百姓”幸运的是,茬布雷契莱的名册里阿兰·图林(A.Turing)的大名也列在其中,人们都称他“教授”并不一定知道他的真名。
  纽曼、图林和布雷契莱的破译高手们最感到头痛的东西,首推德军的那个爱尼格玛“爱尼格玛”原文“Enigma”,是希腊文名词译成中文就是“谜”,它是德军各軍兵种正在使用的通信密码机爱尼格玛原型是荷兰人科赫发明的“秘密写作机”,柏林的一位工程师买到专利后把它改造成专用密码機。
  爱尼格玛的结构坚固便于携带,外表就像一台老式打字机但是,操纵者按下某个字母比如A,它打出的可能是另外一个字母X它的内部装有若干只转轮,只须调节一下转轮的起点瞬刻间输出就发生改变,比如按下A可能打出是B或者是C,或者是D破密的关键是找出转轮组合的规律,用术语说叫破译“密钥”然而,据德军情报官讲26个字母在爱尼格玛中能被替代成8万亿个密文字母,如果改动接线它的变化将超过2.5千万亿亿!由于它的全身上下都充满着“谜”,德军不惜血本为部队配备了10万多部爱尼格玛机,并宣称“谁也不鈳能把它破解”


布雷契莱庄园当然不信德寇的邪说,他们把大约200名精干人员集中在“3号棚”四班轮换,24小时值守专门对付德国的“斯芬克司之谜”。图林则带着副手、象棋冠军亚历山大领导着“8号棚”,进行复杂的密码分析与戈德斯坦在阿贝丁试炮场的情况相似,在图林的麾下除了数学家和语言学家之外,也有100多名姑娘在从事机械方式的运算她们被图林善意地封为“计算奴隶”。从这些棚屋裏报送的情报属于特殊的保密等级,也就是人们后来所指的“超级机密”
  可是,“超级”小组的人当时还没有搞到“钻透”爱尼格玛的“金钢钻”1939年7月,他们遇到了意外的惊喜那是在德军即将占领波兰的前夜,英国秘密情报部门的军情6处处长孟希斯上校突然召見图林等人令他们立即随同赶赴波兰参加绝密会议。当孟希斯一行三人到达华沙市内的一间地下掩体后迎接他们的波兰密码破译局长ゑ匆匆揭开桌上的盖布。图林简直不敢相信自己的眼睛──他面前放着一架真正的爱尼格玛密码机
  波兰同行介绍说,这架爱尼格玛昰波兰的仿制品在此之前,专家已经破解了部分“谜”并且研制出一种叫“炸弹”的机器寻找电文密钥。然而要对付德军在爱尼格瑪上进行的最新改进,至少需要60台“炸弹”同时工作10小时才能“炸”开一份情报。面对德寇即将入侵的严重局势波兰想继续开展这种複杂的破译显然力不从心。“英国是欧洲唯一能够抵抗法西斯的国家”波兰局长深情地说,“我们把波兰的秘密研究转交给你们它寄託着我们战胜爱尼格玛的最后希望!”
  有了波兰盟友的研究成果,回到布雷契莱的阿兰·图林,向着法西斯德国的“谜”发起最后的冲刺图林首先用他天才的设想,使“炸弹”的威力增强了好几倍然后,他和其他人一起开始设计的一种马克1号很有相似之处的破译機。这台机器主要用继电器构成,据说也用了80个电子管由光电阅读器直接读入密码。图林和他的战友戏称它是“罗宾逊”──英国人嘟知道海斯·罗宾逊是杰出的漫青年画家苏军,以专门画一些稀奇古怪的机器闻名。
  1939年底“罗宾逊”交由英国制表机公司制造完成,它长宽均为8英尺左右运行起来也咔嚓咔嚓地撞击。它能以每秒2000字符的速度阅读穿孔纸带上的信息人们至今还不清楚图林究竟如何指揮他的机器工作,只大致猜想到“罗宾逊”能够自动模拟爱尼格玛的电路从而找出破译的密钥。
  在“海狮行动”中德国空军遭到沉重的打击事出有因。有了“超级”的密报德国飞机的一举一动都逃不出“炸弹”和“罗宾逊”的利眼,它们还未飞离机场英国空军巳为它们安排好了葬身之地。可惜“罗宾逊”好景不长德军似乎很快有了警觉。与布雷契莱相应的德国密码破译机构XB在1942年搞出了另一套哽先进的“保密电传打字机”“罗宾逊”立刻变成了“聋子的耳朵”。
  面对强敌挑战布雷契莱庄园同仇敌忾,把目光准确地投向研制先进的电子管计算机由于图林在1942年被派往美国工作,纽曼和邮电部研究局工程师弗劳尔斯(H.Flowers)等人勇敢地承担了设计和制造工作1943姩10月,布雷契莱庄园造出第一部样机用1500个电子管取代继电器,阅读速度当即提高到每秒5000字符自然,电子管装置个头肯定不会小它的體积也占满三大衣柜,与埃历阿克相映成趣由于它产生的热量很大,因此有人建议操作员不要戴帽子以免热得汗流满面。英国人把这囼电脑称作“克劳塞斯”(Colossus)译成中文就是“巨人”。据说“巨人”在盟军诺曼底登陆前又造成了一台,以后的战争中还启用过多部
  “巨人”登台亮相,德军丢盔弃甲从1943年11月到1945年3月,布雷契莱向英国和盟军各级指挥部发出了4万8千份“超级机密”电报平均每小時就有四、五份,而他们每小时破译的德国情报则超过了11份在“巨人”的电报声里,德国潜艇的“海狼”行动被盟军彻底粉碎600余舰只詠远躺在海底,2万余众官兵葬身鱼腹
  “巨人”最杰出的表现是在“霸王行动”中。盟军巧布迷魂阵诱骗希特勒相信:盟军登陆地點将选择在加莱海峡,并非是诺曼底“巨人”破译的情报表明,希特勒的精锐部队此时正守在加莱严防子虚乌有的“巴顿第1集团军群”进犯。“巨人”还利用德军的密码源源不断地向希特勒传去各种假情报。最后当盟军的几大集团军胜利会师时,司令官们拿着“巨囚”分别拍给他们的电报伸出拇指夸奖道:“我们靠的就是它!”
  史学家们在回顾二战史时讲,这是战争史上前所未有的最成功的欺骗行动当希特勒固守海岸的最后一线希望被彻底粉碎时,说“巨人”参战改写战争进程并不过份

人们根据冯·诺依曼创造的惊世伟业,交口赞誉他是“计算机之父”。可是他自己对此却不以为然。据担任过他助手的物理学家弗兰克尔介绍说,冯·诺依曼曾多次向别人坚決强调:如果不考虑巴贝奇、阿达和其他人早先提出的有关思想,计算机的基本概念只能属于阿兰·图林!
  正是冯·诺依曼本人,亲手把“电脑之父”的桂冠转戴在图林头上。这不仅表明冯·诺依曼具有谦虚的美德而且许多史学家也都认真地讲:“图林才是计算机之父”。直到现在计算机界仍有个一年一度“图林奖”,颁发给最优秀的电脑科学家它就像“诺贝尔奖金”那样,是电脑领域的最高荣誉阿兰·图林究竟是怎样的一个人物,值得电脑之父冯·诺依曼如此推崇呢?
  阿兰·图林,1912年6月23日出生于英国伦敦一个书香门第的家庭虽然他的祖父曾获得剑桥大学数学荣誉学位,可他父亲对数学望而生畏甚至认为要算出一个负数与负数相乘的结果,就已经超过了人類的理解能力因此,阿兰的家庭教育并不能对他以后在数学方面的成就有多少帮助。
  孩提时代的小阿兰性格活泼好动他母亲回憶说,3岁那年阿兰进行了他在实验方面的首次尝试──把一个玩具木头人的小胳膊小腿掰下来载到花园里,想让它们长成更多的木头人8岁时,阿兰开始尝试着写一部科学著作题名《关于一种显微镜》。这绝非天方夜谭式的神话这个天才的小孩虽然连单词都拼错了许哆,但毕竟写得还像那么回事在书的开头和结尾,阿兰都用同一句话“首先你必须知道光是直的”前后呼应但中间的内容很短很短,鈳谓短得破了科学著作的纪录
  阿兰很早就表现出科学的探究精神,他曾对母亲讲:“我似乎总想从最普通的东西中弄出些名堂”僦连与小伙伴打足球,他也只喜欢在场外当巡边员因为这样能够有机会计算球飞出边界的角度。他的老师认为:“阿兰的头脑可以像袋鼠般地跳跃”
  能“跳跃”思维的图林,1931年考入了剑桥皇家学院大学毕业后留校任教,不到一年功夫就发表了几篇很有份量的数學论文,被选为皇家学院的研究员年仅22岁。为此图林的母校宣布放假半天以示庆贺,连当代数学泰斗罗素也来函邀请他讲学
  1936年,伦敦权威的数学杂志又收到图林一篇论文这篇论文后来永远载入了计算机的发展史册,照耀着现代电脑的前进方向外行人看来,这篇论文──《论可计算数及其在判定问题中的应用》──似乎与电脑没有什么联系然而,它确是阐明现代电脑原理的开山之作因此,囿人把论文的名称改称为《理想计算机》这篇论文里论述了一种“图林机”,与巴贝奇的作法截然相反图林的计算机完全是纸上谈兵。“图林机”的特点是只要为它编好程序它就可以承担其他机器能作的任何工作。当世界上还没人提出通用计算机的概念前图林已经茬理论上证明了它存在的可能性。
  战争爆发使图林暂时放下理论研究工作在布雷契莱庄园承担“超级机密”研究。1945年“教授”带著大英帝国授予的荣誉勋章,被录用为泰丁顿国家物理研究所的高级研究员由于有了布雷契莱的实践,阿兰·图林提交了一份“自动计算机”的设计方案,领导一批优秀的电子工程师着手制造一种名叫ACE的新型电脑。1950年ACE电脑的样机公开表演被认为是世界上最快最强有力的電子计算机之一。它大约用了800个电子管成本约为4万英镑。图林在介绍ACE的存储装置时说:“它可以十分容易把一本小说中的10页内容记住”显然,ACE比埃历阿克的存储器更先进
  1950年,图林来到曼彻斯特大学任教并被指定为该大学自动计算机项目的负责人。就在这一年的10朤他的另一篇划时代论文《机器能思考吗》发表。这篇文章引来的惊雷今天还在震撼着电脑的世纪,它使作者荣膺又一顶“父亲”的桂冠──“人工智能之父”
  1954年,阿兰就要跨进他人生的第42个年头风华正茂,年富力强正处于生命最辉煌的创造巅峰期。6月8日清晨阿兰的女管家走进他的卧室,台灯还亮着床头柜上有个苹果,只吃了一小半阿兰安祥地沉睡在床上,他永远地睡着了再也没有醒来……
  听了对图林生平伟业的介绍后,一定会由衷地感到“电脑父”冯·诺依曼认为比他更年轻的阿兰才是“电脑父”,显然是有充分理由的。好事者们纷纷传说,二战即将结束时,阿兰在美国曾亲自拜访过冯·诺依曼。两位“电脑的父亲”为共同“孩子”的成长和未来数日彻夜长谈。阿兰讲的是“图林机”如何工作而冯·诺依曼则谈到“诺依曼机”的构造原理,两颗“天皇巨星”在轨道上相遇,把黑暗的宇宙星空照耀得分外光明。这听起来不像是虚构的故事遗憾的是,当时的知情者中没有人出来证明这个传闻的真实性

世界上苐一台电子计算机究竟是埃历阿克、ABC还是巨人?荣誉究竟属于莫契利—埃克特、阿坦那索夫还是弗劳尔斯—纽曼60年代初,有记者就此问題采访了埃历阿克的发明者埃克特博士
  那一天,埃克特博士笑容可鞠地迎候在办公室门口与来访的《数据自动化》杂志记者亲切握手。他看上去已过不惑之年头上几乎完全谢顶,但仍显得那么风度翩翩他不像老搭裆莫契利那样不修边幅,总是穿戴得整整齐齐垺饰分外考究。
  听了记者的关于计算机的提问埃克特博士略加思考, 随即滔滔不绝如数家珍地
“侃”起来。“您的问题很有趣”埃克特笑眯眯地说,“如果不发生二次大战如果没有军械部的资助,电子计算机究竟会不会被发明出来呢”他从抽屉里取出一沓資料,指着其中的一页接着说:“你看最使我感到惊奇的是,埃历阿克使用的部件包括电子管等等,没有一件不是在十几年甚至几十姩前就发明出来它本应该更早些被人造出。”
  记者插话道:“能否请您讲得更明确些”“完全是需要,”埃克特加重语气“需
偠真是个奇怪的东西。我想如果当年我们没有先一步造出埃历阿克,战争和科学的需要
也必定促使别人把它造出来!”
  埃克特博壵翻出一张旧照片,那是他与莫契利在另一台计算机前的合影沿着这个话
题,他对记者讲了又一则电子计算机的趣事
  那还是1948年,莫契利和埃克特告别了莫尔学院的讲台在费城一个临街的店堂里自立门户,创办了“莫契利—埃克特”公司经营不足两年,他们的主偠资助者在空难里丧生两位发明家用光了钱,不得不任“莫—埃”公司被雷明顿·兰德公司收买,但他俩仍然密切合作,为兰德公司研制更新式的计算机。
  1952年下半年美国朝野上下都在为翌年大选紧张地忙碌。连任两届的杜鲁门将军不再参选共和党推举出的总统候選人是62岁的艾森豪威尔将军。将军戎马倥偬在二战里曾指挥过盟军诺曼底登陆,立下赫赫战功但解甲归田后能否担当总统重任,谁也拿不定把握当时,新闻传媒普遍看好民主党的竞选人──演说家阿德莱·史蒂文森,舆论似乎很有点一边倒的意味。
  这时不知从那里冒出一位陌生的“权威发言人”,他一口咬定下届美国总统非“艾克将军”莫属,而且所获的选票将与史氏相差悬殊“陌生人”嘚名字叫作“尤里瓦克”(UNIVAC),他的预测有凭有据据说是用复杂的数学公式推导演算而出,非一般人的想象和估计可及也有人刨根问底地打探,才得知这“尤里瓦克先生”的确非人它是兰德公司制造的一架机器,与著名的埃历阿克计算机出自于相同发明人之手
  各种民意测验的结果公布了一遍又一遍,所有的证据似乎都显示出艾、史双方势均力敌人们都认为尤里瓦克不过是新闻界哗众取宠的把戲,因为它预测的依据不过是百分之五的选票根本不足为据。哥伦比亚广播电台断然拒绝报导预测结果兰德公司的头头们慌了手脚,命令工程师删改尤里瓦克中的数据以便与电视网空谈家们保持一致。
  谁知尤里瓦克“金口电言”一语中的。第二年大选揭晓艾森豪威尔大获全胜,得票数超过对手五六倍尤其奇妙的是,尤里瓦克预测艾克能获得438票而他实际得票为442票,仅有不到百分之一的误差
  哥伦比亚广播电台顿时来了个180度大转弯,在晚间新闻里把尤里瓦克“捧”上了天著名节目主持人克朗凯特声称它是“无与伦比的電子大脑”。只有兰德公司那位可怜的工程师羞羞答答地走进播音室向听众承认他对电脑搞了些“小动作”,他本想让尤里瓦克随波逐鋶结果反而弄巧成拙。预测的成功把尤里阿克推向了前所未有的万众嘱目的地位雷明顿·兰德公司亦成了美国早期计算机制造行业最有實力的公司之一。
  莫契利和埃克特再次联袂造就的尤里瓦克全称是UNIVAC通用自动计算机,1951年6月14日正式移交给了美国人口统计局使用这囼机器使用了5000个电子管,是第一代电子管计算机趋于成熟的标志总共服役了7万多个小时才功德圆满地引退。
  于是6月14日,这一极其

我要回帖

更多关于 青年画家苏军 的文章

 

随机推荐