Яка принципова відмінність між малою та великою операційною семантикою?
Мені важко зрозуміти, що це таке, і мотивацію їх мати.
x = 0; while ( true ) { x = x + 1; }
?
Яка принципова відмінність між малою та великою операційною семантикою?
Мені важко зрозуміти, що це таке, і мотивацію їх мати.
x = 0; while ( true ) { x = x + 1; }
?
Відповіді:
Малошагова семантика визначає метод для оцінки виразів за одним етапом обчислення. Формально кажучи, малошагова семантика для мови вираження - це відношення називається відношенням скорочення . Малошагова семантика описує детально те, що відбувається з виразом. Він здатний дати точний виклад навіть програм з нескінченним ланцюжком . програма - така, що закінчується значенням таким, що . \ newcommand {\ llbracket} {[\! [} \ newcommand {\ rrbracket} {] \!]}→ : E × Ee 0 → e 1 → ⋯ → v ∀ e ′ ∈ E , v ↛ e ′
На іншому кінці спектру - денотаційна семантика . Денотаційна семантика присвоює «значення» кожному виразу. Це функція від виразів до позначень: ( називається доменом). Простір позначень може бути абсолютно не пов'язаний із синтаксичним простором, наприклад, можуть бути виразами, які оцінюються на число, а може бути набором чисел, таких як або .
Семантика великого кроку є своєрідною посередині. A великого крок семантика на мові виразів і набір значень є ставлення . Він пов'язує вираз зі своїм значенням (можливо, декількома значеннями, якщо мова є недетермінованою). Часто спеціальне значення використовується для виразів, що не закінчуються.
То чому ми маємо ці три поняття? Усі ці поняття можуть моделювати одне одного, але модель додає певної складності.
Оперативно кажучи, семантика малих ступенів відповідає перегляду кожної операції, яку виконує інтерпретатор мови. Семантика великого кроку розглядає лише отримане значення. Денотаційна семантика розглядає математичну інтерпретацію, яка може мати або не мати нічого спільного з тим, що відбувається на комп'ютері.
Малошагова семантика є найбільш очевидною. Він чітко надає корисну інформацію про незакінчені програми. Більш загально, вона надає детальну інформацію про поведінку програми.
Денотаційна семантика перетворює синтаксичні конструкції в довільні математичні об’єкти; він може виражати все, що хочуть вчені (ви можете визначити позначення виразу як усі можливі ланцюги скорочення від нього), але ціною додавання рівня складності. Він використовується, коли ми хочемо абстрагувати деякі деталі, такі як, як саме оцінюється вираз.
Семантика великого кроку знаходиться посередині: вона абстрагує деталі оцінки, але зберігає синтаксичний характер результату. Зазвичай концепт використовується, коли є основна семантика малих кроків, як спосіб коротко висловити « "як" ". У таких конструкціях, хоча поняття дуже відрізняються (одне дозволяє говорити про окремі етапи обчислення та про незакінчені програми, інше - ні), визначення буде виглядати дуже схоже, тому що в цьому випадку правила, що визначають Семантика великого кроку в основному має форму "якщо і ... і і- це значення, то ”.
3
в ((2+1)+1)⇓3
тому, що я здогадуюсь, що «денотаційний» є деяким кінцевим значенням, але в якому випадку «великий крок» не обов'язково відображатиметься безпосередньо на це? Чи має різниця щось спільне з контекстом, наприклад, (a + 1)
залежно від середовища, яке міститься a
?
3