-
Semantics (의미론)에 대하여컴공지식/프로그래밍언어론 2024. 9. 7. 01:24
프로그래밍 언어에서 'Semantics'는 코드가 어떻게 의미를 갖는지, 즉 코드가 실제로 무엇을 하고 어떻게 동작하는지를 정의하는 거다.
몇 가지 의미론을 살펴보자
Mathematical techniques (수학적 기법들)
일단 수학적 방법으로 프로그래밍 언어의 의미를 정의할 수 있는데, 그 대표적인 방법들은 다음과 같다.
Denotational semantics (표상 의미론): 이건 프로그램의 각 부분을 수학적인 함수로 표현하는 방식이다. 즉, 코드가 어떤 입력을 받아서 어떤 출력을 내는지, 그 관계를 수학적으로 정의한다.
Operational semantics (작동 의미론): 이건 프로그램이 실제로 어떻게 실행되는지를 설명하는 방식이다. 한 단계 한 단계의 실행 과정을 정의하는 거라고 보면 된다.
Axiomatic semantics (공리적 의미론): 이건 프로그램이 어떤 속성을 만족하는지 수학적인 논리로 증명하는 방법이다. 코드가 어떤 논리적 특성을 충족하는지를 보증하는 거다. 근데 이건 좀 너무 고급이라 머리가 터질 수도 있기 때문에.. 나중에 기회가 되면 다루겠다..
수학접 기법들 다음으로는 Interpreter semantics (인터프리터 의미론)이 있는데
간단히 말하면, 언어를 설명하기 위해선 그 언어의 인터프리터를 작성하라는 거다.
인터프리터는 코드를 한 줄씩 읽고 그걸 실행하는 프로그램이니까, 인터프리터를 작성하면서 그 언어의 의미를 자연스럽게 정의할 수 있다는 거다.
마치 이런거다.
인터프리터가 프로그램 코드를 한 줄씩 읽으면서, "이 코드는 더하기를 의미해"라고 설명하고, 바로 그 연산을 수행한다.
즉, 언어를 사용하는 순간 바로 그 의미를 실행하면서 배우는 거다.
'컴공지식 > 프로그래밍언어론' 카테고리의 다른 글
Parser란? (0) 2024.09.07 BNF (Backus-Naur Form)를 이용한 산술 표현에 대한 문법 (1) 2024.09.07 문법(Syntax)에 대하여 (0) 2024.09.07 프로그래밍 언어의 구성 (0) 2024.09.07 OOP(객체 지향 프로그래밍)에서의 병렬 처리와 멀티스레딩 (0) 2024.09.02