第四代语言(4GL)是一个简洁的、高效的非过程编程语言,用来提高
DBMS的效率。在第四代语言中,用户定义“做什么”而不是“如何做”。
语言介绍
第四代语言(4GL)是一个简洁的、高效的非过程编程语言,用来提高DBMS的效率。在第四代语言中,用户定义“做什么”而不是“如何做”。第四代语言依靠更高级的第四代工具,用户可以使用这个工具定义参数来生成应用程序。第四代语言内嵌了如下组件:
查询语言。
报表生成器。
电子数据表。
数据库语言。
应用程序生成器,用来定义插入、检索、更新数据等操作来生成应用程序。
生成应用程序的高级语言。
结构化查询语言(SQL)和通过例子查询(QBE)是第四代语言的例子。
发展
第四代语言(Fourth-Generation Language, 以下简称4GL)的出现是出于商业需要。4GL这个词最早是在80年代初期出现在软件厂商的广告和产品介绍中的。因此,这些厂商的4GL产品不论从形式上看还是从功能上看,差别都很大。但是人们很快发现这一类语言由于具有“面向问题”、“非过程化程度高”等特点,可以成数量级地提高软件生产率,缩短软件开发周期,因此赢得了很多用户。1985年,美国召开了全国性的4GL研讨会,也正是在这前后,许多著名的计算机科学家对4GL展开了全面研究,从而使 4GL进入了计算机科学的研究范畴。
4GL以
数据库管理系统所提供的功能为核心,进一步构造了开发高层软件系统的开发环境,如报表生成、多窗口表格设计、菜单生成系统、图形图象处理系统和决策支持系统,为用户提供了一个良好的应用开发环境。它提供了功能强大的非过程化问题定义手段,用户只需告知系统做什么,而无需说明怎么做,因此可大大提高软件生产率。
进入90年代,随着计算机软硬件技术的发展和应用水平的提高,大量基于数据库管理系统的4GL商品化软件已在
计算机应用开发领域中获得广泛应用,成为了面向数据库应用开发的主流工具,如Oracle应用开发环境、Informix-4GL、SQL Windows、Power Builder等。它们为缩短软件开发周期,提高软件质量发挥了巨大的作用,为软件开发注入了新的生机和活力。
由于近代软件工程实践所提出的大部分技术和方法并未受到普遍的欢迎和采用,软件供求矛盾进一步恶化,软件的开发成本日益增长,导致了所谓“新软件危机”。这既暴露了传统开发模型的不足,又说明了单纯以劳动力密集的形式来支持软件生产,已不再适应社会信息化的要求,必须寻求更高效、自动化程度更高的软件开发工具来支持软件生产。4GL就是在这种背景下应运而生并发展壮大的。
语言划代
目前第四代语言在满足人们对它们的要求方面所达到的基本状况。确实,使用第四代语言构造应用系统时生产率有显著提高;使用第四代语言完成同样的作业所需代码行数,远较使用第三代语言时要少。因此,第四代语言又称为高生产率语言。
第四代语言在完成某些功能时,特别是在完成某些过程性很强的算法时,虽然也像第三代语言那样使用语句编程,但是,在完成更常见的功能时它却完全不用“编程”的方式来构造应用系统。例如,绝大多数第四代语言都主要依靠在荧光屏上和用户“对话”的交互方式,通过用户填表或操作屏幕上的窗口、按钮、图标等来构造用户所需要的应用系统。因此,人们把这种人机通信的新一代工具称为第四代语言,而不称为第四代程序设计语言。读者千万不要用对常规程序设计语言(如COBOL,PASCAL,C)的认识来理解第四代语言。有些人可能觉得
第四代计算机语言不是“语言”,但是,用定义“计算机语言是人类用来向计算机传递信息的表示方法、约定和规则的集合”来衡量,第四代语言确实是“计算机语言”。这就好像虽然我们最熟悉的人类语言是口语和书面语言,但是聋哑人使用的哑语,以及哑剧或舞蹈演员使用的身体语言等等,也是人类语言。
第三代语言主要使用类似冯·诺依曼的结构,即,它们用分支和循环等结构来表示应该执行的操作序列,而且它们的基本语句大多类似于机器指令系统。第四代语言却可以显著地不同于冯·诺依曼结构。不同的第三代语言虽然语法各不相同,但都提供大体类似的操作集;而不同的第四代语言的结构却惊人地不同。
不同的第四代语言的功能,也可能显著不同。某些第四代语言是单纯的查询语言;某些是报表生成器或图形软件包;某些第四代语言功能齐全,可以用来构造完整的应用系统;某些第四代语言是甚高级程序设计语言。一般说来,第四代语言可以供最终用户使用,至少可供直接帮助最终用户的分析员使用。
第三代语言,是“通用”的、可用来构造绝大多数甚至一切类型的应用系统。然而,多数第四代语言却是为范围狭窄的特殊类型的应用而设计的,可以针对这类应用的特点精心地对第四代语言系统进行优化。因此,生产率、易使用性、易维护性和易调试性,都能达到较高水平。第四代语言与第三代语言从形式到内部结构都有很大不同,必须仔细选择所使用的语言,以适应应用领域的需要。
许多第四代语言密切依赖数据库管理系统及其数据字典。在很多场合,数据字典已演变得能够表示远比数据范围更广泛得多的信息,包含商业规则和逻辑的扩充的数据字典,有时称为“百科全书”。它能存贮与应用系统有关的许多信息,例如,屏幕显示格式、报表格式、对话结构、数据间的联系、有效性校验规则、安全控制策略和措施、读或修改数据的权限、导出派生域的计算公式、允许的数据值范围、不同数据值之间的逻辑关系等等。当评价或选择第四代语言时,主要关心的是,它所需要的用于支撑它的基础设施,其中包括数据库、函数库、对象库或其他库、数据字典(或百科全书)。
确定标准
确定一个语言是否是一个4GL,主要应从以下标准来进行考察:
(1)生产率标准:4GL一出现,就是以大幅度提高软件生产率为己任的,4GL应比3GL提高生产率一个数量级以上。
(2)非过程化标准:4GL基本上应该是面向问题的,即只需告知计算机“做什么”,而不必告知计算机“怎么做”。当然4GL为了适应复杂的应用,而这些应用是无法“非过程化”的,就允许保留过程化的语言成分,但非过程化应是4GL的主要特色。
(3)用户界面标准:4GL应具有良好的用户界面,应该简单、易学、易掌握,使用方便、灵活。
(4)功能标准:4GL要具有生命力,不能适用范围太窄,在某一范围内应具有通用性。
语言不足
虽然4GL具有很多优点,也有很大的优势,成为了应用开发的主流工具,但也存在着以下严重不足:
(1)4GL虽然功能强大,但在其整体能力上却与3GL有一定的差距。这一方面是语言抽象级别提高以后不可避免地带来的(正如高级语言不能做某些
汇编语言做的事情);另一方面是人为带来的,许多4GL只面向专项应用。有的4GL为了提高对问题的表达能力,提供了同3GL的接口,以弥补其能力上的不足。如
Oracle提供了可将
SQL语句嵌入
C程序中的工具
PRO*C。
(2)4GL由于其抽象级别较高的原因,不可避免地带来
系统开销庞大,运行效率低下(正如高级语言运行效率没有汇编语言高一样),对软硬件资源消耗严重,应用受硬件限制。
(3)由于缺乏统一的工业标准,4GL产品花样繁多,用户界面差异很大,与具体的机器联系紧密,语言的独立性较差(SQL稍好),影响了应用软件的移植与推广。
(4)GL主要面向基于数据库应用的领域,不宜于科学计算、高速的
实时系统和系统软件开发。
语言分类
按照4GL的功能可以将它们划分为以下几类:
1.查询语言和报表生成器
查询语言是数据库管理系统的主要工具,它提供用户对数据库进行查询的功能。有的查询语言(如SQL)实际上还包括有查询、操纵、定义、控制四种功能。
报表生成器(Report Generator)是为用户提供的自动产生报表的重要工具,它提供非过程化的描述手段让用户很方便地根据数据库中的信息来生成报表,如ADF 。
2.图形语言
图形信息较之一维的字符串、二维的表格信息更为直观、鲜明。我们在软件开发过程中所使用的数据流图、结构图、框图等均是图形。人们自然要设想,是否可以用图形的方式来进行软件开发呢?可见视屏、光笔、鼠标器的广泛使用为此提供了良好的硬件基础,Windows和X-Window为我们提供了良好的软件平台。较有代表性的是Gupta公司开发的SQL Windows系统。它以SQL语言为引擎,让用户在屏幕上以图形方式定义用户需求,系统自动生成相应的源程序(还具有面向对象的功能),用户可修改或增加这些源程序,从而完成应用开发。
3.应用生成器
应用生成器(Application Generator)是重要的一类综合的4GL工具,它用来生成完整的应用系统。应用生成器让用户不必使用多个软件,而只用这样一个综合工具来实现多种功能。应用生成器按其使用对象可以分为交互式和编程式二类。属于前者的有FOCUS、RAMIS、MAPPER、UFO、NOMAD、SAS等。它们服务于维护、准备和处理报表,允许用户以可见的交互方式在终端上创立文件、报表和进行其它的处理。较有代表性的有Power Builder和
Oracle的应用开发环境。Oracle提供的SQL*FORMS、SQL*MENU、SQL*REPORTWRITER等工具建立在 SQL语言基础之上,借助了数据库管理系统强大的功能,让用户交互式地定义需求,系统生成相应的屏幕格式、菜单和打印报表。编程式应用生成器是为建造复杂系统的专业程序人员设计的,如NATURAL、
FOXPRO、
MANTIS、IDEAL、CSP、
DMS、INFO、LINC、FORMAL、 APPLICATION FACTORY以及作者设计的OO-HLL等即属于这一类。这一类4GL中有许多是程序生成器(Program Generator),如LINC生成
COBOL程序,FORMAL生成
PASCAL程序等。为了提供专业人员建造复杂的应用系统,有的语言具有很强的过程化描述能力。虽然语句的形式有差异,其实质与3GL的过程化语句相同,如Informix-4GL和Oracle的
PRO*C。
4.形式规格说明语言
软件规格说明是对软件应满足的需求、功能、性能及其它重要方面的陈述,是软件开发的基础。按照软件生存周期的阶段来划分,有软件的需求规格说明、功能规格说明、设计规格说明等。用来书写规格说明的语言称为规格说明语言。传统的规格说明语言是自然语言。在我国,主要使用
现代汉语来表达软件的规格说明。自然语言为开发者和用户所熟悉,易于使用。但也会不可避免地将自然语言的歧义性、不精确性引入到软件规格说明中,从而给软件的开发和软件的质量带来隐患。形式的规格说明语言则很好地解决了上述问题,而且还是软件自动化的基础。从形式的需求规格说明和功能规格说明出发,可以自动或半自动地转换成某种可执行的语言(如高级语言)。需求规格说明和功能规格说明是面向问题、非过程化的,因此属于4GL。这一类语言有Z、NPL、SPECINT以及作者设计的 JAVASPEC。设计规格说明语言由于包含了大量过程化成分,原则上不应划入4GL。
发展趋势
在今后相当一段时期内,4GL仍然是应用开发的主流工具。但其功能、表现形式、用户界面、所支持的开发方法将会发生一系列深刻的变化。主要表现在以下几个方面:
面向对象技术集数据抽象、抽象数据类型和类继承为一体,使软件工程公认的模块化、信息隐蔽、抽象、局部化、软件重用等原则在
面向对象机制下得到了充分的体现。它追求自然地刻划和求解现实世界中的问题,即追求问题结构与软件结构的一致性,使得开发人员可以把主要精力放在系统一级上,按照自己的意图创建对象、并将问题映射到该对象上。面向对象技术所追求的目标和4GL所追求的目标实际上是一致的。目前有代表性的4GL普遍具有面向对象的特征,但这些特征都很有限。所采用的实现技术往往是在传统的关系型数据库管理系统的基础上再加上一层面向对象的开发工具,而这层工具未能完全与
数据库管理系统有机结合在一起,对抽象数据类型和
继承性的表达也很有限,极大地限制了面向对象开发技术对4GL的支持。相信随着
面向对象数据库管理系统研究的深入,建立在其上的 4GL将会以崭新的面貌出现在应用开发者面前。
(2)4GL将全面支持以Internet为代表的网络分布式应用开发
随着Internet为代表的网络技术的广泛普及,4GL又有了新的活动空间。出现类似于
Java,但比Java抽象级更高的4GL不仅是可能的,而且是完全必要的。
(3)4GL将出现事实上的工业标准
4GL产品很不统一,给软件的可移植性和应用范围带来了极大的影响。但基于SQL的4GL已成为主流产品。随着竞争和发展,有可能出现以SQL为引擎的事实上的工业标准。
(4)4GL将以受限的自然语言加图形作为用户界面
4GL基本上还是以传统的程序设计语言或交互方式为用户界面的。前者表达能力强,但难于学习使用;后者易于学习使用,但表达能力弱。在
自然语言理解未能彻底解决之前,4GL将以受限的
自然语言加图形作为用户界面,以大大提高用户界面的友好性。
(5)4GL将进一步与人工智能相结合
4GL主流产品基本上与人工智能技术无关。随着4GL非过程化程度和语言抽象级的不断提高,将出现功能级的4GL(4GL流行产品还处于实现级),必然要求人工智能技术的支持才能很好地实现,使4GL与人工智能广泛结合。
4GL的主要应用领域是商务。商务处理领域中需要大量的数据,没有数据库管理系统的支持是很难想象的。事实上大多数4GL是数据库管理系统功能的扩展,它们建立在某种数据库管理系统的基础之上。
(7)4GL要求软件开发方法发生变革
由于传统的结构化方法已无法适应4GL的软件开发,工业界客观上又需要支持4GL的软件开发方法来指导他们的开发活动。预计
面向对象的开发方法将居主导地位,再配之以一些辅助性的方法,如快速原型方法、并行式软件开发、协同式软件开发等,以加快软件的开发速度,提高软件的质量。