2.1 编程语言大事记
1822年,英国人Charles Babbage设计了差分机。该差分机利用卡片输入程序和数据,类似于百年后的电子计算机。
1834年,Babbage设计了一台分析机,在穿孔卡片(只读存储器)中存储程序和数据,基本实现了控制中心(类似于今天的CPU)和存储程序的设想。并且,程序可以根据条件进行跳转,这有些类似于今天的程序控制。
1848年,英国数学家George Boole创立了二进制代数学,约提前了一个世纪为现代二进制计算机铺平了道路。此后,计算机的研制大约沉寂了40年,自然也没有什么人来设计程序。
1890年,美国进行人口普查。由于1880年的普查用了7年的时间进行统计分析,这意味着1890年的统计分析可能会超过10年。人口普查部门希望能有一台机器,帮助他们提高统计分析的效率。Herman Hollerith借鉴了Babbage的设计,用穿孔卡片存储数据和程序,并制造了处理机器。结果该机器仅仅用了6周就得出了人口普查的统计分析结果。Herman Hollerith因此大发横财,他的公司后来发展成了IBM公司,真乃时势造英雄。
1896年,Herman Hollerith创办了IBM公司的前身,开始大量制造穿孔卡片处理机。当真正意义上的电子计算机出现时,穿孔卡片自然地成为最早的程序载体。
1906年,美国的Lee De Forest发明了电子管。在这之前的计算机都基于机械运行方式,而在这之后计算机开始进入电子时代。
1924年2月,IBM公司成立了。从那时起直到今天,IBM公司始终在计算机工业界占据重要地位。
1937年,英国剑桥大学的Alan M. Turing出版了他的论文。没错,就是那个著名的图灵,他在论文中提出了“图灵机”数学模型。现在几乎所有的编程语言都建立在图灵机模型之上。
1937年,贝尔实验室的George Stibitz首先用继电器来表示二进制。如果你是那个时代的先知,也许可以预见到今天的编码方式。
1939年1月1日,加利福尼亚的Bill Hewlett和David Packard在他们的车库里造出了Hewlett-Packard计算机。机器的名字是两人用投硬币的方式决定的。这两个人后来成立了著名的HP公司。
世界上第一台真正意义上的电子数字计算机实际上是在1935—1939年间由美国衣阿华州立大学物理系副教授约翰• 文森特• 阿塔那索夫(John Vincent Atanasoff)和其合作者克利福特•贝瑞(Clifford Berry,当时还是物理系的研究生)研制成功的,用了300个电子管,取名为ABC(Atanasoff-Berry Computer)。不过这台机器还只是个样机,并没有完全实现阿塔那索夫的构想。1942年,太平洋战争爆发,阿塔那索夫应征入伍,ABC的研制工作也被迫中断。但是ABC计算机的逻辑结构和电子电路的新颖设计思想却为后来电子计算机的研制工作提供了极大的启发。所以,阿塔那索夫应该是公认的“电子数字计算机之父”。
1943年,从这一年开始到1959年相继出现了大量使用电子真空管的计算机,包括ENIAC(Electronic Numerical Integrator and Computer)(它曾一直被人们误认为是世界上第一台真正意义上的电子计算机)。ENIAC于1943年开始制造,完成于1946年2月,它的设计思想基本来源于ABC,只是采用了更多的电子管,运算能力更强大。ENIAC重30吨,占地170平方米,体积3000立方英尺,用了18000个电子管,功率25KW,主要用于计算弹道和研制氢弹。它的负责人是John W. Mauchly和J. Presper Eckert。如果你有幸成为ENIAC的程序员,你将不得不用机器码和穿孔卡片编写所有的程序,并且直接在内存中读写指令和数据,安排和维护内存的分配。即使增加一行代码,也必须重新考虑所有指令和数据在内存中的分配。编制的程序完全像天书,全由0和1组成。
关于“谁是世界上第一台真正意义上的电子数字计算机之父”的争论及其专利诉讼历程,读者上Internet搜索一下“Atanasoff-Berry Computer”即可得知历史的真相。现在,比较客观的结论是:世界上第一台通用电子数字计算机是由阿塔那索夫设计并由莫克利和艾克特完全研制成功的。
1949年的EDVAC(Electronic Discrete Variable Computer)是第一台使用磁带的计算机。这是一个突破,专家们可以在其上多次编写和存储程序。不过你还是必须使用机器码。这一年的科学杂志做了一个大胆的预测:“未来的计算机不会超过1.5吨”。
1952年,对于程序设计来说是具有重要里程碑意义的一年。MIT(美国麻省理工学院)在Whirlwind系统上使用了符号地址,开始使用汇编语言来编写程序。Whirlwind被美国空军用于控制实时防御系统。
1954年,IBM公司的John Backus和他领导的研究小组开始研制Fortran(Formula Translation)语言,这是一种用于科学计算的编程语言。Fortran语言于1957年研制完成。Fortran支持一些最常用的编码方式,如算术表达式、逻辑运算、过程调用、循环和条件等。相对于汇编语言来说,Fortran可以被称为高级语言,它提高了程序员的编程效率。Fortran历经变迁,如今演变成为Visual Fortran。
1958年,Robert Noyce(Intel公司的创始人)发明了集成电路。1959年Grace Murray Hopper开始研制COBOL(Common Business-Oriented Language)语言,并于1961年完成。COBOL在银行系统和许多大型企业中得到了广泛的应用。直到今天,仍然有许多用COBOL编制的程序在大型机上运行。
1960年,来自丹麦、英国、法国、德国、荷兰、瑞士和美国的13名代表举行了一次国际会议,会后在计算机权威刊物CACM上发表了《关于算法语言Algol 60的报告》。Algol是一种用日常英语及与常用数学表达式相近的形式表现算法的语言,没有输入输出语句,全部以过程的形式进行描述,并以块结构为基础。Algol是第一个结构化编程语言。
1961年,IBM的Kennth Iverson推出APL编程语言,专门用于矩阵运算。
1965年,Thomas E. Kurtz和John Kemeny研制了BASIC(Beginners All Purpose Symbolic Instruction Code)语言。BASIC特别适合于计算机教育和初学者使用,后来发展成为Visual Basic,为Microsoft公司挣了很多钱。
1967年,Niklaus Wirth开始在Algol基础之上开发Pascal语言,于1971年研制完成。Pascal后来成为Borland公司用来对抗Microsoft公司的利器。但是这个时候,无论是Microsoft还是Borland,都还没有出世。
1968年,Seymour Paper和他的研究小组在MIT开发了LOGO语言。LOGO语言非常有趣,适用于教育领域。LOGO语言的标志是一个有趣的忍者神龟。
1969年,ARPANET计划启动(Advanced Research Projects Agency Network),这是现代Internet的雏形。1970年,许多大学和商业部门开始接入ARPANET。Internet的发展又带动了一批新的语言,但这是20年之后的事了。
1970年,Ken Thomson和Dennis Ritchie开始研制UNIX操作系统。
1971年11月15日,Intel公司的Marcian E. Hoff研制成功第一块微处理器4004。它包含2300个晶体管,是一个4位系统,时钟频率108kHz,每秒执行6万条指令。
1972年,贝尔实验室发明了C语言。C兼有低级语言和高级语言的功能,被人们称为中级语言。C是一个功能强大的编程语言,它最初因被用于开发UNIX系统而闻名于世。到20世纪80年代,贝尔实验室又发明了C++语言。C和C++被誉为是程序员的“正宗编程语言”,它们的广泛应用极大地推动了软件业的发展。
1974年这一年发生了许多重大的事件。4月1日Intel发布了8位微处理器芯片8080。12月,MITS发布了Altair 8800,这是第一台商用个人计算机,价值397美元,内存只有256字节。同年,Bill Gates和Paul Allen开始开发第一个在MITS的Altair计算机上运行的BASIC程序,他们手头甚至没有Altair计算机。
1975年,Bill Gates和Paul Allen创办了Microsoft公司。要是那个时候人们买了Microsoft公司的股票该有多好啊!
1976年,Zilog推出Z80处理器,这是一个8位的微处理器。CP/M就是基于Z80的操作系统。
1979年,Jean Ichbiah研制了Ada语言,被广泛用于美国军方。同年,IBM公司眼看着个人计算机市场被苹果等电脑公司占有,决定开发自己的个人计算机。Microsoft公司不但提供了用于IBM-PC的BASIC语言,还承担了操作系统的开发。
1981年8月,IBM推出了首款IBM-PC,同时也为Microsoft的崛起铺平了道路。在IBM-PC发布的同时,MS-DOS 1.0和PC-DOS 1.0也一起发布。Microsoft受IBM委托开发DOS操作系统,他们从Tim Paterson那里购买了一个叫86-DOS的程序并加以改进。从IBM卖出去的叫PC-DOS,从Microsoft卖出去的叫MS-DOS,Microsoft精明地保留了继续开发的权利。DOS的最初版本里Bug很多,以至于被称为“Dirty Operation System”,但这却是Microsoft独霸PC操作系统的开始。
1983年,Borland公司成立,其创始人是Philippe Kahn和Anders Hejlsberg,他们合作研制了Turbo Pascal,并在著名的Byte杂志上登广告。售价49.99美元的Turbo Pascal是一个革命性的产品,它能够在RAM中常驻运行,又具有闪电般的编译速度,成为当时PC上最流行的开发工具。Borland也由此迈上了其影响PC软件开发工具十几年的道路。
1985年,Microsoft发布了Windows 1.0。最初的Windows存在很多严重的Bug,不仅少有人用而且被人讥笑。一直熬到1993年,Windows 3.1才获得成功。Windows的图形用户界面与Apple公司的类似,以致被Apple公司控告。诉讼一直持续到1997年8月,Apple遇到了严重的财务危机,Microsoft伸出资本的双手,向Apple注资1.5亿美元,换来了Apple撤销其控诉。
1989年,欧洲物理粒子研究所的Tim Berners-Lee创造了World Wide Web的雏形,HTML语言开始流行,大大地推动了Internet的发展。
1994年,Netscape 1.0浏览器发布。
1995年8月,Microsoft发布了32位的多任务操作系统Windows 95,该版本取得了巨大的成功。同年,号称“一次编译,到处运行”的Java语言诞生。
1995年12月,Netscape发布了JavaScript。
1996年1月,Netscape Navigator 2.0发布,这是第一个支持JavaScript的浏览器。
2002年,Microsoft发布了.NET,开始与Java阵营竞争。
有人绘制了一张比较直观的编程语言关系图,如图2-1所示。
图2-1 编程语言关系图