작은 단계와 큰 단계의 동작 시맨틱의 차이점


28

작은 단계와 큰 단계의 동작 의미론의 근본적인 차이점은 무엇입니까?

나는 그것이 무엇인지 파악하고 두 가지를 갖는 동기를 얻는 데 어려움을 겪고 있습니다.


1
"큰 단계 의미론"섹션의 총 정보가 "이 섹션은 확장이 필요합니다."(2011 년 2 월)임을 알 때까지 운영 의미론 에 대한 Wikipedia 기사 가 유망 해 보입니다.
— David Richerby 2016 년

1
학습 소스는 무엇입니까? 문제에 무엇이 포함되어 있습니까? 어떻게 생각해? 힌트 : 큰 단계 의미는 x = 0; while ( true ) { x = x + 1; }무엇입니까?
— Raphael

@Raphael 저는 이해하기를 읽고 있습니다. 내 생각은 작은 단계의 접근 방식은 더 이상 줄일 수 없을 때까지 표현을 하위 표현으로 줄이는 것입니다. 큰 단계는 바로 물건을 평가하는 것이지만 두 방법이 더 높은 수준의 구성을 드릴 다운하는 것처럼 보이는 두 가지 방법 사이에는 실제로 흥미로운 차이점이 없습니다.
— Simon Morgan

하위 구성을 평가하여 상위 수준의 구성에서 드릴 다운하는 것과 큰 구성을 다시 하위 구성으로 축소하여 작은 단계를 수행하는 것이 중요합니다.
— Simon Morgan

답변:


32

E→:E×Ee0→e1→e2→…e0→e1→⋯→v v∀e′∈E,v↛e′

스펙트럼의 다른 끝에는 의미 상 의미론이있다 . 표기 의미론은 각 표현에 "의미"를 할당합니다. 표현식에서 표기까지의 함수입니다. ( D 는 도메인이라고합니다). 표기 공간은 구문 공간과 완전히 무관 할 수 있습니다. 예를 들어 E 는 숫자로 평가되는 표현식이고 D 는 \ mathbb {N} 또는 \ mathbb {R} 과 같은 숫자 집합 일 수 있습니다 .[[⋅]]:E→DDEDNR

큰 단계 의미론은 중간에 있습니다. 표현 언어 및 일련의 값 에 대한 큰 단계 의미 는 관계 입니다. 표현식을 값과 연관시킵니다 (언어가 결정적이지 않은 경우 여러 값일 수 있음). 종료하지 않는 표현식 에는 특수한 값 이 사용되는 경우가 종종 있습니다.EV⇓:E×V⊥

그렇다면 왜이 세 가지 개념이 있습니까? 이러한 모든 개념은 서로를 모델링 할 수 있지만 모델은 다소 복잡성을 가중시킵니다.

  • 작은 단계 의미론 주어지면 각 표현식을 해당 값 (또는 감소가 결정적이지 않은 경우 값)과 관련시키는 해당하는 큰 단계 의미론을 정의 할 수 있습니다. 체인이 존재하는 경우 및 는 더 이상 줄일 수 없습니다. 일반적으로 큰 단계 의미에서 작은 단계 의미를 재구성 할 수 없습니다. 예를 들어, 모든 비 종료 표현식은 큰 단계 의미에서 구별 할 수 없습니다.→e⇓ve→e1→⋯→vv
  • 큰 단계 의미론 주어지면 에서 작은 단계 의미론이라고 말할 수 있습니다 . 이것은 특히 유용하지 않습니다.⇓:E×VE∪V
  • 작은 단계 의미론 주어지면, 표현의 표기법이 그것으로부터 시작하는 축소 체인의 집합 인 대응하는 의미 론적 의미론을 정의 할 수 있습니다. 이것은 형식적 정의를 만족하지만 구문에 직접보고 추론하기 쉬운 객체에 이론적 인 오버 헤드를 추가하기 때문에 특히 유용하지 않습니다.→
  • 지정 의미론 주어지면 가능한 모든 표기법을 언어의 값으로 추가하여 작은 단계 의미론을 정의 할 수 있습니다. 이를 위해서는 프로그래머가 작성할 수있는 구문의 일부가 아닌 값을 만들어야합니다. 즉,“모든 프로그램에 대해”가 아니라“프로그래머가 작성할 수있는 모든 프로그램에 대해”흥미로운 결과가 있어야합니다. 따라서 이것은 매우 유용하지 않습니다.[[⋅]]
  • 큰 단계의 의미론 주어지면 , 도메인이 일련의 값 세트 인 같은 대응 의미 론적 의미를 정의 할 수 있습니다 . 큰 단계 의미론이 결정 론적 (각 표현이 단일 값으로 감소) 인 경우 도메인이 값 세트 인 더 간단한 dentontional 의미론을 정의 할 수 있습니다.⇓[[e]]={v∣e⇓v}
  • 반대로, 의미 론적 의미론 주어지면 큰 단계의 의미론 정의 할 수 있습니다 . 다시 이건 조금 무의미합니다.[[⋅]]E⇓[[⋅]]

운영상 말하기, 작은 단계 의미는 해당 언어에 대한 통역사가 수행하는 각 작업을 보는 것에 해당합니다. 큰 단계 의미론은 결과 값만 봅니다. 명칭 의미론은 컴퓨터에서 일어나는 일과 관련이 있거나 없을 수있는 수학적 해석을 살펴 봅니다.

작은 단계 의미론이 가장 명백합니다. 비 종료 프로그램에 대한 유용한 정보를 명확하게 제공합니다. 보다 일반적으로 프로그램의 동작에 대한 자세한 정보를 제공합니다.

Dentational semantics는 구문 구조를 임의의 수학적 객체로 변환합니다. 과학자가 원하는 것을 표현할 수 있지만 (표현의 표현을 가능한 모든 축소 체인으로 정의 할 수 있음) 복잡성을 추가해야합니다. 표현식이 정확히 어떻게 평가되는지와 같은 세부 사항을 추상화하려고 할 때 사용됩니다.

큰 단계 의미론은 중간에 있습니다. 평가의 세부 사항은 추상화하지만 결과의 구문 적 특성은 유지합니다. 일반적 개념은 기초적인 작은 단계 의미가있을 때 " 간결하게 표현하는 방법으로 사용됩니다. ”는“ ”으로 존재합니다. 이러한 구성에서는 개념이 매우 다르지만 (하나는 개별 계산 단계와 비 종료 프로그램에 대해 이야기 할 수 있지만, 다른 것은 그렇지 않습니다),이 경우 정의는 매우 유사하게 보입니다. 큰 단계 의미는 기본적으로 "if and… 및 및∃(e1,…,en),e→e1→…en and ∄e′,en→e′e⇓ene1→∗e2en→∗vv값은 ”입니다.e1⇓v


나는 또한 이것을 배우고 있지만, 당신이 대답하기 위해 당신이 분명히하고 싶다고 말한 것에 문제가 있습니다. "큰 단계 의미론은 중간에 있습니다." 그러나 작은 단계가 실제로 '중간'모델이 아닌가? 식을 고려하십시오 : 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.
— Timothy Swan

@TimothySwan 일반적인 산술 평가를 정의한다고 가정 할 때, 묵상 적 의미론은 C와 D를 구분하지 않습니다. 작은 단계 의미론은 . 큰 단계 의미 체계는 대 와 유사한 의미 체계와 매우 유사합니다 . 반면 큰 단계 의미론은 언어 구문의 하나 denotational 의미론이 metatheory 중 하나이지만, 구별이 간단한 예에서 표시하거나 중요하지 않다. ((2+1)+1)→3+1→4((2+1)+1)⇓3[[((2+1)+1)]]=444
— Gilles 'SO- 악마 그만'

그래서 당신이 말했을 때, "표현 적 의미론은 각 표현에"의미 "를 할당합니다." 식 자체를 고유하게 식별하는 것이 아니라 일종의 평가 독립적 의미를 의미합니까? 큰 단계와 의미 의미의 차이점을 명확하게 보여주는 간단한 예를 제공 할 수 있습니까? 또한, 설명하십시오 3에서 ((2+1)+1)⇓3'큰 단계는'반드시 그에게 직접지도하지 않을 약간의 최종 모든 값은,하지만 인스턴스에서 'denotational'나는 같은데요? 차이점은 (a + 1)포함 된 환경에 따라 컨텍스트와 관련 이 a있습니까?
— Timothy Swan

@TimothySwan 부작용, 비결정론 및 기능이없는 한, 표현의 의미 적 의미는 평가하는 값입니다. 비결정론은 큰 단계와 덴탈 사이의 차이를 설명하는 좋은 방법입니다. 표현식의 표시는 다음과 같은 값을 가질 수 있습니다. 이지만 큰 단계 의미론에는 여러 가지 허용 가능한 판단이 있습니다. 및 and ... 오타였습니다. [[rand(1..n)]]={1,2,…,n}rand(1..n)⇓1rand(1..n)⇓23
— Gilles 'SO- 악마 그만'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.