|
|
1行目: |
1行目: |
− | '''4GL''' とは、第四世代言語 ('''4th generation language''')の略である。[[FORTRAN]]や[[COBOL]]のような手続き型言語より、より高機能な[[プログラム言語]]を一般的に指す。主に[[アプリケーションソフトウェア|アプリケーション]]プログラムを開発する際に用いられる。 | + | '''4GL''' |
| | | |
− | 4GL言語は単体で存在することよりも、特定のアプリケーション開発システム(たとえばデータベースシステム)と組になって提供されることが多い。たとえば、[[Oracle Database|Oracle]]の[[PL/SQL]]などである。
| + | 第四世代言語 ('''4th generation language''') |
| | | |
− | 第四世代言語はプログラマーだけではなく、[[エンドユーザー]]でも簡単なパラメーターを対話形式で指定するだけで、表計算のような業務処理を行ったり、あるいはプログラムを作成したり出来るようになっているのが特徴である。
| |
| | | |
− | 第四世代というのは、[[機械語]]を第一世代、[[アセンブリ言語]]を第二世代、[[手続き型プログラミング|手続き型言語]]一般を第三世代と解釈するからである。
| + | アプリケーションソフトを使う一般のユーザーが、対話形式で設計・開発ができるプログラミング言語。機械語を第一世代、アセンブリー言語を第二世代、FORTRAN(フォートラン)やCOBOL(コボル)などの高級言語を第三世代と呼ぶことに由来する。4GL(フォージーエル)。 |
− | | |
− | 4GLの定量的定義は、Capers Jones が[[ファンクションポイント法]]の研究の一環として行った。それによると、プログラミング言語の世代は開発者の生産性で決まり、[[人月]]当たりのファンクションポイント数(FP)で表される。4GLは、12 FP/人月から 20 FP/人月となる言語である。これを[[SLOC|ソースコードの行数]]に換算すると、ファンクションポイント当たり16行から27行でコーディングできるのが4GLだということになる。
| |
− | | |
− | 4GLは[[ドメイン固有言語]](DSL)とよく比較される。研究者によっては、4GLはDSLのサブセットだとする者もいる<ref>35th Hawaii International Conference on System Sciences - 1002 [http://csdl2.computer.org/comp/proceedings/hicss/2001/0981/09/09819071.pdf Domain-Specific Languages for Software Engineering]</ref>。[[アセンブリ言語]]が最新の開発環境(MS Studio)にもあることから、今後も各世代の言語が混在して利用されると予想する者もいる。
| |
− | | |
− | [[Forth]]は、4番目の言語という意味が名前の由来である。しかし4GLではない。
| |
− | | |
− | == 歴史 ==
| |
− | それ以前から論文や会話で「4GL」という単語は使われていたが、最初に公式に使ったのは[[1982年]]の[[ジェームズ・マーチン]]の著書 ''Applications Development Without Programmers'' であった<ref>Martin, James. ''Application Development Without Programmers.'' Prentice-Hall, 1981. ISBN 0-13-038943-9.</ref>。同書では、手続き型でない高級[[仕様記述言語]]を指していた。最初の原始的な4GLとしては、[[IBM]]の[[RPG (プログラム言語)|RPG]](1960年)が挙げられる。その後、Informatics の [[MARK-IV]](1967年)、[[スペリー]]の[[MAPPER]](1969年から社内で使用、1979年外部リリース)が登場した。
| |
− | | |
− | 4GL という用語が生き延びてきた原因はいくつかある。まずこの用語は非常に広範囲のソフトウェア製品に適用される。また、ある種の特徴や実装能力を求める手法全体を表すとも考えられる。3GLはプログラマに大きな力を与えたが、同様に4GLは一般の人々に開発環境を開放した。
| |
− | | |
− | ある意味では4GLは[[ブラックボックス]]処理の例であり、世代が後になるほど機械そのものから遠くなっている。このため、4GLはエラーが発生した場合に理解するのが困難で[[デバッグ]]しづらい傾向がある。4GLはビジネス分野で主に使われ、技術分野でも一部使われている。機械そのものから遠いということは、応用分野に近くなっていることを意味する。
| |
− | | |
− | 初期の4GLでサポートされていたデータ入力方法は、[[パンチカード]]での入力を考慮して、1行72桁に制限されていた。4GLは少ないパンチカードで各種処理が可能になっており、当時の3GLのプログラムのカードデッキに比較すると、枚数が非常に少なくて済んだ<ref>[http://www.columbia.edu/acis/history/cards.html Columbia University Computing History: IBM Cards]</ref>。その後、コンピュータのメモリが増え、パンチカードから端末入力に変わっても、72桁のパンチカードのメタファーがそのまま使われ続けた。それでも、非常に洗練されたアプリケーションがサポートされた。インタフェースが改善され、より長い文が入力可能となり、文法に沿った改行などが可能になると、さらに能力がもたらされた。例えば[[:en:Nomad software|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に含まれている<ref>[[ユニシス|Unisys]]. [http://www.unisys.com.hk/products/software/application__development/business__information__server/features.htm Business Information Server] (BIS).</ref>。MARK-IV は現在では[[CA (企業)|CA]]から VISION:BUILDER として販売されている。
| |
− | | |
− | [[アッチソン・トピカ・アンド・サンタフェ鉄道]]はシステム開発に[[MAPPER]]を使った。これは4GLを使った[[ソフトウェアプロトタイピング]]であり、エンドユーザーによるプログラム開発プロジェクトの例である<ref>Louis Schlueter, User-Designed Computing: The Next Generation, 1988. [book on report generator and MAPPER systems] </ref>。この場合の考え方は、鉄道の専門家にMAPPERの使い方を習得させる方が、プログラマに「鉄道操作の複雑な事情」を教えるよりも簡単だ、というものであった<ref>McNurlin & Sprague. [http://telaga.cs.ui.ac.id/WebKuliah/IKI42400/2004/McNurlin-5ed-ch09.pdf Technologies for Developing Systems] Information Systems Management in Practice. Prentice Hall, 2003. ISBN 0-13-101139-1 </ref>。
| |
− | | |
− | その後コンピュータの発展に伴って、4GLはデータベースシステムと関連付けられるようになり、初期の4GLとはかけ離れた技法やリソースを使うようになった。
| |
− | | |
− | == 具体例 ==
| |
− | *汎用
| |
− | **[[DataFlex]]
| |
− | **[[Forte 4GL]]
| |
− | **IBM [[Cross System Product]]
| |
− | **[http://www-306.ibm.com/software/awdtools/visgen/ IBM VisualAgen/VisualAge Generator]
| |
− | **[http://www.powerbuilder.jp/ PowerBuilder]
| |
− | **[[WinDev]]
| |
− | **[http://www.visualdataflex.com/Home.asp?pageid=569 Visual DataFlex](Microsoft Windows のみ)
| |
− | * データベース[[問い合わせ言語]]
| |
− | **[http://www.informationbuilders.com/products/focus/overview.html FOCUS]
| |
− | **[http://www-06.ibm.com/jp/software/data/informix/tools/4gl/ Informix-4GL]
| |
− | **[http://www.softwareag.com/Corporate/products/natural/default.asp NATURAL]
| |
− | **[http://www.progress.com/openedge/index.ssp Progress OpenEdge]
| |
− | **[[SQL]]
| |
− | * 報告書生成
| |
− | **[http://www.todaysystems.com/content/web/bp_overview.htm BuildProfessional]
| |
− | **[http://www.unisys.co.jp/linc/ LINC]
| |
− | **[[METAFONT]]
| |
− | **[http://www.softwareag.com/Corporate/products/natural/default.asp NATURAL]
| |
− | **[http://www.oracle.com/technology/global/jp/products/reports/index.html Oracle Reports]
| |
− | **[[PostScript]]
| |
− | **[http://www.progress.com/openedge/index.ssp Progress OpenEdge]
| |
− | **[[RPG (プログラム言語)|RPG-II]]
| |
− | * データ操作/解析/報告
| |
− | **[http://www.abinitio.com/abinitio/ab.nsf/abinitio_products Ab Initio]
| |
− | **[[ABAP]]
| |
− | **[http://www.acl.com/products/ Audit Command Language]
| |
− | **[http://www.softvelocity.com/ Clarion Programming Language]
| |
− | **[http://www.informationbuilders.com/products/focus/overview.html FOCUS]
| |
− | **[[IDL (プログラミング言語)|IDL]]
| |
− | **[[IGOR Pro]]
| |
− | **[http://www-06.ibm.com/jp/software/data/informix/tools/4gl/ Informix-4GL]
| |
− | **[[LabVIEW]]
| |
− | **[[Mathematica]]
| |
− | **[[MATLAB]]
| |
− | **[http://www.softwareag.com/Corporate/products/natural/default.asp NATURAL]
| |
− | **[[PL/SQL]]
| |
− | **[http://www.progress.com/openedge/index.ssp Progress OpenEdge]
| |
− | **[[R言語]]
| |
− | **[[S言語]]
| |
− | **[[SAS Institute|SAS]]
| |
− | **[[SPSS]]
| |
− | **[http://www.stata.com/ Stata]
| |
− | **[http://www.alaska-software.com/products/xpp/xpp.shtm XBase++]
| |
− | * データベース駆動型GUIアプリケーション開発
| |
− | **[http://www.genexus.com/portal/hgxpp001.aspx?2 Genexus]
| |
− | **[http://www.compuware.com/products/uniface/ UNIFACE]
| |
− | * 画面生成
| |
− | **[http://www.fourgen.com./ FOURGEN]
| |
− | **[http://www.oracle.com/technology/global/jp/products/forms/index.html Oracle Forms]
| |
− | *[[グラフィカルユーザインタフェース|GUI]]生成
| |
− | **[http://www.4d.com/ 4th Dimension]
| |
− | **[[MATLAB]] の GUIDE
| |
− | **[http://www.omnis.net/index.html?detail=overview Omnis Studio]
| |
− | **[http://www.ingres.com/products/openroad.php OpenROAD]
| |
− | **[http://www.runrev.com/home/product-family/ Revolution]
| |
− | * ウェブ開発
| |
− | **[[ColdFusion]]
| |
− | **[[Ruby on Rails]]
| |
− | | |
− | == 関連項目 ==
| |
− | *[[ドメイン固有言語]]
| |
− | *[[RAD (計算機プログラミング環境)|RAD]]
| |
− | | |
− | == 脚注 ==
| |
− | {{Reflist}}
| |
− | | |
− | == 外部リンク ==
| |
− | * [http://www.soi.city.ac.uk/~tony/dbms/4ges.html Fourth Generation Environments]
| |
− | * [http://aubit4gl.sourceforge.net/ Aubit project] GPL/GNU の4GLオープンソース開発ツールのプロジェクト
| |
− | * [http://csdl2.computer.org/comp/proceedings/hicss/2002/1435/09/14350279.pdf Domain-Specific Languages for Software Engineering] 4GL と DSL の比較
| |
− | | |
− | {{Computer-stub}}
| |
| | | |
| + | {{テンプレート:20180815sk}} |
| [[Category:プログラミング言語|4GL]] | | [[Category:プログラミング言語|4GL]] |