컴파일러와 인터프리터는 사용자가 작성한 원시 프로그램(Source Program)을 기계어 형태의 목적 프로그램(Object Program)으로 변환시키는 언어 번역 프로그램이다.

>원시 프로그램(Source Program)

고급 언어나 어셈블리어로 작성된 프로그램

>저급 언어와 고급 언어, 기계어와 어셈플리어를 각각 구분 할 수 있게 하자. 저급과 고급을 나누는 기준은 기계 친화적이냐, 아니냐를 말하는 것이다.

1. 프로그래밍 언어

프로그래밍 언어는 컴퓨터를 이용하여 특정 문제를 해결하기 위한 프로그램을 작성하기 위해 사용되는 언어이다. 프로그래밍 언어는 일반적으로 저급 언어(기계어, 어셈플리어)와 고급 언어(컴파일러 언어)로 분류할 수 있다.

저급 언어

저급 언어(Low Level Language)는 기계어와 어셈블리어로 구분된다.

고급 언어

* 고급 언어(High Level Language)는 컴파일러 언어라고도 하며, 인간이 실생활에서 사용하는 자연어와 비슷한 형태 및 구조를 갖는다.

* 하드웨어에 대한 깊은 지식이 없어도 프로그램 작성과 수정이 용이하다.

* 컴퓨터가 이해할 수 있는 기계어로 번역하기 위해 컴ㅍ일러나 인터프리터가 사용된다.

* 기계어와 어셈블리어를 제외한 C, BASIC, COBOL, ALGOL 등의 언어가 고급 언어에 해당된다.

>일반적으로 고급언어와 컴파일러 언어는 같은 의미로 쓰인다.

2. 컴파일러와 인터프리터

컴파일러와 인터프리터는 고급 언어로 작성된 원시 프로그램을 목적 프로그램으로 번역하는 번역 프로그램이며, 프로그램 번역 방식에 따라 구분한다.

컴파일러

* 컴파일러는 고급 언어로 작성된 프로그램 전체를 목적 프로그램으로 번역한 후, 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성한다.

* 번역과 실행과정을 거쳐야 하기 때문에 번역 과정이 번거롭고 번역 시간이 오래 걸리지만, 한번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠르다.

* 컴파일러를 사용하는 언어에는 FORTRAN, COBOL, PASCAL, C, C++, PL/1 등이 있다.

인터프리터

* 인터프리터는 고급 언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시키는 프로그램이다.

* 프로그램이 직접 실행되므로 목적 프로그램이 생성되지 않는다.

* 줄 단위로 번역ㆍ실행되기 때문에 시분할 시스템에서 유용하며 원시 프로그램의 변화에 대한 반응이 빠르다.

* 번역 속도는 빠르지만 프로그램 실행 시 매번 번역해야 하므로 실행 속도는 느리다.

* 인터프리터를 사용하는 언어에는 BASIC, SNOBOL, LISP, APL 등이 있다.

* CPU 사용 시간의 낭비가 크다.

컴파일러와 인터프리터의 비교