RE:プログラム意味論を学ぶ意義

自分、専門は意味論ではないですが。

そうするとなんて言うか、何で"数学的に"やるんだろうかとか考えてしまうわけです。表現、記述するのに十分に強い(??)とかっていう事なんだろうかと。

プログラム意味論を学ぶ意義 - Yet Another Ranha

たぶん理由は2点。

  1. 歴史的理由:意味論の元を辿ればλ算法に行き着くため、自然と数学の一分野となった。
  2. 能力的理由:意味論の定義や証明などで用いる定式化のノウハウが数学には豊富にあった。

じゃあ本題のプログラミング意味論は"実装"をも含むプログラミグ言語を"創る、創造"する為に必要なのだろうかっていう?
本当に必要かと考えると眉唾で、知らなくてもどうとでも成る気がします

プログラム意味論を学ぶ意義 - Yet Another Ranha

自分としても、意味論そのものを知らなくてもプログラミング言語を創造することはできる、という立場です。ただし『プログラム言語の意味』は意味論を抜きにしても考えなければなりません*1
そしてその意味を語る上で用いられるのがプログラム意味論という考えです。プログラム意味論があるからプログラムに意味が与えられるのではなく、プログラムに存在する意味を考えるための体系がプログラム意味論であると考えています。

意味論が無くてもプログラムに意味はあるよね、けど意味論が無いとプログラムの意味を数学的に論ずることができないよね、ということです。

『数学的』という語句も、かなり曖昧性を含んだ単語ですが、要は『支障が無いくらいまで厳密に』という文章へと置き換えられると思っています。
プログラムを入力とした eval 関数を定義するのが*2操作的意味論ですが、少なくとも eval 関数は、プログラムの実行に支障が無いくらいまで厳密には定義されてますよね。そうじゃなければ実行できないですもん。

うーん。なんかダメダメだなぁ。突っ込みどころが多すぎる記事になっちゃった。
そっちのブログを印刷して横内先生に見せてみようかと思ったけど、横内先生は今日来てないでやんの。ざんねん。

*1:例えば『 1 + 2 』という単なる構文木がプログラムとして実行できるためには処理系実装者が各構文木に対応した意味を考察する必要があります

*2:厳密には文法要素に対するリダクション規則を定義することになるんだけど