Compiler(컴파일러)
언어 번역 프로그램
컴파일러는 고급 프로그래밍 언어를 실행 프로그램으로 만들기 위해
저급 프로그래밍 언어(어셈블리 언어, object 코드, machine code)로 바꾸는 데 사용된다.
저급 프로그래밍 언어는 컴퓨터 언어에 가까울수록 저급 프로그래밍 언어이다
가장 저급의 언어는 이것이다
0001110101010111010101010101010101 10101110001101010011101011101011011 |
---|
컴퓨터가 바로 알아들을 수 있는 기계어
사람의 언어와 가까워질 수록 고급 프로그래밍 언어를 뜻하고,
수준이 높다 낮다의 뜻이 아님을 알아두자
소스 코드를 컴파일하는 이유는
사람에게 이해하기 쉬운 형태의 고수준 언어로부터 실행 가능한 기계어 프로그램을 만들기 위해서이다.
Interpreter(인터프리터)
고급 언어로 작성된 명령어들을 한번에 한 줄씩 읽어 들여서 실행하는 프로그램 or 환경
- 소스 코드를 직접 실행
- 소스 코드를 효율적인 다른 중간 코드로 변환하고 변환한 것을 바로 실행
- 인터프리터 시스템 일부인 컴파일러가 만든, 미리 컴파일된 저장 코드의 실행을 호출
컴파일러와 인터프리터의 차이
컴파일러와 인터프리터의 차이는
컴파일러는 개발할 때 코드의 길이가 길 때 시간이 엄청나게 오래 들어간다
개발자가 프로그램이 잘 돌아가는지 실행을 해볼 때마다 코드 전체를 번역해야 하기 때문이다
대신 실행 할 때에 번역된 기계어를 배포하고 실행하기 때문에 번역 단계를 거칠 필요가 없어 실행 속도가 빠르다
이와 달리 인터프리터는 고급 명령어들을 중간 형태로 번역한 다음, 실행한다.
그래서 한줄씩 바로바로 실행하기 때문에 인터프리터는 고급 프로그램을 즉시 실행시킬 수 있다.
대신 배포했을 때에 번역된 기계어를 배포하지 않고 한 줄씩 실행하기 때문에 실행 속도는 컴파일러에 비해 느리다
(컴파일러 인터프리터 둘다 빠른데 상대적으로 컴파일러가 더 빠르다로 받아들이면 좋겠다)
이런 이유 때문에, 인터프리터는 종종 프로그램의 개발단계에서 사용되는데
그것은 프로그래머가 한번에 적은 양의 내용을 추가하고 그것을 빠르게 테스트 해보길 원하기 때문이다.
이 외에도 인터프리터를 이용하면 프로그래밍을 대화식으로 할 수 있기 때문에,
학생들의 교육용으로 사용되는 경우도 많다.