第5世代プログラミング言語(5GL)は、プログラマが書いたアルゴリズムを使用するのではなく、プログラムに与えられた制約を使用して問題を解決することに基づく高水準プログラミング言語です。 [ 1 ]制約ベースおよび論理プログラミング言語のほとんどと、その他の宣言型言語の一部は第5世代言語です。
第4世代プログラミング言語は特定のプログラムを作成するために設計されていますが、第5世代言語はプログラマーなしでコンピュータが与えられた問題を解決するように設計されています。このようにして、ユーザーは解決する必要のある問題と満たす必要のある条件だけを気にすればよく、それらを解決するためのルーチンやアルゴリズムをどのように実装するかを気にする必要はありません。第5世代言語は主に人工知能の研究で使用されています。OPS5とMercuryは第5世代言語の例であり、 Lispをベースに構築されたICADも同様です。KL -ONEは関連するアイデアであるフレーム言語の例です。
1980年代には、第5世代言語が未来の主流になると考えられており、論理制約の連続として表現できるすべてのタスクにおいて、手続き型プログラミングが制約ベースのプログラミングに取って代わられると予測する人もいた。[ 3 ]特に注目すべきは、1982年から1993年にかけて、日本[ 4 ] [ 5 ]が第5世代コンピュータシステムプロジェクトに多大な研究と資金を投入し、これらのツールを使用した大規模なコンピュータネットワークを設計することを望んでいたことである。
しかし、より大規模なプログラムが構築されるにつれて、このアプローチの欠点がより明らかになってきた。特定の問題を定義する一連の制約が与えられた場合、それを解決するための効率的なアルゴリズムを導出すること自体が非常に難しい問題であることが判明した。この重要なステップはまだ自動化できていない。そして、依然として人間のプログラマーの洞察力を必要とする。
ベンダーが自社の言語を5GLとして宣伝することが時折あることは知られています。ほとんどの場合、彼らはより高度な自動化と知識ベースを備えた4GLを販売しています。1980年代の熱狂が冷め、プロジェクトが最終的にすべて中止されたため、5GLの認知度も低下しました。これにより、ベンダーは新しいツールを宣伝する際にこの用語を再利用することができ、現在の世代のプログラマーの間で大きな論争を引き起こすことはありません。[ 6 ]