18
2
章 プログラムの意味
ショットに命を与える方法について理解します。
2.1
「意味」 の意味
言語学的に言うと、意味論(semantics)とは、言葉と意味の関係に関する学問です。たとえば「犬」
という言葉は、紙面上に表された形状として、また誰かの声帯から発した空気中を伝わる振動として
表現されますが、実際の犬や一般的な犬の概念とはまったく違うものです。意味論というのは、こうし
た具象的記号がその抽象的意味や抽象的意味の基本的性質とどのように関係しているか、に関心があ
ります。
コンピュータサイエンスにおける形式意味論(formal semantics)という分野は、とらえどころのな
いプログラムの意味を明確にする方法を見つけて、それを使ってプログラミング言語に関して興味深
いことを発見したり、証明したりすることに関心があります。形式意味論には、新しい言語の仕様化
やコンパイラ最適化の工夫といった具体的なものから、プログラムの正当性の数学的証明といった抽
象的なものまで、幅広い応用があります。
プログラミ
ング言語を完全に記述するためには、2つのものが必要になります。1つは構文(syntax)
で、プログラムがどのように見えるかを記述します。もう1つは意味論で、プログラムが何を意味する
かを記述します
†
。
多くの言語には、公式に書かれた仕様書というものがありません。実際に動くインタプリタやコンパ
イラがあるだけです。Rubyもこの「実装による仕様(specification by implementati ...