4GL

4GL とは、第四世代言語 (4th generation language)の略である。FORTRANやCOBOLのような手続き型言語より、より高機能なプログラム言語を一般的に指す。主にアプリケーションプログラムを開発する際に用いられる。
4GL言語は単体で存在することよりも、特定のアプリケーション開発システム(たとえばデータベースシステム)と組になって提供されることが多い。たとえば、データベースアクセスや報告書作成用言語やDBMSの言語、OracleのPL/SQLなどである。
第四世代言語はプログラマーだけではなく、エンドユーザーでも簡単なパラメーターを対話形式で指定するだけで、表計算のような業務処理を行ったり、あるいはプログラムを作成したり出来るようになっているのが特徴である。
第四世代というのは、機械語を第一世代、アセンブリ言語を第二世代、手続き型言語一般を第三世代と解釈するからである。
4GLの定量的定義は、Capers Jones がファンクションポイント法の研究の一環として行った。それによると、プログラミング言語の世代は開発者の生産性で決まり、人月当たりのファンクションポイント数(FP)で表される。4GLは、12 FP/人月から 20 FP/人月となる言語である。これをソースコードの行数に換算すると、ファンクションポイント当たり16行から27行でコーディングできるのが4GLだということになる。
4GLはドメイン固有言語(DSL)とよく比較される。研究者によっては、4GLはDSLのサブセットだとする者もいる。アセンブリ言語が最新の開発環境（MS Studio）にもあることから、今後も各世代の言語が混在して利用されると予想する者もいる。
Forthは、4番目の言語という意味が名前の由来である。しかし4GLではない。
歴史.
それ以前から論文や会話で「4GL」という単語は使われていたが、最初に公式に使ったのは1982年のの著書 "Applications Development Without Programmers" であった。同書では、手続き型でない高級仕様記述言語を指していた。最初の原始的な4GLとしては、IBMのRPG（1960年）が挙げられる。その後、Informatics の MARK-IV（1967年）、スペリーのMAPPER（1969年から社内で使用、1979年外部リリース）が登場した。
4GL という用語が生き延びてきた原因はいくつかある。まずこの用語は非常に広範囲のソフトウェア製品に適用される。また、ある種の特徴や実装能力を求める手法全体を表すとも考えられる。3GLはプログラマに大きな力を与えたが、同様に4GLは一般の人々に開発環境を開放した。
ある意味では4GLはブラックボックス処理の例であり、世代が後になるほど機械そのものから遠くなっている。このため、4GLはエラーが発生した場合に理解するのが困難でデバッグしづらい傾向がある。4GLはビジネス分野で主に使われ、技術分野でも一部使われている。機械そのものから遠いということは、応用分野に近くなっていることを意味する。
初期の4GLでサポートされていたデータ入力方法は、パンチカードでの入力を考慮して、1行72桁に制限されていた。4GLは少ないパンチカードで各種処理が可能になっており、当時の3GLのプログラムのカードデッキに比較すると、枚数が非常に少なくて済んだ。その後、コンピュータのメモリが増え、パンチカードから端末入力に変わっても、72桁のパンチカードのメタファーがそのまま使われ続けた。それでも、非常に洗練されたアプリケーションがサポートされた。インタフェースが改善され、より長い文が入力可能となり、文法に沿った改行などが可能になると、さらに能力がもたらされた。例えばには、以下のような一節がある。
4GLの発展はいくつかの要因に影響を受けており、特にハードウェアとオペレーティングシステムの制限は大きな影響を与えた。4GLが登場したころ、ハードウェアやオペレーティングシステムが違えば、アプリケーション開発環境はシステム固有なものにならざるを得なかった。例えば、スペリーのMAPPERがそれである。MAPPERは様々なアプリケーションに有効であることを証明し、最新のプラットフォームに移植されてきた。最新版はユニシスのBISに含まれている。MARK-IV は現在ではCAから VISION:BUILDER として販売されている。
アッチソン・トピカ・アンド・サンタフェ鉄道はシステム開発にMAPPERを使った。これは4GLを使ったソフトウェアプロトタイピングであり、エンドユーザーによるプログラム開発プロジェクトの例である。この場合の考え方は、鉄道の専門家にMAPPERの使い方を習得させる方が、プログラマに「鉄道操作の複雑な事情」を教えるよりも簡単だ、というものであった。
その後コンピュータの発展に伴って、4GLはデータベースシステムと関連付けられるようになり、初期の4GLとはかけ離れた技法やリソースを使うようになった。