其实,灯之所以会暗,并不是因为线路问题,而是在离他们不远的宾夕法尼亚大学,诞生了一个“庞然大物”。 这个“庞然大物”占地170平方米,重达30吨。它以电为生,功率高达150千瓦。它的启动,直接拉低了附近居民用电的电压,所以导致电灯变暗。 ENIAC采用了17468根真空管(这也是它体积大、耗电高的主要原因之一),每秒能够完成5000次加法或400次乘法,约为手工计算的20万倍。 在整个过程中,人类是主体,信息是输入和输出物。经验和技术,则是方法。而完成整个计算过程的能力,就是算力(Computing Power)。 动物也有大脑,也有算力,但是远远不如我们强劲。在漫长的进化过程中,我们的大脑越来越发达,最终帮助我们从万物生灵中脱颖而出,成为了地球的主宰。 在人类早期阶段,之所以需要算力,是为了生存。主要的计算内容,是如何狩猎,如何防范袭击,如何繁衍后代。 后来,有了基本的生存保障,人类就开始将更多的算力用于改善生存质量,例如搭建房屋、交易物品、制造工具等。 在原始社会,为了更好地描述自己观察到的信息(所见、所闻、所想),也为了更方便地进行信息沟通,就开始绘画。 它是物理世界和精神世界的一种映射和表达。有了文字,信息的记录和传递效率大幅提升,人类社会有了更强的联结力,历史和文明也更易于传承。 所有的人类早期先进文明,都有自己的文字,也有自己的数字系统。例如巴比伦文明的六十进制,玛雅文明的二十进制或十八进制,中国和古埃及的十进制。 数字出现后,人们将计数和算数的过程,称为计算。(我们姑且将前面宏观的计算称为“广义的计算”,这里称为“狭义的计算”。) 人类社会不断进步,计算需求也变得越来越复杂。仅仅依靠大脑这个“原生”算力工具,不太够用。即便是用上手指、脚趾,也不行。所以,我们开始借助外部算力工具。 中国关于结绳记事的记载出自《易经》中的《系辞下》:“上古结绳而治,后世圣人易之以书契。” 我们现在常见的中国结,也源于“结绳记事”。 在中国,算筹诞生于春秋战国时期。我们经常用到的成语,例如运筹帷幄、一筹莫展、技高一筹等,都是和算筹有关。 公元480年,祖冲之把圆周率精确计算到小数点后第七位(3.1415926),采用的工具就是算筹。他的这一记录,保持了900多年。 算盘的具体诞生时间已经无从考证。有人说是秦朝,也有人说是东汉。东汉时期徐岳的着作《数术记遗》中,最早出现了“珠算”这个字眼。 公元3世纪,笈多王朝的古印度人发明了阿拉伯数字,意义重大。后来,阿拉伯帝国崛起,将阿拉伯数字带到了欧洲。 前面我提到,图画和文字是人类表达信息的方式。这些信息,肯定是需要载体的。早期的载体,是龟甲、兽骨、兽皮、竹简、木牍、缣帛。这些载体要么稀少,要么昂贵,要么无法长期保存。 西汉时期,造纸术在中国出现,但工艺简陋,质量不佳。后来,东汉元兴元年(105年),宦官蔡伦总结前人经验,对造纸工艺进行改进,显着提升了纸的质量,也为纸的普及奠定了基础。 阿拉伯数字和造纸术传入欧洲,前者取代了冗长的罗马数字,后者取代了昂贵的羊皮和小牛皮。再加上后来,中国的印刷术又传了过去,大大促进了欧洲文化的发展。 公元14世纪,正如大家所知道的那样,欧洲开启了文艺复兴,人文主义的思潮占据主流,人们开始倡导通过观察和实验来认识世界。 数学作为所有科学学科的基础,取得的研究进展是最大的。解析几何学、微积分等,都诞生了。一大堆天才数学家,输出了海量的研究成果,不仅为其它学科的腾飞奠定了基础,还直接促成了后来的工业革命。 当时,为了更好地服务于数学计算,人们发明了新型的算力工具。例如1625年,英国数学家威廉·奥特雷德(WilliamOughtred)发明了计算尺。1642 年,法国数学家布莱兹·帕斯卡(Blaise Pascal)发明了人类最早的机械计算机。 后来,17世纪末到18世纪中,德国数学家戈特弗里德·威廉·莱布尼茨(Gottfried Leibniz)等人,先后设计和制造了能够计算乘法的设备,将算力工具提升到更高的层级。 算力工具想要机械化,首先要解决信息表达方式的问题。因为机器是不识字的,先要发明让机器看得懂的“语言”,才能让机器按命令工作。 1725年,法国人巴斯勒·布乔(Basile Bouchon)发明了打孔卡(穿孔卡),用于织布机。 织布机在编织过程中,编织针会往复滑动。根据打孔卡上的小孔,编织针可以勾起经线(没有孔,就不勾),从而绘制图案。换言之,打孔卡是存储了“图案程序”的存储器,对织布机进行控制。 1801年,法国织机工匠约瑟夫·马里尔·雅卡尔(Joseph Marie Jdakacquard)对打孔卡进行了升级。 他将打孔卡按一定顺序捆绑,变成了带状,创造了穿孔纸带(Punched Tape)的雏形。这种纸带,被应用于提花织机。 大家应该能看出来,打孔其实就是一种信息编码方式。它比文字和数字更加简单,让人与机器可以进行“沟通”。 1811年,20岁的英国发明家查尔斯·巴贝奇(Charles Babbage)从提花织机中获得灵感,开始设计制造一台名叫“差分机”的设备。 在这个成就的鼓舞下,巴贝奇又启动了第二台“差分机”的研究,精度将达到20位。英国政府也资助了他的研究。 可惜的是,因为这个机器的设计太过超前(有25000多个零件,主要零件的误差不得超过每英寸千分之一),当时的机械制造水平,很难达到精度要求。所以,在历经二十年,耗费了巨额资金之后,这个“差分机”还是未能制造出来。 在这个过程中,1834年,巴贝奇还提出了一个更大胆的想法——设计一个以蒸汽为动力的通用数学计算机,能够自动解算有100个变量的复杂算题,每个数可达25位,速度可达每秒钟运算一次。 “分析机”和第二台差分机一样,最终未能制造成功。但“分析机”中包含的很多设计,例如送入和取出数据的机构、以及“存储库”和“运算室”,和一百多年后的计算机如出一辙。 值得一提的是,与巴贝奇进行技术合作的,有一个小姐姐,名字叫阿达·奥古斯塔(Ada Augusta)。她是诗人拜伦的独生女。当时,她负责为“分析机”编程。她也因此被称为世界上第一个“程序员”。 1878年,瑞典发明家奥涅尔在俄国发明了一种齿数可变的齿轮计算机,也算是机械计算机的代表之一。 1890年,一个牛人的出现,让打卡孔技术进一步发扬光大。这个人,就是德裔美国人——赫尔曼·何乐礼(Herman Hollerith)。 根据史料记载,在1890年的美国人口普查中,通过打孔制片和打孔机,仅6周就完成了统计工作,得出了准确的数据(62622250人)。而此前1880年的美国人口普查,数据全靠手工处理,历时7年才得出最终结果。 后来,1896年,赫尔曼·何乐礼创办了制表机器公司(Tabulating Machine Company)。这家公司,就是IBM公司的前身。 机械时代的计算机,可以通过齿轮或者带刻度的圆柱,进行数字的标记。到了电子时代,这样做就不太合适了。电的特点是有(通电)和无(不通电),它比较适合的,显然是二进制。 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到5秒。后来,Z3毁于柏林轰炸。 1942年,美国爱荷华州立大学物理系副教授阿塔纳索夫(John V.Atanasoff)和他的学生克利福德·贝瑞(Clifford Berry)设计制造了世界上第一台电子计算机,名为ABC(Atanasoff-Berry Computer),也被称为“珍妮机”。 ABC使用了IBM的80列穿孔卡作为输入和输出,使用真空管处理二进制格式的数据。数据的存储,则是使用的再生电容磁鼓存储器(Regenerative Capacitor Memory)。 虽然ABC无法进行编程(仅用于求解线性方程组),但使用二进制数字来表示数据、使用电子元件进行计算(而非机械开关)、计算和内存分离等特点,都足以证明它是一台现代意义上的数字电子计算机。 它可以在一秒钟内进行3次加法或减法。乘法需要6秒,除法需要15.3秒,对数或三角函数需要超过1分钟。当时,它被用来为美国海军计算弹道火力表。 值得一提的是,第一个在Mark I上运行的程序是由冯·诺依曼(John von Neumann)于1944年3月29日发起的。当时,冯·诺依曼正在研究曼哈顿计划,需要确定内爆是否是原子弹的可行选择。 还需要提一句,Mark I的研究团队中,有一位名叫格蕾丝·霍珀(Grace Hopper)的海军预备役女军官。“bug”这个词,就是她引入的。 1945年,Mark II在运行过程中,飞进了一只飞蛾,导致出现故障。霍珀消灭了飞蛾,解决了问题,成为第一个“调试(debug)”计算机的人。 这里需要澄清一下,虽然人们一贯将ENIAC称为世界上第一台数字式电子计算机,但这个说法其实是有争议的。前面提到的ABC,就是这个称谓的有力争夺者。 ENIAC甚至称不上第二。那一时期问世的数字电子计算机很多,严格来说,ENIAC只能排第11。国外主流观点认为,ENIAC的设计者盗窃了ABC的设计。1973年,美国法院也裁定,取消了ENIAC的专利,认定ENIAC专利是ABC的衍生品。 关于谁是第一,我们就不讨论了。反正,1945年左右,电子计算机诞生的浪潮,标志着人类算力正式进入了数字电子计算机时代。 |