우리는 고급 언어를 이용해 프로그램을 짜곤 한다. 여기서 고급 언어란 우리가 사용하는 Java, C, Python 등의 언어를 뜻한다. 이 고급 언어는 크게 컴파일 언어와 인터프리터 언어로 구분할 수 있다. 오늘은 둘 간의 차이점을 알아보고자 한다.
1. 컴파일 언어
컴파일 언어는 내가 작성한 소스 코드 전체를 컴퓨터가 알아먹을 수 있는 기계어로 번역한 뒤, 이 번역된 코드를 한번에 실행하는 두 단계를 거쳐 진행된다. 즉 번역과 실행이 완전히 따로 이루어진다는 뜻이다. 번역은 컴파일러를 통해 수행되고, 대표적인 예시로는 C, C++, Go 등이 있다.
* 특징 *
1. 컴파일은 오래 걸릴 수 있다!
--- 힘겹게 만든 코드를 5시간에 거쳐 컴파일을 했다고 가정해보자! 그런데 변수 이름에 오타가 나서 에러가 발생했다면? 5시간동안 다시 컴파일 해야한다. ㅠ
2. 하지만 이미 컴파일이 된 프로그램이라면? 굉장히 빠른 속도로 실행이 가능하다.
--- 이미 컴파일이 다 되어 있어서 실행만 하면 되기 때문에!
3. 운영체제 (OS) 이식성이 낮다.
--- OS마다 실행할 수 있는 기계어가 다른 경우가 있다. 그럼 다른 OS에서 내 실행 파일을 실행시키려면? 이미 만들어둔 실행 파일은 불행히도 실행되지 않는다. 해당 OS에 맞는 컴파일러로 다시 컴파일 해줘야한다.
2. 인터프리터 언어
인터프리터 언어는 소스 코드를 한 줄씩, 번역과 실행을 동시에 진행한다. 번역은 인터프리터를 통해 수행되며, 대표적인 예시로는 Python, R, JavaScript 등이 있다.
* 특징 *
1. 줄 단위로 번역과 실행을 하기 때문에 실행이 느리다.
--- 다시 다 번역하고 실행해야 해서...
2. 디버깅이 쉽다! (개발의 편의성)
--- 오류를 발견하면 해당 코드 밑으로는 번역 및 실행을 못하기 때문에 오류 발견이 쉽다.
3. 운영체제 이식성이 좋다.
--- OS마다 호환되는 인터프리터만 준비되어 있다면 바로 실행이 가능하다!
컴파일 언어와 인터프리터 언어의 예시로 든 언어들을 쭉 살펴보면, 익숙한 언어 하나가 빠져있다.
C... 있고... Python... 있고...
.
.
.
어, Java는 어디갔지?
Java는 둘 중에 어디에 속할까? 에 대한 답은 다음 글에서 확인해보도록 하자!
https://jooona.tistory.com/157