2.4
表示的意味論
47
full-text-30/)には、XQueryで書かれたビッグステップ意味論が含まれています。
数学ではなくRubyを使ってSIMPLEのスモールステップ意味論とビッグステップ意味論を記述す
ることによって、2つの異なるインタプリタ(interpreter)を実装したことに気づいたでしょうか。これ
こそ操作的意味論が実際にやっていること、インタプリタを記述することで言語の意味を説明すること
なのです。通常、意味論は単純な数学的記法を使って記述されます。数学的記法は理解できさえすれ
ば、すべてを明確であいまいさのないものにしますが、非常に抽象的で、コンピュータという現実から
遠くなるという犠牲を払います。一方、Rubyを使うことには、説明を簡単にしようとしているものに
現実のプログラミング言語の余計な複雑さ(クラス、オブジェクト、メソッド呼び出しなど)を取り込
んでしまうという欠点があります。とはいえ、すでにRubyを理
解していれば、何が起こっているのか
理解しやすくなり、記述をそのままインタプリタとして実行できるというボーナスも得られます。
2.4
表示的意味論
これまでは、プログラミング言語の意味を操作という観点から見てきました。そして、プログラムを
実行すると何が起こるのかを示すことによって、プログラムが意味するものを説明してきました。これ
に対し、表示的意味論(denotational semantics)というアプローチは、プログラムをネイティブ言語
から別の表現に変換