Notice
Recent Posts
Recent Comments
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
10-10 20:16
Archives
Today
Total
관리 메뉴

Developer_Neo

[python] 컴파일러 VS 인터프리터 본문

프로그래밍/Python

[python] 컴파일러 VS 인터프리터

_Neo_ 2022. 1. 16. 10:40
반응형

파이썬은 인터프리터가 필요한 언어이다.

이외의 인터프리터가 필요한 언어는 자바스크립트, 파이썬, 루비, sql,...

 

컴파일러는 C, C++, C#, Go,...에 쓰인다.

 

자바는 컴파일러와 인터프리터 모두 사용

 

컴퓨터는 모든 명령을 0과 1로 이해하여 CPU가 처리하고 실행한다. 그래서 우리의 언어인 한글이나 영어는 이진코드로 해석하고 명령을 처리한다 따라서 우리의 언어로 친 코드들을 컴퓨터가 이해할 수 있게 번역해주는 번역기가 필요한데 이 번역기가 인터프리터, 컴파일러이다.

둘 다 고레벨 언어로 작성된 프로그래밍 언어를 기계어로 번역하는 것은 공통점이다.

 

컴파일러는 전체 소스코드를 보고 명령어를 수집하고 재구성하지만

인터프리터는 소스코드의 각 행을 연속적으로 분석하며 실행한다.(  명령을 한 줄 씩 입력하면 인터프리터가 그때그때 답을 돌려주는 방법

 

인터프리터는 고레벨 언어를 바로 기계어로 번역하지 않고 중간 형태로 변환(Intermediate code)시킨 후 실행한다.
반면 컴파일러는 고레벨 언어를 바로 기계어로 변환한다.

 

이해를 돕기 위한 사진

컴파일러

  1. 코드를 수정하고 실행하려면 컴파일을 다시 해야한다.
  2. 실행속도가 빠르다
  3. 프로그램의 코드가 유출되지 않는다
    1. 기계어로 번역이 되어버렸기 때문에 소스코드의 원본이 노출될 우려가 매우 적어 거의 없다.
  4. 프로그램의 실행파일 전체를 전송해야하므로, 용량이 크다.
  5. 오류가 나면 컴파일러는 컴파일 하는 도중에 오류가 난다

인터프리터

  1. 코드를 수정하고 즉시 실행할 수 있다
  2. 실행속도가 느리다. 
    1. why? 소스 코드를 한줄씩 가져와서 기계코드로 번역해야 하므로 입력 대기 시간이 아주 길어집니다. 
    2. 번역과 실행이 동시에 이루어진다.
  3. 프로그램의 코드가 유출될 수 있다.
    1. 소스코드를 바로 번역해서 실행하기 때문에 원본 소스코드가 그대로 노출된다
  4. 프로그램의 코드만 전송하면 실행되므로 용량이 적다.
  5. 컴파일과정 없이 바로 실행하기 때문에 수정, 디버깅에 유리하다. 즉 개발속도에 유리하다.
    1. 런타임에 실시간 디버깅 및 코드 수정이 가능
  6. 분석 도중 어느 행에 오류가 발생하면 그것을 알려주고 그 이후의 분석을 멈춘다.
반응형
Comments