[기술면접] 컴파일러 vs 인터프리터

송진영·2022년 10월 13일
0

기술면접

목록 보기
4/24

컴파일러, 인터프리터 용도

우리가 현재 사용하는 일반적인 고급 프로그래밍 언어(Ex. C, Java, Python)들을 컴퓨터가 알아들을 수 있는 기계어로 번역하기 위한 수단으로 컴파일러인터프리터가 있다.

컴파일러

  • 전체 파일을 스캔하여 기계어로 번역
  • 초기 스캔이 오래 걸리지만 실행 파일을 만들어 이후엔 빠름
  • 기계어 번역 과정에서 오브젝트 코드 생성 및 링킹 작업으로 더 많은 메모리를 사용
  • 전체 코드 검사 후, 오류 메시지를 생성하기 때문에 실행 전에 오류 발견
  • 운영체제 이식성이 낮다.
  • Ex. C, C++, Java

인터프리터

  • 프로그램 실행시 한 번에 한 줄씩 번역하여 컴파일러보다 오래 걸림
  • 빌드 과정 없이 실행(별도의 실행 파일이 없다)하여 메모리 사용이 적음
  • 프로그램 실행시 오류 발견시 바로 중지되기 때문에 실행 후 오류 발견 가능 -> 오류를 조기에 발견하기에 오류 발견이 쉽다.
  • 운영체제 이식성이 좋다.
  • Ex. Python, Javascript, Ruby

컴파일러 vs 인터프리터

컴파일러와 인터프리터 중 어느 게 나을까?
그건 상황에 따라 달라진다.

플랫폼(하드웨어) 종속성

플랫폼 종속성이란 개발 도중 개발 환경을 바꿨을시 문제가 발생하는가라는 것이다.

컴파일러는 해당 플랫폼에서 동작하는 실행 파일을 만든 후에 다른 플랫폼으로 옮겨 해당 실행 파일을 실행했을 경우, 제대로 동작하지 않는다.

하지만 인터프리터는 별도의 실행 파일을 만들지 않기 때문에 다른 플랫폼으로 이동해도 문제가 발생하지 않는다.

프로젝트 규모

프로젝트 규모에 따라 적용되는 장단점들이 달라진다.

인터프리터는 한 줄씩 번역하기 때문에 규모가 작은 프로젝트에서 수정 및 디버깅이 유리하여 개발 속도가 빠르다.

하지만 컴파일러는 초기에 실행 파일을 만들어서 이후에 실행할 경우 빠르게 번역할 수 있다. 그래서 프로젝트의 규모가 커질수록 인터프리터와 번역 속도의 차이가 더 커질 것이다.

참고

jhur98.log
cbw1030

profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글