본문 바로가기
Computer Science/개발상식

컴파일 언어 vs 인터프리터 언어

by eunnnn 2023. 2. 12.

컴파일 언어 

 

컴파일 언어는 작성한 소스 코드 전체를 한 번에 기계어로 번역한 뒤, 이 번역된 코드를 한번에 실행하는 두 단계를 거쳐 진행된다. 즉 번역과 실행이 완전히 따로 이루어진다는 뜻이다. 번역은 컴파일러를 통해 수행되고, 대표적인 예시로는 C, C++, Go 등이 있다.

 

  • 규모가 큰 프로그램은 컴파일 시 오래 걸릴 수 있다.
  • 컴파일 후에는 모든 소스코드가 기계어로 변환되어 있기 때문에 실행 시간이 빠르다.
  • 코드를 수정하면 다시 컴파일 과정을 거쳐야 한다.

 

인터프리터 언어

 

인터프리터 언어는 소스 코드를 한 줄씩 읽어들이면서 번역과 실행을 동시에 진행한다. 번역은 인터프리터를 통해 수행되며, 대표적인 예시로는 스크립트 언어인 Python, R, JavaScript 등이 있다.

 

  • 빌드 과정 없이 바로 실행이 가능하다. → 별도의 실행 파일이 없다.
  • 컴파일과정 없이 바로 실행하기 때문에 수정, 디버깅에 유리하다. 즉 개발속도에 유리하다.
  • 컴파일을 하지 않고 인터프리터가 직접 한 줄씩 읽어서 실시간으로 실행하기 때문에 컴파일 언어에 비해 속도가 느리다. → 번역과 실행이 동시에 이루어진다.

 

Java는 컴파일 언어인가? 인터프리터 언어인가?

자바 소스코드는 먼저 자바 컴파일러를 사용하여 바이너리 바이트 코드(.class)로 컴파일된 다음 이 바이트 코드가 소프트웨어 기반 인터프리터인 JVM(Java Virtual Machine)에서 실행된다. 따라서 자바는 컴파일과 인터프리터 둘 다 사용하는 것으로 간주된다.

자바 컴파일러가 소스 코드(.java)를 자바 바이트 코드(.class)로 컴파일하고, 자바 인터프리터는 바이트 코드를 기계어가 이해할 수 있는 기계코드로 변환(convert)하거나 번역(translate)한다.