IT 기초/General

Compile Language vs Interpreter Language

데이터 세상 2021. 12. 29. 20:10

Compile Language

런타임 이전에 기계어 (혹은 Java의 경우 바이트코드) 로 변환되는 언어

  • 어셈블리어는 CPU에 의존적이기 때문에, 컴파일된 코드들은 여러종류의 프로세서를 자유롭게 옮겨다니며 사용될 수 없다. (.exe, .dmg)
  • 파일 이전의 소스코드도 운영체제별 특징이 있어 각각의 라이브러리를 요구한다.
  • ex) C, C++, Java
  • 자바는 런타임 전에 기계어가 아닌 바이트코드로 컴파일 되며, 런타임중에 기계어로 바뀐다. 하지만 컴파일 시점이 런타임 이전이기 때문에 컴파일언어에 속한다.

 

Interpreter Language

런타임중에 프로그램 한줄한줄을 해석하며 실행

  • 파이썬의 경우 런타임중의 컴파일 과정에 렉서(lexer), 파서(parser) 를 거쳐서 바이트 코드를 만들어낸다
  • 바이트코드는 가상머신(virtual machine) 위에서 돌아가기 때문에 어떤 CPU 위에서도 돌아갈 수 있다.
  • Java, python 모두 바이트코드를 사용하기 때문에 vm(virtual machine)이 필요하다.

 

차이점

실행 단계의 차이

  • 컴파일 언어는 ‘컴파일러’ 단계가 필요하고 인터프리터 언어는 별도의 ‘컴파일러’ 과정이 필요없음

생산 속도의 차이

  • 컴파일 언어의 경우 ‘컴파일러’ 과정이 들어가기 때문에 인터프리터 언어보다 생산 속도가 느림
  • 인터프리터 언어는 과정이 단순하기 때문에 생산 속도가 빠름

소스 코드 작성 제약사항

  • 컴파일형 언어에는 소스 코드 작성을 위한 제약사항이 스크립트형 언어보다 더 많음
  • 컴파일 언어는 사용해야 하는 변수의 자료 및 각종 문법에 따른 제약 사항들을 인지해야 함

디버깅

  • 인터프린터 언어의 경우 소스 코드가 실행되기 전까지는 소스 코드의 버그를 인지하는 것이 어려움

실행 속도

  • 실행 속도는 컴파일 언어가 훨씬 더 빠름
  • 컴파일을 한 뒤에 생성된 파일에 의해 프로그램이 실행되기 때문에 번역기에 의해 번역이 되고 실행되는 인터프리터 언어에 비해 훨씬 빠름
  • 실행 속도는 C언어, C++ -> Java -> Python 순으로 느려짐
  • 연산 속도나 실행 속도에 민감한 프로그램은 인터프리터 언어로 개발하지 않음

 

반응형

'IT 기초 > General' 카테고리의 다른 글

MQTT vs CoAP  (0) 2021.12.29