컴파일 언어와 인터프리터 언어

컴파일 방식과 인터프리터 방식은 소스 코드가 실행되는 방식에 따른 구분입니다.

컴파일러와 인터프리터에 대해 본격적으로 알아보기 전에 대략적인 차이는 다음과 같습니다.

항목 컴파일 언어 인터프리터 언어
실행 방식 전체 코드를 미리 변환 후 실행 실행 시점에 해석 및 실행
결과물 기계어 또는 바이트코드 생성 일반적으로 별도 실행 파일이 없음
오류 처리 실행 전 발견 실행 중 발견
실행 속도 빠름 상대적으로 느림

현대 프로그래밍 언어는 컴파일과 인터프리터 방식을 혼합하여 사용하는 경우가 많습니다.
예를 들어, Java는 소스 코드를 바이트코드로 컴파일한 후 JVM에서 인터프리트 또는 JIT 컴파일을 통해 실행합니다.
JavaScript는 실행 중 자주 사용되는 코드를 JIT(Just-In-Time) 컴파일하여 성능을 최적화합니다.

다음 사이트에서 컴파일과 인터프리터 과정을 좀 더 자세하게 알아볼 수 있습니다.
godbolt

컴파일

컴파일은 컴파일 언어로 작성된 소스 코드를 컴파일러가 기계어 또는 목적 코드(Object Code)로 한 번에 변환하는 과정입니다.

컴파일 과정은 일반적으로 다음과 같이 이루어집니다.

  1. 전처리 (Preprocessing)
  2. 컴파일 (Compilation)
  3. 어셈블 (Assembly)
  4. 링크 (Linking)

컴파일에 대한 자세한 설명은 [ComputerScience] 빌드에서 볼 수 있습니다.

컴파일 과정 중 오류가 발생하면 실행 파일이 생성되지 않으며, 프로그램은 실행되지 않습니다.

컴파일이 완료되면 실행 파일이 생성되므로, 실행 속도가 빠른 특징이 있습니다.

인터프리터

인터프리터는 소스 코드를 한 줄씩 해석하면서 즉시 실행하는 방식입니다.

즉, 전체 코드를 미리 변환하지 않고, 실행 시점에 코드를 읽고 처리합니다.

이 방식은 다음과 같은 특징을 가집니다.

  • 소스 코드를 한 줄씩 해석하며 실행합니다.
  • 오류가 발생하면 해당 시점에서 실행이 중단되지만, 이전 코드는 정상적으로 실행됩니다.
  • 별도의 실행 파일을 생성하지 않습니다.
  • 컴파일 방식에 비해 실행 속도가 상대적으로 느립니다.

ComputerScience 카테고리 내 다른 글 보러가기

댓글남기기