Interpreter언어와 Compiler 언어
26 Nov 2019 | interpreter compiler개인적인 연습 내용을 정리한 글입니다.
잘못된 내용이 있다면 편하게 댓글 남겨주세요!
Compiler / Interpreter 차이
- 두 언어의 가장 큰 차이점은
컴파일 시점
이다.- 즉, 런타임 전에 컴파일을 하는지 안하는지 그게 가장 큰 차이점이다.
컴파일 언어(Compiled Language)
- 예: C, C++, JAVA
- 컴파일 언어는 런타임 이전에 기계어로 변환되는 언어이다.
- 자바의 경우 런타임 이전에 컴파일을 통해 기계어가 아닌 바이트어로 변경되지만, 컴파일 시점이 존재하여 컴파일 언어라고 한다.
- 전체 소스코드를 보고 명령어를 수집하고 재구성한다.
인터프리터 언어(Interpreter Language)
- 런타임 중에 프로그램을 한줄한줄 연속적으로 해석하며 실행하는 언어이다.
- 파이썬의 경우 런타임 중 컴파일 과정에서
렉서(lexer)
,파서(parser)
를 거쳐 바이트 코드를 만들어낸다.- lexer: 요소를 하나하나 쪼갠다, parser: 구문 분석
두 언어의 특징 및 차이점
-
컴파일러는 소스코드 전체를 한번 훑고 컴퓨터 프로세서가 실행할 수 있도록 바로 기계어로 변환한다. 인터프리터는 고레벨 언어를 중간 코드로 변환하고 이를 각 행마다 실행한다. 이 중간 코드는 다른 프로그램에 의해 실행된다.
-
일반적으로 컴파일러가 각 행마다 실행하는 특성을 가진 인터프리터보다 실행시간이 빠르다.
-
컴파일러는 전체 소스코드를 변환한 뒤 에러를 보고하지만, 인터프리터는 각 행마다 실행하는 도중 에러가 보고되면 이후 작성된 코드는 살펴보지 않는다. 이는 보안적인 관점에서 도움이 된다.