連鎖性言語/メタプログラミング

JoyFactor などの高階連鎖性言語は、クォーテーション (無名関数) をリストとして表現します。これは、任意のリスト操作処理を使って、新しいプログラムを作成・実行できることを意味します。Factor では、コンパイラ自体がマクロによって拡張可能なので、新しいプログラムをコンパイル時に作成できます。メタプログラミングが容易なおかげで、連鎖性言語は多くの異なるパラダイムも容易に取り込むことができます。Factor は、関数型プログラミングオブジェクト指向プログラミング、およびデータフロープログラミングをサポートしています (models ボキャブラリを使用)。

これは、LispScheme のマクロによるメタプログラミングと似ています。強力なマクロは、かっこと入れ子を多用する Lisp 構文の存在理由としてしばしば取り上げられますが、連鎖性言語はもっと「フラット」でシンプルなプログラムによって、同レベルの表現力を発揮することができます。

言語による明示的サポートがない場合でも、しばしば宣言ライクな連鎖性スタイルで非常に高度なコードを記述することができます。これは、言語の流れがより自然なためです。具体的には、式もステートメントもなく、単語 (ワード) を順に並べていくだけでプログラムができます。プログラムの構造は、言語の構文ではなく、規則またはワードの意味によって決まります。したがって、プログラマは独自の規則を自由に作成して、任意のレベルの抽象化を実現することができます。

This revision created on Sat, 3 Jan 2009 01:29:36 by slava