전공공부/기타

[프로그래밍 언어] 컴파일 언어 vs 인터프리터 언어

jooona 2021. 12. 27. 18:04
반응형

우리는 고급 언어를 이용해 프로그램을 짜곤 한다. 여기서 고급 언어란 우리가 사용하는 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

 

[JAVA] JAVA는 컴파일 언어일까, 인터프리터 언어일까?

앞의 글에서 우리가 코딩 시에 사용하는 언어들은 컴파일 언어와 인터프리터 언어로 구분할 수 있다는 사실을 알게 되었다. 다시 기술하자면, C, C++, Go 등의 언어는 컴파일 언어이고, Python, R, Java

jooona.tistory.com

 

반응형