意味論(プログラミング)
プログラムが何を意味するか、実行時に何をするか。見た目を扱う構文とは別物。厳密に定める方法は、操作的・表示的・公理的の3つ。
操作的意味論は、プログラムを状態機械とみなし、各ステップの動作を意味とする(SECDマシン、抽象解釈)。表示的意味論は、プログラムを数学的な関数とみなす(Scott+Strachey、1970年代)。公理的意味論は、プログラムを状態についての論理式とみなす(Hoare論理、分離論理)。実用上はコンパイラ設計、形式検証、言語設計で重要になる。C/C++の未定義動作は「意味論が何も言っていない場合」であり、だからコンパイラはそうしたケースを最適化で消してしまってよい。