4GL
4GL
編程發展第四代語言,是面向問題的,過程化的程序設計語言。
4GL即 第四代語言(Fourth-Generation Language)。4GL是按計算機科學理論指導設計出來的 結構化語言,如ADA,MODULA- 2,SMALLTALK-80等。
4GL的代表性 軟體系統有:PowerBuilder、Delphi和INFORMIX-4GL等。
在計算機行業中,通常有幾代語言來表示語言的發展。
1GL或第一代語言是機器語言或者機器能夠直接執行的語言,也就是0和1組成的串。
3GL或第三代語言是一種“高級”編程語言,例如PL/I,C,JAVA都屬於這一類。以下是JAVA語言的一個例子:public boolean handleEvent (Event evt) {switch (evt.id) {case Event.ACTION_EVENT:{if ("Try me".equald(evt.arg)) {編譯器會把一個具體的高級編程語言的語句轉換為機器語言。(在上述JAVA的例子中,其輸出稱為位元組碼,這些位元組碼再被作為操作系統平台一部分的JAVA虛擬機轉換為相應的機器語言。)要運用3GL需要一定的編程知識。
第四代語言(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)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仍然是應用開發的主流工具。但其功能、表現形式、用戶界面、所支持的開發方法將會發生一系列深刻的變化。主要表現在以下幾個方面:
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