컴파일러 와 인터프리터
컴파일러 와 인터프리터
개요
컴파일러, 인터프리터 둘 다 C나 자바 같은 고레벨 언어로 작성된 코드를 기계어로 변환하는 것은 공통점이나 그 과정에 있어서 차이를 보인다
-
컴파일러는 전체소스코드를 보고 명령어를 수집하고 재구성
-
인터프리터는 소스코드의 각 행을 연속적으로 분석하며
-
컴파일 언어와 인터프리터 언어의 가장 큰 차이점은 컴파일 시점이다 (런타임 전에 컴파일을 하는지 안하는지)
컴파일러 (Complier)
-
컴파일러는 특정 프로그래밍 언어로 이루어진 문서를 다른 프로그래밍 언어로 옮기는 프로그램을 말한다
-
문서는 소스 코드 또는 원시 코드라고 부르고, 출력된 문서를 목적 코드라고 한다
-
목적 코드틑 주로 다른 프로그램이나 하드웨어가 처리하는데 용이한 형태로 출력되지만 사람이 읽을 수 있는 문서 파일이나 그림 파일 등으로 옮기는 경우도 있다
-
-
원시 코드에서 목적 코드로 옮기는 과정을 컴파일이라고 한다
-
소스 코드를 컴파일 하는 이유는 사람에게 이해하기 쉬운 형태의 고수준 언어로부터 실행 가능한 기계어로 변환하기 위해서이다.
-
컴파일러는 사람이 소스코드를 작성하면 그 소스코드를 한번에 번역한다
- 줄 단위로 번역을 하는 인터프리터에 비해 시간이 오래 걸리고 과정이 복잡하다
-
한 번 번역을 하면 실행파일(목적파일)이 생성되어 메모리를 사용하지만 다음에 실행할 때는 이 파일만 실행하면 되기 때문에 실행 시간은 인터프리터에 비해 빠르다
인터프리터 (Interperter)
-
인터프리터는 고레벨 언어를 중간 코드(Intermediate code)로 변환하고 이를 각 행마다 실행한다.
-
인터프리터는 각 행 마다 실행하는 도중 에러가 보고되면 이후 작성된 코드를 살펴보지 않는다
-
Ex) Python은 인터프리트 언어, C, C++은 컴파일 언어
-
인터프리터는 줄 단위로 번역과 실행을 진행, 번역시간은 빠르지만 실행시간은 느리다
-
직접 실행하기 때문에 실행파일(목적파일)을 생성하지 않아 메모리는 사용하지 않는다.