本文来自微信公众号:鲜枣课堂 (ID:xzclasscom),作者:小枣君,题图来自:视觉中国(公共领域,图为被围观的ENIAC)
本文来自微信公众号:鲜枣课堂 (ID:xzclasscom),作者:小枣君,题图来自:视觉中国(公共领域,图为被围观的ENIAC)
1946年2月14日,在美国宾夕法尼亚州东南部的费城,人们正在像以往一样正常工作和生活。忽然,他们发现,房间里的灯暗了下来。
刚刚经历过二战的人们,对这种情况习以为常。他们心想:“是不是哪里的电力线路又坏了?”
其实,灯之所以会暗,并不是因为线路问题,而是在离他们不远的宾夕法尼亚大学,诞生了一个“庞然大物”。
这个“庞然大物”占地170平方米,重达30吨。它以电为生,功率高达150千瓦。它的启动,直接拉低了附近居民用电的电压,所以导致电灯变暗。
这个“庞然大物”究竟是什么呢?
没错,它就是人类第一台通用电子计算机——ENIAC(埃尼阿克)。
ENIAC/历史图片
ENIAC采用了17468根真空管(这也是它体积大、耗电高的主要原因之一),每秒能够完成5000次加法或400次乘法,约为手工计算的20万倍。
它的诞生,对整个人类来说拥有极为重要的意义,标志着人类正式迈入了电子计算机时代。
从结绳记事到阿拉伯数字:算力的萌芽
ENIAC是一个里程碑。它将人类算力发展史分为了前后两个部分。在继续下半部分之前,我们还是先来回顾一下上半部分的历程。
从远古时期开始,人类就掌握了算力。我们的“原生”算力工具,就是大脑。
我们运用算力的过程,叫做“思考”。相对应的,我们收集信息的过程,叫做“观察”。
所谓“计算”,其实就是解决问题的过程。遇到问题,通过计算解决问题,就实现了进步和发展。
在整个过程中,人类是主体,信息是输入和输出物。经验和技术,则是方法。而完成整个计算过程的能力,就是算力(Computing Power)。
动物也有大脑,也有算力,但是远远不如我们强劲。在漫长的进化过程中,我们的大脑越来越发达,最终帮助我们从万物生灵中脱颖而出,成为了地球的主宰。
在人类早期阶段,之所以需要算力,是为了生存。主要的计算内容,是如何狩猎,如何防范袭击,如何繁衍后代。
后来,有了基本的生存保障,人类就开始将更多的算力用于改善生存质量,例如搭建房屋、交易物品、制造工具等。
计算是对信息进行处理的过程。所以,如何表达和记录信息,是实施计算的第一步。
在原始社会,为了更好地描述自己观察到的信息(所见、所闻、所想),也为了更方便地进行信息沟通,就开始绘画。
原始人的壁画
后来,在绘画的基础上,又发明了文字。
文字,其实就是用表意符号对信息进行“编码”。
它是物理世界和精神世界的一种映射和表达。有了文字,信息的记录和传递效率大幅提升,人类社会有了更强的联结力,历史和文明也更易于传承。
文字里面,还有一种很特殊的符号,那就是数字。
所有的人类早期先进文明,都有自己的文字,也有自己的数字系统。例如巴比伦文明的六十进制,玛雅文明的二十进制或十八进制,中国和古埃及的十进制。
数字出现后,人们将计数和算数的过程,称为计算。(我们姑且将前面宏观的计算称为“广义的计算”,这里称为“狭义的计算”。)
古希腊在数字和计算上比较领先,很早就创立了算术、几何、代数等独立学科。
古希腊思想家、哲学家、数学家毕达哥拉斯发现并证明了勾股定理,是那一时期计算水平的标志。
毕达哥拉斯
后来,毕达哥拉斯学派主张用数来解释一切,认为不仅万物都包含数,而且“万物皆是数”。
现在看来,这种思想极具前瞻性。也有人将其改成:“万物皆比特”。
人类社会不断进步,计算需求也变得越来越复杂。仅仅依靠大脑这个“原生”算力工具,不太够用。即便是用上手指、脚趾,也不行。所以,我们开始借助外部算力工具。
最早期,我们使用的外部算力工具是草绳、石头,也就是所谓“结绳记事”。
中国关于结绳记事的记载出自《易经》中的《系辞下》:“上古结绳而治,后世圣人易之以书契。” 我们现在常见的中国结,也源于“结绳记事”。
后来,文明继续发展,我们有了算筹(一种用于计算的小棍子)。
在中国,算筹诞生于春秋战国时期。我们经常用到的成语,例如运筹帷幄、一筹莫展、技高一筹等,都是和算筹有关。
公元480年,祖冲之把圆周率精确计算到小数点后第七位(3.1415926),采用的工具就是算筹。他的这一记录,保持了900多年。
祖冲之
除了算筹之外,我们还有一个更知名的算力工具,那就是算盘。
算盘的具体诞生时间已经无从考证。有人说是秦朝,也有人说是东汉。东汉时期徐岳的著作《数术记遗》中,最早出现了“珠算”这个字眼。
算盘的历史价值不需要我多说。直到现在,我们还能看到它的身影。
公元3世纪,笈多王朝的古印度人发明了阿拉伯数字,意义重大。后来,阿拉伯帝国崛起,将阿拉伯数字带到了欧洲。
同样被带到欧洲的,还有我们中国四大发明之一的造纸术。
前面我提到,图画和文字是人类表达信息的方式。这些信息,肯定是需要载体的。早期的载体,是龟甲、兽骨、兽皮、竹简、木牍、缣帛。这些载体要么稀少,要么昂贵,要么无法长期保存。
西汉时期,造纸术在中国出现,但工艺简陋,质量不佳。后来,东汉元兴元年(105年),宦官蔡伦总结前人经验,对造纸工艺进行改进,显著提升了纸的质量,也为纸的普及奠定了基础。
蔡伦
纸的出现和普及,大大方便了信息的记录和传递,有利于文化传播,也提升了生产效率。
阿拉伯数字和造纸术传入欧洲,前者取代了冗长的罗马数字,后者取代了昂贵的羊皮和小牛皮。再加上后来,中国的印刷术又传了过去,大大促进了欧洲文化的发展。
这一切,也为后来的文艺复兴和科技萌芽铺平了道路。
从计算尺到差分机:算力的蓄力
公元14世纪,正如大家所知道的那样,欧洲开启了文艺复兴,人文主义的思潮占据主流,人们开始倡导通过观察和实验来认识世界。
到了16世纪,欧洲的科技就开始爆发了。
那一时期,整个欧洲群星璀璨,艺术和科学领域硕果累累,生产力水平直线上升。
数学作为所有科学学科的基础,取得的研究进展是最大的。解析几何学、微积分等,都诞生了。一大堆天才数学家,输出了海量的研究成果,不仅为其它学科的腾飞奠定了基础,还直接促成了后来的工业革命。
当时,为了更好地服务于数学计算,人们发明了新型的算力工具。例如1625年,英国数学家威廉·奥特雷德(William Oughtred)发明了计算尺。1642 年,法国数学家布莱兹·帕斯卡(Blaise Pascal)发明了人类最早的机械计算机。
这些发明,可以辅助完成对数计算、三角函数计算、开根计算等复杂任务,提升计算效率。
后来,17世纪末到18世纪中,德国数学家戈特弗里德·威廉·莱布尼茨(Gottfried Leibniz)等人,先后设计和制造了能够计算乘法的设备,将算力工具提升到更高的层级。
莱布尼茨
18世纪60年代,第一次工业革命爆发,将人类带入蒸汽时代。
动力机械崛起,开始取代手工劳动,成为主要生产力。算力工具,也开始向更先进的机械化方向演进。
算力工具想要机械化,首先要解决信息表达方式的问题。因为机器是不识字的,先要发明让机器看得懂的“语言”,才能让机器按命令工作。
这个早期的机器语言表达方式,就是“打孔”。
1725年,法国人巴斯勒·布乔(Basile Bouchon)发明了打孔卡(穿孔卡),用于织布机。
织布机在编织过程中,编织针会往复滑动。根据打孔卡上的小孔,编织针可以勾起经线(没有孔,就不勾),从而绘制图案。换言之,打孔卡是存储了“图案程序”的存储器,对织布机进行控制。
这一发明,标志着人类机械化信息存储形式的开端。
1801年,法国织机工匠约瑟夫·马里尔·雅卡尔(Joseph Marie Jdakacquard)对打孔卡进行了升级。
他将打孔卡按一定顺序捆绑,变成了带状,创造了穿孔纸带(Punched Tape)的雏形。这种纸带,被应用于提花织机。
大家应该能看出来,打孔其实就是一种信息编码方式。它比文字和数字更加简单,让人与机器可以进行“沟通”。
1811年,20岁的英国发明家查尔斯·巴贝奇(Charles Babbage)从提花织机中获得灵感,开始设计制造一台名叫“差分机”的设备。
巴贝奇
十年后,这台“差分机”制造完成,可以进行多种函数运算,运算精度达到了6位小数。
在这个成就的鼓舞下,巴贝奇又启动了第二台“差分机”的研究,精度将达到20位。英国政府也资助了他的研究。
可惜的是,因为这个机器的设计太过超前(有25000多个零件,主要零件的误差不得超过每英寸千分之一),当时的机械制造水平,很难达到精度要求。所以,在历经二十年,耗费了巨额资金之后,这个“差分机”还是未能制造出来。
后人复刻的差分机二号,验证了可以正常工作
在这个过程中,1834年,巴贝奇还提出了一个更大胆的想法——设计一个以蒸汽为动力的通用数学计算机,能够自动解算有100个变量的复杂算题,每个数可达25位,速度可达每秒钟运算一次。
巴贝奇把这种新的设计叫做“分析机”。
“分析机”和第二台差分机一样,最终未能制造成功。但“分析机”中包含的很多设计,例如送入和取出数据的机构、以及“存储库”和“运算室”,和一百多年后的计算机如出一辙。
因此,“分析机”被后人称为世界上第一台计算机。而巴贝奇,则被誉为计算机鼻祖。
值得一提的是,与巴贝奇进行技术合作的,有一个小姐姐,名字叫阿达·奥古斯塔(Ada Augusta)。她是诗人拜伦的独生女。当时,她负责为“分析机”编程。她也因此被称为世界上第一个“程序员”。
阿达·奥古斯塔
1878年,瑞典发明家奥涅尔在俄国发明了一种齿数可变的齿轮计算机,也算是机械计算机的代表之一。
到了1885年,已经有越来越多的计算机在欧美国家诞生,成为一种风潮。
1890年,一个牛人的出现,让打卡孔技术进一步发扬光大。这个人,就是德裔美国人——赫尔曼·何乐礼(Herman Hollerith)。
赫尔曼·何乐礼
赫尔曼·何乐礼在打孔卡的基础上,发明了打孔卡制表机,专门用于收集并统计人口普查数据。
打孔卡制表机
打孔卡制表机的统计速度更快。
根据史料记载,在1890年的美国人口普查中,通过打孔制片和打孔机,仅6周就完成了统计工作,得出了准确的数据(62622250人)。而此前1880年的美国人口普查,数据全靠手工处理,历时7年才得出最终结果。
如此巨大的效率提升,使得制表机在各个行业迅速普及。它标志着半自动化数据处理时代的开始。
打孔卡技术,直到1960年代都还在使用
后来,1896年,赫尔曼·何乐礼创办了制表机器公司(Tabulating Machine Company)。这家公司,就是IBM公司的前身。
从图灵机到ENIAC:算力的崛起
进入20世纪后,随着电子技术的飞速发展,计算机就开始了由机械向电子的过渡。
机械时代的计算机,可以通过齿轮或者带刻度的圆柱,进行数字的标记。到了电子时代,这样做就不太合适了。电的特点是有(通电)和无(不通电),它比较适合的,显然是二进制。
17世纪后半叶,德国数学家莱布尼茨率先提出了二进制。(是的,又是他。他也是微积分的发明人。)他形象地用1表示上帝,用0表示虚无,上帝从虚无中创造出所有的实物。
19世纪中叶,英国数理逻辑学家乔治·布尔(George Boole)提出了逻辑代数(后来被人们称为“布尔代数”)。
乔治·布尔
他通过二进制,将算数和简单的逻辑统一起来,通过使用与、或、非等逻辑运算符,以及基于真和假的二值逻辑,为我们提供了一种理解和操纵逻辑关系的工具。
布尔代数为计算机的二进制、开关逻辑电路的设计铺平了道路,并最终为现代计算机的发明奠定了数学基础。
除了逻辑基础之外,硬件当然也要跟上。
1904年,英国人约翰·安布罗斯·弗莱明(John Ambrose Fleming)发明了真空电子二极管,可以实现单向导电,检波、整流。1906年,美国人德·福雷斯特(Lee De Forest)在二极管的基础上加以改进,发明了真空三级电子管,可以实现信号放大。
德·福雷斯特
真空管的出现,推动人类电子技术向前迈了一大步,补足了硬件短板。
那一时期,信息存储技术也有了很大进步。
1898年,丹麦工程师瓦蒂玛·保尔森(Valdemar Poulsen)在自己的电报机中首次采用了磁线技术,使之成为人类第一个实用的磁声记录和再现设备。
1928年,德国工程师弗里茨·普弗勒默(Fritz Pfleumer)发明了录音磁带。1932年,奥地利工程师古斯塔夫·陶谢克(Gustav Tauschek)发明了磁鼓存储器。磁性存储时代正式开启。
1937年,英国剑桥大学的阿兰·图灵(Alan M. Turing)提出了被后人称之为“图灵机”的数学模型。这为现代计算机的逻辑工作方式指引了方向。
阿兰·图灵
同样是1937年,贝尔试验室的乔治·斯蒂比兹(George Stibitz)展示了用继电器表示二进制的装置。尽管仅仅是个展示品,但却是第一台二进制电子计算机。
二战爆发后,军事需求大大刺激了算力的发展。军方需要更加强劲的算力,完成密码加密解密、火炮弹道计算甚至火箭发射等重要任务。
1941年12月,德国人康拉德·楚泽(Konrad Zuse)制作完成了世界上第一台可编程电子计算机——Z3。这台计算机用于空气动力学计算,使用了大量的继电器和真空管,每秒钟能作3到4次加法运算,一次乘法需要3到5秒。后来,Z3毁于柏林轰炸。
康拉德·楚泽和Z3(复刻版)
1942年,美国爱荷华州立大学物理系副教授阿塔纳索夫(John V.Atanasoff)和他的学生克利福德·贝瑞(Clifford Berry)设计制造了世界上第一台电子计算机,名为“ABC”(Atanasoff-Berry Computer),也被称为“珍妮机”。
ABC使用了IBM的80列穿孔卡作为输入和输出,使用真空管处理二进制格式的数据。数据的存储,则是使用的再生电容磁鼓存储器(Regenerative Capacitor Memory)。
虽然ABC无法进行编程(仅用于求解线性方程组),但使用二进制数字来表示数据、使用电子元件进行计算(而非机械开关)、计算和内存分离等特点,都足以证明它是一台现代意义上的数字电子计算机。
1944年,在IBM公司的支持下,哈佛大学博士霍华德·艾肯(Howard Aiken)成功研制了通用电子计算机——Mark I,也称ASCC(Automatic Sequence Controlled Calculator,自动控制序列计算器)。
霍华德·艾肯与MARK I
Mark I长16米,重4.3吨,拥有75万个零部件,使用了800公里长的电线,300万个连接、3500个多极继电器、2225个计数器。
它可以在一秒钟内进行3次加法或减法。乘法需要6秒,除法需要15.3秒,对数或三角函数需要超过1分钟。当时,它被用来为美国海军计算弹道火力表。
值得一提的是,第一个在Mark I上运行的程序是由冯·诺依曼(John von Neumann)于1944年3月29日发起的。当时,冯·诺依曼正在研究曼哈顿计划,需要确定内爆是否是原子弹的可行选择。
冯·诺依曼
还需要提一句,Mark I的研究团队中,有一位名叫格蕾丝·霍珀(Grace Hopper)的海军预备役女军官。“bug”这个词,就是她引入的。
1945年,Mark II在运行过程中,飞进了一只飞蛾,导致出现故障。霍珀消灭了飞蛾,解决了问题,成为第一个“调试(debug)”计算机的人。
这只飞蛾还被贴在Mark II的日志上
终于,到了1946年2月,如本文开头所说,ENIAC诞生了。
正在操作ENIAC的女程序员
这里需要澄清一下,虽然人们一贯将ENIAC称为世界上第一台数字式电子计算机,但这个说法其实是有争议的。前面提到的ABC,就是这个称谓的有力争夺者。
ENIAC甚至称不上第二。那一时期问世的数字电子计算机很多,严格来说,ENIAC只能排第11。国外主流观点认为,ENIAC的设计者盗窃了ABC的设计。1973年,美国法院也裁定,取消了ENIAC的专利,认定ENIAC专利是ABC的衍生品。
关于谁是第一,我们就不讨论了。反正,1945年左右,电子计算机诞生的浪潮,标志着人类算力正式进入了数字电子计算机时代。
波澜壮阔的信息技术革命,即将开启。
参考文献
1、《计算机的发展历史汇总》,网络;
2、《算力发展简史》, 庐山真容;
3、《谁发明了 Mark I 计算机?》,thoughtco.com;
4、《机械史上的巅峰之作!来看看差分机》,前沿数控技术;
5、维基百科、百度百科。
本文来自微信公众号:鲜枣课堂 (ID:xzclasscom),作者:小枣君
支持一下 修改