본문 바로가기

프로그래밍/용어 및 개념

컴파일드(Compiled) 언어와 인터프레티드(Interpreted) 언어

프로그래밍 언어는 크게 컴파일드 언어(Compiled Language)와 인터프레티드 언어(Interpreted Language)로 구분할 수 있는데, 컴파일드 언어에는 대표적으로 C, C++ 등이 있으며, 인터프레티드 언어에는 파이썬, PHP, 자바스크립트(JavaScript), 루비(Ruby) 등이 있습니다. 인터프레티드 언어는 순수한 인터프레디트 언어와 하이브리드 언어로 분리됩니다. 이 두 가지 분류에 대해서 간단히 짚고 넘어가자는 취지로 정리하도록 하겠습니다.


○ 컴파일드 언어(Compiled Language)

Compile : 명령어를 번역하다.

컴파일드 언어에는 대표적으로 C, C++ 등이 있으며, 프로그램을 실행하기 위해 소스코드를 컴퓨터가 이해할 수 있는 기계어로 반환하는 컴파일 과정을 거친 후 EXE와 같은 컴파일드 파일을 만들어야 실행할 수 있습니다. 컴파일드 언어는 데이터를 처리하는 속도가 빠르다는 것입니다. 미리 기계어로 컴파일된 파일을 실행하므로 한 줄씩 번역하면서 실행해야하는 인터프레티드 언어보다 더욱 빠르게 데이터를 처리할 수 있습니다. 예를 들어, 우리가 영어를 할 때 통역을 하면서 즉석으로 말하는 것(인터프레티드)과 이미 번역된 영어 문장을 읽는 것(컴파일드 언어)처럼 말이죠. 다른 장점으로는 하드웨어 또는 시스템 플랫폼에 맞게 개발할 수 있다는 것입니다. 컴파일드 언어는 기업에서 에어컨을 만들 때, 냉장고를 만들 때도 주로 사용되며, 이와 같이 소프트웨어에만 국한된 것이 아닌 하드웨어에서도 사용된다는 장점을 갖고 있습니다. 마지막 장점은 소스코드를 감출 수 있다는 것입니다. 프로그램이 항상 컴파일된 상태로 사용자에게 배포되므로, 자신이 개발한 코드의 도용을 방지할 수 있습니다.

이번에는 컴파일드 언어의 단점에 대해서 알아보도록 하겠습니다. 컴파일드 언어로 만든 프로그램을 실행하기 위해서는 항상 컴파일을 해야하는 번거로움이 있고, 그 때문에 코드의 수정 및 배포에 걸리는 시간이 인터프레티드 언어보다 느리다는 단점을 갖고 있습니다. 데이터를 처리할 때에서는 컴파일드 언어가 우세하지만, 코드의 수정, 배포할 때에는 컴파일드 언어가 열세함을 보입니다. 또한 다른 운영체제(OS)에서 프로그램을 실행하기 위해서는 그 운영체제에 맞게 소스코드를 수정해야 하고, 운영체제에 맞는 컴파일 과정을 거쳐야 프로그램을 사용할 수 있다는 단점을 갖고 있습니다.


○ 인터프레티드 언어(Interpreted Language)

Interpret : 통역하다.

컴파일드 언어와는 반대로 인터프레티드 언어의 가장 큰 장점은 컴파일을 하지 않아도 된다는 것입니다. 프로그램을 만들고 실행하기까지의 절차가 컴파일드 언어에 비해서 짧고 간단하기 때문에 개발자가 자신의 아이디어를 쉽게 테스트해볼 수도 있고, 다른 사람들에게 자신의 아이디어를 공유할 수도 있는 프로토 타입을 만들기 위한 목적으로도 많이 사용되고 있습니다. 또 다른 장점은 운영체제에 맞는 인터프레터만 설치되어 있으면, 소스코드의 수정 없이 어떤 운영체제에서도 실행할 수 있는 클로스 플랫폼 언어라는 점입니다. 

하지만 인터프레티드 언어는 컴파일드 언어에 비해 퍼포먼스가 떨어진다는 단점을 갖고 있지만, 요즘은 인터프레티드 언어의 퍼포먼스도 이전에 비해 수준이 높아져서 구글(Google), 유튜브(Youtube), 인스타그램(Instagram) 등 큰 프로젝트에서도 많이 사용되고 있다고 합니다. 인터프레티드의 또 다른 단점은 소스코드를 다른 사람이 볼 수 있다는 것입니다. 하지만 이러한 단점을 보완하기 위해서 파이썬의 경우 PyInstaller, PyEXE 등과 같은 라이브러리를 사용해서 EXE 확장자 파일을 생성하여 배포하거나, C 파이썬을 통해서 바이코드로 컴파일된 PYCpy를 배포할 수도 있습니다.