データフロープログラミング
データフロー言語は、命令型プログラミングモデルなどの他の主要のプログラミング言語とは対照的である。命令型プログラミングではプログラムは一連の命令文で構成され、データの流れは見えない。この違いは瑣末に思われるかもしれないが、パラダイムとしての違いは非常に大きく、データフロー言語はマルチコアシステムやマルチプロセッシングシステムを自由に使える。
プログラミングにおける重要な概念として「状態」がある。状態とは基本的には、システムの各種条件(変数)の測定値のスナップショットである。多くのプログラミング言語は正しく動作させるために多数の状態情報を必要とするが、一般にプログラマからはそれら情報は隠蔽されている。実世界の例として、3方向の電灯スイッチがある。一般にスイッチを上にすれば電灯が点くが、3方向スイッチでは後ろの電灯が消えるかもしれない。結果は(おそらく視界からは見えない)他のスイッチの状態によって決まる。
実際、状態はコンピュータから見ても隠蔽されていることが多く、ある情報の断片が(一時的ですぐに捨てられる情報だとしても)状態を符号化したものかどうかはコンピュータの関知するところではない。並列処理マシンでは状態情報を複数のプロセッサ間で共有する必要があるため、これは重大な問題となる。どの状態が重要かを知らない場合、多くの言語ではコードやデータの重要性を示すために大量の特別なコードを追加する必要がある。