小时候,见过电子计算器,能很快完成计算,当时心想,计算器真是厉害,能提前存下所有数字的加减乘除结果。现在想来,很傻很天真。
后来,吵着闹着要买小霸王学习机,最后如愿变成游戏机,经典游戏“超级玛丽”和“坦克大战”至今历历在目:
后来,读初中,有了象征意义上的电脑课,穿着鞋套去电脑室,完全不会操作。有一次,把电脑弄死机了,吓得不轻,毫无耐心的梅老师,瞪了我一眼,直接把电源关了,然后回到他自己的电脑上,潇洒地听着任贤齐唱“让我悲也好,让我醉也好……”。那时,我知道了,电脑还能唱歌。对电脑的屏幕画面,也只有个模糊的印象:
高中以前,听到的概念都是电脑,大概是到了高中,才第一听说计算机这个名词,其实,他们就是一回事。有一次,我去一家互联网公司面试,司机指着我要去的那栋楼说:里面都是搞电脑的有钱人。我挺诧异的,有没有钱我不知道,但那些搞计算机的互联网人,是搞电脑的吗?是修电脑的吗?
广义上讲,上面提到的电子计算器、小霸王学习机和初中见到的那些电脑,都是计算机。你现在拿在手上用于阅读的手机,也是计算机。总之,计算机无处不在。
要了解计算机,就应该了解计算机的发展过程,去探索历史上那些精彩的事件和瞬间。本文仅从宏观角度,和大家一起,浮光掠影般了解一下计算机历史。
小时候,我们学习十以内数字的加减,就是用手指来计数的,来看常见的表示:
我们来看下牛津词典对digit的解释:
手指和数字的关系,一目了然,我们也顺便学会了digit,digital,bit(binarydigit)这几个单词。
想一下,手指计数有哪些不足?很显然,当数字变大后,手指个数就不够了。而且,古代的人,也需要吃饭睡觉,某天逮回3只羊,用手指记录下来,吃个饭,还得保持手指计数的姿势,睡一觉后,手指松了,一切都忘了,这就尴尬了,得想其他办法。
很自然地,不要选用手指这样的“活物”来计数,用石头吧,毕竟石头不需要吃饭睡觉:
我找到了一个新东方的网页,介绍calculus这个单词,内容如下:
想象一下,要把石头从北京带到深圳,该多麻烦。石头太笨重了,还是不好,得想其他办法。
于是,人们想到用绳子来计数:
英语单词cord就是绳子的意思,record就是记录的意思,用绳子来记录嘛。从词源学来看,cord和record还是很有渊源的。这些单词,“总是看了不能忘”,卓依婷如是说。
用结绳计数的人,可能会深刻理解李煜说的“剪不断,理还乱”,“别是一般滋味在心头”:
不仅如此,绳子计数没法处理篡改的问题。昨天我从你那里借了3只兔,在绳子上打3个结,晚上回家后,我再偷偷解开其中的1个结。1个月后,我只还你2只兔子,你肯定不乐意的。这里的问题就在于,你我双方没有可以用来核对的借条契约。
于是,古人采用了刻痕计数,有了刻痕,双方立下契约,劈成两半,每人一份,防止单方篡改:
上面我们提到的手指、石子、绳子和刻痕,主要用来计数,有了计数后,我们得对它进行加减乘除运算。有东西要表示,就涉及到计数,有数量需要变化,就涉及计算。
接下来,我们简要了解一下历史上那些有名的计算方法和工具。
中国的算筹,历史悠久。也有很多词语中包含筹,如觥筹交错,运筹帷幄等,现代管理学中还有一门“运筹学”的课程。所谓筹,就是竹子,就跟摆弄火柴棍差不多。算筹的具体算法不难,我们也无需做过多了解。图中那个挠头的人,是计算时遇到困难了吗?
再来看算盘,估计很多人见过,我家就有这个东西,“三下五除二”貌似尽人皆知。我虽然懂算盘算法原理和步骤,但不熟练。楼下培训机构有个“珠心算课程”,曾经探头去看了一眼,不怎么火热。来看看算盘长啥样子:
再来看纳皮尔筹,我琢磨了一下,道理很简单,本质就是“九九乘法表”,比如计算125*8,结果是1000,符合预期:
对数的本质就是降维,把乘法除法转化为加法和减法。类似的做法是非常普遍的,傅里叶级数,傅里叶变换,拉普拉斯变换,Z变换,都是如此。以最常用的傅里叶变换为例,它把卷积运算降维为乘法运算,实现了积分向乘法的转换,使得计算复杂度大大降低,学过《信号与系统》的朋友,应该深有感悟。
稍微多想一下,是不是很多地方都类似呢?泰勒、麦克劳林都是深谙此道的高手。“狗哥”曾在他的博客中,也用大量的篇幅描述了“降维”。
再来看看由对数引出的滑尺计算,这个尺子是按照对数来制作的。很容易看出2*3=6,直接用尺子得到了结果,其背后的数学逻辑便是对数,log2+log3=log6,所以2*3=6
今年国庆节,看了核潜艇之父黄旭华老先生获得了共和国勋章奖,在他的一个视频,有一把计算尺,在那个年代,就是靠类似的计算尺完成核潜艇计算的,挺不容易,挺打动人的。
无论是算筹、算盘、纳皮尔筹还是滑尺,都需要人参与具体的过程,参与每个计算细节。累就一个字,我只说一次。有没有这样一个工具:输入3和4,让工具自动得到7呢?没有,那就来制造这样的自动工具吧。
契克卡德是德国人,他制作了一个计算钟,能实现自动计算,当时的工艺肯定没有下图这么精美,下图是后人做的复制品:
对于契克卡德计算钟,我们不做详细介绍,总之,它是个机器,里面有各种零件,能完成自动计算。
法国的帕斯卡,大家应该比较熟悉,就是搞压强的那个物理学家。著名的编程语言Pascal之名,正是取自帕斯卡,以纪念这位计算机先驱。帕斯卡自己制作了一个加法器,看着那些齿轮,真想去拧一拧:
在计算机发展史上,上面都是铺垫,直到巴贝奇差分机,才有了一些现代计算机理念的感觉。我们今天无需对巴贝奇差分机做详细了解和介绍,但作为现代计算机的鼻祖,巴贝奇为计算机奋斗一生的精神,一直鼓励着很多人。来看下巴贝奇差分机:
巴贝奇分析机更是思维超前,虽然最终没有实际制造出来,但闪烁着天才般的智慧和火花,很多理念与现代计算机原理非常相似,来看下巴贝奇分析机模型:
机械和机电的差别,从名字上就可以看出来。我们之前介绍的机械设备,都不是用电来驱动的。自18世纪中叶以来,物理学中的电学蓬勃发展,一些机器开始可以用电来驱动了。
于是,他们开始想办法,尽量实现自动化,霍尔瑞斯发明的制表机,在众多方案中脱颖而出:
人口普查后,霍尔瑞斯名声大振。在1896年,他开了个制表机公司。后来在1924年,公司改名为IBM,响当当的名字,快100年了,IBM在每个时代节点,几乎都不落伍。有个师兄,在IBM工作,据说很高大上。
在第二次世界大战中,各国基于军事需要,大力投入了计算机的研究,但是,德国似乎不怎么看好计算机,希特勒更相信武器本身的威力。
祖斯的Z1/Z2/Z3/Z4都很有创造性,比如,Z1验证了机器计算的可行性,Z2是第一台电磁式计算机,Z3可以用二进制控制,Z4能用穿孔纸袋输入和打印输出,甚至是处理条件分支。今天,我们很难再看到有关Z1/Z2/Z3/Z4的介绍了,在被历史尘封之前,让我们来看一眼Z1复制机的容颜:
哈佛大学也不甘落后,与IBM合作,制作了哈佛Mark系列,不过其总设计师艾肯却宣称哈佛MarkI是他一个人搞起来的,IBM的小沃森自然很恼火,最终不得不分道扬镳。来看下哈佛Mark机型之一:
哈佛MarkII是当时最大的继电器是计算机,有13000多个继电器。我们来看看继电器长啥样(读初三时,已经学过了,继电器的原理):
1947年9月9日,那是一个秋季的九九艳阳天,一个蛾子飞进了哈佛MarkII的一个继电器,导致继电器失效,机器无法正常工作,这就是历史上有名的bug事件,来看看柯林斯词典对于bug的解释:
在如今的软件开发中,大家常说的软件bug,就是指软件有问题、缺陷或者漏洞,实际上,说的就是1947年的那只该死的蛾子。
继电器虽然可以用来做计算机零件,但并不完美,它是机械的,反复移动,容易断裂,而且速度还很慢。于是出现了电子管(也称真空管),继电器能做的二进制功能逻辑,电子管都能做,而且速度更快,快1000倍。来看看电子管长啥样:
当时,很多机电计算机由继电器构成,但到了1945年,电子管计算机基本上取代了机电计算机,来看看电子管计算机:
线路乱七八糟,操作计算机的方式就是插电线,拔电线。那个时候的操作员,相当于我们今天的程序员,都是“编程”,操作计算机。不同之处是,那时候的操作工作很繁琐,需要耐心,有很多女孩子加入其中,这样一来,男孩子也不愁找不到女朋友了。不像今天,程序员找个女朋友,费劲得很,可能是因为女程序员太少了。
鉴于电子管的缺点,人们开始研究新的器材。1947年,晶体管诞生了,学过模拟电路的朋友,应该很熟悉这个东西。来看下晶体管外形:
1956年,肖克利等人因为发明了晶体管而获得了诺贝尔物理学奖,当之无愧,晶体管改变了世界。肖克利本人名利双收,但想搞更多的钱,于是开始开公司,可是他属于那种智商很高,情商不咋地的人。肖克利手下的八个人,先后离开了他。肖克利自然不满,给这八个人扣了一个大帽子,即“八叛逆(TheTraitorousEight)”,来看下这八个大牛:
1957年,这八个人接受一家公司资助,成立了后来很有名的仙童半导体公司,上图的的字母F,就是Fairchild,意思就是仙童,学电子电路的朋友,应该基本都听说过这个公司,它被誉为是硅谷的西点军校,乔布斯就曾将其比作成熟的蒲公英,只要风一吹,其创新的精神,就像蒲公英的种子那样,四处飞扬,生根发芽。
然而,天下没有不散的筵席,他们后来又陆续离开了仙童半导体公司,进行新的创业,于是有了现在的Intel和AMD,是不是很熟悉大家电脑中的CPU,基本都是这两家的搞出来的。这里顺便说一下,摩尔是Intel的创始人之一,他提出了著名的摩尔定律,至今仍有效,并支配着硬件的发展。
貌似扯远了,让我们来继续看当时的晶体管计算机:
可以看到,尽管晶体管使计算机简化了很大,但图中的计算机仍然是庞然大物,还能继续进行压缩压缩再压缩吗?得想想其他出路了。
1958年,就职于德州仪器公司的杰克基尔比,发出这样的疑问:为什么不在一块硅片上,制造多个晶体管和电子元件呢?这就是集成电路。1959年,肖克利八弟子之一的罗伯特诺依斯(Intel创始人之一),也想到了同样的方法。他们后来为谁先发明集成电路而争论不休,现在普遍的观点是:他们独立发明了集成电路,可以说都是集成电路之父。
说到罗伯特诺依斯,背诵过乔布斯“StayHungry,StayFoolish”的朋友应该记得,当年乔布斯被赶出苹果公司后,曾去找过罗伯特诺依斯和HP创始人之一的戴维帕卡德,估计是在一起喝喝酒,吐吐槽。
还是来看下集成电路芯片吧:
然而,这种集成度还远远不够,能不能在更小的芯片上集成更多的晶体管和电子元件呢?当然可以,这就是大规模和超大规模集成电路。
一块芯片,指甲那么大,居然集成了上亿个晶体管和电子器件,而且还要能正常稳定工作,每每想到此,就有种不寒而栗的感觉。当年占据整个房间大小的计算机,如今竟然被集成得这么小,而且功能远远超过当时的计算机。这背后是数学、物理、化学、微电子学、电磁学、光学和量子力学等学科的功劳。难怪华为任总说:搞芯片,砸钱是不行的,要砸数学家,物理学家和化学家。
曾经在一次面试中,面试官问:怎么证明你对科研有兴趣?我说我经常看《半导体物理》杂志,然后双方又就纳米技术blabla了一番。我现在做着跟当时专业基本无关的东西,回想起自己学过的电子通信方面的知识,还是能唤起心中的涟漪。
曾经在知乎上看到一个问题:为什么硬件工程师的工资,整体不如软件工程师?里面给了一些很现实的原因,我觉得很有道理。虽然我现在不做硬件了,但心中始终有些硬件的情怀,拿着一个单片机开发板,就有种莫名的兴奋,看到FPGA板子,一定要去摸一下,买到了树莓派,玩得不亦乐乎。那些执着在硬件行业,执着于国产芯片研发的公司和人员,值得我们尊敬。我也始终相信,国产芯片必有出头之日,也必须要这样。老东家,好样的
讲到这里,似乎把计算机发展简史叙述了一遍,但仅仅是从计算机硬件角度进行的,并不是计算机发展历史的全部,甚至只是冰山一角。
从计算机科学上看,居然没有讲到计算机科学之父—阿兰图灵,没有讲到现代计算机之父—冯诺依曼,没有讲到信息论之父—克劳德香农。
从计算机型号上看,居然没有讲到ABC计算机,没有讲到ENIAC计算机,没有讲到EDVAC计算机。
从计算机公司上看,居然没有讲到乔布斯创建的苹果,没有讲到比尔盖茨创建的微软,没有讲到坦福大学一对夫妇创建的思科。
从计算机整体上看,居然没有讲到软件发展,没有讲到操作系统,没有讲到Windows和Linux,没有讲到编译器和各种编程语言。
1.《计算机:一部历史》
2.《软件工程通史:1930-2019》
3.《编码:隐匿在计算机软硬件背后的语言》
4.《穿越计算机的迷雾》
5.《浪潮之巅》
6.《计算机文化》
7.《硅谷之火》
8.《信息简史》
9.简书“逸之”系列:
如果大家有好书,也请帮忙推荐给我。关于计算机发展的历史,先聊到这里了,我们下次见。