컴파일러 vs 인터프리터 (언어)

노영완·2023년 8월 2일
0
post-custom-banner

가장 큰 개념으로 컴파일러 인터프리터는 프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어로 번역하는 번역기 그리고 이 두가지 번역기에는 각각의 특징이 있다.

컴파일러

컴파일러는 코드가 실행되기 전 단계인 컴파일 타임에서 프로그램 전체를 스캔하여 이를 모두 기계어로 번역한다. 전체를 스캔하기 때문에 대개 컴파일러는 초기 스캔 시간이 오래 걸린다. 하지만 전체 시간만 따지고 보면 인터프리터 보다 빠르다. 왜냐하면 컴파일러는 초기 스캔을 마치면 실행파일을 만들어 놓고 다음에 실행할때 이전에 만들어 놓았던 실행파일을 실행하기 때문. 단, 프로젝트 규모가 클 경우 컴파일 시간이 오래 걸릴 수 있다는 단점이 있다. 컴파일러는 오류 메시지를 생성할때 전체 코드를 검사한 후에 오류 메시지를 생성한다. 그래서 실행 전(런타임)에 오류를 발견 할 수 있다.

언어

C, C++, C#, JAVA

인터프리터

컴파일러와는 반대로 인터프리터는 프로그램 실행시 한 번에 한 문장씩 번역한다. 그렇기 때문에 한번에 전체를 스캔하고 실행파일을 만들어서 실행하는 컴파일러보다 실행시간이 더 걸린다. 그리고 실행파일을 만들어 놓지 않는다. 이 또한 실행시간이 느린 이유 중 하나이겠지만 단점만 있는것은 아니다. 메모리 효율에는 훨씬 좋은 모습을 보인다. 인터프리터는 오류 메시지 생성과정이 컴파일러와 다르다. 인터프리터는 코드 실행단계인 (런타임)에 한문장씩 번역하기 때문에 일단 프로그램이 실행이 되고 한문장씩 읽는 과정에서 오류를 만나게 되면 바로 프로그램을 중지한다. 그래서 프로그램을 실행해봐야지만 오류 발견이 가능하다.

언어

Python, Ruby, Javascript

정리

컴파일러

  • 코드가 실행되기 전 단계인 컴파일 타임에 전체 파일을 스캔하여 한번에 번역
  • 초기 스캔이 오래 걸리지만, 실행파일을 생성하고 실행파일이 생성되면, 실행속도가 빠르다 컴파일은 단 한번만 수행되고, 컴파일 단계를 거치고 실행 파일을 실행한다.
  • 전체 파일(코드)을 스캔하는 과정에서 모든 오류를 한꺼번에 출력해주기 때문에 실행 전에 오류를 알 수 있다.
  • 기계어 번역과정에서 더 많은 메모리를 사용한다.

인터프리터

  • 코드가 실행하는 단계인 런타임에 한 문장씩 번역한다. 한번에 한문장씩 번역후 실행 시키기 때문에 실행속도가 느리다.
  • 실행파일을 생성하지 않고, 인터프리터 단계와 실행 단계가 분리되어 있지않으며 코드가 실행될때마다 앞선 인터프리트 과정(한번에 한문장씩 번역 후 실행)과정이 반복 수행한다.
  • 프로그램을 실행시키고 나서 오류를 발견하면 바로 실행을 중지 실행 후에 오류를 알 수 있다.
  • 기계어 번역과정에서 컴파일보다 효율적인 메모리를 사용한다.
post-custom-banner

0개의 댓글