2020-04-24 06:39:22

우리가 C, C++, Python 등 어떤 프로그래밍 언어로 코딩하든지 간에 컴퓨터는 이것을 이해할 능력이 없습니다. 근본적으로 컴퓨터는 0과 1만 이해할 수 있는 친구입니다. 전기적 신호가 켜졌으면 1(on), 아니면 0(off).

 

그렇기 때문에 우리가 작성한 소스코드를 컴퓨터가 이해할 수 있는 기계어로 번역해줄 번역가가 필요합니다. 이 번역가의 역할을 해주는 것은 두 종류가 있는데 하나는 컴파일러(compiler)이고 또 다른 하나는 인터프리터(interpreter)입니다. 컴파일러에 의해 번역이 이뤄지는 프로그래밍 언어를 컴파일(compile) 언어라 부르고, 인터프리터에 의해 번역이 이뤄지는 언어는 인터프리트(interpret) 언어라고 부릅니다. 대표적인 컴파일 언어에는 C, C++ 등이 있고, 인터프리트 언어에는 Python, Javascript 등이 있습니다. 

 

이 둘의 차이에 대해서 제가 이해하고 있는 것들에 대해 정리해보겠습니다.  

 

 

1) 컴파일러라는 번역가는 실행 이전에 전체 코드를 한번에 기계어로 번역해버립니다. 그 결과 오브젝트파일이 생성됩니다. 반면, 인터프리터라는 번역가는 실행 이후에 한 줄씩 한 줄씩 번역을 해갑니다. 인터프리터는 오브젝트파일을 생성하지 않습니다.  

 

2) 컴파일 언어는 실행 전에 컴파일러에 의해 생성된 오브젝트파일을 이용해서 프로그램을 실행하기 때문에, 실행 속도가 빠릅니다. 반면, 인터프리트 언어는 실행할 때마다 한 줄씩 번역을 진행하기 때문에 컴파일 언어에 비해 실행 속도가 느린 편입니다. 

 

3) 컴파일 언어는 에러가 한군데라도 있으면 컴파일에 실패하여 프로그램을 실행시킬 수 없지만, 인터프리트 언어는 어딘가에 에러가 있더라도 실행이 가능합니다. 한 줄씩 코드가 명령하는 바를 수행하다가 에러를 만나면 멈춥니다. 

 

4) 컴파일 언어를 배우는 것이 인터프리트 언어를 배우는 것에 비해 좀 더 어렵습니다. 코딩을 할 때 좀 더 디테일한 요소들을 고려하면서 해야하기 때문입니다. 하지만 어려운 만큼 더 배울 것이 많고, 산업 현장에서 더 많이 사용됩니다. 하지만 처음 코딩을 접할 때는 인터프리트 언어로 시작하는 것이 좋습니다. 코딩에 어느 정도 흥미와 지식이 생겼을 때 슬슬 컴파일 언어에 다가가는 것도 하나의 좋은 방법이라고 봅니다. 

 

여러분이 주로 사용하시는 프로그래밍 언어는 컴파일 언어인가요? 아니면 인터프리트 언어인가요? 

 

 

<참고자료>

[1] https://hieroglyph.tistory.com/4, "컴퓨터 이야기", 컴파일러와 인터프리터의 차이

[2] https://jins-dev.tistory.com/entry/Compiler-%EC%99%80-Interpreter-%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90, Jin's Dev Inside, "컴파일러와 인터프리터의 개념과 차이점"

[3] https://brunch.co.kr/@insuk/11, 조인석, "어떤 프로그래밍 언어를 배워야 하죠?"