AiPE

컴파일러(Compiler)와 인터프리터(Interpreter)의 정의와 장단점 및 특징 본문

[XiBBaL] Study/Java

컴파일러(Compiler)와 인터프리터(Interpreter)의 정의와 장단점 및 특징

Oshimaker XiBBaL 2024. 3. 25. 21:26
반응형

컴파일러와 인터프리터는 사용자가 작성한 코드(프로그래밍 언어)를 컴퓨터가 알아들을 수 있는 언어(기계어)로 변환하는 데 사용하는 두 가지 대표적인 방법론이다.

 

변환에 컴파일러를 사용하는 언어를 컴파일러 언어, 인터프리터를 사용하는 언어를 인터프리터 언어라고 한다.

 

컴파일러 (Compiler) 언어
프로그램 전체를 한꺼번에, 한 번에 번역하여 기계어로 변환하는 방식이다.
소스 코드를 먼저 번역해두어 이를 하나의 실행 파일로 만든 뒤, 해당 실행 파일을 실행한다.

 

대표적인 컴파일러 언어는 C, C++, Java등이 있다.

 

인터프리터 (Interpreter) 언어
소스 코드를 한 줄씩 읽어들여 해당 줄을 즉시 실행하는 방식이다.
즉, 별도의 실행 파일 생성 과정 없이, 소스 코드의 번역과 실행이 동시에 이루어진다.

 

대표적인 인터프리터 언어는 Python, JavaScript, Ruby등이 있다.

 

 

컴파일 언어와 인터프리터 언어의 차이는 아래와 같다.

 

컴파일러 (Compiler) 언어 인터프리터 (Interpreter) 언어

① 소스 코드와 별도로, 실행 파일이 생성됨
자바의 경우, javac 컴파일러를 통해 project.java와 별개로 project.class 파일이 생성되며, 자바 런쳐는 이 class파일을 실행

② 속도가 상대적으로 빠름
컴파일러가 소스코드를 전체적으로 분석하고 최적화하는 과정을 거치기 때문에 인터프리터에 비해 빠른 경향 존재

③ 디버깅 난이도가 높음
오류가 발생하면 전체 코드를 분석해 오류 지점을 찾아야 하기 때문에 디버깅의 난이도가 인터프리터에 비해 높은 편

④ 이식성이 상대적으로 나쁨
컴파일러를 통한 별개의 실행 파일은 특정 플랫폼에서 실행되기 위해 만들어진 파일이므로, 이식성이 낮을 수 있음
→ java의 경우 JVM을 통해 이러한 문제를 해결
① 별도의 실행 파일이 생성되지 않음
소스 코드를 직접 번역하며 실행하기 때문에 별도의 실행 파일이 생성되지 않음

② 속도가 상대적으로 느림
번역 과정과 실행 과정이 동시에 일어나기 때문에 일반적으로, 컴파일러 언어에 비해 느린 경향 존재

③ 디버깅 난이도가 낮음
오류가 발생한 순간에 실행이 멈추기 때문에 오류 지점을 찾기 쉬운 편

④ 이식성이 상대적으로 높음
인터프리터는 컴파일러 언어에 비해 이식성은 좋은 편

 

 

반응형