複製鏈接
請複製以下鏈接發送給好友

第四代語言

鎖定
第四代語言(Fourth-Generation Language, 以下簡稱4GL)的出現是出於商業需要。4GL這個詞最早是在80年代初期出現在軟件廠商的廣告和產品介紹中的。因此,這些廠商的4GL產品不論從形式上看還是從功能上看,差別都很大。但是人們很快發現這一類語言由於具有“面向問題”、“非過程化程度高”等特點,可以成數量級地提高軟件生產率,縮短軟件開發週期,因此贏得了很多用户。1985年,美國召開了全國性的4GL研討會,也正是在這前後,許多著名的計算機科學家對4GL展開了全面研究,從而使 4GL進入了計算機科學的研究範疇。
其原意是非過程化程序設計語言,是針對以處理過程為中心的第三代語言提出的,希望通過某些標準處理過程的自動生成,使用户只説明要做什麼,而把具體的執行步驟的安排交軟件自動處理。 [1] 
中文名
第四代語言
外文名
Fourth-Generation Language
簡    稱
4GL
出現位置
軟件廠商的廣告和產品介紹

第四代語言基本概述

4GL以數據庫管理系統所提供的功能為核心,進一步構造了開發高層軟件系統的開發環境,如報表生成、多窗口表格設計、菜單生成系統、圖形圖象處理系統和決策支持系統,為用户提供了一個良好的應用開發環境。它提供了功能強大的非過程化問題定義手段,用户只需告知系統做什麼,而無需説明怎麼做,因此可大大提高軟件生產率。
進入90年代,隨着計算機軟硬件技術的發展和應用水平的提高,大量基於數據庫管理系統的4GL商品化軟件已在計算機應用開發領域中獲得廣泛應用,成為了面向數據庫應用開發的主流工具,如Oracle應用開發環境、Informix-4GL、SQL Windows、Power Builder等。它們為縮短軟件開發週期,提高軟件質量發揮了巨大的作用,為軟件開發注入了新的生機和活力。
由於近代軟件工程實踐所提出的大部分技術和方法並未受到普遍的歡迎和採用。

第四代語言程序設計

第四代語言劃代的觀點

程序設計語言的劃代問題遠比計算機的劃代複雜,所見到的劃代觀點有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等均是如此。

第四代語言確定4GL的標準

確定一個語言是否是一個4GL,主要應從以下標準來進行考察:
(1)生產率標準:4GL一出現,就是以大幅度提高軟件生產率為己任的,4GL應比3GL提高生產率一個數量級以上。
(2)非過程化標準:4GL基本上應該是面向問題的,即只需告知計算機“做什麼”,而不必告知計算機“怎麼做”。當然4GL為了適應複雜的應用,而這些應用是無法“非過程化”的,就允許保留過程化的語言成分,但非過程化應是4GL的主要特色。
(3)用户界面標準:4GL應具有良好的用户界面,應該簡單、易學、易掌握,使用方便、靈活。
(4)功能標準:4GL要具有生命力,不能適用範圍太窄,在某一範圍內應具有通用性。

第四代語言4GL的不足

雖然4GL具有很多優點,也有很大的優勢,成為了應用開發的主流工具,但也存在着以下嚴重不足:
(1)4GL雖然功能強大,但在其整體能力上卻與3GL有一定的差距。這一方面是語言抽象級別提高以後不可避免地帶來的(正如高級語言不能做某些彙編語言做的事情);另一方面是人為帶來的,許多4GL只面向專項應用。有的4GL為了提高對問題的表達能力,提供了同3GL的接口,以彌補其能力上的不足。如Oracle提供了可將SQL語句嵌入C程序中的工具PRO*C。
(2)4GL由於其抽象級別較高的原因,不可避免地帶來系統開銷龐大,運行效率低下(正如高級語言運行效率沒有彙編語言高一樣),對軟硬件資源消耗嚴重,應用受硬件限制。
(3)由於缺乏統一的工業標準,4GL產品花樣繁多,用户界面差異很大,與具體的機器聯繫緊密,語言的獨立性較差(SQL稍好),影響了應用軟件的移植與推廣。
(4)4GL主要面向基於數據庫應用的領域,不宜於科學計算、高速的實時系統和系統軟件開發。

第四代語言第四代語言的分類

按照4GL的功能可以將它們劃分為以下幾類:

第四代語言查詢語言和報表生成器

查詢語言是數據庫管理系統的主要工具,它提供用户對數據庫進行查詢的功能。有的查詢語言(如SQL)實際上還包括有查詢、操縱、定義、控制四種功能。
報表生成器(Report Generator)是為用户提供的自動產生報表的重要工具,它提供非過程化的描述手段讓用户很方便地根據數據庫中的信息來生成報表,如ADF 。

第四代語言圖形語言

圖形信息較之一維的字符串、二維的表格信息更為直觀、鮮明。我們在軟件開發過程中所使用的數據流圖、結構圖、框圖等均是圖形。人們自然要設想,是否可以用圖形的方式來進行軟件開發呢?可見視屏、光筆、鼠標器的廣泛使用為此提供了良好的硬件基礎,Windows和X-Window為我們提供了良好的軟件平台。較有代表性的是Gupta公司開發的SQL Windows系統。它以SQL語言為引擎,讓用户在屏幕上以圖形方式定義用户需求,系統自動生成相應的源程序(還具有面向對象的功能),用户可修改或增加這些源程序,從而完成應用開發。

第四代語言應用生成器

應用生成器(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。

第四代語言形式規格説明語言

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

第四代語言第四代語言的發展

在今後相當一段時期內,4GL仍然是應用開發的主流工具。但其功能、表現形式、用户界面、所支持的開發方法將會發生一系列深刻的變化。主要表現在以下幾個方面:

第四代語言與面向對象技術將進一步結合

面向對象技術集數據抽象、抽象數據類型和類繼承為一體,使軟件工程公認的模塊化、信息隱蔽、抽象、局部化、軟件重用等原則在面向對象機制下得到了充分的體現。它追求自然地刻劃和求解現實世界中的問題,即追求問題結構與軟件結構的一致性,使得開發人員可以把主要精力放在系統一級上,按照自己的意圖創建對象、並將問題映射到該對象上。面向對象技術所追求的目標和4GL所追求的目標實際上是一致的。目前有代表性的4GL普遍具有面向對象的特徵,但這些特徵都很有限。所採用的實現技術往往是在傳統的關係型數據庫管理系統的基礎上再加上一層面向對象的開發工具,而這層工具未能完全與數據庫管理系統有機結合在一起,對抽象數據類型和繼承性的表達也很有限,極大地限制了面向對象開發技術對4GL的支持。相信隨着面向對象數據庫管理系統研究的深入,建立在其上的 4GL將會以嶄新的面貌出現在應用開發者面前。

第四代語言支持網絡分佈式應用開發

4GL將全面支持以Internet為代表的網絡分佈式應用開發
隨着Internet為代表的網絡技術的廣泛普及,4GL又有了新的活動空間。出現類似於Java,但比Java抽象級更高的4GL不僅是可能的,而且是完全必要的。

第四代語言將出現事實上的工業標準

4GL產品很不統一,給軟件的可移植性和應用範圍帶來了極大的影響。但基於SQL的4GL已成為主流產品。隨着競爭和發展,有可能出現以SQL為引擎的事實上的工業標準。

第四代語言受限的自然語言加圖形作為用户界面

4GL將以受限的自然語言加圖形作為用户界面。
4GL基本上還是以傳統的程序設計語言互方式為用户界面的。前者表達能力強,但難於學習使用;後者易於學習使用,但表達能力弱。在自然語言理解未能徹底解決之前,4GL將以受限的自然語言加圖形作為用户界面,以大大提高用户界面的友好性。

第四代語言將進一步與人工智能相結合

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

第四代語言繼續需要數據庫管理系統的支持

4GL的主要應用領域是商務。商務處理領域中需要大量的數據,沒有數據庫管理系統的支持是很難想象的。事實上大多數4GL是數據庫管理系統功能的擴展,它們建立在某種數據庫管理系統的基礎之上。

第四代語言要求軟件開發方法發生變革

由於傳統的結構化方法已無法適應4GL的軟件開發,工業界客觀上又需要支持4GL的軟件開發方法來指導他們的開發活動。預計面向對象的開發方法將居主導地位,再配之以一些輔助性的方法,如快速原型方法、並行式軟件開發、協同式軟件開發等,以加快軟件的開發速度,提高軟件的質量。 [2] 
近代軟件工程實踐所提出的大部分技術和方法並未受到普遍的歡迎和採用,軟件供求矛盾進一步惡化,軟件的開發成本日益增長,導致了所謂“新軟件危機”。這既暴露了傳統開發模型的不足,又説明了單純以勞動力密集的形式來支持軟件生產,已不再適應社會信息化的要求,必須尋求更高效、自動化程度更高的軟件開發工具來支持軟件生產。4GL就是在這種背景下應運而生並發展壯大的 [3] 
參考資料