번역기 : 한 프로그래밍 언어로 작성된 프로그램을 입력으로 받아 그와 동등한 의미를 갖는 다른 프로그래밍 언어로 된 프로그램을 출력하여 주는 시스템 프로그램
- 이때 입력되는 프로그램을 소스 프로그램이라 하고 이 프로그램을 기술한 언어를 소스 언어라 함
- 출력되는 프로그램을 목적 프로그램이라 하고 이 프로그램을 기술한 언어를 목적 언어(objective language 또는 target language)라 함
만일 소스 언어가 파스칼이나 C 언어와 같은 고급 언어이고 목적 언어가 어셈블리어나 기계어일 경우, 이 번역기를 컴파일러라 한다.다음은 소스 프로그램이 컴파일러를 통해 수행되는 과정이다.
[그림1.1]
- 소스 프로그램이 일단 실행 가능한 프로그램으로 바뀌면 소스 프로그램을 수정하지 않은 한 필요할 때마다 반복 실행할 수 있다.
- 로더의 출력인 실행 가능한 프로그램(executable program)을 일반적으로 로드 모듈이라 부르며 주 기억 장치의 사용자 영역에 적재되어 운영 체제와 실행 환경의 도움을 받아 실행되어 결과를 출력한다.
크로스 컴파일러 : 소스 프로그램을 컴파일러가 실행되고 있는 기계에 대한 기계어로 번역하는 것이 아니라 다른 기종에 대한 기계어로 번역하는 컴파일러
다음은 A 컴퓨터에서 작동하는 컴파일러가 B 컴퓨터를 위한 실행 코드르 생성하는 경우를 보여준다.
- 크로스 컴파일러의 출력 프로그램을 실행하기 위해서는 그 기종으로 프로그램을 가져가서 실행시키거나 또는 그 기종에 대한 코드 인터프리터(또는 에뮬레이터)가 있어야 한다.
- 주로 새로운 기종에 필요한 컴파일러를 설치할 때 사용하는 기술이다.
어셈블러 assembler : 어셈블리 언어로 쓰여진 프로그램을 입력으로 받아 기계어 프로그램으로 바꾸어 주는 번역기
인터프리터 : 어떠한 번역기들은 소스 언어를 특수한 형태의 중간 언어로 변환하는데, 인터프리터는 이러한 중간 언어를 입력으로 받아 목적 언어로 변환하지 않고 직접 실행해서 그 결과를 출력해주는 프로그램
다음은 인터프리터의 기능이다.
고급 언어로 쓰여진 프로그램의 의미를 실행하는데 있어서
- 컴파일러 : 그와 동등한 의미를 갖는 실행 프로그램으로 바꾸어 그 프로그램을 실행함으로써 결과를 얻음
- 인터프리터 : 소스 프로그램의 의미를 직접 실행하여 결과를 얻음
소스 프로그램의 수정 없이 계속 반복 실행하는 운용 시스템에서는 컴파일러가 효율적이며, 개발 시스템이나 교육용 시스템에서는 인터프리터가 더 능률적
프리프로세서/전처리기 : 프로그래밍 언어에 유용한 기능들을 추가시킴으로써 언어를 확장, 이 경우 프로그래밍 언어를 프리프로세서의 기본 언어라 부름
- 프리프로세서의 지시문이 모두 처리되어 확장된 프로그램은 기본 언어에 대한 언어 번역기를 불러 번역됨
다음은 프리프로세서 지시문이 포함된 소스 프로그램이 처리되는 과정이다.
프리프로세서는 기본 언어에 다음과 같은 기능들을 추가시킨다.
1) 매크로 체제, 유사한 소스 코드를 매크로로 정의하고 필요할 때마다 확장하여 프로그래머의 생산성 증가
2) 컴파일 시간에 필요한 컴파일 시간 라이브러리들을 포함, 이렇게 포함된 라이브러리들은 소스 프로그램과 함께 하나의 프로그램으로 컴파일됨
3) 조건부 컴파일(conditional compile), 조건에 따라 소스 프로그램의 일부분을 선택적으로 삽입 또는 삭제할 수 있는 기능, 서로 조금씩 다른 기능을 갖는 프로그램들을 하나의 파일에 프로그래밍 할 수 있음
다음은 여러 가지 번역기들의 기능이다.
[그림1.5]