본문 바로가기

언어/언어 이론

[펌]인터프리트 언어란?

파이썬을 공부하다가 파이썬이 자바와 같은 인터프리터 언어라는 것을 알았다.


다시한번 집고 넘어가자 인터프리터 언어란?


출처 - http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=66630397&qb=7J247YSw7ZSE66as7YSwIOyWuOyWtA==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0&pid=R4S7Nc5Y7udssuHyA04ssc--304589&sid=UIVK1lsLhVAAAECUB58


■ 인터프리터의 장단점


일단 비쥬얼베이직은 개발환경은 인터프리터방식이지만 실행환경은 인터프리터/컴파일방식 두가지를 모두 지원합니다. 일반적으로 컴파일방식을 쓰죠.


인터프리터는 애초에는 소스를 읽어서 그것을 실행하는 구조였습니다. gwbasic이 대표적이죠. 그러다가 줄단위로 미리 중간컴파일을 해두는 방식으로 바뀌었다가(qb) vb처럼 소스의 바뀐 부분만 재컴파일 하는 방식, 그리고 java에서 처럼 소스 전체를 중간단계로 컴파일 하는 경우가 있습니다.



이 모든 경우의 공통점은 소스를 기계어로 컴파일 하는것이 아니라 인터프리터가 해석하기 좋게 컴파일한다는 점입니다.


이것을 이해하는것보다는 '왜' 이렇게 하는가를 이해하는것이 더 빠릅니다. 


첫째로는 속도문제입니다. 소스의 일부분만 변경했을때 소스를 인터프리터가 해석하는 방식으로 변형만 하면되므로 그부분만 컴파일 하기가 수월합니다.


둘째로는 디버깅이 편하기 때문입니다. 컴파일언어의 경우 구문상의 오류는 편집기에서 잡아줄수 있지만 디버깅도중 소스를 수정하지 못합니다. 하지만 컴파일 언어는 디버깅중에 소스를 수정해도 수정된 소스대로 디버깅이 가능합니다. 


셋째로는 호환성이 좋아지기 때문입니다. 이 예는 특히 자바언어를 보시면 됩니다. 자바를 컴파일하면 기계어코드를 만드는것이 아니라 os와 독립적인 논리적인 코드를 생성합니다. 그리고 각 OS에 맞는 자바머신(일종의 인터프리터입니다)이 이 코드를 해석하며 실행합니다. 물론 요즘은 이 자바머신이 해석한후 그것을 기계어로 일부 바꾸어두어 실행속도를 높이기도 합니다. 호환성 하나로 자바가 인터넷시대를 독점하다시피 하는점만 보아도 얼마나 큰 장점인지 알수있죠.


넷째로는 컴파일시간이 빠릅니다. 이것은 첫번쨰이유와는 조금 성격이 다른데 VB의 경우 컴파일 옵션에서 인터프리터방식을 선택해보면 그 속도가 아주 빠르다는것을 알수 있습니다. 인터프리터가 이해하기 위한 좀더 소스와 가까운(기계어와 먼) 컴파일을 하기때문이죠. 하지만 이것은 보통 개발과정에서만 하고 실제로 배포할때는 이 옵션을 쓰지 않습니다. VB의 경우 기계어로 컴파일 하더라도 런타임라이브러리는 필수입니다.




단점은 

첫째로는 속도입니다. 인터프리터가 '해석'하는 과정이 추가되기 때문에 직접 기계어로 실행되는 컴파일방식에 비해서는 느립니다.

'언어 > 언어 이론' 카테고리의 다른 글

메모리 공간 이론  (0) 2013.01.31
자이썬이란?  (0) 2012.12.03
[펌]바이트 코드란?  (0) 2012.10.22