컴파일러와 인터프리터
컴파일러
- 컴파일러는 프로그램 전체를 스캔하여 이를 모두 기계어로 번역한다.
- 전체를 스캔하기 때문에 대개 컴파일러는 초기 스캔 시간이 오래 걸린다.
- 하지만 전체 실행 시간만 따지고 보면 인터프리터 보다 빠르다. 컴파일러는 초기 스캔을 마치면 실행파일을 만들어 놓고 다음에 실행할 때 이전에 만들어 놓았던 실행파일을 실행하기 때문이다.
- 하지만 컴파일러는 고급 언어로 작성된 소스를 기계어로 번역하고 이 과정에서 오브젝트 코드라는 파일을 만드는데, 이 오브젝터 코드를 묶어서 하나의 실행 파일로 다시 만드는 링킹이라는 작업을 해야 한다. 이 때문에 컴파일러는 통상적으로 인터프리터 보다 많은 메모리를 사용해야 한다.
- 또한 컴파일러는 오류 메시지를 생성할 때 전체 코드를 검사한 후에 오류 메세지를 생성한다. 그래서 실행 전에 오류를 발견할 수 있다.
- 대표적인 언어로 C, C++, JAVA 등이 있다.
인터프리터
- 컴파일러와는 반대로 인터프리터는 프로그램 실행시 한 번에 한 문장씩 번역한다.
- 때문에 한 번에 전체를 스캔하고 실행파일을 만들어서 실행하는 컴파일러보다 실행시간이 더 걸린다.
- 하지만 인터프리터는 메모리 효율이 좋다. 컴파일러처럼 목적 코드를 만들지도 않고, 링킹 과정도 거치지 않기 때문이다.
- 인터프리터는 오류 메세지 생성과정이 컴파일러와 다른데, 인터프리터는 한 번에 한 문장씩 번역하기 때문에 프로그램을 실행시키고 한 문장씩 번역될 때 오류를 만나게 되면 바로 프로그램을 중지한다. 그래서 프로그램을 실행해 봐야 오류 발견이 가능하다.
- 대표적인 언어로 Python, Ruby, Javascript 등이 있다.
컴파일러 | 인터프리터 |
|
|
컴파일러와 인터프리터의 차이
컴파일러는 전체 소스 코드를 보고 명령어를 수집, 재구성 하지만,
인터프리터는 소스코드의 각 행을 연속적으로 분석하며 실행한다.
컴파일러는 고레벨 언어를 바로 기계어로 변환하지만,
인터프리터는 고레벨 언어를 바로 기계어로 번역하지 않고 중간 형태로 변환시킨 후 실행한다.
출처:
'~2023.02 > 1일 1CS지식' 카테고리의 다른 글
데이터베이스의 무결성 제약조건의 정의와 필요성은? (0) | 2022.07.20 |
---|---|
(작성중)트랜잭션의 각 격리 수준과, 각 수준에서 일어날 수 있는 문제는 무엇일까? (0) | 2022.07.18 |
DNS와 DHCP란? (0) | 2022.07.16 |
동기와 비동기, 블로킹과 논-블로킹이란? (0) | 2022.07.15 |
대표적인 SQL의 종류 3가지와 종류별 명령어는? (0) | 2022.07.14 |