writeas怎么找文?( 二 )


一般认为4GL具有简单易学,用户界面良好,非过程化程度高,面向问题,只需告知计算机“做什么”,而不必告知计算机“怎么做”,用4GL编程使用的代码量较之COBOL、PL/1明显减少,并可成数量级地提高软件生产率等特点 。许多4GL为了提高对问题的表达能力,也为了提高语言的效率,引入了过程化的语言成分,出现了过程化的语句与非过程化的语句交织并存的局面,如LINC、NOMAD、IDEAL、FOCUS、NATURAL等均是如此 。
2.确定4GL的标准
确定一个语言是否是一个4GL,主要应从以下标准来进行考察:
(1)生产率标准:4GL一出现,就是以大幅度提高软件生产率为己任的,4GL应比3GL提高生产率一个数量级以上 。
(2)非过程化标准:4GL基本上应该是面向问题的,即只需告知计算机“做什么”,而不必告知计算机“怎么做” 。当然4GL为了适应复杂的应用,而这些应用是无法“非过程化”的,就允许保留过程化的语言成分,但非过程化应是4GL的主要特色 。
(3)用户界面标准:4GL应具有良好的用户界面,应该简单、易学、易掌握,使用方便、灵活 。
(4)功能标准:4GL要具有生命力,不能适用范围太窄,在某一范围内应具有通用性 。
3.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 。