【创世纪厅】
1954年,IBM 704正式问世。由IBM主导开发,面向大型机平台用户。
首台配备索引寄存器和浮点单元的商用大型机,Fortran的摇篮。
技术特色:大型机、Fortran、商业成功。
影响力评估:技术维度 10/10,商业维度 9/10,文化维度 7/10,用户维度 8/10。
作为创世纪厅的经典代表,IBM 704在软件发展史上留下了深刻的印记。
首台配备索引寄存器和浮点单元的商用大型机,Fortran的摇篮。
【创世纪厅】
1954年,IBM 704正式问世。由IBM主导开发,面向大型机平台用户。
首台配备索引寄存器和浮点单元的商用大型机,Fortran的摇篮。
技术特色:大型机、Fortran、商业成功。
影响力评估:技术维度 10/10,商业维度 9/10,文化维度 7/10,用户维度 8/10。
作为创世纪厅的经典代表,IBM 704在软件发展史上留下了深刻的印记。
1954年,当IBM 704大型计算机首次亮相时,它不仅仅是一台机器,更是一个时代的转折点。在它之前,计算机是庞大、昂贵、难以驾驭的庞然大物,只有极少数科学家和军方才能触及。在它之后,软件开始从硬件的阴影中挣脱出来,人类第一次拥有了用接近自然语言的方式与机器对话的可能。这台机器诞生于冷战最激烈的年代,原子能竞赛、导弹技术、人工智能的萌芽,都在这台机器的嗡鸣声中悄然生长。IBM 704的故事,是一部关于硬件创新与软件革命的史诗,而它的核心遗产——Fortran语言,至今仍在改变着世界。
时代背景:冷战、计算与晶体管的前夜
要理解IBM 704的意义,必须先回到1950年代初期的技术环境。那时,电子计算机还处于真空管时代。1946年诞生的ENIAC使用了超过17000个真空管,占地170平方米,耗电150千瓦,而且每次更换程序都需要重新插拔电缆。1951年,UNIVAC I成为第一台商用计算机,但它主要面向政府和大型企业,用于人口普查和保险精算等数据处理任务。科学计算领域,则被IBM早年的701和702系列主导,但这些机器缺乏对浮点运算和数组操作的原生支持,科学家们不得不手工编写大量汇编代码来处理复杂的数学问题。
1950年代初,美国正处于冷战的紧张气氛中。洛斯阿拉莫斯国家实验室的物理学家们需要计算氢弹爆炸的流体动力学方程,喷气推进实验室的工程师们需要计算导弹的弹道轨迹,而兰德公司的研究员们则在探索机器能否模拟人类思维。这些需求都对计算机的浮点运算能力和内存容量提出了前所未有的要求。与此同时,磁芯存储器技术刚刚成熟,它比之前的威廉姆斯管和延迟线存储器更快、更可靠、更便宜,为更大容量的内存提供了可能。
IBM 704正是在这样的背景下立项的。它的设计目标非常明确:为科学计算提供一台拥有硬件浮点单元和索引寄存器的机器,让程序员能够高效地处理数组。1954年,当IBM正式发布704时,它采用了磁芯存储器,容量高达32768个36位字(约144KB),这在当时是天文数字。机器重达10吨,包含约5000个真空管,耗电约100千瓦,需要专门的空调房间来散热。但它的性能是惊人的:每秒可执行约40000次浮点运算,是此前任何商用机器的数倍。
创始故事:从701到704,巴克斯的野心
IBM 704的硬件设计团队由纳撒尼尔·罗切斯特(Nathaniel Rochester)领导,他后来成为了IBM的院士。但真正让这台机器载入史册的,是软件团队——更确切地说,是约翰·巴克斯(John Backus)和他的Fortran团队。
巴克斯在1950年加入IBM,最初从事的是编程工作。他很快发现,为IBM 701编写程序是一件极其痛苦的事情:程序员必须手工管理寄存器的分配、内存的布局,还要将数学公式拆解成机器指令的序列。一次简单的矩阵乘法,可能需要数百行汇编代码,而且极易出错。巴克斯后来回忆说:“我花了大量时间调试那些愚蠢的错误,比如把寄存器号写错,或者忘记保存某个中间结果。我觉得一定有一种更好的方式。”
1953年,巴克斯向IBM管理层提出了一个大胆的想法:开发一种“自动编程”系统,让程序员用接近数学公式的符号书写程序,然后由机器自动翻译成机器码。这个想法在今天看来理所当然,但在当时却是离经叛道的。大多数计算机专家认为,机器码是唯一高效的方式,任何“翻译”都会导致性能损失。IBM的高层也犹豫不决,他们担心这种“高级语言”会降低机器的市场竞争力。
但巴克斯没有放弃。他组建了一个由年轻数学家、程序员和工程师组成的团队,包括哈兰·赫里克(Harlan Herrick)、欧文·齐勒(Irving Ziller)等人。他们决定以IBM 704为目标平台,开发一种名为“Formula Translation”(公式翻译器)的语言,后来简称Fortran。这个团队只有十几个人,却要在两年内完成从语言设计到编译器实现的全套工作,这在当时是前所未有的挑战。
核心技术:索引寄存器、浮点硬件与Fortran编译器
IBM 704的硬件创新是其成功的基础。首先,它内置了三个索引寄存器(index registers),这是商用计算机中的首创。索引寄存器允许程序员通过一个基地址加上偏移量的方式访问数组元素,而无需在每次循环中手动修改指令地址。对于科学计算中常见的矩阵运算和数组遍历,这极大地提高了效率和可读性。其次,704拥有硬件浮点单元,可以直接执行浮点数的加减乘除和比较操作,而无需通过软件模拟。这使它在处理科学计算时的速度比前代产品快了数倍。
704的内存系统也极具创新。它使用了磁芯存储器,每个磁芯是一个小环,通过电流的方向存储0或1。这种存储器不仅速度快(访问时间约12微秒),而且非易失性——断电后数据不会丢失。32768个36位字的容量,意味着它可以存放约14000个浮点数或约10000条指令,足以运行当时最复杂的科学程序。
但真正让IBM 704名垂青史的,是Fortran编译器。1957年,巴克斯团队发布了Fortran I编译器,这是世界上第一个实用的高级语言编译器。它的核心创新在于:将数学公式(如A = B + C * D)直接翻译成高效的机器码,同时自动管理寄存器的分配和内存的布局。编译器还包含了当时最先进的优化技术,如公共子表达式消除、循环不变式外提等,生成的代码效率与手工汇编代码相差无几——这在当时是颠覆性的。
据说,Fortran编译器首次测试时,巴克斯团队输入了一段简单的程序,然后按下运行按钮。机器沉默了几秒钟,然后输出了正确的结果。团队全体欢呼雀跃,但巴克斯却冷静地说:“这只是一个开始。我们还需要让它生成比手工代码更快的程序。”事实上,Fortran编译器生成的代码在某些情况下确实比手工汇编更快,因为它能够系统地应用优化策略,而人类程序员往往会遗漏。
发展历程:从Fortran I到Fortran II,从704到7090
1957年,Fortran I随IBM 704一起发布。最初的版本只支持基本的算术运算、循环和条件分支,但已经足够让科学家们欣喜若狂。洛斯阿拉莫斯国家实验室的物理学家们很快开始使用Fortran编写核反应模拟程序,喷气推进实验室的工程师们用它来计算导弹轨迹。据说,一位物理学家在第一次使用Fortran后感叹:“我用了三周时间写了一个程序,而手工汇编需要三个月。而且,这个程序几乎没有错误。”
然而,Fortran I并非完美无缺。它的编译器非常庞大,需要占用704的大部分内存,而且错误消息极其晦涩。巴克斯团队在1958年发布了Fortran II,增加了对子程序、函数和独立编译的支持,使得大型程序的开发成为可能。Fortran II还引入了更友好的错误报告机制,让程序员能够更快地定位问题。
与此同时,IBM 704的硬件也在不断演进。1958年,IBM推出了704的改进型——IBM 709,它拥有更快的速度和更大的内存。1959年,IBM 7090系列发布,采用了晶体管替代真空管,体积缩小了数倍,速度和可靠性却大幅提升。7090系列完全兼容704的指令集和Fortran编译器,使得用户能够无缝迁移。这标志着IBM在大型机领域的霸主地位正式确立。
市场影响:原子能、导弹与人工智能的摇篮
IBM 704的市场表现是惊人的。尽管售价高达数百万美元(相当于今天的数千万美元),但它在1954年至1960年间卖出了约150台,客户包括美国政府、大学、研究机构和大型企业。其中,最著名的用户包括:
洛斯阿拉莫斯国家实验室:使用704进行氢弹设计的流体动力学计算。据说,实验室的科学家们每周7天、每天24小时运行704,机器几乎从不关机。704的浮点运算能力和大内存容量,使得他们能够模拟更复杂的物理过程。
麻省理工学院(MIT):使用704进行早期人工智能研究。1956年,约翰·麦卡锡(John McCarthy)在达特茅斯会议上提出了“人工智能”的概念,而他的早期工作就是在MIT的704上进行的。麦卡锡后来开发了Lisp语言,但Lisp的早期版本深受Fortran的影响。
兰德公司:使用704进行军事战略模拟和运筹学分析。兰德的研究员们编写了世界上第一个“战争游戏”程序,在704上模拟核战争的情景。
此外,704还被用于气象预报、石油勘探、晶体结构分析等领域。它的成功让IBM意识到,软件和硬件必须协同发展。1957年,IBM成立了专门的软件部门,负责Fortran的维护和推广。到1960年代,Fortran已经成为科学计算的标准语言,几乎所有大学都开设了Fortran课程。
轶事趣闻:编程中的“神迹”与“灾难”
IBM 704和Fortran的开发过程中,流传着许多有趣的故事。其中一个著名的轶事是关于Fortran编译器的第一个正式版本。1957年,巴克斯团队在IBM的纽约总部向客户展示Fortran编译器。他们输入了一段包含100条语句的程序,然后按下运行按钮。机器开始嗡嗡作响,但几分钟后,屏幕上出现了一行错误消息:“ERROR 001: INVALID SYNTAX”。团队全体尴尬不已,巴克斯亲自检查了程序,发现是一个拼写错误。他修改后重新运行,这次程序顺利执行,生成了正确的结果。客户们报以热烈的掌声,但巴克斯后来承认:“那是我一生中最紧张的时刻。”
另一个故事是关于704的磁芯存储器。据说,一次在洛斯阿拉莫斯实验室,704突然崩溃,所有数据丢失。工程师们花了三天时间排查,最终发现是一只老鼠钻进了机器的电源箱,咬断了一根电源线。实验室随后在机房门口贴了一张告示:“请勿让老鼠进入机房。”这张告示后来被当作文物收藏在计算机历史博物馆。
还有一件趣事是关于Fortran的“GOTO”语句。Fortran最初没有提供结构化的控制流,程序员必须使用GOTO语句实现循环和条件分支。这导致了许多“意大利面条式”的代码,难以阅读和维护。巴克斯后来承认:“GOTO是我们犯下的最大错误。”但他也辩解道:“当时我们只关心如何让程序运行,而不是如何让程序易于理解。”
文化遗产:Fortran的遗产与704的余晖
IBM 704和Fortran对后世的影响是深远的。首先,Fortran开创了高级语言的时代。在Fortran之后,COBOL、ALGOL、Lisp、BASIC等语言相继诞生,编程逐渐从少数专家的专利变成了大众的技能。Fortran的编译器技术,如词法分析、语法分析、代码优化,成为了计算机科学的核心课程。
其次,IBM 704的架构影响了后续的IBM大型机系列。7090、7094、System/360等机器都继承了704的36位字长和指令集设计。直到今天,IBM的z/Architecture大型机仍然保留了与704的某些兼容性,使得1960年代的Fortran程序依然可以在现代机器上运行。
更重要的是,IBM 704和Fortran共同塑造了“软件”的概念。在704之前,软件被视为硬件的附属品,用户通常需要自己编写程序。704的成功让IBM意识到,软件可以成为独立的商品,甚至可以比硬件更赚钱。1958年,IBM开始对Fortran编译器收费,这被认为是软件商业化的开端。
如今,IBM 704的原型机被保存在算机历史博物馆和史密森尼学会。每当参观者看到那台布满真空管和磁芯的庞然大物,都会想起那个时代:一个由真空管、穿孔卡片和汇编语言统治的时代,也是一个人类第一次用代码与机器对话的时代。Fortran语言至今仍在航空航天、气象预测和科学计算领域活跃着,它的语法虽然古老,但它的精神——让人类用更接近思维的方式控制机器——已经融入了每一行代码。
IBM 704的故事告诉我们:伟大的创新往往源于对现状的不满。巴克斯厌倦了手工汇编的繁琐,于是创造了Fortran;罗切斯特渴望更快的科学计算,于是设计了704。这些创新不仅改变了计算机的历史,更改变了人类探索世界的方式。当今天的程序员在IDE中敲下“A = B + C”时,他们可能不会想到,这条简单的语句背后,是一台10吨重的机器,一个十几人的团队,以及一个时代的勇气与远见。
对技术发展和工程实践的推动程度
对商业模式和市场格局的影响深度
在科技文化和社会层面的持久影响力
用户群体的广度和普及程度