1. 소개

고급 언어로 작성한 응용 프로그램을 컴퓨터에서 실행 가능하도록 목적 프로그램으로 바꾸어주는 도구이다. 예를 들어 C++ 코드를 기계어로 바꾼다.

  • 원시 코드 : 소스 코, 원래 문서
  • 목적 코드 : 출력된 문서

2. 개념

2-1. 어셈블러 (Assembler)

기호 언어로 작성한 프로그램을 컴퓨터가 해독 가능한 기계어로 바꾸는 도구

2-2. 인터프리터 (Interpreter)

고급 언어의 원시 프로그램을 메모리에 적재한 후 하나씩 꺼내어 중간어로 바꾸어 실행하는 도구

2-3. 링커 (Linker)

목적 프로그램을 표준 라이브러리 함수 코드에 연결하는 도구, 목적 프로그램에 대해 재할당될 프로그램 생성

2-4. 로더 (Loader)

컴퓨터 내부로 정보를 가져오거나 디스크 등 저장 장치로부터 메모리에 적재하는 도구

3. 컴파일러와 인터프리터 비교

  • 컴파일러는 전체 프로그램을 한번에 번역하지만 인터프리터는 한줄씩 번역한다.
  • 컴파일러는 목적 프로그램을 생성하지만 인터프리터는 생성하지 않는다.
  • 컴파일러는 실행 속도가 빠르지만 인터프리터는 상대적으로 느리다.
  • 컴파일러는 번역 속도가 느리지만 인터프리터는 상대적으로 빠르다.
  • 컴파일러의 대표 언어는 C, 코볼, 포트란 등이며 인터프리터의 대표 언어는 BASIC, LISP 등이다. (하지만 모든 BASIC이 인터프리터 방식인 것은 아니다. 예를 들어 퀵베이직 같은 경우는 컴파일러를 내장하고 있다)
  • 현 시대에는 인터프리터가 JIT 컴파일 등의 기술을 통해 리얼 타임으로 컴파일을 수행하기도 한다. 컴파일러와 인터프리터의 경계를 나누기가 점점 모호해진다.