4GL

4GL

編程發展第四代語言
編程發展第四代語言,是面向問題的,過程化的程序設計語言。第四代語言(4GL)是一個簡潔的、高效的非過程編程語言,用來提高DBMS的效率。在第四代語言中,用戶定義“做什麼”而不是“如何做”。
  • 中文名:4GL
  • 外文名:Fourth-Generation Language
  • 别名:編程發展第四代語言
  • 屬于:編程發展第四代語言是面向問題的
  • 包含:過程化的程序設計語言。

簡介

4GL即第四代語言(Fourth-Generation Language)。4GL是按計算機科學理論指導設計出來的 結構化語言,如ADA,MODULA- 2,SMALLTALK-80等。

4GL的代表性軟件系統有:PowerBuilder、Delphi和INFORMIX-4GL等。

發展

在計算機行業中,通常有幾代語言來表示語言的發展。

1GL或第一代語言是機器語言或者機器能夠直接執行的語言,也就是0和1組成的串。

2GL或第二代語言是彙編語言。典型的2GL指令如下所示:ADD12,8彙編程序将會把彙編語言轉換成機器語言。

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

一般是用仿真終端Netterm進行編輯的,它的程序也是用Netterm運行的,當然也可以用java調用它,這種語言,我們多用來做informix數據庫提數,ETL啥的,類似oracle的pl/sql提數。

相關詞條

相關搜索

其它詞條