컴공지식/프로그래밍언어론

인터프리터와 컴파일러의 차이

개강한 공대생 2024. 8. 31. 17:21

인터프리터는 프로그램의 소스 코드를 한 줄씩 읽고, 이를 즉시 실행하여 결과를 출력한다.

프로그램 전체를 한 번에 번역하는 대신, 한 줄씩 해석하면서 실행하기 때문에 실행 속도가 느릴 수 있지만, 코드 작성 후 빠르게 테스트할 수 있다는 장점이 있다.

 

예시

bash: 셸 스크립트를 실행할 때 사용되는 인터프리터

python: 파이썬 언어로 작성된 코드를 한 줄씩 실행

scala: Scala도 인터프리터 방식으로 실행할 수 있다. 

Search engine (Google, Naver,...): 검색 엔진도 일종의 인터프리터로 볼 수 있는데, 사용자가 입력한 검색어를 해석하고 이에 맞는 결과를 즉시 반환하기 때문이다. 이 부분은 약간의 비유적인 표현이다.

 

컴파일러는 프로그램의 소스 코드를 한 번에 읽어들여, 이를 기계어로 변환한 후 바이너리 파일을 생성한다.

이 파일은 나중에 별도의 실행 단계에서 바로 실행할 수 있다.

컴파일 과정은 시간이 걸리지만, 한 번 컴파일된 프로그램은 실행 속도가 빠르다.

 

예시

gcc: C 언어 프로그램을 컴파일하여 실행 파일을 생성

javac: 자바 프로그램을 컴파일하여 바이트코드(.class 파일)를 생성

scalac: Scala 프로그램을 컴파일하여 바이트코드를 생성, 이 바이트코드는 JVM(Java Virtual Machine)에서 실행된다.

 

정리하자면

인터프리터는 코드를 한 줄씩 즉시 실행하는 반면, 컴파일러는 프로그램 전체를 한 번에 번역하여 실행 가능한 파일로 변환한다.

Scala는 인터프리터와 컴파일러 둘 다 사용할 수 있는 언어로, 간단한 테스트나 실습에는 인터프리터를, 실제 배포할 프로그램에는 컴파일러를 사용하는 경우가 많다.