본문 바로가기
카테고리 없음

Compiler VS Interpreter

by 개발초보입니다 2023. 12. 10.

들어가기 전

프로그래밍 언어를 컴퓨터는 어떻게 이해할까?

컴퓨터는 0과 1의 이진수만 이해할 수 있습니다.

그럼 프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어로 변역해줄 번역기가 필요합니다.

이때 프로그래밍 언어를 기계어로 변환해주는 것이 컴파일러와 인터프리터 입니다.

하지만 컴파일러와 인터프리터는 차이점이 있습니다.


컴파일러(Compiler)

Compile(컴파일) 이라는 단어는 "무언가를 모아서 묶음으로 만든다" 라는 뜻을 갖고 있습니다.

 

Compiler(컴파일러)는 단어의 뜻과 비슷하게 프로그램 전체를 스캔하여 이를 모두 기계어로 한번에 번역합니다.


컴파일러 장/ 단점

장점 :

  • 초기 스캔은 오래걸리지만, 한번 스캔을 마치면 실행파일을 만들어 놓고 계속 사용하기 떄문에 실행 속도는 인터프리터보다 빠릅니다.
  • 컴파일러는 오류 메시지를 생성할 때 전체 코드를 검사한 후 오류 메시지를 생성합니다. 그래서 프로그램 실행 전에 오류를 발견 할 수 있습니다.

단점 :

  • 프로그램을 실행하는데 필요한 모든 파일을 스캔하기 떄문에 초기 스캔시간이 오래걸립니다.
  • 컴파일러는 기계어로 번역시 Object Code(목적코드) 라는 파일을 만드는데 이 오브젝트 코드를 다시 묶어서 하나의 실행 하일로 다시 만드는 링킹(Linking) 작업을 해야합니다. 따라서 통상적으로 인터프리터 보다 메모리를 많이 사용합니다.
더보기

Object Code(목적코드) : 소스코드 컴파일의 결과물, 즉 컴파일된 파일

Linking(링킹) : 여러 개의 코드와 데이터를 모아서 연결하여 메모리에 로드될 수 있고 실행 될수 있는 한 개의 파일로  만드는 작업

컴파일러 언어

  • C
  • C++
  • C#
  • JAVA

인터프리터(Interperter)

Interpert 라는 단어는 "해석하다" 라는 뜻입니다.

 

Interperter는 "통역사"라는 뜻을 갖고 있습니다.

 

인터프리터는 이름에 걸맞게 프로그램 실행시 한 번에 한 문장씩만 기계어로 변역합니다.


인터프리터 장/ 단점

장점 :

  • 컴파일러처럼 목적코드를 만들지도 않고, 링킹과정도 거치지 않기 떄문에 메모리 효율이 좋습니다.
  • 코드 변경시 빌드 과정없이 바로 실행이 가능합니다. 따라서 개발 속도에 장점이 있습니다.

단점 :

  • 컴파일러와 다르게 한번에 한 문장씩 읽고 번역하여 실행시키는 과정을 반복하다 보니 실행이 조금 더 느립니다.
  • 한번에 한 문장씩 읽기 때문에 프로그램을 실행해 봐야지만 오류 발견이 가능합니다.

인터프리터 언어

  • Python
  • Javascript
  • R
  • Ruby

컴파일러와 인터프리터의 차이점

컴파일러는 개발 편의성은 떨어지지만, 실행속도는 빠르다.

인터프리터는 개발 편의성이 높지만, 실행 속도는 느리다.

 

 

더보기