命令型プログラミング
計算式が状態を変化させることと、計算式が状態の影響を受けることは通常セットになるので、命令型と手続き型は後に融合的に扱われるようになった。 手続き型がしばしば、命令文を順次実行していくや記憶領域に代入して状態を変化させていくなどと説明されるのはこのためである。副作用の活用は、より小さなメモリ容量でのより効率的なプロセス拡充をもたらせたので、命令型パラダイムはノイマン型コンピュータプログラムの基本になった。
なお、プログラミング視点での手続き型は、命令型プログラムに手続きの定義と呼び出しの機能を加えて、構造性とモジュール性を備えさせたパラダイムを意味している。高水準言語の普及後はこの意味の方が一般的になった。
命令型に対する宣言型というプログラミング理論構図が重視され始めたのは1970年代からであり、副作用によるオペレータのブラックボックス化偏重への見直しがその動機になっている。副作用を前提にした命令型に対して、参照透過性を前提にしてオペレータのホワイトボックス化を重視しているのが宣言型である。
なお、冒頭の状態を見ないという宣言型の説明ではまともなプログラムも作れないように思えるが、宣言型では問いと答えに状態も含めてしまうという方法で、命令型と同等の表現を可能にしている。そこで用いられるのが部分構造論理由来の部分構造型システム(英語版)や圏論由来のモナドであり、詳細は割愛するが参照透過性もそれで維持される。従って補正するとこうなる。
宣言型は、(100円&状態)+200円の問いに、引数状態からの消費税10%を加算して、返り値状態に特典15ポイントを収めた、(330円&状態)の答えを出す。