程序设计语言

来自中文百科专业版
跳转至: 导航搜索

  程序设计语言汉语拼音:Chenxu Sheji Yuyan;英语:programming language),用于书写计算机程序的语言。

  语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,亦即表示按照各种方法所表示的各个记号的特定含义,但不涉及使用者。语用表示程序与使用者的关系。

基本成分

  语言的种类千差万别。但是,一般说来,基本成分不外4种。

  ①数据成分。用以描述程序中所涉及的数据。

  ②运算成分。用以描述程序中所包含的运算。

  ③控制成分。用以表达程序中的控制构造。

  ④传输成分。用以表达程序中数据的传输。

分类

  按语言级别,有低级语言和高级语言之分。低级语言包括字位码、机器语言和汇编语言。它的特点是与特定的机器有关,功效高,但使用复杂、繁琐、费时、易出差错。其中,字位码是计算机唯一可直接理解的语言,但由于它是一连串的字位,复杂、繁琐、冗长,几乎无人直接使用。机器语言是表示成数码形式的机器基本指令集,或者是操作码经过符号化的基本指令集。汇编语言是机器语言中地址部分符号化的结果,或进一步包括宏构造。

  高级语言的表示方法要比低级语言更接近于待解问题的表示方法,其特点是在一定程度上与具体机器无关,易学、易用、易维护。当高级语言程序翻译成相应的低级语言程序时,一般说来,一个高级语言程序单位要对应多条机器指令,相应的编译程序所产生的目标程序往往功效较低。

  按照用户要求,有过程式语言和非过程式语言之分。过程式语言的主要特征是,用户可以指明一列可顺序执行的运算,以表示相应的计算过程。例如,FORTRAN,COBOL,ALGOL60等都是过程式语言。非过程式语言的含义是相对的,凡是用户无法指明表示计算过程的一列可顺序执行的运算的语言,都是非过程式语言。着名的例子是表格的生成程序(RPG)。它实质上不是语言,使用者只须指明输入和预期的输出,无须指明为了得到输出所需的过程。

  按照应用范围,有通用语言和专用语言之分。目标非单一的语言称为通用语言,例如FORTRAN、COBOL、ALGOL60等都是通用语言。目标单一的语言称为专用语言,如APT等。

  按照使用方式,有交互式语言和非交互式语言之分。具有反映人机交互作用的语言成分的称为交互式语言,如BASIC语言就是交互式语言。语言成分不反映人-机交互作用的称非交互式语言,如FORTRAN、COBOL、ALGOL60、PASCAL等都是非交互式语言。

  按照成分性质,有顺序语言、并发语言和分布语言之分。只含顺序成分的语言称为顺序语言,如FORTRAN、COBOL等都属顺序语言。含有并发成分的语言称为并发语言,如并发PASCAL、MODULA和ADA等都属并发语言。考虑到分布计算要求的语言称为分布语言,如MODULA*便属分布语言。

  传统的程序设计语言大都以诺伊曼式的计算机为设计背景,因而又称为诺伊曼式语言。J.巴克斯于1977年提出的函数式语言,则以非诺伊曼式的计算机为设计背景,因而又称为非诺伊曼式语言。

主要语言

  APT( Automatically Pro-grammed Tools)——自动数控程序。第一个专用语言,用于数控机床加工,1956。

  FORTRAN(FORmula TRANslation)——公式翻译程序设计语言。第一个广泛使用的高级语言,为广大科学和工程技术人员使用计算机创造了条件,1956。

  FLOW-MATIC 。第一个适用于商用数据处理的语言,其语法与英语语法类似,1956。

  IPL-V(Information Processing Language V)——信息处理语言。第一个表处理语言,可看成是一种适用于表处理的假想计算机上的汇编语言,1958。

  COMIT(COmpiler Massachusetts Institute foTechnology) —— 马萨诸塞州理工学院编译程序。第一个现实的串处理和模式匹配语言,1957。

  COBOL(COmmon Business Oriented Language)——面向商业的通用语言。使用最广泛的商用语言,它是适用于数据处理的高级程序设计语言,1960。

  ALGOL60(ALGOrithmic language60) ——算法语言60。程序设计语言由技艺转向科学的重要标志,其特点是局部性、动态性、递归性和严谨性,1960。

  LISP(LISt Proceessing——表处理语言。引进函数式程序设计概念和表处理设施,在人工智能的领域内广泛使用,1960。

  JOVIAL(Jules Own Version of IAL)——国际算法语言的朱尔斯文本。第一个具有处理科学计算、输入-输出逻辑信息、数据存储和处理等综合功能的语言。多数JOVIAL编译程序都是用JOVIAL书写的,1960。

  GPSS(General-purpose Systems Simulator)——通用系统模拟语言 。第一个使模拟成为实用工具的语言,1961。

  JOSS(Johnniac Open-Shop System ——。第一个交互式语言,它有很多方言,曾使分时成为实用,1964。

  FORMAC(FORmula MAnipulation Compiler)——公式翻译程序设计语言公式处理编译程序。第一个广泛用于需要形式代数处理的数学问题领域内的语言,1964。

  SIMULA (SIMUlation LAnguage)—— 模拟语言 。主要用于模拟的语言,是ALGOL60的扩充,1966。SIMULA67是1967年SIMULA的改进。其中引进的“类”概念,是现代程序设计语言中“模块”概念的先声。

  APL/360 (A Programming Language)——程序设计语言360。一种提供很多高级运算符的语言,可使程序人员写出甚为紧凑的程序 ,特别是涉及到矩阵计算的程序 ,1967。

  PASCAL ( Philips Automatic Sequence CALcul-ator)——菲利浦自动顺序计算机语言。在ALGOL60的基础上发展起来的重要语言 ,其最大特点是简明性与结构化,1971。

  PROLOG(PROgrammingin LOGic)。 一种处理逻辑问题的语言。它已经广泛应用于关系数据库、数理逻辑、抽象问题求解、自然语言理解等多种领域中,1973。

  ADA。一种现代模块化语言。属于ALGOLPASCAL语言族,但有较大变动。其主要特征是强类型化和模块化,便于实现个别编译,提供类属设施,提供异常处理,适于嵌入式应用,1979。

  除了上面列举的语言外,还有一些较为通用的语言,特别是BASIC、PL/1、SNOBOL、ALGOL68等。BASIC虽然简单易学,使用广泛,但其中没有什么新概念,而且并不是第一个交互式语言。PL/1的设计 思想来源于JOVIAL,其功能来源于FORTRAN、COBOL、ALGOL60,具有中断表处理等设施。SNOBOL是一种好的语言,对COMIT中若干概念做了明显的改进。ALGOL68在语言成分和 描述方法方面虽有所创新,但应用尚不广泛。

发展趋势

  程序设计语言是软件的重要方面。它的发展趋势是模块化、简明性和形式化:

  ①模块化。不仅语言具有模块成分,程序由模块组成,而且语言本身的结构也是模块化的。

  ②简明性。涉及的基本概念不多,成分简单,结构清晰,易学易用。

  ③形式化。发展合适的形式体系,以描述语言的语法、语义、语用。