[기초] 컴파일 언어 vs 인터프리터 언어
우선 두 가지에 대해 알아보기 전에 컴파일 타임과 런타임에 대해 알아야한다.
컴파일 타임
작성한 코드를 컴퓨터가 이해할 수 있는 언어인 '기계어'로 모두 바꾸고 실행한다.
컴파일 타임을 사용하는 언어를 '컴파일 언어'라 하며, C, C++, JAVA 등이 있다.
런타임
프로그램을 실행할 때 한 줄씩 읽고 해석한 뒤 실행한다.
런타임을 사용하는 언어를 '인터프리터 언어' 라고 하며 자바스크립트, 파이썬 등이 있다.
컴파일 언어는 모든 코드를 기계어로 번역한 다음에 실행하기 때문에,
런타임 언어보다 속도가 20-100배 이상 빠르지만 편의성은 떨어져 개발속도는 인터프리터 언어보다 느리다는 단점이 있다.
인터프리터 언어는 컴파일 과정이 없나요? 하고 궁금할 수도 있는데
어떤 언어든 101011 같은 이진수로 작성하지 않기 때문에 컴파일 과정이 필수적으로 필요하다.
예시를 들어보면 컴파일은 모든 언어를 한번에 통 번역한 다음 알려줘서 번역이 끝난 뒤에 업무처리 속도가 빠르지만 인터프리터언어는 그때 그때 한 문장씩 번역해서(런타임 시점) 알려주기 때문에 모든 업무처리를 끝내는 속도는 컴파일보다 느리다.
두 언어의 가장 큰 차이점은 목적코드(원시 코드가 컴파일 된 결과물)이 있냐 없냐 이다.
인터프리터는 소스코드의 번역과 실행이 동시에 이루어지므로 별도의 실행파일이 존재하지 않으며 빌드시간이 존재하지 않는다.
이와 다르게, 컴파일 언어는 원시코드를 기계어로 변역한 후 기계어 코드를 실행한다. 빌드 과정을 거치기 때문에 빌드타임이 없는 인터프리터 언어보다는 실행 직전까지의 소요 시간이 생길 수 있지만, 런타임(실행시점)에는 이미 기계어로 모든 코드가 번역되어 있기 때문에 빠르게 실행이 가능하다.