prologで遊ぼう

prologとは

prologはかなり昔からあるプログラミング言語の一つです。ただし、C言語とかJava言語のような汎用言語とは異なり、 とても特殊な特徴があります。それは数学論理記述ができるのです。例えば、

human( jiro ).

上記のように書くとjiroは人間である。と書くことができます。

は?何ができるの?

上記例を見ても、「jiroは人間である」としか書いていなくて意味がわからないかもしれません。しかし、例えば

・人間ならば本を読める ・jiroは人間である

とプログラムすると、「質問。本を読めるのは誰か?」と命令すると回答「jiro」が得られます。 ほら、なんとなく数学の三段論法みたいですよね。このように論述プログラムを書くことができます。 そして、これを駆使すると推論をプログラムすることに繋がります。

何が面白いの?C言語のほうがいろいろなことができそうだけど

はい、C言語のような汎用性はありません。しかし、例えばこう考えてみて下さい。

事実である「jiroは人間である」の羅列をデータベースに入れておくことで、跡から質問を追加することができますね。 「人間なら本を読める」「本を読めるのはだれか」とか「jiroは本が読めるか」とか。 ほら、なんとなく論理で検索できる検索エンジンのようですね。昔はエキスパートシステムと読んでいました。