web-dev-qa-db-ja.com

4 GLとはどういう意味ですか?

Oracle ADF Busniessコンポーネントについて読んでいたときに、4GL(生成言語)という用語に出くわしました。 4GLとは正確に何を知りたいですか?

これは本の実際の引用です Oracle Fusion Guide

Oracle ADF Business Componentsは、Oracle Fusionアプリケーション開発で選択されるビジネス・サービス層です。他の永続化レイヤーと比較して、ADF Business Componentsは、卓越した組み込みのビジネスアプリケーション機能と最大限に宣言的なエクスペリエンスを提供し、エンドツーエンドの第4世代言語(4GL)を求めるユーザーに完全に適合しますJava EE開発アーキテクチャ。

4
Geek

私はほとんどの場合、4GL言語をテクニカルアナリストでさえCASE(コンピュータ支援ソフトウェアエンジニアリング)ツールなどでプログラミングできる言語と呼んでいます。しかし、どうやら Wikipedia の場合よりもそれだけではありません。

私が勤務している会社はOracle ADFとかなり連携しており、モバイル開発用の独自のCASEツールを持っているため、独自の言語を4GL言語と呼んでいます。具体的には、IDEを含み、非常に単純なフローチャートとスクリプトに基づいてバックエンドでコードを生成するため、そのように呼んでいます。データベース、ファイルシステム、簡単にアクセスできる方法でのスクリプトのリポジトリ、アセット、プロモーション、履歴、および配布Oracle ADFにも同様のシステムがあります。

4GL言語は、開発の詳細をより高いレベルに抽象化して、生産性を高めたり、テクニカルアナリストがそれを処理したりできるようにする任意の言語だと思います。

6
Akira71

4GLは少し曖昧な用語です。

プログラマーがドメイン固有の問題(ストレージ/メモリー/通信など)を心配する必要なく、ドメイン固有の問題を解決できる場合、それは言語を記述する試みです。これらすべての低レベルの構成要素は、言語によって抽象化されています。

これを達成するために長年にわたって多くの試みがあり、「非常に」成功したものはありませんでした。これは通常、言語がカバーする問題領域が非常に具体的であるためです(したがって、対象者が限られています(つまり、対象者が少ないというだけで人気がないわけではありません)。

もちろん、この用語は明確に定義されていないため、用語の乱用もいくつかあります。プラグインがドメインレベルのアイテムのみを処理する一方で、コードのモジュールをプラグインするだけで、インフラストラクチャがすべての低レベルのものを処理するフレームワークを定義するために使用できる場合があります。

5
Martin York

最良の説明は、すべての世代をカバーするものです。

  • 第1世代はマシンのオペコードです。これらは、コンピュータが実際に理解し、ハードウェアレベルで動作するバイナリ(必要に応じて16進数)コードです。
  • 第2世代はアセンブリ言語です。これらは実際のオペコードの人間が読めるラベルであり、数値オペコードやレジスタやロジック/演算ユニットなどのロケーションアドレスを覚えたり、絶えず参照したりする必要なく、人間がプログラムを簡単に作成できるようにします。
  • 第3世代は、プログラマーが実際に今日コーディングする言語のほとんどであり、アプリケーションとしてコンピューター上で実行されるプログラムを生成することを目的としています:C/C++、Basic/VB、Pascal/Delphiなど。これらの言語は、アセンブリ言語ファイルにコンパイルされます。次に、それらのファイル間の参照がリンクされ、結果がマシンコードに要約されますが、第3世代言語は、ロジックループ、変数、オブジェクト指向の原則などの構造を、人間が簡単に操作および理解できる形式で提供します。それらは、低レベルの論理的思考の多くを抽象化し、プログラマーが少し大きなステップで考えることを可能にします(ただし、コンピューターサイエンス教育の重要な部分は、コンピューターがたどることができる十分に小さなステップで考えるように学生に教えることです)。
  • 第4世代は、他のプログラムと通信するために発明された言語です。マークアップ言語(XML/HTML)、クエリ言語(SQL)、スクリプト言語(JavaScript)、さらにはHTTPやSOAPなどのより高度な通信プロトコルの一部でも、第4世代言語と見なされています。これらは直接、機械語命令にコンパイルされるのではなく、それらは代わりに、受け取ったプログラムによって要求されたタスクを実行する別のプログラムによって解釈されるために存在します。

正直なところ、第3世代と第4世代の間に明確な境界線はもうありません。 C/C++(3番目)やSQL(4番目)のように、明らかにどちらか一方です。しかし、たとえば、Javaは、それ自体が「アプリケーション」であるプログラムを作成することを目的としているため、第3世代と見なされますか?または、Javaがマシンにコンパイルされていないため、第4世代ですか?コードではなく、バイトコードの中間言語に変換され、仮想マシン環境(そのほとんどはWebブラウザやWebサーバーなどの他のプログラムによってホストされます)によって解釈され、実際にプログラマのコードで指示されていることを実行しますか?同じことが、C#/ VBのような.NET言語、およびほとんどの関数型言語にも求められる可能性があります。これらのランタイムには、重要な命令ロジックと副作用をすべて隠すランタイムが必要なので、プログラマーはより数学的な評価用語で考えることができます。 。

4
KeithS