[컴퓨터 용어]컴파일러(Compiler), 인터프리터(Interpreter)란?

 

컴파일러와(Compiler) 인터프리터(Interpreter)의 등장 배경

 

컴파일과 인터프리터 등장한 이유를 알기 위해서는 Assembly language(어셈블리어)에 대해서 먼저 알고 넘어가야 한다. 어셈블리어의 사전적 의미는 아래와 같다.

 

어셈블리어는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어(low-level)이다. 컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다.
출처 : 위키백과

 

어셈블리어는 컴퓨터의 하드웨어에 수행할 작업을 지시하는 간단한 언어라고 생각하면 됩니다. 쉽게 예를 들면 두 개의 숫자를 더하거나, 컴퓨터 메모리의 한 위치에서 다른 위치로 값을 이동하는 명령을 합니다.

 

어셈블리 언어는 컴퓨터 하드웨어를 제어하는 직접적인 방법을 제공하지만 컴퓨터 구조에 따라 사용하는 기계어가 달라지면 어셈블리어도 달라지기 때문에 쓰거나 읽는 것이 불편하고 효율성이 떨어졌습니다.

 

그래서 이러한 불편함을 해결하고자 개발자가 이해하기 쉬운 high-level programming language(고급 프로그래밍 언어)가 나오게 됐습니다. 그러나 컴퓨터는 바로 고급 프로그래밍 언어를 인식하지 못하기 때문에 컴퓨터가 인식할 수 있도록 기계어로 번역을 해줘야  합니다. 번역을 하는 과정이 컴파일러와 인터프리터입니다.

 

기계어 :  일련의 비트(이진수)로 구성되며 각 비트는 0 또는 1을 나타냅니다. 이러한 비트를 결합하여 숫자, 문자 또는 특수 문자와 같은 다양한 유형의 정보를 나타낼 수 있습니다.

high-level programming language(고급 프로그래밍 언어) : 인간이 더 쉽게 읽고, 쓰고, 이해할 수 있도록 설계됨, 고급 프로그래밍 언어의 예로는 Python, Java, C++, JavaScript 등이 있습니다. 이러한 언어는 자동 메모리 관리, 내장 데이터 구조 및 추상화를 제공하여 개발자가 복잡한 소프트웨어를 보다 쉽게 작성할 수 있도록 합니다.

 

컴파일러와 인터프리터
컴파일러(compiler)와 인터프리터(Interpreter)


컴파일러(Compiler)

 

컴파일러는 고급 프로그래밍 언어로 작성된 소스 코드를 Object Code (오브젝트 코드)로 컴파일 합니다. 컴파일된 프로그램은 실행을 하기 전까지는 동작을 하지 않습니다. 여기서 Object Code는 일반적으로. o,. obj확장자를 가진 파일입니다. Object code는 다른 필수 라이브러리 및 리소스와 연결되어 실행 프로그램(. exe...)을 형성합니다. 실행 프로그램이 실행될 때 이미 번역을 해놓은 상태이기 때문에 실행 속도가 빠릅니다. 그러나 오류가 발생하거나 새로운 내용으로 변경하고자 할 때 즉시 적용하지 못하는 단점이 있습니다. 컴파일 언어는 대표적으로 C, C++, C#, JAVA 등이 있습니다. 

 


인터프리터(Interpreter)

 

인터프리터는 번역과 실행을 동시에 진행합니다. 소스코드를 한 줄 한줄씩 읽어 들이면서 실행을 하기 때문에 별도의 실행파일은 존재하지 않습니다. 인터프리터는 컴파일러 단계가 없어 과정이 단순합니다. 그래서 생산 속도가 매우 빠르다. 그러나 실행 속도가 느립니다. 그렇기 때문에 연산속도나 실행 속도에 민감한 프로그램은 인터프리터 언어로 개발하지 않습니다. 인터프린터의 대표적인 언어는 파이썬, 자바스크립트, HTML이 있습니다.

 


쉬운 예 )



컴파일러는 자동차 조립을 위한 지침을 받아 완성된 자동차를 생산하는 장난감 공장과 같습니다. 공장은 처음부터 끝까지 지침을 읽은 다음 장난감 자동차를 만들기 위해 적힌 대로 정확하게 따릅니다.

인터프리터는 장난감 자동차를 조립하고 싶어하는 사람과 같습니다. 전체 지침을 읽고 장난감을 만드는 것은 똑같지만 한 번에 하나의 지침을 읽은 다음 조립을 하고 조립을 마친 후 다음 지침으로 이동합니다. 이 과정은 장난감 자동차가 완성될 때까지 계속됩니다.

 


참고문헌

 

어셈블리어 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 어셈블리어(영어: assembly language) 또는 어셈블러 언어(assembler language)[1]는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 컴퓨터 구조에 따

ko.wikipedia.org

 

 

컴파일러(compiler)와 인터프리터(interpreter)의 차이

컴파일(compile)의 역사컴파일 이야기를 하기전에 어셈블리어에 대해서 간단하게 짚고 넘어가야 한다. 어셈블리어란 무엇인가? 어셈블리어를 위키에서 검색하면 정의를 알 수 있는데, 이 정의에

velog.io