카테고리 없음

컴파일러 언어와 인터프리터언어

_April 2019. 11. 20. 00:38

컴퓨터는 1과 0으로 말하고(기계어, low level language), 인간은 컴퓨터와 대화하기 위해 코드(high level language)를 사용한다.

그래서 컴퓨터가 인간의 언어를 알아듣게 변환하는 과정이 필요한데,

그 방식은 컴파일과 인터프리터이다.

컴파일러언어의 예: C

인터프리터 언어의 예: javascript, python

 

이 방식에 따라 언어간 실행 속도의 차가 존재한다. 한번 컴파일되면 컴파일러 언어가 실행속도가 더 빠르다.

 

우리가 외국어 영상을 보는 상황이라고 하자.

컴파일언어는 자막을 달아+인코딩 되어 업로딩 된 영상을 보는것이다. 한번 업로드되면 멈추지않고 빠르게 영상을 볼수있다.

이 자막+인코딩+영상 세트를 목적파일이라고 한다(object file, .o파일형태이다)

반면 인터프리터는 옆에서 그때 그때 통역가가 번역을 해주는것이다.

따라서 소리가 겹치지 않게 하기 위해 가끔 영상을 일시 정지해야할때도 있다.

어쩌면 번역할 시간을 벌기위해 영상을 0.5배속으로 봐야할수도 있다.

 

이 비유는 다른 항목에도 적용된다.

1.에러의경우

컴파일러는 자막을 만들때 뜻이 통하지않는/ 모르는 문장이 있는지 확인하고 영상 업로드전에 작업을 중지한다.

따라서 컴파일언어는 에러가 있으면 빌드가 되지 않아 실행할 수 없다. 반면 컴파일이 끝났다면 오류가 없다는것이다.

 

바면 인터프리터는 한참 통역을 하다가 갑자기 어? 나 이뜻모르겠어 미안! 하고 통역을 멈춰버릴것이다. 사전을 준비하거나 다른 인터프리터를 구하거나 이건 차후의 문제가 되어버린다.

즉 에러가 있건 없건 프로그램은 실행되나, 실행 중 오류가 있는 곳에서 프로그램이 멈춘다..

 

2.준비 시간

실행시 컴파일이 시간이 좀더 걸리는것도 마찬가지다. 프로그램 실행시 컴파일언어는 빌드 시간이 걸린다.

빌드시간은 즉 자막을 달아 인코딩하는 시간이다. 따라서 소스코드의 크기가 클수록 컴파일시간이 오래걸린다.

반면 인터프리터언어는 바로 실행된다. 준비된 통역가가 바로 나오기만 하면 되기 때문이다. 

 

인터프리터 언어가 코드실행에 걸리는 시간은 조금더 느리지만, 많이쓰이는 이유는 다음과 같다.

1. high-level language여서 기계의 언어보다는 인간의 언어에 가깝다. 즉 습득하기 더 쉽다.

2. 유지보수 생산성이 높다. 빌드시간이 짧아서 바로바로 코딩하며 확인하기도 쉽고, 대부분의 인터프리터 언어(c이상의 고급언어)를 사용할때는 메모리관리를 할필요가 없어지기 때문이다.