공부하다가 문득 컴파일과 인터프리터가 자주 등장하는데, 둘이 프로그래밍 언어를 해석 한다는 것은 알고 있지만 둘의 차이점이 있다는 것을 알게됐다.
그래서 그 둘을 비교하고자 한다.
고급 프로그래밍 언어로 작성된 코드(Java, C, C++ ...)를 프로그램이 실행되기 전에 한번에 기계어(0 or 1)로 변환
고급 프로그램 명령문을 하나씩 기계어로 변환
결국 컴파일러와 인터프리터는 둘 다 고급언어를 기계어로 변환하는 작업을 수행합니다.
그러면 이 둘의 차이점은 무엇일까요?
이 둘의 차이점은 작동 방식에 있습니다.
프로그램을 한 번에 하나씩 변환합니다.
-> 프로그램 실행은 해석 과정의 일부이므로 한 줄씩 수행됩니다.
개체 코드가 생성되지 않으므로 메모리가 효율적입니다.
에러가 나면 프로그램 실행을 종료하고 에러를 표시합니다.
JavaScript, Python... 와 같은 프로그래밍 언어는 인터프리터를 사용합니다.
전체 프로그램을 스캔하고 전체적으로 기계 코드로 변환합니다.
-> 프로그램 실행은 컴파일과 별개입니다. 전체 출력 프로그램이 컴파일된 후에만 수행됩니다.
컴파일러는 일반적으로 소스코드를 분석하는 데 많은 시간이 걸리지만, 실행 시간은 인터프리터보다 비교적 빠릅니다.
-> 프로그램 코드는 이미 기계 코드로 번역되어 있습니다. 따라서 코드 실행 시간이 적습니다.
전체 코드를 변환 후 에러를 보고합니다.
C, C++, Java와 같은 프로그래밍 언어는 컴파일러를 사용합니다.