본문 바로가기
개발언어 기록/용어

컴파일러 Compiler / 어셈블러 Assembler / 인터프리터 Interpreter

by 새아SaeA 2019. 5. 9.

Compiler란?

간단하게 말해 번역기입니다. 

 

우리는 프로그램 코드를 고급언어(high-level language)라고 하는 Java, C, C++ 등으로 작성합니다. 하지만 컴퓨터는 기계 언어(Machin language)인 0과 1만 알아듣기 때문에 실행되지 않습니다. 따라서 우리가 작성한 코드(source code)를 컴퓨터가 알아듣게 하기 위해 컴퓨터 언어(0,1)로 변환시켜주는 역할을 하는 것이 compiler입니다. 

 

compiler

추가로, Compiler는 Interpreter, Assembler와 함께 Language Processors의 하나입니다. 큰 틀에서는 비슷한 역할을 하지만 각각의 차이가 있습니다. 

 

앞서 설명드린 것 처럼 compiler는 소스코드를 object code(객체 코드)로 변환하는 프로그램입니다. 대부분의 고급 프로그래밍 언어들은  compiler를 포함하고 있습니다. compiler(컴파일러)는 소스코드의 전체를 보고 정보를 수집하고 재편성하는 방식으로 작동합니다. compiler는 전체를 보고 작업을 한 후에 실행이 되기 때문에 실행되기 전까지 약간의 시간이 필요합니다. 반면에, interpreter(인터프리터)는 프로그램 전체를 보지 않고 소스코드의 각 라인들을 연속해서 분석하고 실행합니다. 이러한 특징으로 interpreter는 프로그램을 즉시 실행할 수 있습니다. 하지만 실행되는 시작 시간이 다를 뿐, 실질적으로 compiler가 interpreter보다 전체 실행되는 시간은 훨씬 빠릅니다.

 

간단하게 이 셋의 차이점을 설명하자면 다음과 같습니다.

Compiler Interpreter Assembler
번역기 통역기 번역기
고급언어 기계언어 저급언어
짜여진 소스코드 전체를 한번에 번역함 명령 하나하나 실행할 때마다 번역 assembly어를 기계어로 번역.
전체 소스코드 번역에는 많은 시간이 걸리지만 전체 실행 시간은 비교적 빠름 소스코드 한줄 번역에는 적은 시간이 걸리지만 전체 실행 시간은 비교적 느림.  
번역 후에 오류를 알려줌. 디버깅 어려움 수정 및 디버깅 쉬움  
Java, C, C++ 등을 번역할 때 사용 Python, Perl 등을 번역할 때 사용  

자세히 들어가면 너무 깊은 부분이므로, 간단하게 각각이 의미하는 바와 특징 정도만 기억하시면 좀 더 유용할 것입니다. 

'개발언어 기록 > 용어' 카테고리의 다른 글

디렉토리 Directory  (0) 2019.06.25