語言介紹
第四代語言(4GL)是一個簡潔的、高效的非過程程式語言,用來提高DBMS的效率。在第四代語言中,用戶定義“做什麼”而不是“如何做”。第四代語言依靠更高級的第四代工具,用戶可以使用這個工具定義參數來生成應用程式。第四代語言內嵌了如下組件:
查詢語言。
報表生成器。
電子數據表。
資料庫語言。
應用程式生成器,用來定義插入、檢索、更新數據等操作來生成應用程式。
生成應用程式的高級語言。
結構化查詢語言(
SQL)和通過例子查詢(
QBE)是第四代語言的例子。
發展
第四代語言(Fourth-Generation Language, 以下簡稱4GL)的出現是出於商業需要。4GL這個詞最早是在80年代初期出現在軟體廠商的廣告和產品介紹中的。因此,這些廠商的4GL產品不論從形式上看還是從功能上看,差別都很大。但是人們很快發現這一類語言由於具有“
面向問題”、“非過程化程度高”等特點,可以成數量級地提高軟體生產率,縮短軟體開發周期,因此贏得了很多用戶。1985年,美國召開了全國性的4GL研討會,也正是在這前後,許多著名的計算機科學家對4GL展開了全面研究,從而使 4GL進入了計算機科學的研究範疇。
4GL以
資料庫管理系統所提供的功能為核心,進一步構造了開發高層軟體系統的開發環境,如報表生成、多視窗表格設計、選單生成系統、圖形圖象處理系統和決策支持系統,為用戶提供了一個良好的套用開發環境。它提供了功能強大的非過程化問題定義手段,用戶只需告知系統做什麼,而無需說明怎么做,因此可大大提高軟體生產率。
進入90年代,隨著計算機軟硬體技術的發展和套用水平的提高,大量基於
資料庫管理系統的4GL商品化軟體已在
計算機套用開發領域中獲得廣泛套用,成為了面向資料庫套用開發的主流工具,如Oracle套用開發環境、Informix-4GL、SQL Windows、Power Builder等。它們為縮短軟體開發周期,提高
軟體質量發揮了巨大的作用,為軟體開發注入了新的生機和活力。
由於近代
軟體工程實踐所提出的大部分技術和方法並未受到普遍的歡迎和採用,軟體供求矛盾進一步惡化,軟體的開發成本日益增長,導致了所謂“新
軟體危機”。這既暴露了傳統開發模型的不足,又說明了單純以勞動力密集的形式來支持軟體生產,已不再適應社會信息化的要求,必須尋求更高效、自動化程度更高的
軟體開發工具來支持軟體生產。4GL就是在這種背景下應運而生並發展壯大的。
語言劃代
目前第四代語言在滿足人們對它們的要求方面所達到的基本狀況。確實,使用第四代語言構造套用系統時生產率有顯著提高;使用第四代語言完成同樣的作業所需代碼行數,遠較使用第三代語言時要少。因此,第四代語言又稱為高生產率語言。
第四代語言在完成某些功能時,特別是在完成某些過程性很強的算法時,雖然也像第三代語言那樣使用語句編程,但是,在完成更常見的功能時它卻完全不用“編程”的方式來構造套用系統。例如,絕大多數第四代語言都主要依靠在螢光屏上和用戶“對話”的互動方式,通過用戶填表或操作螢幕上的視窗、按鈕、圖示等來構造用戶所需要的套用系統。因此,人們把這種人機通信的新一代工具稱為第四代語言,而不稱為第四代程式設計語言。讀者千萬不要用對常規程式設計語言(如COBOL,PASCAL,C)的認識來理解第四代語言。有些人可能覺得第四代計算機語言不是“語言”,但是,用定義“計算機語言是人類用來向計算機傳遞信息的表示方法、約定和規則的集合”來衡量,第四代語言確實是“計算機語言”。這就好像雖然我們最熟悉的人類語言是口語和書面語言,但是聾啞人使用的啞語,以及啞劇或舞蹈演員使用的身體語言等等,也是人類語言。
第三代語言主要使用類似馮·諾依曼的結構,即,它們用分支和循環等結構來表示應該執行的操作序列,而且它們的基本語句大多類似於機器指令系統。第四代語言卻可以顯著地不同於馮·諾依曼結構。不同的第三代語言雖然語法各不相同,但都提供大體類似的操作集;而不同的第四代語言的結構卻驚人地不同。
不同的第四代語言的功能,也可能顯著不同。某些第四代語言是單純的查詢語言;某些是報表生成器或圖形軟體包;某些第四代語言功能齊全,可以用來構造完整的套用系統;某些第四代語言是甚高級程式設計語言。一般說來,第四代語言可以供最終用戶使用,至少可供直接幫助最終用戶的分析員使用。
第三代語言,是“通用”的、可用來構造絕大多數甚至一切類型的套用系統。然而,多數第四代語言卻是為範圍狹窄的特殊類型的套用而設計的,可以針對這類套用的特點精心地對第四代語言系統進行最佳化。因此,生產率、易使用性、易維護性和易調試性,都能達到較高水平。第四代語言與第三代語言從形式到內部結構都有很大不同,必須仔細選擇所使用的語言,以適應套用領域的需要。
許多第四代語言密切依賴資料庫管理系統及其數據字典。在很多場合,數據字典已演變得能夠表示遠比數據範圍更廣泛得多的信息,包含商業規則和邏輯的擴充的數據字典,有時稱為“百科全書”。它能存貯與套用系統有關的許多信息,例如,螢幕顯示格式、報表格式、對話結構、數據間的聯繫、有效性校驗規則、安全控制策略和措施、讀或修改數據的許可權、導出派生域的計算公式、允許的數據值範圍、不同數據值之間的邏輯關係等等。當評價或選擇第四代語言時,主要關心的是,它所需要的用於支撐它的基礎設施,其中包括資料庫、函式館、對象庫或其他庫、數據字典(或百科全書)。
確定標準
確定一個語言是否是一個4GL,主要應從以下標準來進行考察:
(1)生產率標準:4GL一出現,就是以大幅度提高軟體生產率為己任的,4GL應比3GL提高生產率一個數量級以上。
(2)非過程化標準:4GL基本上應該是
面向問題的,即只需告知計算機“做什麼”,而不必告知計算機“怎么做”。當然4GL為了適應複雜的套用,而這些套用是無法“非過程化”的,就允許保留過程化的語言成分,但非過程化應是4GL的主要特色。
(3)用戶界面標準:4GL應具有良好的用戶界面,應該簡單、易學、易掌握,使用方便、靈活。
(4)功能標準: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。
4.形式規格說明語言
軟體規格說明是對軟體應滿足的需求、功能、性能及其它重要方面的陳述,是軟體開發的基礎。按照
軟體生存周期的階段來劃分,有軟體的需求規格說明、功能規格說明、設計規格說明等。用來書寫規格說明的語言稱為規格說明語言。傳統的規格說明語言是自然語言。在我國,主要使用
現代漢語來表達軟體的規格說明。自然語言為開發者和用戶所熟悉,易於使用。但也會不可避免地將自然語言的歧義性、不精確性引入到軟體規格說明中,從而給軟體的開發和軟體的質量帶來隱患。形式的規格說明語言則很好地解決了上述問題,而且還是
軟體自動化的基礎。從形式的需求規格說明和功能規格說明出發,可以自動或半自動地轉換成某種可執行的語言(如高級語言)。需求規格說明和功能規格說明是
面向問題、非過程化的,因此屬於4GL。這一類語言有Z、NPL、SPECINT以及作者設計的 JAVASPEC。設計規格說明語言由於包含了大量過程化成分,原則上不應劃入4GL。
發展趨勢
在今後相當一段時期內,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與人工智慧廣泛結合。
4GL的主要套用領域是商務。商務處理領域中需要大量的數據,沒有資料庫管理系統的支持是很難想像的。事實上大多數4GL是資料庫管理系統功能的擴展,它們建立在某種資料庫管理系統的基礎之上。
由於傳統的
結構化方法已無法適應4GL的軟體開發,工業界客觀上又需要支持4GL的軟體開發方法來指導他們的開發活動。預計
面向對象的開發方法將居主導地位,再配之以一些輔助性的方法,如
快速原型方法、並行式軟體開發、協同式軟體開發等,以加快軟體的開發速度,提高軟體的質量。