본문 바로가기

CS

컴파일러와 인터프리터의 차이

반응형

"고급언어를 기계어로 번역하는 건 컴파일러 혹은 인터프리터의 역할이라고 하는데 두 방식의 차이점이 뭐지?"

 

개발을 하다 보면 컴파일러 또는 인터프리터라는 용어를 한번쯤은 접해 봤을 거라고 생각합니다. 

 

저 역시 자주 들었던 용어지만 그 둘의 차이점을 명확히 구분하지 못했기에 이번 블로그에 정리해 보려고합니다. 

 

1. Compilation / Interpretation 이 뭔데 ?

 

컴퓨터는 0과1의 명령어를 인식하고 CPU는 명령어를 기반으로 계산하고 값을 저장합니다.

 

프로그래머들은 파이썬, Java, C++, Javascript등 다양한 프로그래밍 언어들울 사용하는데 이는 컴퓨터 입장에서는 이해할 수 없는 명령어 일것입니다. 

 

예를 들어 한국어를 하지 못하는 프랑스인 친구에게 한국말로 대화하면 그 말의 뜻을 이해하지 못하는 것 처럼 말이죠.

 

컴퓨터와 프로그래밍 언어도 마찬가지 입니다. 

 

때문에 프로그래머가 작성한 프로그래밍 언어를 기계어로 변환하는 과정을 Compilation / Interpretation 이라고 합니다.

 

2. Compiler / Interpreter 의 차이

 

Comiler와 Interpreter의 가장큰 차이점은 '실시간 번역의 유무' 입니다. 

 

이전의 프랑스 친구 예시를 다시 들어 보겠습니다. 

 

 

프랑스 파리의 루브르 박물관에서 관광을 하던중 한 작품에 설명을 듣고자 큐레이터에게 작품 설명을 요청했지만 안타깝게도 큐레이터는 한국어를 할줄 모르는 사람이었습니다. 다행히도 관광가이드가 한국어와 프랑스어를 할 수 있었기 때문에 큐레이터의 설명을 해석해 주었습니다. 

 

만약 가이드가 큐레이터의 말을 '실시간으로 해석' 해준다면 그 가이드의 이름은 'Interpreter'일 것입니다. 

만약 가이드가 큐레이터의 말을 끝까지 듣고 자신이 해석해서 마지막에 설명을 해준다면 그 가이드의 이름은 'Compiler'일 것입니다. 

 

위의 예시에서 중요한 키 포인트는 Interpreter는 소스코드를 실시간으로 해석하는 중간 과정이 있고 Compiler는 소스코드를 전부 해석하여 기계어로 변환한다는 점에서 차이가 있습니다. 

 

3. Compiler / Interpreter 장단점 

 

  컴파일러 인터프리터
개발 편의성 코드를 수정하고 실행하려면 컴파일을 다시 해야한다.  코드를 수정하고 즉시 실행할 수 있다. 
실행 속도 빠르다.  느리다. 
프로그래밍 언어 C 처럼  저수준에 가까운 언어  Python 처럼 비교적 고수준에 가까운 언어

 

 

반응형

'CS' 카테고리의 다른 글

MIME 의 개념과 사용 목적  (1) 2022.01.12
WEB 서버와 WAS의 차이  (0) 2022.01.12
Base64 Encoding 이란?  (1) 2022.01.07
도메인이란?  (0) 2022.01.06
환경 변수는 왜 설정하는가?  (0) 2022.01.04