[프로그래밍 언어론] 컴파일러와 인터프리터의 차이점

컴파일러(Compiler)란?

컴파일러는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다.
(출처:https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC) 

컴파일 과정

 

컴파일러는 high-level 프로그래밍 언어(ex: C언어)를 low-level 언어(ex: 어셈블리어)로 바꾸어 실행 프로그램을 만들기 위해 사용된다. 원래의 문서를 소스코드 혹은 원시 코드라고 부르고, 출력된 문서를 목적 코드라고 부른다. 

원시 코드에서 목적 코드로 옮기는 과정을 컴파일이라고 한다. 

인터프리터(Interpreter)란?

인터프리터는 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다.
(출처:https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0)

인터프리터는 high-level 프로그래밍 언어로 작성된 원시 코드 명령어들을 한 번에 한 줄씩 읽어 들여서 실행하는 프로그램이다. 컴파일러는 high-level 언어를 직접 low-level 언어로 번역하지만, 인터프리터는 중간 형태로 번역하여 그것을 실행한다. 

 

인터프리터는 한번에 한 줄씩 명령어를 읽어 들여서 실행하기 때문에 컴파일된 프로그램보다 실행이 느리다. 

하지만 인터프리터는 컴파일 단계를 거치지 않기 때문에 컴파일 시간을 단축할 수 있다는 장점이 있다. 

 

컴파일러는 한번 컴파일을 완료하면, 이후엔 번역을 하지 않고 바로 실행할 수 있다. 

하지만 인터프리터는 매번 실행할 때마다 새로 번역을 해야 한다. 

 

그럼 인터프리터를 사용하는 이유는 무엇일까?

 

컴파일러는 플랫폼(하드웨어)에 종속적이지만, 인터프리터는 모든 플랫폼(하드웨어)에 종속되지 않는다. 따라서 어떤 환경에서든 인터프리터 언어로 작성된 프로그램을 실행할 수 있게 된다. 또한 인터프리터는 한 줄 한 줄 읽어서 작동하면서 일정 부분에서 오류가 발생하면 이후 코드는 읽지 않는다. 이는 보안 관점에서 유리할 수 있다. 

반응형

댓글

Designed by JB FACTORY