Computer Programming/AI

TIL_Interpreter와 Compiler란?

JYCoder 2023. 11. 10. 16:59

Programming 언어마다 다른 방식으로 코드를 실행하게 된다. Python은 Interpreter 방식으로, C나 Java 등은 Compiler 방식으로 코드가 구동된다. 그러면 Interpreter과 Compiler은 서로 어떻게 다른 것인지 알아보았다.

 

  Interpreter Compiler
특징 runtime 이후에 script를 한 줄씩 해석하여 프로그램을 실행하는 방식 runtime 전 binary code로 프로그래밍 언어를 변환하고 프로그램을 실행하는 방식
장점 Runtime 실행 속도가 빠름
소스 코드를 직접 실행하므로 초기 실행이 빠름

Debugging 용이

행 단위로 코드를 해석하므로 실시간 debugging이 가능

플랫폼 독립적

virtual machine을 두고 해석을 하기 때문에 다양한 OS 환경에서도 프로그램 작동이 가능함 

타입을 정하지 않아도 되서 변수 선언이 편리함
타입을 정하지 않아서 Duck Typing이 가능함
*Duck Typing: 실행이 되었을 때 해당 method들을 확인하여 타입을 정함
프로그램 실행 속도가 빠름
소스 코드를 byte code로 변환한 후 실행하여 실행 속도가 빠름

코드 보호가 가능
compiled 소스 코드는 코드가 아니기 때문에 보안에 안전

compile 시간에 오류 검출
코드를 build 할 때 compiler 오류를 검출하여 runtime에서 발생하는 오류를 줄일 수 있음
단점 프로그램 실행 속도가 느림
매번 실행할 때마다 소스 코드를 해석하므로 실행 속도가 느림

코드 보호가 어려움
소스 코드가 공개되므로 코드의 보호가 어려울 수 있음

메모리 사용이 비효울적
실행 중에 메모리를 사용하므로 메모리 사용이 비효율적일 수 있음

Debugging이 어려움
타입을 정하지 않기 때문에 버그를 찾기 어려울 수 있음
compile 시간이 오래 걸림
전체 소스 코드를 compile 해야 하므로 초기 build 시간이 오래 걸릴 수 있음

Debugging이 어려움
실행 파일이 생성된 후에는 dubugging이 어려울 수 있음

플랫폼에 종속적
compiled 코드는 특정 플랫폼에서만 실행 가능

 

LIST