Quelle est la différence fondamentale entre la sémantique opérationnelle à petite et à grande étape?
J'ai du mal à comprendre ce que c'est et la motivation pour avoir les deux.
semantics
operational-semantics
small-step-semantics
Simon Morgan
la source
la source
x = 0; while ( true ) { x = x + 1; }
?Réponses:
La sémantique à petits pas définit une méthode pour évaluer les expressions une étape de calcul à la fois. Formellement parlant, une sémantique à petits pas pour un langage d'expressionE est une relation →:E×E appelée relation de réduction . La sémantique à petits pas décrit en détail ce qui arrive à une expression. Il est capable de rendre compte avec précision même des programmes sans terminaison, avec une chaîne infinie e0→e1→e2→… . Un programme de fin est un programme tel que e0→e1→⋯→v se termine par une valeur v telle que ∀e′∈E,v↛e′ .
À l'autre extrémité du spectre se trouve la sémantique dénotationnelle . La sémantique dénotationnelle attribue un «sens» à chaque expression. C'est une fonction des expressions aux dénotations: ( est appelé le domaine). L'espace des dénotations peut être complètement indépendant de l'espace syntaxique, par exemple pourrait être des expressions évaluées à un nombre et pourrait être un ensemble de nombres comme ou .D E D N R[[⋅]]:E→D D E D N R
La sémantique à grands pas est un peu au milieu. Une sémantique grands pas sur un langage d'expression et un ensemble de valeurs est une relation . Il relie une expression à sa valeur (éventuellement plusieurs valeurs si le langage n'est pas déterministe). Souvent, une valeur spéciale est utilisée pour les expressions sans terminaison.V ⇓ : E × V ⊥E V ⇓:E×V ⊥
Alors pourquoi avons-nous ces trois notions? Toutes ces notions peuvent se modéliser, mais le modèle ajoute un certain degré de complexité.
Du point de vue opérationnel, la sémantique à petits pas correspond à regarder chaque opération effectuée par un interprète de la langue. La sémantique à grands pas ne regarde que la valeur résultante. La sémantique dénotationnelle examine une interprétation mathématique qui peut ou non avoir quelque chose à voir avec ce qui se passe sur un ordinateur.
La sémantique à petits pas est la plus évidente. Il fournit clairement des informations utiles sur les programmes non terminés. Plus généralement, il fournit des informations détaillées sur le comportement du programme.
La sémantique dénotationnelle transforme les constructions syntaxiques en objets mathématiques arbitraires; il peut exprimer tout ce que les scientifiques veulent (vous pouvez définir la dénotation d'une expression comme étant toutes les chaînes de réduction possibles), mais au prix d'ajouter un niveau de complexité. Il est utilisé lorsque nous voulons faire abstraction de certains détails tels que la façon exacte dont l'expression est évaluée.
La sémantique à grands pas est au milieu: elle résume les détails de l'évaluation mais conserve la nature syntaxique du résultat. Habituellement, le concept est utilisé lorsqu'il existe une sémantique sous-jacente à petits pas, comme un moyen d'exprimer de manière concise « »Comme« e ⇓ e n∃(e1,…,en),e→e1→…en and ∄e′,en→e′ e⇓en ". Dans de telles constructions, alors que les concepts sont très différents (l'un nous permet de parler des étapes de calcul individuelles et des programmes non terminés, l'autre pas), les définitions seront très similaires, car dans ce cas les règles qui définissent le la sémantique à grands pas est fondamentalement de la forme «si et… et e n → ∗ v et v est une valeur alors e 1 ⇓ v ».e1→∗e2 en→∗v v e1⇓v
la source
3
dans((2+1)+1)⇓3
Je suppose que «dénotation» est une valeur finale, mais dans quel cas «grand pas» ne correspondrait-il pas nécessairement directement à cela? La différence a-t-elle quelque chose à voir avec le contexte, comme(a + 1)
selon l'environnement qui en contienta
?3