인터프리터와 컴파일러는 프로그래밍 언어를 컴퓨터가 알아들을 수 있는 형태로 변환하는 두 가지 대표적인 방식입니다.
컴파일러는 마치 요리 레시피 책과 같습니다. 컴퓨터가 요리 즉, 파일을 실행을 한다고 치면, 레시피 책에 있는 모든 레시피들, 기계어로 번역되어있는 파일들을 한번에 읽어들이고, 음식을 한 번에 요리합니다. C나 C++과 같은 정적 타입 언어가 컴파일러를 사용합니다.
컴파일러를 사용하면 이미 컴퓨터가 바로 실행할 수 있도록 기계어로 변환이 되어있기 때문에 실행이 아주 빠릅니다. 그리고 코드를 컴파일 하는 과정에서 실행 전에 오류를 미리 확인할 수 있습니다. 하지만 코드 컴파일을 마친 후에 코드 수정을 할 경우 수정한 내용에 대해 다시 컴파일을 해야해서 개발 시간이 더 오래 걸릴 수도 있습니다.
인터프리터는 마치 동시번역가와 같습니다. 코드를 한 줄씩 읽고 실행하며 결과를 도출하는 방식입니다. Python과 Javascript와 같은 동적 타입 언어가 인터프리터를 사용합니다.
인터프리터를 사용하면 코드를 작성하면서 결과를 바로바로 확인할 수 있어서 빠르게 개발할 수 있습니다. 그리고 컴파일러를 사용하는 언어와 달리 대부분의 플랫폼에서 동작이 가능하여 이식하기 쉽습니다. 하지만 코드를 실행하면서 동시에 번역을 하기 때문에 코드 한 줄만 단순히 보면 빨라보일 수 있지만, 실행하는 코드의 양이 방대해질수록 0.01초, 0.1초, 1초의 차이가 쌓여 결과적으로는 상대적으로 실행 속도가 느려질 것입니다. 또한, 코드를 실행하면서 오류가 발견되어야하는데 모든 오류를 미리 방지하기는 어렵기 때문에 컴파일러 언어와 비교했을 때 디버깅이 다소 어려울 수 있습니다.