版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-4GL

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

簡介

第四代語言(4GL)是一個簡潔的、高效的非過程編程語言,用來提高DBMS的效率。在第四代語言中,用戶定義“做什么”而不是“如何做”。第四代語言依靠更高級的第四代工具,用戶可以使用這個工具定義參數(shù)來生成應(yīng)用程序。第四代語言內(nèi)嵌了如下組件:

查詢語言。

報表生成器。

電子數(shù)據(jù)表。

數(shù)據(jù)庫語言。

應(yīng)用程序生成器,用來定義插入、檢索、更新數(shù)據(jù)等操作來生成應(yīng)用程序。

生成應(yīng)用程序的高級語言。

結(jié)構(gòu)化查詢語言(SQL)和通過例子查詢(QBE)是第四代語言的例子。1

發(fā)展第四代語言(Fourth-Generation Language, 以下簡稱4GL)的出現(xiàn)是出于商業(yè)需要。4GL這個詞最早是在80年代初期出現(xiàn)在軟件廠商的廣告和產(chǎn)品介紹中的。因此,這些廠商的4GL產(chǎn)品不論從形式上看還是從功能上看,差別都很大。但是人們很快發(fā)現(xiàn)這一類語言由于具有“面向問題”、“非過程化程度高”等特點,可以成數(shù)量級地提高軟件生產(chǎn)率,縮短軟件開發(fā)周期,因此贏得了很多用戶。1985年,美國召開了全國性的4GL研討會,也正是在這前后,許多著名的計算機(jī)科學(xué)家對4GL展開了全面研究,從而使 4GL進(jìn)入了計算機(jī)科學(xué)的研究范疇。

4GL以數(shù)據(jù)庫管理系統(tǒng)所提供的功能為核心,進(jìn)一步構(gòu)造了開發(fā)高層軟件系統(tǒng)的開發(fā)環(huán)境,如報表生成、多窗口表格設(shè)計、菜單生成系統(tǒng)、圖形圖象處理系統(tǒng)和決策支持系統(tǒng),為用戶提供了一個良好的應(yīng)用開發(fā)環(huán)境。它提供了功能強(qiáng)大的非過程化問題定義手段,用戶只需告知系統(tǒng)做什么,而無需說明怎么做,因此可大大提高軟件生產(chǎn)率。

進(jìn)入90年代,隨著計算機(jī)軟硬件技術(shù)的發(fā)展和應(yīng)用水平的提高,大量基于數(shù)據(jù)庫管理系統(tǒng)的4GL商品化軟件已在計算機(jī)應(yīng)用開發(fā)領(lǐng)域中獲得廣泛應(yīng)用,成為了面向數(shù)據(jù)庫應(yīng)用開發(fā)的主流工具,如Oracle應(yīng)用開發(fā)環(huán)境、Informix-4GL、SQL Windows、Power Builder等。它們?yōu)榭s短軟件開發(fā)周期,提高軟件質(zhì)量發(fā)揮了巨大的作用,為軟件開發(fā)注入了新的生機(jī)和活力。

由于近代軟件工程實踐所提出的大部分技術(shù)和方法并未受到普遍的歡迎和采用,軟件供求矛盾進(jìn)一步惡化,軟件的開發(fā)成本日益增長,導(dǎo)致了所謂“新軟件危機(jī)”。這既暴露了傳統(tǒng)開發(fā)模型的不足,又說明了單純以勞動力密集的形式來支持軟件生產(chǎn),已不再適應(yīng)社會信息化的要求,必須尋求更高效、自動化程度更高的軟件開發(fā)工具來支持軟件生產(chǎn)。4GL就是在這種背景下應(yīng)運而生并發(fā)展壯大的。

程序設(shè)計語言的劃代目前第四代語言在滿足人們對它們的要求方面所達(dá)到的基本狀況。確實,使用第四代語言構(gòu)造應(yīng)用系統(tǒng)時生產(chǎn)率有顯著提高;使用第四代語言完成同樣的作業(yè)所需代碼行數(shù),遠(yuǎn)較使用第三代語言時要少。因此,第四代語言又稱為高生產(chǎn)率語言。

第四代語言在完成某些功能時,特別是在完成某些過程性很強(qiáng)的算法時,雖然也像第三代語言那樣使用語句編程,但是,在完成更常見的功能時它卻完全不用“編程”的方式來構(gòu)造應(yīng)用系統(tǒng)。例如,絕大多數(shù)第四代語言都主要依靠在熒光屏上和用戶“對話”的交互方式,通過用戶填表或操作屏幕上的窗口、按鈕、圖標(biāo)等來構(gòu)造用戶所需要的應(yīng)用系統(tǒng)。因此,人們把這種人機(jī)通信的新一代工具稱為第四代語言,而不稱為第四代程序設(shè)計語言。讀者千萬不要用對常規(guī)程序設(shè)計語言(如COBOL,PASCAL,C)的認(rèn)識來理解第四代語言。有些人可能覺得第四代計算機(jī)語言不是“語言”,但是,用定義“計算機(jī)語言是人類用來向計算機(jī)傳遞信息的表示方法、約定和規(guī)則的集合”來衡量,第四代語言確實是“計算機(jī)語言”。這就好像雖然我們最熟悉的人類語言是口語和書面語言,但是聾啞人使用的啞語,以及啞劇或舞蹈演員使用的身體語言等等,也是人類語言。

第三代語言主要使用類似馮·諾依曼的結(jié)構(gòu),即,它們用分支和循環(huán)等結(jié)構(gòu)來表示應(yīng)該執(zhí)行的操作序列,而且它們的基本語句大多類似于機(jī)器指令系統(tǒng)。第四代語言卻可以顯著地不同于馮·諾依曼結(jié)構(gòu)。不同的第三代語言雖然語法各不相同,但都提供大體類似的操作集;而不同的第四代語言的結(jié)構(gòu)卻驚人地不同。

不同的第四代語言的功能,也可能顯著不同。某些第四代語言是單純的查詢語言;某些是報表生成器或圖形軟件包;某些第四代語言功能齊全,可以用來構(gòu)造完整的應(yīng)用系統(tǒng);某些第四代語言是甚高級程序設(shè)計語言。一般說來,第四代語言可以供最終用戶使用,至少可供直接幫助最終用戶的分析員使用。

第三代語言,是“通用”的、可用來構(gòu)造絕大多數(shù)甚至一切類型的應(yīng)用系統(tǒng)。然而,多數(shù)第四代語言卻是為范圍狹窄的特殊類型的應(yīng)用而設(shè)計的,可以針對這類應(yīng)用的特點精心地對第四代語言系統(tǒng)進(jìn)行優(yōu)化。因此,生產(chǎn)率、易使用性、易維護(hù)性和易調(diào)試性,都能達(dá)到較高水平。第四代語言與第三代語言從形式到內(nèi)部結(jié)構(gòu)都有很大不同,必須仔細(xì)選擇所使用的語言,以適應(yīng)應(yīng)用領(lǐng)域的需要。

許多第四代語言密切依賴數(shù)據(jù)庫管理系統(tǒng)及其數(shù)據(jù)字典。在很多場合,數(shù)據(jù)字典已演變得能夠表示遠(yuǎn)比數(shù)據(jù)范圍更廣泛得多的信息,包含商業(yè)規(guī)則和邏輯的擴(kuò)充的數(shù)據(jù)字典,有時稱為“百科全書”。它能存貯與應(yīng)用系統(tǒng)有關(guān)的許多信息,例如,屏幕顯示格式、報表格式、對話結(jié)構(gòu)、數(shù)據(jù)間的聯(lián)系、有效性校驗規(guī)則、安全控制策略和措施、讀或修改數(shù)據(jù)的權(quán)限、導(dǎo)出派生域的計算公式、允許的數(shù)據(jù)值范圍、不同數(shù)據(jù)值之間的邏輯關(guān)系等等。當(dāng)評價或選擇第四代語言時,主要關(guān)心的是,它所需要的用于支撐它的基礎(chǔ)設(shè)施,其中包括數(shù)據(jù)庫、函數(shù)庫、對象庫或其他庫、數(shù)據(jù)字典(或百科全書)。2

確定4GL的標(biāo)準(zhǔn)確定一個語言是否是一個4GL,主要應(yīng)從以下標(biāo)準(zhǔn)來進(jìn)行考察:

(1)生產(chǎn)率標(biāo)準(zhǔn):4GL一出現(xiàn),就是以大幅度提高軟件生產(chǎn)率為己任的,4GL應(yīng)比3GL提高生產(chǎn)率一個數(shù)量級以上。

(2)非過程化標(biāo)準(zhǔn):4GL基本上應(yīng)該是面向問題的,即只需告知計算機(jī)“做什么”,而不必告知計算機(jī)“怎么做”。當(dāng)然4GL為了適應(yīng)復(fù)雜的應(yīng)用,而這些應(yīng)用是無法“非過程化”的,就允許保留過程化的語言成分,但非過程化應(yīng)是4GL的主要特色。

(3)用戶界面標(biāo)準(zhǔn):4GL應(yīng)具有良好的用戶界面,應(yīng)該簡單、易學(xué)、易掌握,使用方便、靈活。

(4)功能標(biāo)準(zhǔn):4GL要具有生命力,不能適用范圍太窄,在某一范圍內(nèi)應(yīng)具有通用性。

4GL的不足雖然4GL具有很多優(yōu)點,也有很大的優(yōu)勢,成為了應(yīng)用開發(fā)的主流工具,但也存在著以下嚴(yán)重不足:

(1)4GL雖然功能強(qiáng)大,但在其整體能力上卻與3GL有一定的差距。這一方面是語言抽象級別提高以后不可避免地帶來的(正如高級語言不能做某些匯編語言做的事情);另一方面是人為帶來的,許多4GL只面向?qū)m棏?yīng)用。有的4GL為了提高對問題的表達(dá)能力,提供了同3GL的接口,以彌補其能力上的不足。如Oracle提供了可將SQL語句嵌入C程序中的工具PRO*C。

(2)4GL由于其抽象級別較高的原因,不可避免地帶來系統(tǒng)開銷龐大,運行效率低下(正如高級語言運行效率沒有匯編語言高一樣),對軟硬件資源消耗嚴(yán)重,應(yīng)用受硬件限制。

(3)由于缺乏統(tǒng)一的工業(yè)標(biāo)準(zhǔn),4GL產(chǎn)品花樣繁多,用戶界面差異很大,與具體的機(jī)器聯(lián)系緊密,語言的獨立性較差(SQL稍好),影響了應(yīng)用軟件的移植與推廣。

(4)GL主要面向基于數(shù)據(jù)庫應(yīng)用的領(lǐng)域,不宜于科學(xué)計算、高速的實時系統(tǒng)和系統(tǒng)軟件開發(fā)。

第四代語言的分類按照4GL的功能可以將它們劃分為以下幾類:

1.查詢語言和報表生成器

查詢語言是數(shù)據(jù)庫管理系統(tǒng)的主要工具,它提供用戶對數(shù)據(jù)庫進(jìn)行查詢的功能。有的查詢語言(如SQL)實際上還包括有查詢、操縱、定義、控制四種功能。

報表生成器(Report Generator)是為用戶提供的自動產(chǎn)生報表的重要工具,它提供非過程化的描述手段讓用戶很方便地根據(jù)數(shù)據(jù)庫中的信息來生成報表,如ADF 。

2.圖形語言

圖形信息較之一維的字符串、二維的表格信息更為直觀、鮮明。我們在軟件開發(fā)過程中所使用的數(shù)據(jù)流圖、結(jié)構(gòu)圖、框圖等均是圖形。人們自然要設(shè)想,是否可以用圖形的方式來進(jìn)行軟件開發(fā)呢?可見視屏、光筆、鼠標(biāo)器的廣泛使用為此提供了良好的硬件基礎(chǔ),Windows和X-Window為我們提供了良好的軟件平臺。較有代表性的是Gupta公司開發(fā)的SQL Windows系統(tǒng)。它以SQL語言為引擎,讓用戶在屏幕上以圖形方式定義用戶需求,系統(tǒng)自動生成相應(yīng)的源程序(還具有面向?qū)ο蟮墓δ埽?,用戶可修改或增加這些源程序,從而完成應(yīng)用開發(fā)。

3.應(yīng)用生成器

應(yīng)用生成器(Application Generator)是重要的一類綜合的4GL工具,它用來生成完整的應(yīng)用系統(tǒng)。應(yīng)用生成器讓用戶不必使用多個軟件,而只用這樣一個綜合工具來實現(xiàn)多種功能。應(yīng)用生成器按其使用對象可以分為交互式和編程式二類。屬于前者的有FOCUS、RAMIS、MAPPER、UFO、NOMAD、SAS等。它們服務(wù)于維護(hù)、準(zhǔn)備和處理報表,允許用戶以可見的交互方式在終端上創(chuàng)立文件、報表和進(jìn)行其它的處理。較有代表性的有Power Builder和Oracle的應(yīng)用開發(fā)環(huán)境。Oracle提供的SQL*FORMS、SQL*MENU、SQL*REPORTWRITER等工具建立在 SQL語言基礎(chǔ)之上,借助了數(shù)據(jù)庫管理系統(tǒng)強(qiáng)大的功能,讓用戶交互式地定義需求,系統(tǒng)生成相應(yīng)的屏幕格式、菜單和打印報表。編程式應(yīng)用生成器是為建造復(fù)雜系統(tǒng)的專業(yè)程序人員設(shè)計的,如NATURAL、FOXPRO、MANTIS、IDEAL、CSP、DMS、INFO、LINC、FORMAL、 APPLICATION FACTORY以及作者設(shè)計的OO-HLL等即屬于這一類。這一類4GL中有許多是程序生成器(Program Generator),如LINC生成COBOL程序,F(xiàn)ORMAL生成PASCAL程序等。為了提供專業(yè)人員建造復(fù)雜的應(yīng)用系統(tǒng),有的語言具有很強(qiáng)的過程化描述能力。雖然語句的形式有差異,其實質(zhì)與3GL的過程化語句相同,如Informix-4GL和Oracle的PRO*C。

4.形式規(guī)格說明語言

軟件規(guī)格說明是對軟件應(yīng)滿足的需求、功能、性能及其它重要方面的陳述,是軟件開發(fā)的基礎(chǔ)。按照軟件生存周期的階段來劃分,有軟件的需求規(guī)格說明、功能規(guī)格說明、設(shè)計規(guī)格說明等。用來書寫規(guī)格說明的語言稱為規(guī)格說明語言。傳統(tǒng)的規(guī)格說明語言是自然語言。在我國,主要使用現(xiàn)代漢語來表達(dá)軟件的規(guī)格說明。自然語言為開發(fā)者和用戶所熟悉,易于使用。但也會不可避免地將自然語言的歧義性、不精確性引入到軟件規(guī)格說明中,從而給軟件的開發(fā)和軟件的質(zhì)量帶來隱患。形式的規(guī)格說明語言則很好地解決了上述問題,而且還是軟件自動化的基礎(chǔ)。從形式的需求規(guī)格說明和功能規(guī)格說明出發(fā),可以自動或半自動地轉(zhuǎn)換成某種可執(zhí)行的語言(如高級語言)。需求規(guī)格說明和功能規(guī)格說明是面向問題、非過程化的,因此屬于4GL。這一類語言有Z、NPL、SPECINT以及作者設(shè)計的 JAVASPEC。設(shè)計規(guī)格說明語言由于包含了大量過程化成分,原則上不應(yīng)劃入4GL。

第四代語言的發(fā)展趨勢在今后相當(dāng)一段時期內(nèi),4GL仍然是應(yīng)用開發(fā)的主流工具。但其功能、表現(xiàn)形式、用戶界面、所支持的開發(fā)方法將會發(fā)生一系列深刻的變化。主要表現(xiàn)在以下幾個方面:

(1)4GL與面向?qū)ο蠹夹g(shù)將進(jìn)一步結(jié)合

面向?qū)ο蠹夹g(shù)集數(shù)據(jù)抽象、抽象數(shù)據(jù)類型和類繼承為一體,使軟件工程公認(rèn)的模塊化、信息隱蔽、抽象、局部化、軟件重用等原則在面向?qū)ο髾C(jī)制下得到了充分的體現(xiàn)。它追求自然地刻劃和求解現(xiàn)實世界中的問題,即追求問題結(jié)構(gòu)與軟件結(jié)構(gòu)的一致性,使得開發(fā)人員可以把主要精力放在系統(tǒng)一級上,按照自己的意圖創(chuàng)建對象、并將問題映射到該對象上。面向?qū)ο蠹夹g(shù)所追求的目標(biāo)和4GL所追求的目標(biāo)實際上是一致的。目前有代表性的4GL普遍具有面向?qū)ο蟮奶卣?,但這些特征都很有限。所采用的實現(xiàn)技術(shù)往往是在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上再加上一層面向?qū)ο蟮拈_發(fā)工具,而這層工具未能完全與數(shù)據(jù)庫管理系統(tǒng)有機(jī)結(jié)合在一起,對抽象數(shù)據(jù)類型和繼承性的表達(dá)也很有限,極大地限制了面向?qū)ο箝_發(fā)技術(shù)對4GL的支持。相信隨著面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)研究的深入,建立在其上的 4GL將會以嶄新的面貌出現(xiàn)在應(yīng)用開發(fā)者面前。

(2)4GL將全面支持以Internet為代表的網(wǎng)絡(luò)分布式應(yīng)用開發(fā)

隨著Internet為代表的網(wǎng)絡(luò)技術(shù)的廣泛普及,4GL又有了新的活動空間。出現(xiàn)類似于Java,但比Java抽象級更高的4GL不僅是可能的,而且是完全必要的。

(3)4GL將出現(xiàn)事實上的工業(yè)標(biāo)準(zhǔn)

4GL產(chǎn)品很不統(tǒng)一,給軟件的可移植性和應(yīng)用范圍帶來了極大的影響。但基于SQL的4GL已成為主流產(chǎn)品。隨著競爭和發(fā)展,有可能出現(xiàn)以SQL為引擎的事實上的工業(yè)標(biāo)準(zhǔn)。

(4)4GL將以受限的自然語言加圖形作為用戶界面

4GL基本上還是以傳統(tǒng)的程序設(shè)計語言或交互方式為用戶界面的。前者表達(dá)能力強(qiáng),但難于學(xué)習(xí)使用;后者易于學(xué)習(xí)使用,但表達(dá)能力弱。在自然語言理解未能徹底解決之前,4GL將以受限的自然語言加圖形作為用戶界面,以大大提高用戶界面的友好性。

(5)4GL將進(jìn)一步與人工智能相結(jié)合

4GL主流產(chǎn)品基本上與人工智能技術(shù)無關(guān)。隨著4GL非過程化程度和語言抽象級的不斷提高,將出現(xiàn)功能級的4GL(4GL流行產(chǎn)品還處于實現(xiàn)級),必然要求人工智能技術(shù)的支持才能很好地實現(xiàn),使4GL與人工智能廣泛結(jié)合。

(6)4GL繼續(xù)需要數(shù)據(jù)庫管理系統(tǒng)的支持

4GL的主要應(yīng)用領(lǐng)域是商務(wù)。商務(wù)處理領(lǐng)域中需要大量的數(shù)據(jù),沒有數(shù)據(jù)庫管理系統(tǒng)的支持是很難想象的。事實上大多數(shù)4GL是數(shù)據(jù)庫管理系統(tǒng)功能的擴(kuò)展,它們建立在某種數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)之上。

(7)4GL要求軟件開發(fā)方法發(fā)生變革

由于傳統(tǒng)的結(jié)構(gòu)化方法已無法適應(yīng)4GL的軟件開發(fā),工業(yè)界客觀上又需要支持4GL的軟件開發(fā)方法來指導(dǎo)他們的開發(fā)活動。預(yù)計面向?qū)ο蟮拈_發(fā)方法將居主導(dǎo)地位,再配之以一些輔助性的方法,如快速原型方法、并行式軟件開發(fā)、協(xié)同式軟件開發(fā)等,以加快軟件的開發(fā)速度,提高軟件的質(zhì)量。