Compiler(컴파일러) vs Interpreter(인터프리터)

losuif·2021년 8월 9일
0

공부

목록 보기
4/11
post-thumbnail

🤔 Compiler(컴파일러)? Interpreter(인터프리터)?


컴파일러와 인터프리터는 고급 언어(소스 코드)를 기계어로 바꿔주는 프로그램

컴퓨터 프로그램은 고급언어로 작성되는데, 이는 사람이 이해하기 위한 것이므로, 이진수로 작성된 기계어만을 이해하는 컴퓨터는 이를 이해하지 못한다. 따라서, 고급언어로 작성된 소스 코드를 기계어로 바꾸기 위해 컴파일러와 인터프리터가 필요하다.


Compiler(컴파일러)

  • 컴파일러는 프로그램을 생성한 후, 모든 구문이 맞는지 확인한다. 만약, 잘못된 부분이 있다면, 에러 메세지를 출력, 에러가 없다면 컴파일러는 소스 코드를 기계어로 변환한다. 컴파일러는 코드 파일을 .exe와 같은 실행 가능한 프로그램에 연결, 프로그램이 실행된다.

  • C, C++, Java, ...


Interpreter(인터프리터)

  • 인터프리터는 프로그램을 만든 후, 파일에 연결하지도, 기계어를 생성하지도 않는다. 프로그램은 한 줄씩 번역, 실행된다.

  • Ruby, Python, ...




🤔 컴파일러와 인터프리터의 장단점


  • 인터프리터는 소스 코드를 분석하는 데 적은 시간이 걸리지만, 실행 속도가 상대적으로 느림 (but, 하드웨어로 어느정도는 보완이 가능하다!) / 컴파일러는 소스 코드 분석에 많은 시간이 걸리지만, 실행 시 빠름
  • 컴파일러는 중간코드(컴파일러가 원시 언어로 된 프로그램을 목적 코드로 번역하는 과정에서 생성되는 내부적 코드)가 생성되기 때문에 더 많은 메모리 필요 / 인터프리터는 중간 코드 생성 X, 메모리 필요 X

  • 인터프리터는 프로그램을 번역-실행하다가 에러가 있으면 멈춤, 에러가 발생한 직전까지 실행, 디버깅이 쉬움 / 컴파일러는 전체 프로그램을 스캔한 후에 에러가 있다면 실행되지 않음, 디버깅이 어려움





참고 : https://www.businessinsider.in/difference-between-compiler-and-interpreter/articleshow/69523408.cms

0개의 댓글