aotoyae

[SW] comfiler & interpreter 컴파일러와 인터프리터 본문

Software

[SW] comfiler & interpreter 컴파일러와 인터프리터

aotoyae 2024. 1. 1. 23:05

 

 

: 고수준 프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어 Machine code로 번역해 줌

: 프로그래밍 언어의 "번역기"

  컴파일러 인터프리터
실행 방식 코드를 컴파일러로 번역한 뒤 사용자의 컴퓨터로
번역된 코드를 보낸다. 그리고 실행
코드를 인터프리터가 깔려 있는 사용자의 컴퓨터를 보내
번역한다. 그리고 실행
개발 편의성 👿 코드를 수정하고 실행하려면 컴파일을 다시 해야 한다.
(실행할 때마다 전체 코드를 읽음)
😇 코드를 수정하고 즉시 실행할 수 있다.
(한 줄씩 바로바로 실행)
실행 속도 😇 빠르다. 👿 느리다. (사용자의 컴퓨터에서 번역을 하니까)
보안 😇 프로그램의 코드가 유출되지 않는다. 👿 프로그램의 코드가 유출될 수 있다. (코드 전체를 보내니까)
파일 용량 👿 프로그램의 실행 파일 전체를 전송해야 하므로,
용량이 크다.
😇 프로그램의 코드만 전송하면 실행이 되므로,
용량이 작다.
프로그래밍 언어 C, C++ 처럼 비교적 저수준에 가까운 언어 Python, Ruby 처럼 비교적 고수준에 가까운 언어

 

보통 고급언어에서 점점 더 저수준 언어로 번역될수록 코드 길이가 훨씬 길어진다.

그래서 전체 프로그램을 머신 코드로 만들어서 전달하는 컴파일러 방식보단

고수준 언어 그 자체로 전달하는 인터프리터 방식의 프로그램 용량이 더 작다!

개발 편의성은 떨어지지만 실행 속도는 빠른 저수준 언어와

개발 편의성이 높지만 실행 속도는 느린 고수준 언어와 비슷하다.

 

 

💡 고수준 언어는 개발 편의성이 생명인데, 컴파일을 거치면 그 장점이 사라진다.

그러니 고수준 언어는 인터프리터 방식을 주로 사용

 

💡 저수준 언어는 개발 과정이 좀 힘들더라도 어떻게든 최고의 성능, 효율, 속도를 만들어내고자 했다.

그런데 인터프리터 방식으로 느린 환경에서 실행된다면, 힘들게 저수준 언어로 개발한 이유가 사라진다.

그러니 저수준에 비교적 가까운 언어들은 컴파일 방식으로 실행되는 경우가 많다!