CS
컴파일러 & 인터프리터
SeaPlus
2021. 7. 1. 16:35
[컴파일러]
● 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램.
● 원래의 문서를 ‘소스코드’, ‘원시코드’ 라고 부르고 출력된 문서를 ‘목적코드’ 라고 부른다.
=> 원시코드에서 목적코드 로 변환하는 과정을 ‘컴파일’ 이라 한다.
● 소스 코드를 컴파일 하는 이유는 대부분 사람에게 이해하기 쉬운 형태의 고수준 언어(c언어, java …)로부터 컴퓨터가 실행 가능한 저수준 언어(어셈블리어, 기계어)로 만들기 위해서 이다.
● 특징:
1. 컴파일러는 명령들을 한번에 읽고 처리한다. |
2. 초기 컴파일과정이 오래걸리고 메모리도 많이 차지한다. |
3. 컴파일이 완료된 이후에는 프로그램 실행이 빠르고 더이상 변환하지 않아도 되기때문에 효율적이다. |
[인터프리터]
● ‘소스코드’ 를 바로 실행하는 컴퓨터 프로그램 또는 환경을 의미
=> 원시코드’ 를 ‘기계어’로 번역하는 컴파일러와 대비된다.
● 이중 한가지 기능만 충족되어도 인터프리터이다.
1. 소스 코드를 직접 실행한다.
2. 소스 코드를 효율적인 다른 중간 코드로 변환하고, 변환한 것을 바로 실행한다.
3. 인터프리터 시스템의 일부인 컴파일러가 만든, 미리 컴파일 된 저장코드 의 실행을 호출
● 인터프리터는 고급언어로 작성된 원시코드 명령어들을 한번에 한 줄씩 읽어들여서 실행하는 프로그램이다.
인터프리터는 고급 명령어들을 중간 형태로 번역한 다음, 그것을 실행한다.
인터프리터에 기반해 이미 만들어진 프로그램을 제어하기 위한 용도로 사용되는 언어가 "스크립트 언어"이다.
● 특징:
1. 코드를 한줄 한줄 읽어가며 즉시 검사하고 처리하는 방식 |
2. 한문장씩 처리하다보니 속도가 컴파일러에 비해 느리다. |
3. 잘못된 코드 작성시 바로바로 수정할수 있다는 장점이 있다. |
4. 기계어 명령어 들이 만들어 지는 컴파일 단계를 거칠 필요가 없다. (프로그램 테스트 단계에 유용) |
# 컴파일러와 인터프리터의 차이점
컴파일러 | 인터프리터 | |
번역 단위 | 전체 | 한줄씩 |
실행 속도 | 빠름 | 느림 |
번역 속도 | 느림 | 빠름 |
목적 프로그램 | 생성함 | 생성하지 않음 |
메모리 할당 | 목적 프로그램 생성시 사용 | 사용 안함 |