制約プログラミング

・制約プログラミング
(http://www.forest.dnj.ynu.ac.jp/~mori/MExperiment/ConstProg.html)

・制約プログラミングとGroebner Base
(http://madeira.cc.hokudai.ac.jp/RD/yamamoto/Essay/5.html)

制約プログラミングなんてパラダイムがあったのか。知らなんだ。

「制約プログラミングとGroebner Base」で語られているように、処理系に「どんな制約式からでも、オブジェクトの状態を自動的に求めさせる仕組み。」を要求すのは難しいだろう。だが、この制約プログラミングの考え方は普段のプログラミングでも役立つはずだ。定義されたオブジェクト間の関係性を自動的に一定に保つ仕組み、この仕組みそのものを実現することは、現在普及しているプログラミング言語でも十分に可能だ。そして、この仕組みをうまく利用すれば、プログラミングという行為が、更に一段抽象化されるだろう。

具体例を述べれば、MVCパターンだろうか。MVCパターンは、M(モデル)の変化に応じ、V(ビュー)を(M(モデル)との関係が、一定の状態になるように)変化させる仕組みだ。これはまさしく、上記の考え方がアーキテクチャレベルでパターン化されていると、とらえることができるだろう。

と、ここまで語ったが、実際に「オブジェクト間の関係性を自動的に一定に保つ仕組み」を利用するとなると、プログラムの構造が抽象化されるのと引き代えに、コードが複雑化してしまう結果となるだろう。結局は、コストパフォーマンスが高い場合での利用が求められる。
では、結局ここで何を語りたいのか。それは、「オブジェクト間に一定の関係性がある」という事実を見出すことの必要性だ。この事実さえ見出すことが出来ていれば、後にその構造が複雑化したとしても、その対策を討つことができるはずだ。