프로그래밍/TIL(Today I Learned)

5강 프로그래밍 언어 구현 기법 및 변수와 바인딩

가라멜 2018. 10. 3. 12:29
반응형

1. 프로그래밍 언어 구현 기법

- 의미 : 고급언어로 작성된 프로그램을 실제 컴퓨터에서 실행시킬 수 있는 기계어로 만들어야 함

- 컴파일 기법 : 주어진 고급 프로그래밍 언어로 작성된 프로그램을 실제 주어진 컴퓨터의 기계어로 번역하여 동등한 의미의 기계어 프로그램을 만들어 실행시키는 방법

- 컴파일 기법 번역기

- 컴파일러 : 고급언어를 저급언어로 만들어 주는 번역기, 일반적으로 저급언어는 준 기계어 형태

- 어셈블러 : 어셈블리 언어를 저급언어로 만들어주는 번역기

- 링커 : 재배치 형태의 기계어로 구성된 여러 개의 프로그램을 묶어서 어느정도 실행가능한 기계어로 번역

- 로더 : 로드 모듈의 기계어 프로그램을 실행 가능한 기계어로 번역하여 주기억장치에 적재

- 프리프로세서 : 원시 언어와 목적 언어가 모두 고급 언어인 번역기

- 인터프리트 기법 : 고급 언어를 기계어로 취급하여, 이를 실행할 수 있는 고급언어 기계를 소프트웨어로 시뮬레이션하여 구성하는 방법

- 중간 코드 실행 기법 : 프로그램을 실행시키기 쉬운 형태로 번역(컴파일)한 후, 그 번역된 형태의 프로그램을 실행 시뮬레이션으로 실행(인터프리트) >> 컴파일기법 + 인터프리트기법


2. 변수

- 생성 : 선언문 또는 묵시적 선언으로 생성

- 네가지 요소 : 식별자, 자료속성의 집합, 하나 이상의 주소, 자료값

- 주소와 자료값의 관계는 변할 수 있음


3. 바인딩

- 변수의 네 가지 요소에 값을 확정하는 것 > int A = 100; > 이름 'A'에 변수라는 속성과 정수라는 자료형 속성이 연결됨

- 바인딩 시간의 종류

- 실행시간(동적 바인딩)  : 변수의 값을 확정, 자료구조에 기억장소를 할당

- 번역 시간(정적 바인딩) : 컴파일 시간, 링크 시간, 로드 시간 / 변수의 형, 자료구조의 형과 크기, 레코드의 각 항목들의 형등을                                 확정

- 언어의 구현 시간 : 정수의 자릿수, 실수의 유효 숫자 개수, 수의 기계 내에서의 표기법 등을 확정

- 언어의 정의 시간 : 혼합형 연산이 허용되는 경우, 연산해야 될 두 피연산자의 형에 따라 어떤 형의 연산을 해야 되는지를 확정