世界算力简史(上)
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 年,美国爱荷华州立大学物理系副教授阿塔纳索夫(JohnV.Atanasoff)和他的学生克利福德・贝瑞(Clifford Berry)设计制造了世界上第一台电子计算机,名为 "ABC"(Atanasoff-Berry Computer),也被称为“珍妮机”。
ABC 计算机
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),作者:小枣君
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。