Computer Science (CS)/CS

컴파일러 vs 인터프리터

eune7 2025. 2. 5. 01:22
728x90
반응형

 

 

 

 

Compiler는 "편집하다", Interpreter는 "해석하다의 의미를 갖고 있다.

컴퓨터의 세계에서는 어떤 역할을 하고 있는 지

제대로 짚어보려고 한다.

 

 


 

0. 해석이 왜 필요할까?

먼저 해석, 번역 등이 왜 필요한 지를 알아보자. 이유는 굉장히 간단하다.

우리가 Java, Python 등으로 작성한 코드를 컴퓨터가 바로 인식할 수 있을까?

컴퓨터는 그리 똑똑하지 않다.

그렇기 때문에 컴퓨터가 이해할 수 있는 언어로 바꿔주는, 번역해주는 작업이 필요한 것이다.

 

 

1. 컴파일러 (Compiler)

그러한 상황에서의 번역기 중 하나가 컴파일러이다.

컴파일러는 C, C++과 같이 기계와 가까운 저수준 언어에서 사용된다.

 

저수준 언어에 특징을 생각해보면 

  • 타입을 지정한다.
  • 처리 속도가 빠르다.

 

위 특징을 고려하여 보면 컴파일러의 특징도 유추할 수 있다.

  • 빠르다.
  • 보안이 좋다.

 

물론 단점도 존재한다.

  • 코드를 수정하면 컴파일을 다시 해야 한다.
  • 파일 전체를 컴파일 하기에 용량이 크다.

 

단점을 보고 하나 의문이 생길 수 있다.

"파일 전체를 컴파일하는 데 어떻게 속도가 빠르지??"

 

컴파일러는 초기 스캔을 마치고 나면 실행 파일을 만들어 놓는다.

추후 컴파일할 때 이전에 만들어 놓았던 실행 파일을 실행하기 때문에 속도가 빠르다.

 

또한 실행 파일을 만드는 과정에서 오류를 프로그램 실행 전에 미리 발견할 수 있다.

다만 실행 파일은 운영 체제에 관여를 받기 때문에 다른 환경에서 실행하려면 별도 컴파일 과정이 필요하다는 점이 있습니다.

 

위와 같은 특징들 때문에 인터프리터를 사용하는 고수준 언어는 IoT와 같은 분야에서 사용된다.

 

 

2. 인터프리터 (Interpreter)

인터프리터는 컴파일과 반대로 Python과 같은 고수준 언어에 사용된다.

고수준 언어에 특징은

  • 타입을 지정하지 않는다.
  • 처리 속도가 느리다.

 

위 특징을 고려하면 인터프리터의 특징은 다음과 같다.

  • 보안이 취약하다.
  • 느리다.

 

물론 장점도 있다.

  • 코드 수정 시 바로 실행이 가능하다.
  • 코드 한 줄씩 실행하기에 용량이 작다.

 

오류 발견의 경우 한 줄씩 실행하다가 오류 발생 시 프로그램이 중지되기에

프로그램을 실행해보아야 오류를 찾을 수 있다는 단점이 있다.

 

딥러닝에서 주로 사용되는 Python의 경우 JIT 컴파일러를 통해 인터프리터 언어임에도 불구하고 컴파일이 가능하다고 합니다 :)

 

 

3. 정리

컴파일러 인터프리터
타입 지정하기에 보안이 좋다 타입 미지정하기에 보안이 취약하다
생성 파일을 재사용하기에 빠르다 한 줄씩 확인하기에 느리다
파일 전체를 확인하기에 용량이 크다 한 줄씩 실시간으로 확인하기에 용량이 작다
실행 파일을 만드는 과정에서 미리 오류 확인이 가능하다 프로그램 실행을 하며 작동하는 것이기에 미리 오류 확인이 불가능하다
C, C++ 등 저수준 언어에서 사용된다 Python 등 고수준 언어에서 사용된다

 

 

 

728x90
반응형