プログラミングの原理を抽象化するなら、実際の構文や言語の枠をすべて剥ぎ取って、最小限の計算の本質だけを残す必要がある。
状態の変換: プログラムとは、入力状態を出発点として、規則に従い別の状態へ変換する体系である。
あらゆるプログラミング言語・パラダイムは、以下の要素に還元できる。
1. 表現: 対象世界を「記号・データ」として写像する。数・文字列・構造体・グラフなどはすべて表現の形態にすぎない。
2. 変換: 表現を別の表現に写す規則。関数呼び出し・代入・パターンマッチング・ループなどはすべて「変換」の特殊形。
3. 制御: 変換の適用順序を規定する。再帰・分岐・逐次処理・並列処理・非決定性などを含む。
4. 資源: 時間・記憶・入出力チャネルなど。プログラムはこれら有限資源の制約下で変換を実行する。