标题：4GL
简介
4GL即第四代语言(Fourth－Generation Language)。4GL是按计算机科学理论指导设计出来的结构化语言，如ADA，MODULA－ 2，SMALLTALK－80等。 
一般认为4GL具有简单易学，用户界面良好，非过程化程度高，面向问题，只需告知计算机“做什么”，而不必告知计算机“怎么做”，用4GL编程使用的代码量较之COBOL、PL/1明显减少，并可成数量级地提高软件生产率等特点。许多4GL为了提高对问题的表达能力，也为了提高语言的效率，引入了过程化的语言成分，出现了过程化的语句与非过程化的语句交织并存的局面，如LINC、NOMAD、IDEAL、 FOCUS、NATURAL等均是如此。
4GL以数据库管理系统所提供的功能为核心，进一步构造了开发高层软件系统的开发环境，如报表生成、多窗口表格设计、菜单生成系统等，为用户提供了一个良好的应用开发环境。
4GL的代表性软件系统有：PowerBuilder、Delphi和INFORMOX-4GL等。
第四代语言
第四代语言(Fourth－Generation Language, 以下简称4GL)的出现是出于商业需要。4GL这个词最早是在80年代初期出现在软件厂商的广告和产品介绍中的。因此，这些厂商的4GL产品不论从形式上看还是从功能上看，差别都很大。但是人们很快发现这一类语言由于具有“面向问题”、“非过程化程度高”等特点，可以成数量级地提高软件生产率，缩短软件开发周期，因此赢得了很多用户。1985年，美国召开了全国性的4GL研讨会，也正是在这前后，许多著名的计算机科学家对4GL展开了全面研究，从而使 4GL进入了计算机科学的研究范畴。
4GL以数据库管理系统所提供的功能为核心，进一步构造了开发高层软件系统的开发环境，如报表生成、多窗口表格设计、菜单生成系统、图形图象处理系统和决策支持系统，为用户提供了一个良好的应用开发环境。它提供了功能强大的非过程化问题定义手段，用户只需告知系统做什么，而无需说明怎么做，因此可大大提高软件生产率。
进入90年代，随着计算机软硬件技术的发展和应用水平的提高，大量基于数据库管理系统的4GL商品化软件已在计算机应用开发领域中获得广泛应用，成为了面向数据库应用开发的主流工具，如Oracle应用开发环境、Informix－4GL、SQL Windows、Power Builder等。它们为缩短软件开发周期，提高软件质量发挥了巨大的作用，为软件开发注入了新的生机和活力。
由于近代软件工程实践所提出的大部分技术和方法并未受到普遍的欢迎和采用，软件供求矛盾进一步恶化，软件的开发成本日益增长，导致了所谓“新软件危机”。这既暴露了传统开发模型的不足，又说明了单纯以劳动力密集的形式来支持软件生产，已不再适应社会信息化的要求，必须寻求更高效、自动化程度更高的软件开发工具来支持软件生产。4GL就是在这种背景下应运而生并发展壮大的。
程序设计语言的划代
1.划代的观点
程序设计语言的划代问题远比计算机的划代复杂，目前所见到的划代观点有4种之多。这儿例举一种观点，他们将编程语言划分如下：1GL是汇编语言； 2GL是高级程序设计语言，如FORTRAN，ALGOL，BASIC，LISP等；3GL是增强性的高级程序设计语言，如PASCAL， ALGOL68，FORTRAN77等；4GL是按计算机科学理论指导设计出来的结构化语言，如ADA，MODULA－2，SMALLTALK－80等。
一般认为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)目前4GL主要面向基于数据库应用的领域，不宜于科学计算、高速的实时系统和系统软件开发。
第四代语言的分类
按照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仍然是应用开发的主流工具。但其功能、表现形式、用户界面、所支持的开发方法将会发生一系列深刻的变化。主要表现在以下几个方面：
1.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与人工智能广泛结合。
6.4GL继续需要数据库管理系统的支持
4GL的主要应用领域是商务。商务处理领域中需要大量的数据，没有数据库管理系统的支持是很难想象的。事实上大多数4GL是数据库管理系统功能的扩展，它们建立在某种数据库管理系统的基础之上。
7.4GL要求软件开发方法发生变革
由于传统的结构化方法已无法适应4GL的软件开发，工业界客观上又需要支持4GL的软件开发方法来指导他们的开发活动。预计面向对象的开发方法将居主导地位，再配之以一些辅助性的方法，如快速原型方法、并行式软件开发、协同式软件开发等，以加快软件的开发速度，提高软件的质量。
而现在说4gl时一般是指“informix-4gl”。 
“informix-4gl”是一门独立的语言，它的源文件扩展是 .4gl ，编译后是 .o 
一般是用仿真终端Netterm进行编辑的，它的程序也是用Netterm运行的，当然也可以用java调用它，这种语言，我们多用来做informix数据库提数，ETL啥的，类似oracle的pl/sql提数。