컴파일러(compiler)

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

INFO

자바는 컴파일 언어와 인터프리터 언어의 특성을 모두 가지고 있는 언어이다.
하이브리드 언어라고 부르기도 한다.

인터프리터(interpreter)

  • 프로그램 실행시 한 번에 한 문장씩 기계어로 번역한다.
  • 한번에 한문장씩 번역후 실행 시키기 때문에 실행 시간이 느리다.
  • 컴파일러와 같은 오브젝트 코드 생성과정이 없기 때문에 메모리 효율이 좋다.
  • 프로그램을 실행시키고 나서 오류를 발견하면 바로 실행을 중지 시킨다. 실행 후에 오류를 알 수 있다.
  • 대표적인 언어로 Python, Ruby, Javascript 등이 있다.
컴파일러 언어인터프리터 언어
코드 실행 전, 컴파일 타임에 소스 코드 전체를 한번에 기계어로 변환 후 실행코드가 실행 단계인 런타임에 코드 한 줄씩 중간 코드인 바이트코드로 변환 후 실행
실행 파일 생성실행 파일 생성 X
컴파일 단계와 실행 단계가 분리인터프리트 단계와 실행 단계 분리 X
인터프리터는 한 줄씩 바이트코드로 변환 후 즉시 실행
컴파일은 한번만 수행코드 실행시마다 인터프리트 과정 반복 수행
컴파일과 실행단계가 분리되어 있어, 실행시에는 실행만 하면 되므로 코드 실행 속도 빠름인터프리트 단계와 실행 단계가 분리되어 있지 않아 반복 수행하므로 실행 속도가 느림

출처 및 참고자료

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