Interpreter, Compile

2025. 7. 9. 01:35기타

컴퓨터는 오직 0과 1로 이루어진 기계어만 이해할 수 있기 때문에 우리가 작성한 코드를 이해할 수 없습니다.

그래서 작성한 코드를 실행시키기 위해서 기계어로 번역하는 과정이 필요합니다.

 

이 글에서는 어떻게 코드를 기계어로 번역하고 실행하는지 알아보겠습니다.


프로그램 실행의 두 가지 방식

코드를 기계어로 번역하는 방식은 두 가지가 존재합니다.

  • 컴파일(Compile): 코드를 먼저 기계어로 번역한 뒤 실행 (중간 목적 파일이 존재)
  • 인터프리터(Interpreter): 코드를 읽으면서 동시에 실행

위의 두 가지 방식이 가장 기본적인 방식입니다.

 


 

인터프리터 (Interpreter)

 

장점

  • 별도의 변환과정 없이 코드를 바로 실행 가능
    • 별도의 실행파일이 생기지 않기 때문에 메모리 절약 가능
    • 바로 결과를 확인할 수 있기 때문에 코드 수정 및 디버깅이 간단
  • 시스템 간의 이식성이 뛰어남

단점

  • 매번 코드를 해석하며 실행하기 때문에 성능이 떨어짐
  • 반복되는 코드도 모두 해석해서 실행

 


 

컴파일 (Compile)

장점

  • 이미 기계어로 변환되어 있기 때문에 실행이 빠름
  • 컴파일 시점에 코드 전체를 분석해 최적화 가능

단점

  • 코드를 수정 할 때마다 다시 컴파일해야 하므로 개발 과정이 느려질 수 있음
  • 플랫폼에 의존적이여서 운영체재별로 각각 따로 컴파일해야 함

컴파일의 2가지 방식

  • AOT (Ahead-Of-Time): 프로그램을 실행하기 전에 미리 모든 코드를 기계어로 변환해 두는 방식
  • JIT (Just-In-TIme): 프로그램이 실행되는 중에 필요한 부분을 그때그때 기계어로 변환하는 방식
    처음에는 인터프리터처럼 동작하다가 자주 사용되는 코드(핫스팟)가 발견되면 그 부분을 기계어로 컴파일해서 저장해둠.

AOT (Ahead-Of-Time)

장점

  • 이미 기계어로 모두 변환되어 있어 실행이 매우 빠름
  • 컴파일 시점에 코드 전체를 분석해 최적화할 수 있음

단점

  • 컴파일 시간이 필요
  • 플랫폼에 의존적

JIT (Just-In-TIme)

장점

  • 실제 실행 패턴을 보고 자주 쓰이는 부분을 최적화
  • AOT처럼 모든 것을 미리 컴파일하지 않으므로 시작 속도가 빠름

단점

  • 처음 실행 시 컴파일 과정이 포함될 수 있어 느릴 수 있음
  • 실행 상황에 따라서 성능이 달라지기 때문에 성능 예측이 어려움

 

 

 

 

'기타' 카테고리의 다른 글

바이브 코딩 체험기  (1) 2025.09.25
Spring Securiy ROLE_ 에러  (0) 2025.01.07
컴퓨터가 문자를 인식하는 방법 (ASCII, 유니코드)  (0) 2024.08.24
SEO, 검색 엔진 최적화  (0) 2024.06.20
해시  (0) 2024.04.11