[Programming Languages] 1. 서론

💻 1.1 프로그래밍 언어란 무엇일까?

주요 이론

  • 구문법(syntax) : 문장을 구성하는 방법
  • 의미론(semantics) : 작성된 문장의 의미 결정
  • 타입 시스템(type system) : 타입의 올바른 사용법

💻 1.3 프로그래밍 언어의 역사


💻 1.4 추상화와 명령형 언어의 발전

추상화란 무엇인가?

  • 순차적 명령어 실행
  • 메모리 위치를 나타내는 변수 사용
  • 대입문을 사용한 변수 값 변경

추상화란 실제적이고 구체적인 개념들을 요약하여 보다 높은 수준의 개념을 유도하는 과정이다.

데이터 추상화

데이터 추상화(data abstraction)는 저수준의 데이터나 자료형들을 요약하고 추상화하여 보다 고차원의 새로운 자료형 또는 자료구조를 만드는 과정을 의미한다.

제어 추상화

제어란?

  • 프로그램 내의 명령어의 실행 순서 의미, 명령어 실행 순서 제어

제어와 관련된 문장들?

  • if, while

제어 추상화(control abstraction)는 실행 흐름을 나타내는 저수준 명령어들을 요약하고 추상화하여 보다 높은 수준의 제어구조를 만드는 과정을 의미

X = X + 1 > 이 대입문은 어떻게 만들어졌을까

LOAD R1, X
ADD  R1, 1
STORE R1, X
  • 레지스터 R1이 계산을 위한 레지스터로 사용

  • 위 사진에서 코드가 수행하는 일은 조건 condition이 참인 동안 statements 부분 부분을 반복
while (condition) {
	statements
}

프로시저 추상화

  • A부터 실행을 시작하여 GOTO B를 만나면 B 이하 부분을 실행하고 다시 되돌아옴
  • 여기에서 레이블 B 이하의 일련의 계산 과정을 하나의 이름으로 요약해서 정의 ➡ 함수 or 프로시저 정의
  • GOTO B는 함수 호출, GOTO C는 함수로부터의 리턴

제어 추상화의 장점

  • 프로그래밍 복잡도 ⬇

추상 자료형

데이터 추상화와 제어 추상화를 하나로 통합한다면 어떨까?

추상 자료형(abstract data type)은 데이터(자료구조)와 관련된 연산(프로시저)들을 한데 묶어 캡슐화하여 정의한 자료형

ex) 스택 자료형

💻 1.5 프로그래밍 언어의 정의 및 구현

프로그래밍 언어의 정의 방법

새로운 프로그래밍 언어를 만든다면 무엇을 정의해야 할까?

  • 구성 요소들을 이용해 문장 혹은 프로그램을 구성하는 방법 정의
  • 구문법(syntax) : 문장 혹은 프로그램을 쓰는 방법 정의
  • 의미론(semantics) : 구문법에 맞춰 작성된 문장이나 프로그램이 어떤 의미를 갖는지 정의

어휘구조(lexical structure)는 그 언어에서 사용하는 단어의 구조, 철자법 등을 의미

ex) 식별자(변수나 함수 이름)은 어떻게 구성해야 하는가?

구문법(syntax)은 말 그대로 문장을 구성하는 방법 의미, 문법을 이용해서 기술 가능

BNF(Backus-Naur Form) 방법 많이 사용

의미론(semantics)은 작성된 문장 혹은 프로그램의 의미를 정하는 것.
자연어를 이용하여 기술하거나 수학적으로 기술할 수 있다

프로그래밍 언어 구현

프로그래밍 언어를 구현하는 방법 : 컴파일하거나 해석(interpret)하는 것

인터프리터는 소스 프로그램을 입력받아 구문법에 맞게 작성되었는지 검사하고 그 의미를 파악하여 의미에 맞게 동작하도록 해석

컴파일러는 소스 프로그램을 입력 받아 구문법에 맞게 작성되었는지 검사하고 그 의미를 파악하여 그 의미에 맞게 동작하도록 기계어 명령어들로 번역

좋은 웹페이지 즐겨찾기