인터프리터와 컴파일은 우선 언어를 이야기합니다.
개발언어라고 말할 때 사용하는 그 언어를 이야기합니다.
인터 프리티 언어와 컴파일 언어는 다른 데 오늘 그게 어떻게 다른지 같이 이야기해봅시다.
Q. 인터프리터 언어란 뭔가요?
원시 코드를 기계어로 변환하는 과정 없이 한 줄 한 줄 바로 해석하여 명령어를 실행하는 언어를 이야기합니다. 여기서 원시 코드란 프로그래머가 작성한 코드를 이야기하며 고급언어라고 이야기합니다. 또한, 기계어란 기계가 알아들을 수 있는 언어를 이야기하며 이를 저급 언어라고 이야기합니다.
인터프리터 언어를 사용하면 한 줄 한 줄씩 읽어 들여서 실행을 하다 보니 빌드(Build) 시간이 없다는 장점이 있지만 런타임(Runtime) 상황에서 한 줄씩 실시간으로 읽고 실행하기 때문에 컴파일 언어에 비해 속도가 느립니다. 여기서 빌드란 배포를 하기 위한 과정을 이야기하고 런타임이란 응용프로그램이 동작되는 시간을 이야기합니다.
사람이 매뉴얼을 보고 전체적으로 이해해서 한 번에 하는 것보다 한 줄 읽고 하고 다시 또 한 줄 읽고 하는 것이 시간이 더 오래 걸리는 것에 비유할 수 있습니다.
인터프리터 언어는 직접 코드를 구동시키는 방식이기 때문에 실제 실행시간은 느릴지 몰라도 실시간으로 디버깅이나 코드가 수정 가능하다는 장점이 있습니다.
실행 과정을 살펴보면
1) 명령어 한 줄을 메모리에 가져온다.
2) 가저온 명령어를 해석한다.
3) 명령어 실행에 필요한 데이터를 가져온다.
4) 명령어를 실행한다.
라는 방식입니다.
대표적인 언어로는 Python과 Ruby가 있으며, 인터프리터 언어를 스크립트 언어라고 부르기도 합니다.
Q. 컴파일 언어는 뭔가요?
컴파일 언어는 원시 코드를 모두 기계어로 변환한 후에 기계에 넣고 기계 코드를 실행하는 방식입니다.
프로그래머가 작성한 말을 기계가 알아듣기 쉽게 다 번역을 해주는 것이죠.
아무래도 이런 번역 과정을 거치기 때문에 인터프리터 언어에 비해서 시간이 많이 소요됩니다만 런타임 상황 속에서 컴퓨터가 알아듣기 쉬운 기계어로 모든 소스코드가 변환되어있어 빠르게 실행이 가능합니다.
영어를 잘 못하는 사람이 영어 페이지를 번역해가면서 읽는 것보다 한국어 페이지를 바로 읽는 것이 더 빠르게 읽을 수 있는 것에 비유할 수 있습니다.
앞서 말씀드린 것처럼 컴파일 언어는 인터프리터 언어보다 훨씬 빠르게 실행되지만 만약 프로그래머가 작성해야 하는 코드의 크기가 크다면 다소 시간은 오래 걸릴 수 있습니다.
실행 과정을 살펴보면
1) 고급언어의 어휘를 분석한다.
2) 고급언어의 구문을 분석한다.
3) 중간급 언어 코드를 생성한다.
4) 기계어로 변환한다.
5) 기계어 코드를 생성한다.
라는 방식입니다.
대표적인 언어로는 C언어와 C++ 이 있습니다.
참고: https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0
https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8C%8C%EC%9D%BC_%EC%96%B8%EC%96%B4
'소년의 IT 쉽게 이해하기 > 개발 쉽게 이해하기' 카테고리의 다른 글
소프트웨어 아키텍처(Software Architecture) 쉽게 이야기하기 (0) | 2022.02.08 |
---|---|
좋은 프로그램이란 뭔가요? (0) | 2021.12.30 |
라이브러리(Library) 쉽게 이야기하기 (0) | 2021.12.09 |
프레임 워크(Frame Work) 쉽게 이야기하기 (0) | 2021.12.03 |
DB 쉽게 이야기하기 (1) | 2021.12.02 |
댓글