第四世代言語
第四世代言語(英: fourth-generation programming language、4GL)とは、FORTRANやCOBOLのような手続き型言語より高機能なプログラム言語を一般的に指す言葉である。
主にアプリケーションプログラムを開発する際に用いられる。
4GLは単体で存在することよりも、特定のアプリケーション開発システム(たとえばデータベースシステム)と組になって提供されることが多い。たとえば、データベースアクセスや報告書作成用言語やDBMSの言語[1]、OracleのPL/SQLなどである。
4GLはプログラマだけではなく、エンドユーザーでも簡単なパラメーターを対話形式で指定するだけで、表計算のような業務処理を行ったり、あるいはプログラムを作成したり出来るようになっているのが特徴である。
第四世代というのは、機械語を第一世代、アセンブリ言語を第二世代、手続き型言語一般を第三世代と解釈するからである。
4GLの定量的定義は、Capers Jones がファンクションポイント法の研究の一環として行った。それによると、プログラミング言語の世代は開発者の生産性で決まり、人月当たりのファンクションポイント数(FP)で表される。4GLは、12 FP/人月から 20 FP/人月となる言語である。これをソースコードの行数に換算すると、ファンクションポイント当たり16行から27行でコーディングできるのが4GLだということになる。
4GLはドメイン固有言語(DSL)とよく比較される。
研究者によっては、4GLはDSLのサブセットだとする者もいる[2]。
アセンブリ言語が最新の開発環境(MS Studio)にもあることから、今後も各世代の言語が混在して利用されると予想する者もいる。
Forthは、4番目の言語という意味が名前の由来である。しかし4GLではない。
歴史
それ以前から論文や会話で「4GL」という単語は使われていたが、最初に公式に使ったのは1982年のジェームズ・マーチンの著書 Applications Development Without Programmers であった[3]。
同書では、手続き型でない高級仕様記述言語を指していた。
最初の原始的な4GLとしては、IBMのRPG(1960年)が挙げられる。その後、Informatics の MARK-IV(1967年)、スペリーのMAPPER(1969年から社内で使用、1979年外部リリース)が登場した。
4GL という用語が生き延びてきた原因はいくつかある。まずこの用語は非常に広範囲のソフトウェア製品に適用される。また、ある種の特徴や実装能力を求める手法全体を表すとも考えられる。3GLはプログラマに大きな力を与えたが、同様に4GLは一般の人々に開発環境を開放した。
ある意味では4GLはブラックボックス処理の例であり、世代が後になるほど機械そのものから遠くなっている。このため、4GLはエラーが発生した場合に理解するのが困難でデバッグしづらい傾向がある。4GLはビジネス分野で主に使われ、技術分野でも一部使われている。機械そのものから遠いということは、応用分野に近くなっていることを意味する。
初期の4GLでサポートされていたデータ入力方法は、パンチカードでの入力を考慮して、1行72桁に制限されていた。4GLは少ないパンチカードで各種処理が可能になっており、当時の3GLのプログラムのカードデッキに比較すると、枚数が非常に少なくて済んだ[4]。その後、コンピュータのメモリが増え、パンチカードから端末入力に変わっても、72桁のパンチカードのメタファーがそのまま使われ続けた。それでも、非常に洗練されたアプリケーションがサポートされた。インタフェースが改善され、より長い文が入力可能となり、文法に沿った改行などが可能になると、さらに能力がもたらされた。例えばNomadには、以下のような一節がある。
- もう1つのNormadの能力を示す例として、Nicholas Rawlings はコンピュータ歴史博物館のNCSS社に関する展示へのコメントがある。それによると、ジェームズ・マーチンは自身が Engineer's Problem と呼ぶ標準問題(職務格付けが平均で7以上の技術者に6%の昇給を与える)をNomadで解く方法をRawlingsに尋ねた。マーチンはCOBOLのプログラムが書かれた数十枚の紙と、Informatics社の MARK-IV で書かれた1、2枚の紙を提示した。Rawlings は同じ処理を行うプログラムを次の1行で提示した……
4GLの発展はいくつかの要因に影響を受けており、特にハードウェアとオペレーティングシステムの制限は大きな影響を与えた。4GLが登場したころ、ハードウェアやオペレーティングシステムが違えば、アプリケーション開発環境はシステム固有なものにならざるを得なかった。例えば、スペリーのMAPPERがそれである。MAPPERは様々なアプリケーションに有効であることを証明し、最新のプラットフォームに移植されてきた。最新版はユニシスのBISに含まれている[5]。MARK-IV は現在ではCAから VISION:BUILDER として販売されている。
アッチソン・トピカ・アンド・サンタフェ鉄道はシステム開発にMAPPERを使った。これは4GLを使ったソフトウェアプロトタイピングであり、エンドユーザーによるプログラム開発プロジェクトの例である[6]。この場合の考え方は、鉄道の専門家にMAPPERの使い方を習得させる方が、プログラマに「鉄道操作の複雑な事情」を教えるよりも簡単だ、というものであった[7]。
その後コンピュータの発展に伴って、4GLはデータベースシステムと関連付けられるようになり、初期の4GLとはかけ離れた技法やリソースを使うようになった。
具体例
- 汎用
- DataFlex
- Forte 4GL
- IBM Cross System Product
- IBM VisualAgen/VisualAge Generator[※ 1]
- PowerBuilder[※ 2]
- WinDev
- Visual DataFlex[※ 3](Microsoft Windows のみ)
- データベース問い合わせ言語
- 報告書生成
- データ操作/解析/報告
- データベース駆動型GUIアプリケーション開発
- 画面生成
- GUI生成
- 4th Dimension
- MATLAB の GUIDE
- Omnis Studio[※ 22]
- OpenROAD[※ 23]
- LiveCode (← Revolution ← RuntimeRevolution )
- ウェブ開発
注釈
- ^ IBM VisualAgen/VisualAge Generator
- ^ PowerBuilder
- ^ Visual DataFlex
- ^ a b FOCUS
- ^ Informix-4GL
- ^ a b c NATURAL
- ^ Progress OpenEdge
- ^ BuildProfessional
- ^ LINC
- ^ Oracle Reports
- ^ Progress OpenEdge
- ^ Ab Initio
- ^ Audit Command Language
- ^ Clarion Programming Language
- ^ Informix-4GL
- ^ Progress OpenEdge
- ^ XBase++
- ^ Genexus
- ^ UNIFACE
- ^ FOURGEN
- ^ Oracle Forms
- ^ Omnis Studio
- ^ OpenROAD
出典
- ^ 片山卓也、土井範久、鳥居宏次(監訳)『ソフトウェア工学大辞典(普及版)』朝倉書店、2007年、853頁。ISBN 978-4-254-12169-8。
- ^ 35th Hawaii International Conference on System Sciences - 1002 Domain-Specific Languages for Software Engineering
- ^ Martin, James. Application Development Without Programmers. Prentice-Hall, 1981. ISBN 0-13-038943-9.
- ^ Columbia University Computing History: IBM Cards
- ^ Unisys. Business Information Server (BIS).
- ^ Louis Schlueter, User-Designed Computing: The Next Generation, 1988. [book on report generator and MAPPER systems]
- ^ McNurlin & Sprague. Technologies for Developing Systems Information Systems Management in Practice. Prentice Hall, 2003. ISBN 0-13-101139-1
関連項目
外部リンク
- Fourth Generation Environments
- Aubit project GPL/GNU の4GLオープンソース開発ツールのプロジェクト
- Domain-Specific Languages for Software Engineering 4GL と DSL の比較