인터프리터(interpreter)
- 프로그래밍 언어의 소스 코드를 바로 실행하는 환경 또는 프로그램
- 고급 언어로 작성된 원시코드 명령어들을 한 번에 한 줄씩 읽어들여서 중간 형태로 번역한 후 실행한다.
- 한 줄씩 번역하는 방식이기에 컴파일러에 비해 속도는 느리다.
- 수정해서 실행시키면 끝이기에 프로그램 수정이 간단다.
- MATLAB, Python이 대표적인 인터프리터 언어이다.
컴파일러(compiler)
- 특정 프로그래밍 언어를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램
- 보통은 고급 언어에서 저급 언어로 바꾸는 데 사용된다.
- 원래의 코드인 소스 코드(원시 코드)를 목적 코드로 옮기는 과정을 컴파일이라고 한다.
- 실용적인 면에서 컴파일하는 과정인 개선된 면이 있어야 한다는 조건이 있다.
- 실행 단계는 다음과 같다.
- 구문 분석 : 소스 코드 파일을 읽어 문법요소 단위로 자르고 해석하여 추상 구문 트리를 생성한다. 이 단계에서 문법이 맞지 않는 경우 사용자에게 알려준다.
- 최적화 : 추상 구문 트리를 분석해 최적화를 수행한다. 상수 표현식 계산, 루프 풀기 등이 이 단계에서 수행된다.
- 코드 생성 : 최적화된 구문 트리로부터 목적 코드를 생성한다.
- 링킹 : 목적 코드가 기계어인 경우, 여러 라이브러리 목적 코드를 묶어 하나의 실행 파일을 생성해야 한다. 이 때 이 과정을 링커에 의해 수행된다.
- 수정이 용이하지 않다는 단점이 있다. 수정 사항이 생길 경우 다시 컴파일을 해야 하기 때문에 큰 프로그램의 경우 많은 시간이 걸린다.
- C, JAVA 등이 대표적으로 컴파일러를 쓰는 언어이다.