0. 인터프리터 언어란?
흔히들 Python은 인터프리터 언어라는 말을 들어 보았을 것이다.
이를 알아 보기 위해서는 먼저 컴퓨터의 소스 코드 실행 과정을 알아 보아야 한다.
일반적으로 컴퓨터는 각 CPU별로 미리 정의된 명령어 집합에 따라 명령어를 해석하고 수행한다.
이 과정은 논리 회로에 의해 수행되며 그러한 이진 명령어를 보기 좋게 영어로 나타낸 것이 어셈블리어이다.
어셈블리어는 거의 기계어와 1대1 대응이 가능하기 때문에 대부분의 언어는 이러한 기계어를 목적 언어로 하여 컴파일한다.
*컴파일: 하나의 언어를 다른 언어로 유한 시간 안에, 각 코드에 대해 같은 설정에서는 유일한 결과를 출력하는 과정
컴파일 언어는 실행 전 컴파일을 거쳐 미리 실행 가능한 프로그램(exe 등) 또는 라이브러리(dll 등)으로 변환한 후 실행된다.
이와 반대로 인터프리터 언어는 실행 시 각 줄을 컴파일하여 실행한다.
덕분에 인터프리터 언어는 사전 컴파일 과정이 없어 빠른 디버깅이 가능하지만, 런타임에서 느린 성능을 보인다는 단점이 있다.
하지만 최근 개발되는 언어들은 이 중 하나로 분류하기 어렵다.
완전 인터프리터 언어로 개발하기에는 실행 성능이 부담되고 컴파일 언어는 빌드 시간 등이 부담되기 때문이다.
이러한 문제를 해결하기 위해 최근 개발되는 언어는 하이브리드 된 형태를 가지고 있다.대표적으로 JAVA는 JVM에서 실행하기 위한 바이트코드로 컴파일하며 python 또한 마찬가지이다.
실제로 파이썬에는 코드 타입이 존재하 compile이라는 함수가 별도로 존재하는 이유도 바이트 코드로 컴파일 하기 때문이다.
Comments ()