计算机为什么是今天这样子?本文将用一气呵成的方式,把计算机发展历史快速缕一遍。
小时候,见过计算器,能很快完成计算,当时心想,计算器真厉害,能提前把所有结果存储下来。
后来,吵着闹着要买小霸王学习机,最后如愿变成游戏机,经典游戏“超级玛丽”和“坦克大战”至今历历在目。
后来,读初中,有了象征意义上的电脑课,穿着鞋套去电脑室,完全不会操作。有一次,把电脑弄死机了,吓得不轻,梅老师瞪了我一眼,直接把电源关了。
然后,他回到他自己的电脑上,潇洒地听着任贤齐唱“让我悲也好,让我醉也好......”。那时,我知道了电脑还能唱歌。对电脑的屏幕画面,也只有个模糊的印象:
那时的电脑显示器,真的很丑陋,在很长一段时间内,我一直误以为,这一大坨东西就是电脑的全部。其实,它只是显示器而已,远非核心部件。
广义上讲,上面提到的电子计算器、小霸王学习机和初中见到的那些电脑,都是计算机。你现在拿在手上用于阅读的手机,也是计算机。总之,计算机无处不在。
要了解计算机,就应该了解它的发展过程,去探索历史上那些精彩的瞬间。本文从宏观的角度,浮光掠影般了解一下计算机历史。我们将以下图的框架目录来展开简述:
一. 手动计算机
这里讲的手动计算机,是从远古时代到17世纪初。很久很久以前,女同志白天忙采集,男同志白天忙打猎,昨日猎回几只羊,今朝逮回几只兔,都需要计数,这涉及到数的表示。
计数的历史
远古时代的人,也有十个手指,所以采用手指来计数,是很顺其自然的事情,这也就是十进制的来源。小时候,我们学习十以内数字的加减,就是用手指来计数,来看常见表示:
我们来看下牛津词典对digit的解释,手指和数字的关系,一目了然。digit既有手指的意思,也有数字的意思。我们也顺便学会了digit, digital, bit(binary digit)这几个单词。
想一下,手指计数有哪些不足?很显然,当数字变大后,手指个数不够了。而且,古代的人也需要吃饭, 某天逮回3只羊,用手指记录下来,吃饭时还得保持手指计数的姿势。
至于睡觉,那也睡不好,睡醒之后,手指松了,一切都忘了,这就尴尬了。得想其他办法,很自然地,不要用手指这样的“活物”来计数,用石头吧,毕竟石头不需要吃饭睡觉:
我们来看下calculus这个单词。容易看到,石头和计算也联系在一起,历史渊源,原来如此。顺便地,很轻松地学了单词,下次看到calculator, calculation, 岂会陌生?
想象一下,要把石头从北京带到深圳,该多麻烦。石头太笨重了,还是不好,得想其他办法。于是,人们想到用绳子来计数,轻松多了,携带也更加方便了。
英语单词cord就是绳子的意思,record就是记录的意思,用绳子来记录嘛。从词源学来看,cord和record还是很有渊源的,很多东西联系起来就简单了。
用结绳计数的人,可能会深刻理解李煜说的“剪不断,理还乱”,“别是一般滋味在心头”。我曾遇到过多次解不开结而苦恼的场景,相信你肯定也有,看着就头大头晕。
而且,绳子计数没法处理篡改的问题。昨天我从你那里借了3只兔,在绳子上打3个结,晚上回家偷偷解开其中的1个结,这就尴尬了,可见,要防止单方面偷偷篡改。
于是,古人采用了刻痕计数,有了刻痕,双方立下契约,劈成两半,每人一份,防止单方篡改。在商朝时,甲骨文很流行。前几年,还有人在高考作文中用甲骨文呢。
我们提到的手指、石子、绳子和刻痕,主要用来计数,有了计数后,我们得对它进行加减乘除运算,这就涉及计算。接下来,我们简要聊聊计算方法和工具的发展。
计算的历史
中国的算筹,历史悠久。也有很多词语中包含筹,如觥筹交错,运筹帷幄等,现代管理学中还有一门“运筹学”的课程。所谓筹,就是竹子,跟摆弄火柴棍差不多。
来看算盘,估计很多人见过,我家就有这个东西,“三下五除二”貌似尽人皆知。楼下培训机构有个“珠心算课程”,曾经探头去看了一眼,不怎么火热,来看看算盘:
再来看纳皮尔筹,我琢磨了一下,道理很简单,本质就是“九九乘法表”。比如,要计算125*8的值,预期结果是1000,具体是怎么计算的呢?我试了一下,如图:
纳皮尔发明了对数,大家在高中肯定学过。大家应该记得这个符号:logN, 那个N不仅仅指代正整数,也指代纳皮尔名字中的N,表示对这位计算先驱的纪念。
后来,拉普拉斯说:对数的发明,以其节省劳力,而使天文学家的寿命增加一倍。伽利略说:给我空间、时间和对数,我就能创造宇宙。对数的本质是降维。
什么意思呢?对数可以把乘法除法转化为加法减法。类似的做法是非常普遍的,傅里叶级数,傅里叶变换,拉普拉斯变换,Z变换,都是如此,降维降级处理。
以常用的傅里叶变换为例,它把卷积运算降维为乘法运算,实现了积分向乘法的转换,使得计算复杂度大大降低,学过《信号与系统》的朋友,应该深有感悟。
再来看看由对数引出的滑尺计算,这个尺子是按照对数来制作的。很容易看出2*3=6,直接用尺子得到了结果,其背后的数学逻辑便是对数,log2+log3=log6, 所以2*3=6
那年国庆节,看了核潜艇之父黄旭华老先生获得了共和国勋章奖,在他的一个视频,有一把计算尺,在那个年代,就是靠类似的计算尺完成核潜艇计算的,挺不容易。
无论是算筹、算盘、纳皮尔筹还是滑尺,都需要人参与具体过程和计算细节。那么有没有这样的工具:输入3和4,让工具自动得到7呢?那就来看自动计算的工具吧。
二. 机械计算机
机械计算机时代是从17世纪初到19世纪末。契克卡德是德国人,他制作了一个计算钟,能实现简单自动计算,当时的工艺肯定没有下图这么精美,下图是后人做的复制品:
法国的帕斯卡,就是搞压强的那个物理学家。著名编程语言Pascal之名,正是取自帕斯卡,以纪念这位计算机先驱。帕斯卡制作了加法器,看着那些齿轮,真想去拧一拧:
德国的数学家莱布尼茨,就更有名了,也是个非常自负的家伙。大学高等数学中的“牛顿-莱布尼茨”公式,应该熟悉吧,还有莱布尼茨对于交错级数是否发散的判定方法。
他敢跟牛顿爵爷叫板,还是有几把刷子的。另外,据说,莱布尼茨对二进制的发明,也有较大的贡献,这是现代计算机计算的基础。莱布尼茨当时做了个机器,能做乘法:
在计算机发展史上,上面都是铺垫,直到巴贝奇差分机,才有了一些现代计算机理念的感觉。作为现代计算机的鼻祖,巴贝奇为计算机奋斗一生的精神,一直鼓励着很多人:
巴贝奇分析机更是思维超前,虽然最终没有实际制造出来,但闪烁着天才般的智慧和火花,很多理念与现代计算机原理非常相似,来看下巴贝奇分析机模型,感觉挺炫酷的:
巴贝奇带着遗憾离开人世,但给后人留下了宝贵遗产。1832年,17岁的Ada参观了巴贝奇差分机,深深着迷。在巴贝奇去世后,Ada继续发扬光大巴贝奇的工作,为机器编程。
Ada被认为是计算机历史上的第一个程序员,是个女程序员哈。美国国防部曾经花了10年时间研发了一种编程语言,在命名时,他们想到了Ada, 并以此来命名,这就是Ada语言。
Ada的父亲,是英国著名诗人拜伦,可曾记得他那经典的话:命运要我去流浪的地方还不少,去时还带着多少可叹的记忆;但我唯一的慰藉的事情是:最不幸的遭遇也不足为奇。
扯远了,回归正题。可以看到,在机械计算机时代,人们用各种方式来制造精巧的机器,让机器完成简单的计算,这是很大的飞跃, 因为它把人从具体的计算过程中解放出来了。
三. 机电计算机
机电计算机是从19世纪末到20世纪40年代。机械和机电的差别,从名字上就可以看出来。自18世纪中叶以来,电学蓬勃发展,一些机器开始可以用电来驱动了。
美国宪法中这样一条规定:每10年需要做一次人口普查。1880的人口普查,花了7年的时间才得到结果。这就尴尬了,3年后,也就是1890年,还得再次普查。
随着美国人口越来越多,会出现这样的问题:前一轮还没普查完,后一轮又要开始。于是,开始想办法尽量实现自动化,霍尔瑞斯发明了制表机,并脱颖而出。
1890年的人口普查数据,是1880年的两倍,但总共却只耗时2年左右。当时,霍尔瑞斯制表机没有选择二进制,原因:二进转换困难,二进制机器制作困难。
人口普查后,霍尔瑞斯名声大振。在1896年,他开了个制表机公司。在1924年,公司改名为IBM, 响当当的名字,快100年了,IBM在每个时代,几乎都不落伍。
在第二次世界大战中,各国基于军事需要,大力投入了计算机的研究,但是,德国似乎不怎么看好计算机,希特勒更相信武器本身的威力,更相信密集式地狂轰乱炸。
祖斯,德国著名的计算机先驱,在1935-1945这十年左右的时间,先后建成了Z1/Z2/Z3/Z4计算机,这些计算机时运不济,命途多舛,要么不被重用,要么被战火吞噬。
祖斯的Z1/Z2/Z3/Z4都很有创造性,比如,Z1验证了机器计算的可行性,Z2是第一台电磁式计算机,Z3可以用二进制控制Z4能用穿孔纸袋输入输出,甚至是处理条件。
在第二次世界大战中,德国不怎么重视计算机, 但美国就不一样了,各类计算机相关的研究如火如荼地进行。也就是从这时开始,美国在信息领域的领先地位开始建立。
史蒂比兹在自己的厨房,用二进制做实验,验证二进制的可行性。很多书上能看到Model K, 这个K就是kitchen,是厨房的意思,他老婆取名Model K,挺有意思的哈。
贝尔实验室的Model是一个系列,有很多不同的机型,比如Model I, 能完成远程通信,毕竟电话与通信是贝尔实验室的强项,这也为后来计算机网络的发展奠定了基础。
哈佛大学也不甘落后,与IBM合作制作了哈佛Mark系列,不过其总设计师艾肯却宣称哈佛Mark I是他一个人搞起来的,IBM的小沃森自然很恼火,最终不得不分道扬镳:
哈佛Mark II是当时最大的继电器是计算机,有13000多个继电器。我们来看看继电器长啥样子。我还记得,在读初三时,物理课上,老师深入讲解过继电器:
1947年9月9日,那是一个秋季的九九艳阳天,一个蛾子飞进了哈佛Mark II的一个继电器,导致继电器失效,机器无法正常工作,这就是历史上有名的bug事件。
如今的软件开发中,大家常说的软件bug, 就是指软件缺陷或者漏洞,实际上,其实说的就是1947年的那只该死的蛾子。工作之后,我天天抓bug,抓得不亦乐乎。
四. 电子计算机
电子计算机从20世纪40年代至今,一直方兴未艾。 继电器虽然可以用来做计算机零件,但并不完美,它是机械的,反复移动,容易断裂,而且速度还很慢。
于是出现了电子管,也称真空管,继电器能做的二进制功能逻辑,电子管都能做,而且速度更快,快1000倍。来看看电子管长啥样,我觉得挺好看,颜值不错:
当时,很多机电计算机由继电器构成,但到了1945年,电子管计算机基本上取代了机电计算机,线路乱七八糟,操作计算机的方式就是插电线, 拔电线。
那时的操作员,相当于今天的程序员,都是“编程”。不同之处是,那时工作很繁琐,需要耐心,有很多女孩子加入,于是,男孩子也不愁找不到女朋友了。
不像今天,程序员找个女朋友,费劲得很,可能是因为女程序员太少了。不久之前,有个男程序员就跟我聊天,吐槽这件事情,我就听听,然后乐呵笑了。
电子管计算机固然快,但很昂贵,而且还受到“爱迪生效应”的影响:电子管工作的时候,容易发热,动不动就被烧坏,这对于稳定性来说,是很致命的呢。
比方说,好不容易写好一篇公众号文章,辛辛苦苦花了一周时间,结果某个电子管烧坏了,整个计算机失灵,文章丢失,肯定要骂人,丢过文章的人都知道。
鉴于电子管的缺点,人们开始研究新的器材。1947年,晶体管诞生了,学过模拟电路的朋友,应该很熟悉这个东西,我的专业就与此相关。话不多说,来看下晶体管外形:
1956年,肖克利因发明了晶体管而获得了诺贝尔物理学奖,晶体管改变了世界。肖克利本人名利双收,但想搞更多的钱,于是开始开公司,可是他智商很高,情商太低。
于是,肖克利手下的八个人,先后离开了他。肖克利自然不满,给这八个人扣了一个大帽子,即“八叛逆(The Traitorous Eight)”,这可是很厉害的八个人哦,一起来看看:
1957年,这八个人接受一家公司资助,成立了后来很有名的仙童半导体公司,上图的的字母F, 就是Fairchild, 意思就是仙童。学电子电路的朋友,应该基本都听说过这个公司,它被誉为是硅谷的西点军校。
乔布斯就曾将其比作成熟的蒲公英,只要风一吹,其创新的精神,就像蒲公英的种子那样,四处飞扬,生根发芽。然而,天下没有不散的筵席,他们又陆续离开仙童公司,于是有了Intel和AMD, 是不是很熟悉?
大家电脑中的CPU, 基本都是这两家的搞出来的。这里顺便说一下,摩尔是Intel的创始人之一,他提出了著名的摩尔定律,至今仍有效,并支配着硬件的发展。貌似扯远了,我们来继续看当时的晶体管计算机:
尽管晶体管使计算机简化了很大,但计算机仍然是庞然大物,还能继续进行压缩吗?1958年,就职于德州仪器公司的杰克基尔比,发出疑问:为什么不在一块硅片上,制造多个晶体管呢?这就是集成电路。
1959年,肖克利八弟子之一的罗伯特诺依斯(Intel创始人之一), 也想到了同样的方法。他们后来为谁先发明集成电路而争论不休,现在普遍的观点是:他们独立发明了集成电路,可以说都是集成电路之父。
说到罗伯特诺依斯,在乔布斯的“Stay Hungry, Stay Foolish”演讲中,他说自己被赶出苹果公司后,曾去找过罗伯特诺依斯和HP创始人之一的戴维帕卡德,估计是一起喝酒吐槽。来看下集成电路芯片吧:
然而,这种集成度还远远不够,能不能在更小的芯片上集成更多的晶体管和电子元件呢?当然可以,这就是大规模和超大规模集成电路。一块芯片,指甲那么大,居然集成了上亿个晶体管和电子器件,而且还要正常稳定工作,每每想到此,就不寒而栗了。
当年占据整个房间大小的计算机,如今竟然被集成得这么小, 而且功能远远超过当时的计算机。这背后是数学、物理、化学、微电子学、电磁学、光学和量子力学等学科的功劳。难怪华为任总说:搞芯片,砸钱是不行的,要砸数学家,物理学家和化学家。
讲到这里,似乎把计算机发展简史叙述了一遍,但仅仅是从计算机硬件角度进行的,并不是计算机发展历史的全部,甚至只能算作是冰山一角。
从计算机科学上看,没有讲到计算机科学之父——阿兰图灵,没有讲到现代计算机之父——冯诺依曼,没有讲到信息论之父——克劳德香农。此外,对于计算机型号、计算机公司、软件发展、操作系统、编译器、各种编程语言、数据库、计算机网络等等都没有讲到。所以这篇文章是不完整的,也不可能在一篇文章中把所有的东西介绍完毕,毕竟浩如烟海。
发表评论