먼저 인터프리터와 컴파일러에 대해 간단히 알아보고 공통점 및 차이점을 알아보자.
인터프리터
인터프리터는 프로그래밍 언어를 한 줄씩 읽어들이고 실행하면서 해석하는 프로그램입니다.
즉, 소스 코드를 직접 실행하여 결과를 출력하는 방식으로 작동합니다.
ex) Python, R, JavaScript
컴파일러
컴파일러(Compiler)는 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 번역하는 프로그램입니다.
즉, 개발자가 작성한 고급 언어 코드를 실행 가능한 기계어 코드로 변환하는 과정을 수행합니다.
ex) C, C++, Go
인터프리터와 컴파일러는 모두 프로그래밍 언어를 실행 가능한 형태로 변환하는 도구입니다.
둘은 다음과 같은 공통점을 가지고 있습니다.
- 프로그래밍 언어를 실행 가능한 형태로 변환한다.
- 구문 오류 및 기타 오류를 확인하고 보고한다.
- 프로그램을 실행하고 결과를 출력한다.
차이점은 다음과 같습니다.
- 언어 변환 방식
- 인터프리터는 프로그램을 한 줄씩 읽어들이고 실행하면서 해석합니다.
- 반면에 컴파일러는 프로그램 전체를 분석하여 기계어로 변환하고 이를 실행합니다.
- 실행 시점
- 인터프리터는 프로그램을 실행하기 전에 직접 변환을 수행하며,
- 컴파일러는 먼저 프로그램 전체를 변환하여 실행 가능한 파일로 만듭니다.
- 속도
- 컴파일러가 프로그램을 먼저 변환하므로 실행 속도가 빠릅니다.
- 반면에 인터프리터는 실행할 때마다 변환을 수행하므로 실행 속도가 느릴 수 있습니다.
- 디버깅
- 인터프리터는 프로그램을 한 줄씩 실행하기 때문에 디버깅이 쉽습니다.
- 하지만 컴파일러는 실행 파일을 생성한 후 디버깅을 해야하기 때문에 디버깅이 상대적으로 어렵습니다.
- 이식성
- 인터프리터는 운영체제나 하드웨어에 큰 영향을 받지 않기 때문에 이식성이 높습니다.
- 반면에 컴파일러는 실행 파일을 생성하기 때문에 운영체제나 하드웨어에 따라 다른 실행 파일이 필요합니다.
그럼 Java는??
컴파일러와 인터프리터의 장점을 같이 가져와서 사용한다.
이렇듯 혼용하여 사용하는 경우도 있다.
출처
[리눅스] 컴파일러 vs 인터프리터 차이
[리눅스] 컴파일러 vs 인터프리터 차이
losskatsu.github.io
'TIL' 카테고리의 다른 글
aop, interceptor, filter 로 id 존재하는지 검사 (0) | 2023.08.22 |
---|---|
반도체 기억장치의 발달과정 (0) | 2023.04.02 |
메타버스란? (0) | 2023.03.27 |
테스트 코드 static class 호출 검증 방법 (0) | 2023.03.08 |
HttpServletResponse response.setContentType 변경 후 (0) | 2023.03.03 |