컴파일러와 인터프리터는 고급 언어(소스 코드)를 기계어로 바꿔주는 프로그램
컴퓨터 프로그램은 고급언어로 작성되는데, 이는 사람이 이해하기 위한 것이므로, 이진수로 작성된 기계어만을 이해하는 컴퓨터는 이를 이해하지 못한다. 따라서, 고급언어로 작성된 소스 코드를 기계어로 바꾸기 위해 컴파일러와 인터프리터가 필요하다.
컴파일러는 프로그램을 생성한 후, 모든 구문이 맞는지 확인한다. 만약, 잘못된 부분이 있다면, 에러 메세지를 출력, 에러가 없다면 컴파일러는 소스 코드를 기계어로 변환한다. 컴파일러는 코드 파일을 .exe와 같은 실행 가능한 프로그램에 연결, 프로그램이 실행된다.
C, C++, Java, ...
인터프리터는 프로그램을 만든 후, 파일에 연결하지도, 기계어를 생성하지도 않는다. 프로그램은 한 줄씩 번역, 실행된다.
Ruby, Python, ...
컴파일러는 중간코드(컴파일러가 원시 언어로 된 프로그램을 목적 코드로 번역하는 과정에서 생성되는 내부적 코드)가 생성되기 때문에 더 많은 메모리 필요 / 인터프리터는 중간 코드 생성 X, 메모리 필요 X
인터프리터는 프로그램을 번역-실행하다가 에러가 있으면 멈춤, 에러가 발생한 직전까지 실행, 디버깅이 쉬움 / 컴파일러는 전체 프로그램을 스캔한 후에 에러가 있다면 실행되지 않음, 디버깅이 어려움
참고 : https://www.businessinsider.in/difference-between-compiler-and-interpreter/articleshow/69523408.cms