컴맹의 CS study
Denotational Semantics 본문
[본문은 출처의 article을 요약한 것]
언어를 추상화 하기 위해서 Syntax와 Semantic으로 나누어 생각.
Syntax는 심볼이 배치되는 구조, 틀, 형식
Semantic은 Syntax에 따라 작성된 것을 이해하는 방법, 의미, 흐름
하나의 프로그램에서 Syntax는 결국 => 프로그래밍 언어
이것보다 수학적인 추상화를 위한 방법이 있나? => Denotational Semantic 이 필요.
Denotational semantic의 방식은 1) Compositional Semantic과 2) Fixpoint Semantic이 있음.
1) Compositional Semantic의 경우는 부분을 통하여 의미를 서술하는 방식
[1+2]=[3] 에서 [1]+[2] = [3]이 되는 듯
이때 순서문, 조건문은 Compositional semantic으로 표현이 가능하지만
While과 같은 반복문은 가능한가? NO
While E C에서
[While E C] = if [E]M != 0 then [While E C]([C]M) else M 이 되는데
의미가 자신의 내부에 있기 때문에 의미를 정의한 것이 아닌 방정식을 정의한 것이 된다.
그럼 프로그램을 수학적으로 분석하는 것은 불가능한가? NO
그럼 저 방정식의 해는 무엇인가?
예를 들어 x+2 = 5 라는 방정식에서 x=3인 것은 쉽게 대답할 수 있지만 그것은 x가 실수의 범위 내에 있을때의 이야기이다.
x가 음수라면 해는 없다.
While의 경우에 문제를 풀 수 있는 Domain이 존재하는가? YES
Patrick에 따르면 모든 컴퓨터 프로그램의 해는 "의미공간이론(?)"에서 규정하는 성질의 집합 안에서 유일하게 존재하고 그것은 ~ 하다. 라고한다
의미공간(Semantic Domain)? ==> Complete Partial Order (CPO) Set
프로그램들은 이 CPO 위에서 방정식으로 표현되는 것.
CPO와 PO의 차이는 lower bound
프로그램의 원소들이 CPO에 있다고 하면 연산자는 무엇인가?
그것은, CPO->CPO인 continuous function로 정의할 수 있다
출처 - http://blog.naver.com/hw5773/220664766360
'reading' 카테고리의 다른 글
ramfs, rootfs, initramfs (0) | 2017.05.20 |
---|