우리가 작성한 코드를 컴퓨터가 알아듣기 위해서는 프로그래밍 언어를 기계어(0, 1)로 번역하는 과정이 필요한데, 그 과정을 언어에 따라 컴파일(compile) 혹은 인터프릿(interpret)이라고 하고, 각각을 실행하는 변환기를 컴파일러, 인터프리터라고 한다
컴파일을 하는 언어를 컴파일 언어,
인터프릿을 하는 언어를 인터프리터 언어 혹은 스크립트 언어라고 한다
소스 코드를 컴파일하지 않고 인터프리터로 소스코드를 한줄한줄 읽어 바로 실행하는 방식으로 동작하는 언어
Python과 Javascript와 같은 스크립트 언어는 별도의 파일 생성 없이 소스 코드가 작성될 때마다 인터프리터가 해당 코드를 기계어로 번역하고 실행한다
스크립트 언어는 컴퓨터가 코드를 실행하는 과정에서 소스 코드를 기계어로 번역하는 과정이 포함되어 있으므로 컴파일 언어에 비해 느리다
또 문법적 오류가 있든 없든 일단 실행되기 때문에 디버깅이 비교적 어렵다
하지만 문법 적 제약이 비교적 적어 작성이 비교적 쉽고, 운영체제를 신경 쓸 필요 없이 한 번만 작성해놓으면 된다는 장점이 있다
정리
- 코드를 작성함과 동시에 인터프리터가 기계어로 번역하고 실행함
- 실행 과정 상에 번역 과정이 있어 비교적 느림
- 문법적 제약이 일반적으로 적음
- 운영체제를 신경 쓸 필요 없이 한 번만 작성하면 됨
인터프리터(Interperter) 란?
프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경
소스 코드를 컴파일한 후 기계어를 CPU/메모리를 통해 읽어 실행하는 방식으로 동작하는 언어
컴파일을 하기 때문에 규모가 큰 프로그램이라면 컴파일 시간이 오래 걸릴 수 있지만,
컴파일 후의 기계어를 통해 프로그램을 실행하기 때문에 실행 시간은 빠르다
C, C++, Java와 같은 컴파일 언어는 코드를 작성한 후 컴파일을 하면, 컴파일러에 의해 기계어로 변환된 파일이 생성되고 컴퓨터는 그 파일을 실행한다
컴파일 언어는 이미 기계어로 번역된 파일을 컴퓨터가 실행하므로 스크립트 언어에 비해 빠르고 소스코드에 문법적 오류가 있으면 컴파일 에러를 발생시켜 디버깅이 수월하다
하지만 일반적으로 문법적 제약이 많아 작성이 비교적 어렵고, 운영체제마다 사용하는 기계어가 다르기 때문에 운영체제에 따라 작업을 각각 다르게 해줘야 하는 단점이 있다
정리
- 실행 전 소스코드를 컴파일하여 기계어로 변환 후 해당 파일을 실행
- 이미 기계어로 변환된 것을 실행하므로 비교적 빠름
- 문법적 제약이 일반적으로 많음
- 운영체제에 따라 다르게 작업해야 함