可扩充程序设计语言是一种具有扩充机制的程序设计语言,如ALGOL、Forth语言。一个程序设计语言称为可扩充的是指用户能根据自己的需要,利用该语言提供的扩充手段,往该语言中增加新的成分或新的功能,使该语言功能更加完善,而无需改动该语言的编译程序。
简介可扩充程序设计语言的研究兴起于20世纪60年代中期,当时,计算机应用领域越来越多,对程序设计语言提出了各种功能要求,如果把这些功能都纳入一个计算机语言中便会使语言的规模过度膨胀。人们企图以适度规模的语言加上可扩充功能来适应这种需要。可扩充程序设计语言的扩充机制有词法扩充、语法扩充和语义扩充等层次。例如,关键词和运算符换名,通过宏展开引入新的文字等属于词法扩充。定义复合数据类型,引入新的运算符等属于语法扩充,确定新运算符的运算规则和原有运算符的重载(如改变其定义域)等属于语义扩充1。
程序设计语言用于书写计算机程序(习惯上指实现级语言程序)的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言包含三个方面,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规则,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,亦即表示按照各种方法所表示各个记号的特定含义,但不涉及使用者。语用表示程序与使用者的关系。语言的好坏不仅影响到程序使用是否方便,而且涉及到程序人员所写程序的质量。语言的种类千差万别。但是,一般说来,基本成分不外四种。①数据成分,用以描述程序中所涉及的数据;②运算成分,用以描述程序中所包含的运算;③控制成分,用以表达程序中的控制构造;④传输成分,用以表达程序中数据的传输。
常见可扩充程序设计语言Forth是六十年代末期,由查理斯·摩尔发展出来在天文台使用的计算机自动控制系统及程序设计语言,允许用户很容易组合系统已有的简单指令,定义成为功能较复杂的高阶指令。由于其结构精简、运行快速、操作方便,广为当代天文学界使用。八十年代以后,有爱用者成立Forth Interest Group在世界各地推广,并陆续在各类计算机上创建Forth系统及标准的语言。
FORTH以可扩展的词典为核心,采用两个堆栈为基础的高度模块化结构,是一种将解译器和编译器合并运用的双态系统。使用FORTH,可在编译过程中检测差错,并且逐步扩充编译程序代码。利用标准FORTH所写的程序几乎不必大修改,就能在各类计算机运作;甚至在特别设计的计算机上可以完全放弃组合语言,直接由FORTH转化成机器语言,就好像现代的Java虚拟机。同时,用户也可以把自己定义的运算功能加入编译器中,使Forth语言更有弹性。forth是一种可扩展的,交互式的语言。最初为小型的嵌入式计算机设计的,它几乎可以在任何主流的芯片上解译和编译,甚至已有多种可直接运行forth指令的芯片。在电子表格,专家系统,多用户数据库,和分布式实时控制系统中有广泛的应用。最常用在内建程序,以及系统与过程控制,它也用在微计算机上。主要运用在数据搜集与处理、图形处理、专家系统,以及实时流程控制等。
ALGOL,名称源自算法语言(ALGOrithmic Language)的缩写,是一族指令式编程语言,发展于1950年代中期,对许多其它编程语言产生了重大影响。计算机协会在教科书及学术文章采用此语言做为描述算法的标准语法超过三十年。由大多数近代编程语言皆使用类似ALGOL的语法来看,ALGOL可与差不多同时期的FORTRAN、LISP及COBOL并列为四大最有影响力的高阶语言。ALGOL被设计用来避免FORTRAN中一些已知的问题,最终使许多其它编程语言的兴起,包括PL/I、Simula、BCPL、B、Pascal及C。ALGOL引入了程式码区间,并用begin⋯end来分隔。它是第一个利用词法作用域实作巢状函式的语言,也是第一个注重形式语言定义的语言,并在ALGOL 60报告中引入了巴科斯范式来作为设计语言形式文法的原则。
本词条内容贡献者为:
王慧维 - 副研究员 - 西南大学