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


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×Ee0e1e2e0e1v veE,ve

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

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

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

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

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

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

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

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

@TimothySwan 일반적인 산술 평가를 정의한다고 가정 할 때, 묵상 적 의미론은 C와 D를 구분하지 않습니다. 작은 단계 의미론은 . 큰 단계 의미 체계는 대 와 유사한 의미 체계와 매우 유사합니다 . 반면 큰 단계 의미론은 언어 구문의 하나 denotational 의미론이 metatheory 중 하나이지만, 구별이 간단한 예에서 표시하거나 중요하지 않다. ((2+1)+1)3+14((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.