とにかく、プログラミング言語におけるコードの動作や解釈を規定するのが意味論なわけですが、これが明確に示されていない言語は言ってみれば妄想みたいなものというか、「みんななんとなく常識的に解釈したり自然言語の文書を読んでわかった気になっているけど、数学的な証明とかに使えるような明確な定義が実は存在しない」という若干危うい状態なわけです。
あるいは「唯一の公式処理系である俺が意味論だ!! (意味論だとは言ってない)」みたいな。
そこで活躍するのが意味論で、意味論というのはプログラミング言語のコードがどのように解釈されるか、あるいはどのようなアーキテクチャを持つ機械にどのように作用するかを形式的に規定します。
特にメジャーな方法としては、コードや部分式をなんとかして数学における式とか論理に帰着させる「表示的意味論」と、コードや部分式がどのように (仮想的な) 機械の状態を変更していくかを記述する「操作的意味論」があります
で、プログラミング言語がその状態だと困るわけですね。
たとえば「1+1」という式があったとして、これが32ビットで2の補数表現の整数の話で2になるかもしれないし、ブール代数における和で1かもしれないし、 XOR のつもりで0かもしれない。あるいは、文字列の1と文字列の1の結合で "11" かもしれないし、トークン 1 と + と 1 の結合で "1+1" かもしれない。
となると、プログラミング言語のコードの挙動や解釈を、何らかの形式的な (曖昧さのない形の) 方法で定めてやらないと、コードがどう動くかつまりプログラミング言語の仕様というのは共有が極めて難しいわけです。