連結型プログラミング言語は、すべての式が関数を表し、式の並置が関数合成を表すポイントフリーのコンピュータプログラミング言語です。[ 1 ]連結型プログラミングは、他のプログラミングパラダイムで一般的な関数適用を、サブルーチンを構築するデフォルトの方法として関数合成に置き換えます。
例えば、以下のようなアプリケーション言語における演算のネスト構造が挙げられます。
baz ( bar ( foo ( x )))...は関数のシーケンスとして連結言語で記述されます: [ 2 ]
x フー・バー・バズ
連結スタイルで記述された関数とプロシージャは値レベルではありません。つまり、通常は操作対象のデータ構造を明示的な名前や識別子で表現しません。代わりに、関数レベルです。関数はパイプライン、つまりすべての関数が操作する暗黙のデータ構造からパラメータを受け取り、関数の結果をその共有構造に返して次の演算子が使用できるようにするための操作のシーケンスとして定義されます。[ 3 ]
構成的意味論と、そのような意味論を反映する構文の組み合わせにより、連結言語はプログラムの代数的操作に非常に適しています。 [ 4 ]ただし、数式を直接記述することは難しい場合があります。[ 5 ]連結言語はスタックマシンで効率的に実装でき、命令セットの形で仮想マシンに暗黙的に存在することがよくあります。[ 5 ]
連結言語の特性は、その構成的な構文と意味論の結果である。
最初の連結型プログラミング言語はForthでしたが、連結型と呼ばれた最初の言語はJoyでした。他の連結型言語には、 dc、Factor、Onyx、PostScript、RPL、Staapl [ 9 ]、実験的で開発が中止されたものには、Enchilada [ 10 ]、Om [ 11 ] 、 XY [ 12 ]などがあります。
既存の連結言語のほとんどはスタックベースです。これは必須ではなく、他のモデルも提案されています。[ 12 ] [ 10 ] [ 11 ]連結言語は現在、組み込み[ 9 ]デスクトップおよびWebプログラミング、ターゲット言語、および研究目的で使用されています。
ほとんどの連結言語は動的型付けです。例外としては、静的型付けのCat言語[ 13 ]とその後継であるKitten [ 14 ]があります。