컴파일러(Compiler), 인터프리터(Interpreter), 하이브리드(Hybrid)

wujin·2023년 4월 16일

컴파일러(Compiler)

  • 프로그램 전체를 한번에 번역한 후 실행한다.
  • 컴파일러는 프로그램을 기계어로 번역하여 실행 파일을 만든다.
  • 목적 프로그램 생성으로 메모리를 사용한다.
  • 컴파일러에 의해 번역된 프로그램은 언제든지 실행될 수 있는 실행 가능한 프로그램이다.
  • 모든 소스코드를 모아서 일괄적으로 번역하기 때문에 번역 시간이 오래 걸린다.
  • 하지만, 번역된 실행 파일을 실행하면 속도가 빠르다는 장점이 있다.
  • 특정 시스템에서 번역된 실행파일이 다른 시스템에서는 실행되지 않는다

대표적인 컴파일러 언어 : C, C++, 포트란

인터프리터(Interpreter)

  • 고급 언어로 작성된 명령문을 한 줄씩 읽어서 바로 실행한다.
  • 목적 프로그램을 생성하지 않는다.
  • 메모리를 사용하지 않는다.
  • 즉, 프로그램을 번역하는 동시에 실행하며, 번역 시간이 거의 없다.
  • 하지만, 실행 속도가 느리다는 단점이 있다.
  • 주요 스크립트 언어에서 대부분 사용 (웹이 작동하는 방식이 전형적인 인터프리터 기법)

대표적인 인터프리터 언어 : Basic, javascript, Python, HTML, ASP, PHP, Perl

하이브리드(Hybrid)

  • 컴파일 기법과 인터프리트 기법을 결합한 것.
  • 소스코드를 일부는 미리 번역해서 실행 파일을 만들고, 나머지 부분은 인터프리터를 사용하여 실행한다.
  • 이러한 방식으로 인하여, 컴파일러와 인터프리터의 장단점을 적절히 활용하여 실행 속도와 번역 시간을 모두 개선할 수 있다.
  • 한번 작성된 프로그램은 어떤 컴퓨터 시스템에서든지 즉시 실행이 가능하다.
  • 인터프리트 방식의 단점인 소스프로그램의 공개과 컴파일러 방식의 단점인 특정 컴퓨터에 종속적이라는 단점을 해결한다.

대표적인 하이브리드 언어 : JAVA, C#


Java는 어떤 언어인가?

Java가 처음 출시된 1995년 당시, Java는 "컴파일 언어"로 분류되었다. 이유는 Java가 다른 인터프리터 언어들과는 달리 소스코드를 컴파일해서 실행 파일을 만들 수 있기 때문이다. 이 실행 파일은 운영체제에 따라서 실행되는데, Windows에서는 ".exe" 확장자를 갖는 실행 파일이 만들어지고, Unix 계열 운영체제에서는 ".class" 확장자를 갖는 실행 파일이 만들어진다.

하지만, 이러한 실행 파일은 JVM에서 실행되는 바이트코드(Bytecode)를 포함하고 있으며, 이 바이트코드는 인터프리터에 의해 실행된다. 따라서 Java는 실제로는 컴파일러와 인터프리터를 결합한 하이브리드 언어이며, 최근에는 Java가 하이브리드 언어로 분류되는 것이 일반적이다.

0개의 댓글