STUDY/Frontend

컴파일러 vs 인터프리터

_JJ_ 2023. 3. 20. 11:16

 

고급 언어로 작성된 프로그램들을 실행하는 데에는 두 가지 방법이 있다.

가장 일반적인 것은 프로그램을 컴파일하는 것, 다른 하나는 프로그램을 인터프리터에 통과시키는 방법이다.

 

컴파일러는 뭐고 인터프리터는 뭘까?

 


컴파일러 (compiler, 번역기)

특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램.

고급 언어(사람이 이해하기 쉽도록 만들어진 프로그래밍 언어)를 실행 프로그램으로 만들기 위해 저급 언어(ex 어셈블리 언어, object 코드, 기계어)로 바꾸는 데 사용된다.

원래의 문서를 소스 코드 또는 원시 코드라고 부르고, 출력된 문서를 목적 코드라고 한다.

원시 코드에서 목적 코드로 옮기는 과정을 컴파일(compile)이라고 한다.

 

컴파일러 언어는 컴파일러를 통해 컴파일 타임에 전체 소스 코드를 한 번에 기계어로 변환 후 실행 파일을 만든다.

컴파일 단계와 실행 단계가 분리되어 있으며, 컴파일은 한번만 수행한다.

장점은 한번 컴파일된 바이트 코드는 다른 플랫폼에서 재컴파일없이 실행할 수 있다. 실행 속도 빠름.

단점은 프로젝트의 규모가 클 경우 컴파일 시간이 오래 걸릴 수 있다.

 

ㅡ 단계

1. 구분 분석 : 파일을 읽어 개별 문법요소 단위(연산자, 괄호,식별자 등)로 자른 후, 해석하여, 추상 구문 트리 생성 (여기서 에러를 알려줌)

2. 최적화 : 추상 구문 트리를 분석하여 최적화 수행

3. 코드 생성: 목적 코드 생성. 목표 언어가 기계어일 경우 하드웨어에 맞는 최적화가 이 단계에서 수행

4. 링킹: 목적 코드가 기계어일 경우, 여러 라이브러리 목적 코드를 묶어 하나의 실행 파일을 생성한다.

 

컴파일러 언어의 종류: C/C++, C#, JAVA 등

 


인터프리터 (interpreter, 해석기)

프로그래밍 언어의 소스 코드를 한 번에 한 줄씩 읽어들여서 바로 실행하는 컴퓨터 프로그램 또는 환경.

  1. 소스 코드를 직접 실행하거나
  2. 소스 코드를 효율적인 다른 중간 코드로 변환하고 그것을 실행하거나
  3. 인터프리터 시스템의 일부인 컴파일러가 만든 미리 컴파일된 저장 코드의 실행을 호출

위 세 가지 가운데 적어도 한 가지 기능을 가진 프로그램이다.

인터프리터는 고급 명령어들을 중간 형태로 번역한 다음, 그것을 실행한다.

장점은 기계어 명렁어들이 만들어지는 컴파일 단계를 거칠 필요가 없어 고급 프로그램 즉시 실행 가능하다.

단점은 실행시마다 인터프리트 과정이 반복 수행되어 실행 속도가 느리다.

 

인터프리터 언어의 종류: Python, Javascript, Ruby

 

 

 

 

reference

 

https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC

https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0

https://velog.io/@congaweb/compiler-interpreter