小ステップと大ステップの操作セマンティクスの違い


28

小ステップと大ステップの操作上のセマンティクスの基本的な違いは何ですか?

私はそれが何であるか、そしてその2つを持っている動機を把握するのに苦労しています。


1
運用上のセマンティクスに関するウィキペディアの記事は、「ビッグステップのセマンティクス」セクションの情報の合計が「このセクションには拡張が必要です。(2011年2月)」とわかるまでは有望に見えます。
デビッドリチャービー

1
学習ソースは何ですか?問題には何が含まれていますか?どう思いますか?ヒント:の大きなステップのセマンティクスはx = 0; while ( true ) { x = x + 1; }何ですか?
ラファエル

@Raphael私は理解計算を読んでいます。私の考えでは、小さなステップのアプローチは、式をさらに縮小できなくなるまで部分式に縮小し、それを評価することです。大きなステップはすぐに物事を評価することのように思えますが、2つの方法はどちらも高レベルの構成要素をドリルダウンすることであるように思われるため、実際には2つの方法の間に興味深い違いはありません。
サイモンモーガン

大きなステップは、サブコンストラクトを評価して上位レベルのコンストラクトからドリルダウンし、小さなコンストラクトをさらに大きなコンストラクトをサブコンストラクトに縮小することです。
サイモンモーガン

回答:


32

スモールステップセマンティクスは、一度に1つの計算ステップで式を評価するメソッドを定義します。正式に言えば、小さなステップのセマンティクスはリレーション、リダクションリレーションと呼ばれます。小さなステップのセマンティクスは、式に何が起こるかを詳細に説明します。無限チェーンして、終了していないプログラムでさえ正確なアカウントを提供できます。終了プログラムとは、が、ような終了するプログラムです。 \ newcommand {\ llbracket} {[\![} \ newcommand {\ rrbracket} {] \!]}E × E e 0e 1e 2e 0e 1vE→:E×Ee0e1e2e0e1v E "E V E "veE,ve

スペクトルのもう一方の端には、表示的意味論があります。表示的セマンティクスは、各表現に「意味」を割り当てます。式から表記までの関数です:(はドメインと呼ばれます)。表示のスペースは、構文スペースとはまったく関係ありません。たとえば、は数値に評価される式であり、はまたはような数値のセットです。D E D N R[[]]:EDDEDNR

ビッグステップのセマンティクスは途中にあります。と一連の値の大きなステップセマンティクスは、リレーションです。式をその値に関連付けます(言語が非決定的である場合は複数の値が考えられます)。多くの場合、終了しない式には特別な値が使用されます。EE × V V⇓:E×V

では、なぜこれら3つの概念があるのでしょうか?これらの概念はすべて相互にモデル化できますが、モデルによってある程度の複雑さが増します。

  • 小さなステップの意味を考える(減少は非決定論的である場合、または値)には、その値に各式を関連付ける対応するビッグステップセマンティクスを定義することができます。チェーンが存在する場合に限っおよびはそれ以上削減できません。一般に、大きなステップのセマンティクスから小さなステップのセマンティクスを再構築できないことに注意してください。たとえば、すべての非終了式は、大きなステップのセマンティクスでは区別できません。電子V E E 1VのVevee1vv
  • 大きなステップのセマンティクス与えられた場合、それは小さなステップのセマンティクスであると言えます。これは特に有用ではありません。E V⇓:E×VEV
  • 小さいステップのセマンティクスを指定すると、対応する表記のセマンティクスを定義できます。式の表記は、それから始まる縮約チェーンのセットです。これは正式な定義を満たしますが、構文を直接見ることで推論しやすいオブジェクトに理論上のオーバーヘッドを追加するため、特に有用ではありません。
  • 表示のセマンティクス与えられた場合、可能なすべての表示を言語の値として追加することにより、小さなステップのセマンティクスを定義できます。そのためには、プログラマーが作成できる構文の一部ではない値を作成する必要があります。つまり、いくつかの興味深い結果は、「すべてのプログラム」ではなく「プログラマーが作成できるすべてのプログラム」と述べなければなりません。したがって、これもあまり有用ではありません。[[]]
  • ビッグステップの意味を考えると、ドメインは、値の集合の集合であり、対応する表示的意味論を定義することができます:。ビッグステップのセマンティクスが決定論的である場合(各式が単一の値に減少する場合)、ドメインが値のセットであるより単純な表記のセマンティクスを定義できます。[[[e]]={vev}
  • 逆に、表示のセマンティクスすると、大きなステップのセマンティクスを定義できます。繰り返しますが、これは少し無意味です。E [[[]]E[[]]

操作的に言えば、小さなステップのセマンティクスは、言語のインタープリターによって実行される各操作を調べることに対応しています。ビッグステップセマンティクスは、結果の値のみを調べます。表示的意味論は、コンピューター上で起こることとは何の関係もないかもしれない数学的解釈に注目します。

小さなステップのセマンティクスは最も明白なものです。終了しないプログラムに関する有用な情報を明確に提供します。より一般的には、プログラムの動作に関する詳細情報を提供します。

表示的意味論は、構文構造を任意の数学的オブジェクトに変換します。科学者が望むものは何でも表現できますが(表現の表現は、それからの可能なすべての縮小連鎖であると定義できます)、複雑さのレベルを追加します。式の評価方法などの詳細を抽象化する場合に使用します。

ビッグステップのセマンティクスは中間にあります。評価の詳細を抽象化しますが、結果の構文的な性質は保持します。通常、この概念は、「 ”が“ ”として存在します。そのような構造では、概念は非常に異なりますが(1つは個々の計算ステップと非終了プログラムについて話すことができますが、もう1つはできません)、定義は非常に似ています。ビッグステップのセマンティクスは、基本的に「if and…and and電子E N E 1 * E 2 E N * V V E 1V(e1,,en),ee1en and e,eneeene1e2envv値は」です。e1v


私もこれを学んでいますが、答えであなたが言ったことに問題があります。あなたは「ビッグステップのセマンティクスは中間にある」と言った。しかし、小さなステップは実際には「中間」モデルではないでしょうか?式を考えます:A:((5 + 7)+ 3)B:((5 + 5)+ 5)C:((1 + 2)+ 1)D:((2 + 1)+ 1)Denotationalは分類します異なる値(おそらく「C」と「D」)のCとDでさえも、大きなステップはそれらを両方とも「4」として分類し、AとBは両方とも「15」として分類しますが、小さなステップは「(12 + 3)」と"(10 + 5)" AおよびBのため、及び"(3 + 1)" CおよびDの
ティモシー・スワン

@TimothySwan通常の算術評価を定義したいと仮定すると、表示的意味論はCとDを区別しません。小さなステップの意味論はような縮約連鎖を定義します。ビッグステップのセマンティクスは、表示のセマンティクスと非常に似ています: vs。に対し、ビッグステップセマンティクスでは、言語構文内の1つである表示的意味論ではmetatheoryからの1つであるが、違いは、この単純な例では、可視光または重要ではありません。2 + 1 + 1 3 [2+1+13+14((2+1)+1)34 4[[((2+1)+1)]]=444
ジル 'SO-悪であるのをやめる'

あなたが言ったとき、「表示的意味論は各表現に「意味」を割り当てます。」表現自体を一意に識別することを意味するのではなく、何らかの評価に依存しない意味を意味しますか?大きなステップと意味論的なセマンティクスの違いを明確に示す簡単な例を提供できますか?また、説明してください3((2+1)+1)⇓3「ビッグステップ」は、必ずしもそれに直接マッピングしないだろういくつかのエンドのすべての値があるが、どのような場合に「外延」私は推測していますか?違いは、コンテキストに関係(a + 1)していますaか?
ティモシースワン

@TimothySwan副作用、非決定論、関数がない限り、式の表示的意味は評価される値です。非決定論は、ビッグステップとデノテーショナルの違いを説明するのに適した方法です。式のできる値のセットになります。ですが、大きなステップのセマンティクスには複数の許容可能な判断があります:および and ... はタイプミスでした。rは、n個のD1 ... N 1 R n個のD1 ... N 2[[rand(1..n)]]={1,2,,n}rand(1..n)1rand1 ..n23
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.