程序设计语言简史

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最早的程序设计语言是机器语言,出现在20世纪50年代初。机器语言(machine language)也称为机器代码指令(machine code instruction)。直接用二进制的机器代码指令编写的、由处理器执行的程序就是机器语言程序。这是早期的程序设计语言,虽然计算机可以直接执行这种语言编写的程序,而且效率高、速度快,但是这种程序的可读性较差、难以记忆、与计算机处理器硬件紧密相关导致可移植性差。第一个商用计算机UNIVAC就使用了机器语言编程。有人把这种语言称为第一代语言(first generation language,1GL)。

机器语言很快被称为第二代语言(2GL)的汇编语言所代替。汇编语言(assembly language)是指用符号代替数字机器代码指令和其他常量进行编程的程序设计语言。汇编语言通常由计算机硬件制造商定义,使用的符号是有助于程序设计人员记忆的机器代码的缩写。被称为汇编程序的实用工具把汇编语言符号翻译成目标计算机的机器指令代码。这种语言依然是低级程序设计语言,因为一条汇编语言编写的语句只能翻译成一条机器指令代码。

当一条程序语句能够翻译成多条机器指令代码时,这种语言就称为高级程序设计语言。例如FORTRAN、COBOL、BASIC等都是高级程序设计语言。

第三代语言(3GL)是从2GL精炼而来的。2GL侧重于改进语言的逻辑结构,3GL主要是提高了语言的用户友好性。许多常见的语言都是3GL,例如FORTRAN、COBOL、BASIC、C、C++、Visual Basic、Java、C#等,都是典型的3GL。下面,介绍一下这些典型语言的演变过程及其特点。

1953年,IBM的John Backus领导一个开发团队开始开发FORTRAN语言。1957年4月,第一个FORTRAN版本正式发布。这是一个优化的编译器,也是一个高级程序设计语言。FORTRAN是公式翻译系统(formula translating system)的缩写。1966年FORTRAN语言被美国标准协会纳入标准,称为FORTRAN 66。与FORTRAN 66相比,1977年发布的FORTRAN 77语言有了许多重要的改变,特别是开始支持字符数据。1990年发布的Fortran 90语言增加了模块化编程并具备对象编程的特点。在发布的标准规范中,名称中的部分大写字母改成了小写字母。完全具备面向对象编程的版本是2003年发布的Fortran 2003,该版本与C语言具有互操作性。Fortran 2008语言在并行编程方面得到了增强。IBM开发的FORTRAN语言最早主要用于科学计算,后来逐渐应用在天气预报、有限元分析、流体力学、计算物理、计算化学等高性能计算领域。

Grace Hopper于1959年提出了COBOL语言的第一个规范。COBOL是通用商业语言(common business-oriented language)的简称,主要用于商业、金融、行政等行业领域。1968年,COBOL语言被纳入ANSI标准。2002年,COBOL语言被IS

O接纳为标准。COBOL-2002包括了许多面向对象语言的特征,例如,支持本地语言、用户定义的函数、指针、在.NET和Java环境中执行等,并且还可以生成和分析XML语言。

1964年,美国达特茅斯学院的两位教授John Kemeny和Thomas Kurtz在教授计算机课程的时候,针对非计算机专业的学生的特点,提出了BASIC(beginner's all-purpose symbolic instruction code,针对初学者的一般用途的符号指令代码)语言。该语言采用了解释计算方式,具有简单易学的特点。在20世纪70、80年代出现了大量的BASIC语言变种,例如微软公司1981年发布的IBM BASICA、Borland公司1985年发布的Turbo BASIC等。微软公司1991年推出的Visual Basic语言,除了具有图形化用户界面、事件驱动编程、集成的开发环境等特点之外,继承了BASIC语言的许多特点。

1972年,AT&T贝尔实验室的Dennis Trichie在开发Unix操作系统的过程中,提出了C程序设计语言。之所以称为C语言,是因为其来自早期的B(BCPL)语言。1978年,Brian Kernighan和Dennis Ritchie出版了《C程序设计语言》一书,该书详细描述了C语言的规范。1983年,C语言成为ANSI C。1990年,ANSI C被纳为ISO标准。1999年,被称为C99的ISO/IEC 9899:1999标准引入了一些新的功能,包括内联函数、long long int数据类型、可变长度的数组、单行注释等。虽然C语言来自于操作系统的实现,但是现在也被广泛应用于开发各种可移植的应用程序,并且对后来的许多语言有重大的影响。例如,C++、Java、C#等语言都受到了C语言的显著影响。

1979年,在贝尔实验室工作的、29岁的Bjarne Stroustrup在写剑桥大学的博士论文时,对C语言进行了研究,并尝试在C语言中增加类以便增强C语言的功能。他的这项研究结果产生了C with Classes语言。1983年,C with Classes语言的名称改为C++语言,其中++表示增量运算符。与C语言相比,C++语言中增加了虚拟函数、函数名和运算符重载、引用、用户控制的内存控制等。1985年,《C++程序设计语言》一书出版。1989年,多继承性、抽象类、静态成员函数、常量成员函数、保护成员等功能被增加到C++语言中。1990年,C++中又增加了模板、异常处理、命名空间等功能。1998年,C++语言被纳入ISO/IEC标准体系中。2003年,新修订后的标准是ISO/IEC 14882:2003。目前,C++是一种非常流行的程序设计语言,在系统软件、应用软件、嵌入式软件、高性能服务器等诸多领域都有广泛的应用。

Visual Basic是微软公司于1991年发布的、基于COM模型的、具有集成开发环境的第三代事件驱动式程序设计语言。在Visual Basic语言中,可以使用拖拉技术创建表单,表单上可以放置控件,控件有属性和事件处理程序。使用Visual Basic语

言可以创建可执行程序、ActiveX控件、DLL文件等。1998年,微软发布的Visual Basic 6是该软件的最终版本,其后续版本被命名为Visual Basic .NET语言。2002年发布的Visual Basic .NET是一种基于微软.NET框架的面向对象程序设计语言,该版本的语言与VB6开发的应用程序之间没有兼容性。2007年发布的Visual Basic 2008(也称为VB9)是与Microsoft .NET Framework 3.5对应的,增加了许多新的功能,例如条件运算符、匿名类型、LINQ支持、XML字符支持等。

Java语言是1995年由Sun Microsystems公司发布的,是James Gosling领导的开发小组开发的程序设计语言。最初的名称是Oak,后来命名为Java。Java源程序经过编译生成可以运行在Java虚拟机上的字节码,从而实现Write Once,Run Anywhere的跨平台运行目标。Java语言的主要特点包括:纯粹的面向对象语言、跨平台、编译-解释执行、支持多线程、支持分布式应用等。Java也是一种源代码开放软件。目前,Java语言是一种非常流行的程序设计语言,在许多领域都有广泛的应用。据TIOBE公司统计,Java语言在程序设计语言排行榜中持续多年名列榜首。

C#语言是微软公司于2001年发布的、具有面向对象功能的、运行于.NET Framework之上的程序设计语言。C#语言的主要开发人员是丹麦软件工程师Anders Hejlsberg。C#继承了C和C++强大功能的同时,去掉了一些它们的复杂特性,例如没有宏和模板,不允许多重继承等。C#与Java有许多类似的地方,例如,与Java几乎同样的语法和编译成中间代码再运行的过程。但是,C#又与Java语言有显著的不同,它借鉴了Pascal、Delphi等语言的特点,是.NET程序开发的首选语言工具。2001年,ECMA接受C#语言为其标准,并发布了ECMA-334C#语言标准规范。2003年,C#语言也成为ISO/IEC 23270标准。

第四代语言(4GL)是从3GL演变而来的,具有更高抽象级别程序设计语言或程序设计环境。虽然说3GL是更加自然的、块结构的语言,但是3GL的开发方法依然比较缓慢、容易出错。与3GL相比,4GL是针对特定目的的、面向问题和系统工程的程序设计语言。目前,4GL可以分为一般作用的语言(例如Clipper、Foxpro、PowerBuilder等)、数据库查询语言(例如SQL语言)、报表生成语言(例如Metafont、Oracle Report、NATURAL等语言)、数据操纵和统计分析语言(例如MATLAB、SAS、SPSS、Stata等语言)、Web开发语言(例如ColdFusion)等。

目前,有关第五代语言(5GL)的话题正处于讨论中。一般地认为,5GL关注的是约束条件和逻辑,而不是如何去实现算法。例如,对于一个给定的问题,5GL侧重于写出解决这种问题需要的条件和约束,而不是关注如何编写算法来解决这种问题。5GL主要用于解决人工智能领域中的问题

相关文档
最新文档