宣言的な言語と手続的な言語という対比があって、宣言的であることはだいたいにおいて良いこととされてきた。宣言的な言語で記述するというのは、最終的な目標や達成されて欲しい状態のみを記述し、そこに至る過程はすっとばすということ。その過程は、背後にあるかしこい仕組みが自動的にプランニングして達成してくれる。SQLは宣言的な言語の代表例だけど、SQLを見たときに、それがどのような手続の列に変換されるのかイメージできるプログラマーは多くない。それはSQLが人々を生産的にしている証拠であり、とても良いことだ。

AIコーディングは、宣言的なプログラミングの究極形と言えるかもしれない。人々は詳細な手続きをすっとばした状態でシステムを構築できる。大きな違いは、決定的か非決定的かということで、通常の宣言的な言語であれば、記述した通りの結果が保証されるものと考えて差し支えないけど、AIコーディングでは、宣言したことが必ずしも実現されるとは限らない。また、宣言自体が正しい内容なのかどうかの分析も、能力の限定的な宣言型言語よりも難しいと思う。

Taiju Muto @tai2