L.i.S.P 写経(その4)、5章

自分にとって新たに接する用語や概念が出てくるので落ち着いて整理していきます、章のタイトルからしてだけれども。

プログラムって何?、意味って何?という問いに答えながら、今から話題にすることをだんだん厳密にしていきます。

The proplem is thus to associate a programming language with a method that gives meaning to every program written in that language. In that sense, we speak of the semantics of a programming language.

で、 semantics に種々の方法がある、と続いていきます。プログラムに意味を結び付けるには、そのプログラミング言語の成分(特徴?プロパティ?)を知る必要があって…というのがこの前段にあって、上記の文がくる。自分なりに日本語にするとすると、

プログラミング言語に、その言語で書かれたどのプログラムにも意味を与える方法を結び付けることが問題となります。その意味で、プログラミング言語の semantics のことを話して行きます。

in that sense としてここで mean(ing) という語を使っていないことに注目するんだろうけれども、日本語にしようとして その意味で となってしまっている所でこの日本語は原文を台無しにしてしまっています…

意味って何?という問いに対して、「意味を与える方法(を結び付けること)」から深堀りするというのは納得いかないような気もします。この「方法」はその言語処理系を実装する際に必要となるはずの厳密な標準となるもの、から始まって、他にも色々と利用することができるものです、とあります。この「意味を与える方法」によって表現されるものが意味そのものということになるのだろう。「意味って何?」というともすれば哲学的な問いは普段意識することが無いからか、言葉にされると面喰らってしまいます。結局この問いに対する答えは、以下の文で表されるようなものということになります。特に最後のカンマ以降です。シンプルです。

In fact, the meaning of a program is a much more fundamental property, its very essence.

方法が主に三つ operational semantics, denotational semantics, そして axiomatic semantics が挙げられます。それ以外にも natural semanticsalgebraic semantics 等があるということも示されます。その中で operational semantics ではなく、という件から、言語の実装にも使える方法としてここでは denotational semantics を利用します、という話の流れで denotational semantics とは何かが示されます。

only a few centuries of mathematical practice and culture are sufficient "to apply" it. The idea is thus to transform a program into a function (from an appropriate space of functions). We call that function its denotation. The remaining problem is then to understand the space of denotations.

but the structure that we’ve just explained is what we conventionally call denotational semantics.