인터프리터와 컴파일러

Donghwi Kim·2024년 1월 23일

잡다한 개발 지식

목록 보기
2/26

인터프리터(interpreter)

프로그램 실행시 한 번에 한 문장씩 번역한다.

때문에 컴파일러보다 실행시간이 더 걸리지만 메모리 효율이 좋다.

컴파일러처럼 목적코드를 만들지도 않고, 링킹 과정도 거치지 않기 때문이다.

인터프리터는 한 문장씩 번역될때 오류를 만나게 되면 바로 프로그램을 중지한다. 때문에 프로그램을 실행시켜야지만 오류 발견이 가능하다.



컴파일러(compiler)

프로그램 전체를 스캔하여 이를 모두 기계어로 번역한다.

초기 스캔 시간이 오래 걸리지만 초기 스캔을 마지만 실행파일을 만들어 놓고 다음에 실행할 때 이전에 만들어 놓았던 실행파일을 실행하기 때문에 전체 실행 시간은 인터프리터보다 빠르다.

하지만 컴파일러는 소스코드를 기계어로 번역하는 과정에서 오브젝트 코드라는 파일을 만드는데 이 코드를 묶어서 하나의 실행 파일로 다시 만드는 링킹 작업을 해야한다. 이 때문에 인터프리터보다 많은 메모리를 사용해야 한다.

컴파일러는 전체 코드를 검사한 후에 오류 메시지를 생성하므로 실행 전에 오류를 발견 할 수 있다.



정리

인터프리터(interpreter)

  • 프로그램 실행시 한 번에 한 문장씩 번역한다.
  • 한 번에 한 문장씩 번역 후 실행 시키기 때문에 실행 시간이 느리다.
  • 컴파일러와 같은 오브젝트 코드 생성과정이 없기 때문에 메모리 효율이 좋다.
  • 프로그램 실행 후 오류를 발견하면 바로 중지시킨다. 실행 후에 오류를 알 수 있다.
  • 대표적인 언어로 Python, Ruby, Javascript 등이 있다.

컴파일러(compiler)

  • 전체 파일을 스캔하여 한꺼번에 번역한다.
  • 초기 스캔 시간이 오래 걸리지만, 한 번 실행 파일이 만들어지고 나면 빠르다.
  • 기계어 번역 과정에서 더 많은 메모리를 사용한다.
  • 전체 코드를 스캔하는 과정에서 모든 오류를 한꺼번에 출력해주기 때문에 실행 전에 오류를 알 수 있다.
  • 대표적인 언어로 C, C++, JAVA 등이 있다.



참고
https://velog.io/@jhur98/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%ACcompiler%EC%99%80-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0interpreter%EC%9D%98-%EC%B0%A8%EC%9D%B4

0개의 댓글