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