compilation vs interpretation

yeseul kim·2021년 10월 14일

compilation

행맨 : cpu안의 cu(control unit)으로 alu(연산장치)를 가지고 프로그램을 실행한다.

  1. 코드를 실행파일로 번역한다.

  2. 하드디스크(보조기억장치)에 저장한다.

  3. 실행 - > 메인메모리에서 실행

    e.i. c, c++

컴파일 특징

  • 한번에 미리 번역한다.
  • 컴파일된 실행파일(exe)은 cu가 바로 실행할 수있다.
  • 코드에 구문오류가 있다면 애초에 실행파일을 만들지 않기때문에, 번역된 실행파일을 배포할땐 구문오류가 발생하지 않는다. (버그는 있을 수 있다)
  • 기계어를 직접 만들어낸다.
  • 컴파일된 파일은 실행만 하면되기 때문에 수행 성능이 좋다.
  • 별도의 실행환경이 없다. 메모리를 직접 관리한다.
  • 번역된 실행파일은 플랫폼(cpu)에 따라 호환이 안될 수도 있다.

interpretation

  1. 소스코드를 번역하지 않고 바로 실행
  2. 기계어로 번역하기 위해 cu외에도 추가적인 프로그램(가상머신 + JIT번역기)이 필요하다.
    ex) java - > java, javascript → node.js

ex) python, javaScript

  • 컴파일방식에 비해 수행 성능이 떨어진다.
  • 플랫폼과 상관없이 실행환경만 갖춰진다면 어디에서든 실행 가능하다.
  • 플랫폼에 국한되지 않는다는 특성(멀티플랫폼)때문에 인터프리터 언어가 많이 사용되는 추세.
  • 소스코드가 노출될 수 있다.

컴파일과 인터프리터를 모두 갖춘 언어

Java, c#

profile
hello, world

0개의 댓글