본문 바로가기
TIL

인터프리터와 컴파일러

by Hyeongjun_Ham 2023. 4. 12.

먼저 인터프리터와 컴파일러에 대해 간단히 알아보고 공통점 및 차이점을 알아보자.

인터프리터

 

인터프리터는 프로그래밍 언어를 한 줄씩 읽어들이고 실행하면서 해석하는 프로그램입니다.

즉, 소스 코드를 직접 실행하여 결과를 출력하는 방식으로 작동합니다.

ex) Python, R, JavaScript

 

컴파일러

컴파일러(Compiler)는 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 번역하는 프로그램입니다.

즉, 개발자가 작성한 고급 언어 코드를 실행 가능한 기계어 코드로 변환하는 과정을 수행합니다.

ex) C, C++, Go

 

인터프리터와 컴파일러는 모두 프로그래밍 언어를 실행 가능한 형태로 변환하는 도구입니다.

 

둘은 다음과 같은 공통점을 가지고 있습니다.

  1. 프로그래밍 언어를 실행 가능한 형태로 변환한다.
  2. 구문 오류 및 기타 오류를 확인하고 보고한다.
  3. 프로그램을 실행하고 결과를 출력한다.

 

차이점은 다음과 같습니다.

 

  1. 언어 변환 방식
    • 인터프리터는 프로그램을 한 줄씩 읽어들이고 실행하면서 해석합니다.
    • 반면에 컴파일러는 프로그램 전체를 분석하여 기계어로 변환하고 이를 실행합니다.
  2. 실행 시점
    • 인터프리터는 프로그램을 실행하기 전에 직접 변환을 수행하며,
    • 컴파일러는 먼저 프로그램 전체를 변환하여 실행 가능한 파일로 만듭니다.
  3. 속도
    • 컴파일러가 프로그램을 먼저 변환하므로 실행 속도가 빠릅니다.
    • 반면에 인터프리터는 실행할 때마다 변환을 수행하므로 실행 속도가 느릴 수 있습니다.
  4. 디버깅
    • 인터프리터는 프로그램을 한 줄씩 실행하기 때문에 디버깅이 쉽습니다.
    • 하지만 컴파일러는 실행 파일을 생성한 후 디버깅을 해야하기 때문에 디버깅이 상대적으로 어렵습니다.
  5. 이식성
    • 인터프리터는 운영체제나 하드웨어에 큰 영향을 받지 않기 때문에 이식성이 높습니다.
    • 반면에 컴파일러는 실행 파일을 생성하기 때문에 운영체제나 하드웨어에 따라 다른 실행 파일이 필요합니다.

 

 

그럼 Java는??

컴파일러와 인터프리터의 장점을 같이 가져와서 사용한다.

이렇듯 혼용하여 사용하는 경우도 있다.

 

 

 

출처

 

https://losskatsu.github.io/os-kernel/compiler-interpreter/#1-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%ACcompiler

 

[리눅스] 컴파일러 vs 인터프리터 차이

[리눅스] 컴파일러 vs 인터프리터 차이

losskatsu.github.io