プログラム意味論、という単語がピンとこない理由

例えばwikipediaにもプログラム意味論という項目があって、ぼくがやっている研究のベースにあるのはこういった理論なのだが、「意味論」という単語がいまいちピンとこなくてずっと苦しんだ。最近、なんでピンとこないかの理由が少しわかった気がするので書いておく。


この「意味論」は"semantics"の訳語なのだが、この「意味」という単語に意味がありすぎる、のが問題なのだと思う。つまり、日本語の「意味」という単語にはsemanticsよりもたくさんの意味があるのである。例えば「そんなん意味ないやん!」という意味はたぶんvalue(価値)ということになるだろうし、単純にmeaningという意味でも「意味」と使う。もう意味だらけでこんがらがってきた。

そしてもうひとつは「意味」というと何となく心の中とか脳の中にあるもの、という感覚があると、意味論と言われるとわけがわからなくなる。そんなもの研究できるのか?という気持ちになる。しかし、semanticsというのは、ほぼ必ず「意味」を記述する。syntaxという構文を使って意味を記述する。例えば

A & B = AかつB

と書くとき、これは右辺はSemanticsで、全体としては「A&Bと書くとき、これはAかつBのことですよ」と理解しなければならない。ここで間違っても「じゃあ『AかつB』の意味はなんですか?」という問いを発してはいけない。永久に問いを発し続けて死ぬ。

つまり、上の式は例えば 2+4=6というような計算とは違う。左辺の定義が右辺ですよ、ということなのである。(だから=を使わずに:=とかを使ったりするのである)

この「意味が記述されている」というのに慣れないと、意味論と言われてもチンプンカンプンのままだと思う。ぼくはこれに気づくのに半年ぐらいかかった。正確には、何となくわかっていたのだが、自信を持ってこのような記事を書けるようになるまで半年かかった。

要するにSemanticsというのは「意味論」というよりは「意味記述論」とでも言うべきものなのだと思う。記述、と明記しておけば多少なりともマシになるような気がする。

あと、「意味がわかった」と聞くと「何かが理解できて自分が賢くなった」という発想をする人もいるのではないかと思うが、意味論というのはあくまで意味を記述するというものなので、何か賢くなったりはしない*1。ここでいう「意味」は、「何かと何かの関係性を定義する、記述すること」というぐらいにとらえておくと、しっくりくる。例えば「プログラム」の意味を「数学の諸概念」を使って形式化する、といったようなことである。

以上、水曜日に研究室内で発表した内容の英語がショボかったので、日本語での補足でした。

*1:もちろん意味を記述できて賢くなるという意味もなくはないのだが