程序设计语言发展史

目录

程序设计语言发展史

在这里插入图片描述

1950 年代末期,大量新的计算机编程语言涌现,而这些新语言大都围绕单个体系结构,如 UNIVAC 计算机、IBM700 系列计算机等进行开发,这种情况使得不同系统间的用户交流变得困难。美国一些主要的计算机用户组建议研究与开发适用于与计算机硬件设备无关的科学用程序设计语言。1958 年 5 月 27 日至 6 月 1 日,德国的应用数学和力学学会(Gesellschaft für Angewandte Mathematik und Mechanik,GAMM)和 ACM 派人出席在苏黎世举行第一次设计会议,为新语言定下目标。新语言先被命名为国际代数语言(International Algebraic Language,IAL),后定名为 ALGOL,即算法语言(ALGOrithmic Language)的简称。后来改称 Algol 58,成为 ALGOL 家族的第一个成员。

在高级编程语言的进化历史中,最重要的里程碑就是 ALGOL 的推出。ALGOL 是在计算机发展史上首个清晰定义的高级语言,国际计算机学会(Association for Computing Machinery,ACM)将 ALGOL 模式列为算法描述的标准,启发了 ALGOL 家族的 Pascal、Ada、C 等高级语言的出现。

后来,图灵奖获得者 Alan J.Perlis(艾伦.佩利)在巴黎举行的、由全世界一流软件专家参加的讨论会上,发表了《算法语言 Algol 60 的报告》,确定了程序设计语言 Algol 60。Algol 60 是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的发展奠定了基础。Algol 60 是许多后来的程序设计语言,包括今天那些必不可少的软件工程工具的原型。

  • 2002 年,前图灵奖得主 Edsger Dijstra 把 Algol 60 的发展描述为 “一个绝对的奇迹”,标志着 “计算机科学” 的诞生,因为 Algol 60 首次显示了自动计算能够并且应当成为学术关注的主题。

1963 年,英国剑桥大学推出了 CPL(Combined Programming Langurage)语言。CPL 语言在 ALGOL 60 的基础上更靠近硬件一些,但 CPL 比较复杂,开发规模大,而难以实现。

1967 年,Matin Richards 在访问麻省理工学院时设计并对 CPL 做了简化,推出了 BCPL(Base Combined Programming Langurage)语言。BCPL 是一门 “无类型” 的编程语言:它仅能操作一种数据类型,即机器字(Machine word)。

1969 年,贝尔实验室的研究员 Ken Thompson(肯·汤普森)以 BCPL 语言为基础,又作了进一步的简化,设计出了很简单且很接近硬件的 B 语言。其名字取的是 BCPL 的第一个字母。Thompson 使用 B 语言编写了一个游戏 — Space Travel。因为 Thompson 很想玩这个自己开发的游戏,所以他背着老板找到了台空闲的 DEC PDP-7 小型机,但是这台机器并没有操作系统,于是 Thompson 着手为 DEC PDP-7 开发一个操作系统。

1969 年,在 Thompson 独自经过 4 个星期的奋斗后,以 B 语言写出了一个原始的 UNIX 内核程序、一个汇编器、一个简单的 Shell(命令解析器)、以及一个小的文件系统,这就是伟大的 UNIX 操作系统的原型。

1971 年,Ken Thompson 的同事 Dennis M.Ritchie(丹尼斯·里奇)也很想玩 Space Travel,所以加入了 UNIX 的开发。因为当时的 B 语言依旧是一种无类型的编程语言,过于简单,功能有限。在 PDP-11 出现后,PDP-11 提供了多种不同规格大小的基本对象:一字节长的字符,两字节长的整型数以及四字节长的浮点数。B 语言无法处理这些不同规格大小的对象,也没有提供单独的操作符去操作它们。所以为了将 UNIX 移植到 PDP-11,Ritchie 的主要工作是改进 Thompson 的 B 语言。

1972 年,Ritchie 以 B 语言为基础开发了一种称为 C 的编程语言,并为其创造了一个类型结构。C 语言最初尝试通过向 B 语言中增加数据类型的想法来处理那些不同类型的数据。和大多数语言一样,在 C 中,每个对象都有一个类型以及一个值。类型决定了可用于值的操作的含义,以及对象占用的存储空间大小。其名字取的是 BCPL 的第二个字母,也是 B 的下一个字母。

1973 年初,C 语言的主体完成。C 语言既保持了 B 语言的优点(精炼、接近硬件),又克服了 B 语言的缺点(过于简单,数据无类型)。于是 Thompson 和 Ritchie 开始着手使用 C 语言重写 UNIX。这是 C 语言第一次应用在操作系统的核心编写上,当 UNIX 操纵系统的可移植性被得到证明时,已经是 1977 年了。

1975 年,C 语言开始移植到其他机器上使用。史蒂芬·强生实现了一套 “可移植编译器”,这套编译器修改起来相对容易,并且可以为不同的机器生成代码。从那时起,C 在大多数计算机上被使用,从最小的微型计算机到 CRAY-2 超级计算机。C 语言很规范,即使没有一份正式的标准,你也可以写出 C 程序,这些程序无须修改就可以运行在任何支持 C 语言和最小运行时环境的计算机上。

C 语言最初在小型机器上实现,并且继承了一系列小语种编程语言的特点。与功能相比,C 的设计更倾向于简单和优雅。此外,从一开始,C 语言就是为系统级编程而设计,程序的运行效率至关重要,因此,C 语言与真实机器能力的良好匹配也就不足为奇。例如:C 语言为典型硬件所直接支持的对象:字符,整数(也许有多种大小),以及浮点数(同样可能有多种大小)提供了相应的基本数据类型。

1977 年,Dennis M.Ritchie 发表了不依赖于具体机器硬件系统的 C 语言编译论文《可移植的 C 语言编译程序》,UNIX 就是第一个可移植(Hardware 解耦)的操作系统。

就这样 UNIX 和 C 语言完美地结合成为了生命共同体,随着 UNIX 的发展,C 语言也得到了不断的完善。因为 C 是编写 UNIX 的语言,因此后来也成了最受欢迎的系统程序语言之一。

说实话,UNIX 和 C 语言的结合是一个伟大的时刻,在此之前,使用汇编语言来编写能够发挥计算机最高效能的操作系统是业界共识。所以,当 Thompson 和 Ritchie 决定使用高级编程语言来编写操作系统时,就意味着他们对硬件系统、操作系统和编译系统的组织关系有着超前的理解。C 语言为 UNIX 带来的可移植性极具创造性,当一种新的计算机出现时,程序员不用重新发明轮子。这样,UNIX 与 70 年代风起云涌的各种操作系统有了根本区别。正是这一次创造性的将开发工具和操作系统的完美结合,才得以滋生出深邃的黑客文化。而又是黑客这一群离经叛道的人,推动了捍卫软件自由的开源运动。一切皆有因果。

1978 年,丹尼斯·里奇和布莱恩·柯林汉合作出版了《C程序设计语言》的第一版。书中介绍的 C 语言标准,也被 C 语言程序员称作 “K&R C”(柯里 C)。

1983 年,贝尔实验室的 Bjarne Stroustrup(本贾尼·斯特劳斯特卢普) 在 C 语言的基础上推出了 C++,它扩充和完善了 C 语言,特别是在面向对象编程方面。一定程度上克服了 C 语言编写大型程序时的不足。

由于 C++ 语言编写的程序过于复杂和庞大,另外由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,如何让编写的程序跨平台运行也是个难题。为了解决困难,Sun 公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对 C++ 进行了改造,去除了留在 C++ 的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为 Oak 的面向对象语言。由 Patrick Naughton 的工作小组负责研发,主要成员是 James Gosling(詹姆斯·高斯林)。

1995 年,互联网的蓬勃发展给了 Oak 机会。Sun 公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的 Applet(一种将小程序嵌入到网页中进行执行的技术),并将 Oak 更名为 Java(在申请注册商标时,发现 Oak 已经被人使用了,再想了一系列名字之后,最终使用了提议者在喝一杯 Java 咖啡时无意提到的 Java 词语)。5 月 23 日,Sun 公司在 Sun world 大会上正式发布了 Java 编程语言。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape 和 Microsoft 等各大公司都纷纷停止了自己的相关开发项目,竞相购买了 Java 使用许可证,并为自己的产品开发了相应的 Java 平台。

1996 年 1 月,Sun 公司发布了 Java 的第一个开发工具包(JDK 1.0),这是 Java 发展历程中的重要里程碑,标志着 Java 成为一种独立的开发工具。

2000 年,Microsoft 公司的 Anders Hejlsberg(安德斯·海尔斯伯格)发明了 C#(C Sharp Programming Language) ,同时他还是 Delphi 语言之父。

一般而言,C,C++,Java 被视为同一系的语言,它们长期占据着程序使用榜的前三名。C 语言的发明,是计算机科学发展史上的一个伟大的创举,直接影响了后来的 IT 技术革命和互联网技术革命。时至今日,绝大多数的底层软件,包括操作系统(如:Windows、Linux、UNIX 等),数据库软件(如:MySQL),办公软件(如:OpenOffice),杀毒软件,网络通信协议,包括 Java、Python 语言的实现,互联网,以及各种内核驱动等都是用 C 语言开发的。

相关阅读:

原文地址:https://www.cnblogs.com/hzcya1995/p/13309343.html