추상화란 실제적이고 구체적인 개념들을 요약하여 보다 높은 수준의 개념을 유도하는 과정이다.
데이터 추상화(data abstraction)는 저수준의 데이터나 자료형들을 요약하고 추상화하여 보다 고차원의 새로운 자료형 또는 자료구조를 만드는 과정을 의미한다.
제어란?
제어와 관련된 문장들?
if
, while
등제어 추상화(control abstraction)는 실행 흐름을 나타내는 저수준 명령어들을 요약하고 추상화하여 보다 높은 수준의 제어구조를 만드는 과정을 의미
X = X + 1
> 이 대입문은 어떻게 만들어졌을까
LOAD R1, X
ADD R1, 1
STORE R1, X
while (condition) {
statements
}
데이터 추상화와 제어 추상화를 하나로 통합한다면 어떨까?
추상 자료형(abstract data type)은 데이터(자료구조)와 관련된 연산(프로시저)들을 한데 묶어 캡슐화하여 정의한 자료형
ex) 스택 자료형
새로운 프로그래밍 언어를 만든다면 무엇을 정의해야 할까?
어휘구조(lexical structure)는 그 언어에서 사용하는 단어의 구조, 철자법 등을 의미
ex) 식별자(변수나 함수 이름)은 어떻게 구성해야 하는가?
구문법(syntax)은 말 그대로 문장을 구성하는 방법 의미, 문법을 이용해서 기술 가능
BNF(Backus-Naur Form) 방법 많이 사용
의미론(semantics)은 작성된 문장 혹은 프로그램의 의미를 정하는 것.
자연어를 이용하여 기술하거나 수학적으로 기술할 수 있다
프로그래밍 언어를 구현하는 방법 : 컴파일하거나 해석(interpret)하는 것
인터프리터는 소스 프로그램을 입력받아 구문법에 맞게 작성되었는지 검사하고 그 의미를 파악하여 의미에 맞게 동작하도록 해석
컴파일러는 소스 프로그램을 입력 받아 구문법에 맞게 작성되었는지 검사하고 그 의미를 파악하여 그 의미에 맞게 동작하도록 기계어 명령어들로 번역