꺾이지 않는 마음

[CS] 인터프리터 언어 vs 컴파일 언어 본문

CS 전공지식

[CS] 인터프리터 언어 vs 컴파일 언어

중요한 것은 2022. 7. 27. 18:04

 

기계어


컴퓨터는 0과 1만을 구분할 수 있다는 말을 들어봤을 것이다.

전력이 들어오고 나감에 따라 0과 1만을 출력한다.

그래서 컴퓨터 내에서 이루어지는 모든 동작은

내부적으로 0101011101010110110101010과 같이 무수히 많은 0과 1로 이루어진다.

 

이것이 바로 기계어다.

 

근데 저 0과 1만을 가지고 인간이 프로그래밍을 할 수 있을까?

세상에서 제일 가는 천재가 와도 불가능하다.

무수히 많은 저 0과 1을 언제 다 치고 앉아있을까.

 

그래서 나온게 C언어, Java, JavaScript 등의 프로그래밍 언어다.

물론 기계어와 비슷한 어셈블리어도 있다. 하지만 이것 또한 인간이 사용하기엔 너무 어렵다.

 

기계어와 어셈블리어처럼 0과 1에 가까운 원시적인 언어일 수록 저급 언어(low-level language)라고 부르고,

인간이 사용하기 쉽도록 만들어진 언어를 고급 언어(high-level language)라고 부른다.

 

우리가 현재 코딩할 때 사용하는 대부분의 언어가 이 고급 언어에 포함된다고 보면 된다.

 

고급 언어 중에서 이제 인터프리터 언어컴파일 언어로 나뉘게 된다.

 

인터프리터 언어


대표적인 인터프리터 언어로는 Ruby, Python, Javascript 등이 있다.

인터프리터 언어는 코드를 한줄 씩 읽고 실행한다.

컴파일 하지 않고 인터프리터가 있는 환경에서 즉시, 바로 한줄씩 읽고 해석하고 실행하는 것이다.

 

한줄 씩 실행되다 보니 코드를 더 유연하고 효율적으로 짤 수 있다.

코딩을 하는데 걸리는 시간이 비교적 짧다는 의미다.

 

대신 한줄 씩 실행하기 때문에 명령 자체의 속도는 느리다.

또한 실행하기 전에는 오류를 알 수 없다는 단점이 있다.

 

 

컴파일 언어


대표적인 컴파일 언어로는 C, C++, Java, Go 등이 있다.

컴파일 언어는 코드가 있는 파일 전체를 한꺼번에 번역한 후, 실행한다.

 

그래서 컴파일 하는데 시간이 소요되지만,

컴파일 하고 나면 프로그램을 실행하는 속도는 비교적 빨라진다.

컴파일 할 때 오류가 발견되기 때문에 실행 전에 오류를 발견할 수 있다.

 

하지만 코드를 수정하려면 파일 전체를 다시 컴파일 해야하는 번거로움이 있으며,

운영체제가 달라지면 컴파일을 다시 해야한다는 단점이 있다.

 

 

 

 

'CS 전공지식' 카테고리의 다른 글

[CS] API가 뭐죠? - 아주 쉽게 설명하기  (0) 2022.10.22
[CS] 동기, 비동기 처리란?  (0) 2022.10.20
Comments