宣言型プログラミング
「どうやるか」ではなく「何が欲しいか」を記述するパラダイム。対極は命令型(手順を一つずつ書く)。SQL、HTML、CSS、Prolog、Terraform、正規表現はどれも宣言型である。
利点はコードが短く読みやすいこと、コンパイラやランタイムが最適化してくれることだ。欠点は「魔法」のデバッグが難しく、個別の最適化ヒントを加えにくいこと。関数型プログラミングはその部分集合(宣言型+ミューテーションなし)である。React JSXは擬似的に宣言型で、UIツリーを記述すれば、差分を取って適用するのはReactの仕事だ。TerraformやKubernetesは宣言的なマニフェストを使う。PulumiとTerraformの論争は、インフラにおける命令型と宣言型の対立でもある。