[CS] 컴파일러, 인터프리터

SungWoo·2024년 11월 30일
0

CS

목록 보기
3/9
post-thumbnail

컴파일러와 인터프리터

컴파일러와 인터프리터는 모두 고레벨 언어(high-level programming language)를 기계어로 변환한다.

  • 컴파일러는 전체 소스 코드(고레벨 언어로 작성)를 링커를 통해 한 번에 기계어로 된 *목적 파일로 변환하여 메모리에 적재한다.
  • 인터프리터는 소스 코드를 한 줄씩 *중간 코드로 변환하고 실행한다.

※ 목적파일(.obj) : 컴파일러가 소스 파일을 번역하면 만들어지는 파일
※ 실행파일(.exe) : 컴퓨터에서 바로 실행할 수 있는 파일, 하나 이상의 목적 파일을 링크하여 만든다. 실행 파일의 확장자는 OS(운영체제)마다 다르다.
※ 중간 코드(intermediate code) : 사람이 프로그래밍한 프로그램과 CPU에서 사용할 수 있는 기계어의 중간 상태의 코드

Compiler(컴파일러)

컴파일러는 소스 코드 전체를 바로 기계어로 변환

  • 런타임 이전에 프로그래밍 언어 전체를 한 번에 번역하고 *실행 파일을 생성한다.
  • 실행 파일이 있기 때문에 메모리를 사용한다.
  • 따라서 번역 속도는 인터프리터보다 느리지만, 실행 파일이 있으므로 실행 속도는 인터프리터보다 빠르다.
  • 코드 중 한 곳에 에러가 발생하면 전체가 실행되지 않는다.
  • 런타임 이전에 실행 파일이 만들어지기 때문에 OS와 빌드 환경에 종속적이다. 그러므로 호환되는 환경을 구축해야 한다.

Interpreter(인터프리터)

고레벨 언어를 중간 코드로 변환하고 이를 각 행마다 실행한다.

  • 런타임에 코드를 한 줄씩 읽고 실행하며, 실행 파일은 만들지 않는다.
  • 실행 파일이 없으므로 별도의 메모리 할당이 필요 없다.
  • 따라서 번역 속도는 컴파일러보다 빠르지만, 실행 파일이 없으므로 실행 속도는 컴파일러보다 느리다.
  • 코드 중 한 곳에 에러가 발생하더라도 그 전까지는 실행된다.
  • 런타임에 코드를 실행하기 때문에 실시간으로 코드를 수정하거나 디버깅할 수 있다. 다양한 시스템에서 실행이 가능하다.

장단점 정리

컴파일러

  • 장점
    • 컴파일된 실행 파일은 빠른 실행 속도로 동작하여 효율적이다.
    • 기계어로 변환되어 프로그램 코드가 보호된다.
    • 문법적 오류를 컴파일 단계에서 미리 발견할 수 있다.
  • 단점
    • 코드 수정 시 전체를 다시 컴파일해야 한다.
    • 목적 파일 생성 시 메모리 사용이 필요하다.
    • 전체 소스 파일을 컴파일하므로 용량이 크며, 잦은 수정이 필요한 경우 비효율적이다.
    • 전체 소스 파일을 한 번에 번역하므로 컴파일 시간이 오래 걸린다.
    • 특정 시스템용으로 컴파일된 실행 파일은 다른 시스템과의 호환성이 낮다.

인터프리터

  • 장점
    • 별도의 메모리 할당이 필요 없다.
    • 다양한 시스템에서 실행이 가능하다.
    • 코드 수정이 간편하며 즉시 실행할 수 있다.
  • 단점
    • 매 실행마다 코드 해석이 필요하여, 컴파일러 언어에 비해 실행 속도가 상대적으로 느리다.
    • 매 실행 시마다 소스코드를 해석해야 하므로, 대규모 프로그램이나 복잡한 연산을 수행할 때는 성능 저하가 발생할 수 있다.
    • 소스 코드가 중간 코드 형태로 노출될 수 있다.
profile
어제보다 더 나은

0개의 댓글