Security/Others

Compiler vs Interpreter

bonggang 2020. 10. 14. 00:52

컴파일 언어와 인터프리터 언어의 가장 큰 차이점은 컴파일 시점이다.

 

컴파일 언어

컴파일 언어는 런타임 이전에 기계어로 변환되는 언어다. 이 때 원래의 소스를 원시 코드, 바뀐 코드를 목적 코드라고 한다. 런타임 이전에 어셈블리 언어로 변환하기 때문에 구동 시기이 오래걸리지만 구동 된 이후 하나의 패키지로 매우 빠르게 작동한다.

런타임 이전에 이미 해석을 마치고 대게 컴파일 결과물이 바로 기계어로 전환되기 때문에 OS 및 빌드 환경에 종속적이다. 그러므로 os 환경에 맞게 호환되는 라이브러리와 빌드환경을 구분해서 구축해줘야 한다.

 

ex) C코드 --(컴파일러)--> 어셈블리어 --(어셈블러)--> 기계어 --(링커)--> 실행파일 --> 런타임 시작

 

인터프리터 언어

런타임 중에 프로그램을 한줄한줄 해석하며 실행한다.

인터프리터는 고급 명령어들을 중간 형태로 변환하고 그것을 실행함으로써 컴파일러보다 실행 속도가 빠르다. 그래서 즉시 실행 결과를 보고 싶은 사용자가 인터프리터를 사용하는 경우가 있다. 하지만 실행할 때마다 번역을 수행해야 하기때문에 효율성이 떨어지는 단점이 있다.

 

 

참고 자료


blankspace-dev.tistory.com/219

wayhome25.github.io/cs/2017/04/13/cs-14/