小ステップと大ステップの操作上のセマンティクスの基本的な違いは何ですか?
私はそれが何であるか、そしてその2つを持っている動機を把握するのに苦労しています。
x = 0; while ( true ) { x = x + 1; }
何ですか?
小ステップと大ステップの操作上のセマンティクスの基本的な違いは何ですか?
私はそれが何であるか、そしてその2つを持っている動機を把握するのに苦労しています。
x = 0; while ( true ) { x = x + 1; }
何ですか?
回答:
スモールステップセマンティクスは、一度に1つの計算ステップで式を評価するメソッドを定義します。正式に言えば、小さなステップのセマンティクスはリレーション、リダクションリレーションと呼ばれます。小さなステップのセマンティクスは、式に何が起こるかを詳細に説明します。無限チェーンして、終了していないプログラムでさえ正確なアカウントを提供できます。終了プログラムとは、が、値ような値終了するプログラムです。 \ newcommand {\ llbracket} {[\![} \ newcommand {\ rrbracket} {] \!]}→ :E × E e 0 → e 1 → e 2 → … e 0 → e 1 → ⋯ → v ∀ E " ∈ E 、V ↛ E "
スペクトルのもう一方の端には、表示的意味論があります。表示的セマンティクスは、各表現に「意味」を割り当てます。式から表記までの関数です:(はドメインと呼ばれます)。表示のスペースは、構文スペースとはまったく関係ありません。たとえば、は数値に評価される式であり、はまたはような数値のセットです。D E D N R
ビッグステップのセマンティクスは途中にあります。と一連の値の大きなステップセマンティクスは、リレーションです。式をその値に関連付けます(言語が非決定的である場合は複数の値が考えられます)。多くの場合、終了しない式には特別な値が使用されます。⇓ :E × V ⊥
では、なぜこれら3つの概念があるのでしょうか?これらの概念はすべて相互にモデル化できますが、モデルによってある程度の複雑さが増します。
操作的に言えば、小さなステップのセマンティクスは、言語のインタープリターによって実行される各操作を調べることに対応しています。ビッグステップセマンティクスは、結果の値のみを調べます。表示的意味論は、コンピューター上で起こることとは何の関係もないかもしれない数学的解釈に注目します。
小さなステップのセマンティクスは最も明白なものです。終了しないプログラムに関する有用な情報を明確に提供します。より一般的には、プログラムの動作に関する詳細情報を提供します。
表示的意味論は、構文構造を任意の数学的オブジェクトに変換します。科学者が望むものは何でも表現できますが(表現の表現は、それからの可能なすべての縮小連鎖であると定義できます)、複雑さのレベルを追加します。式の評価方法などの詳細を抽象化する場合に使用します。
ビッグステップのセマンティクスは中間にあります。評価の詳細を抽象化しますが、結果の構文的な性質は保持します。通常、この概念は、「 ”が“ ”として存在します。そのような構造では、概念は非常に異なりますが(1つは個々の計算ステップと非終了プログラムについて話すことができますが、もう1つはできません)、定義は非常に似ています。ビッグステップのセマンティクスは、基本的に「if and…and and電子⇓ E N E 1 → * E 2 E N → * V V E 1 ⇓ V値は」です。
3
で((2+1)+1)⇓3
「ビッグステップ」は、必ずしもそれに直接マッピングしないだろういくつかのエンドのすべての値があるが、どのような場合に「外延」私は推測していますか?違いは、コンテキストに関係(a + 1)
していますa
か?
3