이 글은 컴파일 언어와 인터프리터 언어에 대해 작성한 글이다.
컴파일과 인터프리트
컴파일(compile)과 인터프리트(interprete)는 고급 언어를 저급 언어로 변환할 때 동작하는 방식을 의미한다.
컴파일은 어떤 언어(고급 언어)로 작성된 코드 전체를 기계어(저급 언어)로 바꿔주는 것을 의미하며, 컴파일을 수행해주는 소프트웨어(도구)를 컴파일러(compiler)라고 한다. 그리고 이렇게 컴파일 방식으로 작동하는 언어가 컴파일 언어이다.
코드 전체를 기계어로 바꾸는 컴파일과 달리, 인터프리트는 코드를 실행하면 소스 코드를 한 줄씩 기계어(저급 언어)로 변환하며, 인터프리트 작업을 수행하는 소프트웨어(도구)를 인터프리터(interpreter)라고 한다. 인터프리트 방식으로 작동하는 언어를 인터프리터 언어라고 한다.
컴파일 언어
컴파일 언어는 컴파일러에 의해 소스 코드 전체가 저급 언어(기계어)로 변환되어 실행되는 고급 언어를 의미하며, 대표적으로 C언어가 있다.
컴파일러는 컴파일을 수행하는 도구라고 간단하게 설명했었는데, 컴파일러는 개발자가 작성한 소스 코드 전체를 문법적인 오류가 있는지, 실행 가능한 코드인지, 실행하는데 불필요한 코드가 있는지 등을 검사하며 처음부터 끝까지 저급 언어로 컴파일한다. 만약 소스 코드 중간에 오류가 발견된다면, 소스 코드는 컴파일에 실패하고 코드는 실행되지 않는다.
컴파일이 성공적으로 수행되었다는 것은 고급 언어로 작성한 소스 코드가 모두 저급 언어로 변환되었다는 것을 의미한다. 이렇게 저급 언어로 변환된 코드를 목적 코드(object code)라고 한다.
인터프리터 언어
인터프리터 언어는 인터프리터에 의해 소스 코드를 한 줄씩 저급 언어(기계어)로 변한하며 실행하는 고급 언어를 의미하며, 대표적으로 Python이 있다.
인터프리터는 컴파일러와 달리 소스 코드를 한 줄씩 저급 언어로 변환하게 되는데, 이로 인해 소스 코드 전체가 저급 언어로 변환되기를 기다릴 필요 없이 한 줄씩 변한되는 대로 실행된다는 특징이 있다. 이러한 특징 때문에 만약 인터프리터 언어의 N번째 줄에서 오류가 발견된다면, 이 소스 코드는 N-1번째 줄까지는 정상적으로 실행된다.
일반적으로 인터프리터 언어는 컴파일 언어보다 상대적으로 느리게 동작한다.
✔️ 컴파일 언어와 인터프리터 언어의 구분
컴파일 언어와 인터프리터 언어는 명확하게 구분할 수는 없다. C나 C++과 같이 명확하게 구분되는 언어도 있지만, Python의 경우 인터프리터 언어로 알려져 있지만 컴파일을 하는 경우도 있으며, Java의 경우도 인터프리트와 컴파일을 동시에 수행한다.
따라서 프로그래밍 언어는 항상 한 가지의 방법만으로 동작하는 것은 아니며, 고급 언어를 저급 언어로 변환하는 과정에는 컴파일 방식과 인터프리트 방식이 있다 정도로 이해하는 것이 좋다.
요약
- 컴파일(compile)은 고급 언어로 작성된 소스 코드 전체를 기계어로 변환하는 방식을 의미하며, 컴파일을 수행하는 도구를 컴파일러(compiler)라고 한다.
- 컴파일러를 통해 저급 언어로 변환된 코드를 목적 코드라고 한다.
- 인터프리트(interprete)는 고급 언어로 작성된 소스 코드를 한 줄씩 기계어로 변환하는 방식을 의미하며, 인터프리트를 수행하는 도구를 인터프리터(interpreter)라고 한다.
- 모든 프로그래밍 언어를 컴파일 언어와 인터프리터 언어로 명확하게 구분할 수 있는 것은 아니다.
Reference
1. 혼자 공부하는 컴퓨터 구조 + 운영체제 | 출판사: 한빛미디어 | 저자: 강민철
혼자 공부하는 컴퓨터 구조+운영체제 | 강민철 - 교보문고
혼자 공부하는 컴퓨터 구조+운영체제 | 혼자 해도 충분합니다! 1:1 과외하듯 배우는 IT 지식 입문서 42명의 베타리더 검증으로, ‘함께 만든’ 입문자 맞춤형 도서이 책은 독학으로 컴퓨터 구조와
product.kyobobook.co.kr