컴파일러 compiler
인터프리터 interpreter
사전적 의미를 보면
컴파일러는 번역하다, 통역하다
인터프리터는 해석기, 통역사라는 뜻을 가지고 있다.
둘 다 유사한 의미를 가지고 있다.
다만, 소스코드를 읽는 방식에 차이가 있어 두 개를 구분하는 것이다.
인터프리터는 프로그램을 실행을 할 때 한 문장씩 소스코드를 읽고 즉시 실행한다.
컴파일러 소스코드를 실행파일로 변환하여 기계어를 번역한다. (.bat .exe 등)
인터프리터가 컴파일러와 다르게 소스 코드를 기계어로 변환하지 않고도 동작이 가능한 이유는 소스 코드를 실시간으로 해석하고 해당 명령어를 바로 실행할 수 있는 기능을 인터프리터가 가지고 있기 때문이다.
C와 자바는 컴파일러 언어이다.
파이썬, 자바스크립트는 인터프리터 언어이다.
사실 인터프리터와 스크립트 언어(scripting)는 같은 의미는 아니다.
스크립트 언어는 따로 기계어로 번역하지 않고 소프트웨어를 제어할 수 있는 언어를 통칭해서 말한다.
그러나 대부분의 스크립트 언어는 내장 인터프리터 방식을 쓰고 있기 때문에 인터프리터와 용어를 혼용해서 쓰기도 한다.
컴파일러 vs 인터프리터
컴파일러 언어는 실행파일은 생성하지만,
인터프리터 언어는 실행파일을 생성하지 않는다. 기계어로 변환하지 않고 곧바로 번역과 실행이 가능하기 때문이다.
하지만 인터프리터가 성능적으로 꼭 더 좋다는 의미는 아니다. 컴파일러 언어는 중간 언어 또는 기계어로 변환시키기에 성능 최적화를 하기 좋다.
다만, 근대의 인터프리터는 성능 최적화를 하기 위해 중간 코드(바이트 코드)로 변환시킨 후에 해석하여 실행하는 방식을 사용하기도 한다.
#추가) C언어의 프로그램 작성 방법.
1.Edit 소스코드 작성(.c)
2.Compile 소스코드를 기계어로 변환(object file 생성 : 기계어로 바뀐 파일)
3.Link 라이브러리 실행파일 생성
4.응용프로그램 제작 가능한 visual studio 등.
5.프로그램 작성