개념
컴파일러: 전체 소스 코드를 번역하여 실행 파일을 생성하는 방식.
인터프리터: 소스 코드를 한 줄씩 읽어들여 즉시 실행하는 방식.
장단점 비교
컴파일러
- 장점
- 높은 실행 속도: 미리 번역된 코드를 실행하므로 빠른 실행이 가능함.
- 코드 최적화: 컴파일러는 미리 최적화하여 효율적인 코드를 생성.
- 보안 강화: 실행 파일만 배포되므로 소스 코드가 노출되지 않아 보안 강화.
- 단점
- 개발 및 디버깅 어려움: 코드 수정 시마다 다시 컴파일해야 하므로 빠른 피드백이 어려울 수 있다.
- 크로스 플랫폼 이슈: 다양한 플랫폼에 대해 별도로 컴파일해야 하는 경우가 있다.
인터프리터
- 장점
- 간편한 디버깅: 수정한 코드를 즉시 실행하여 디버깅이 편리하다.
- 동적 타이핑: 실행 시간에 타입이 결정되므로 유연성이 좋다.
- 개발 속도 향상: 수정 후 즉시 실행되므로 초기 개발 속도가 빠르다.
- 단점
- 느린 실행 속도: 매번 실행 시마다 번역 작업이 필요하므로 컴파일된 코드보다 느릴 수 있다.
- 보안 취약성: 소스 코드가 직접 실행되므로 보안에 취약할 수 있다.
- 코드 최적화 어려움: 실행 시에만 코드를 번역하므로 최적화가 어려울 수 있다.
기술면접 답변
컴파일러와 인터프리터는 소스코드를 실행시키는 방식에 있어서 차이가 있습니다. 컴파일러는 전체 소스 코드를 번역해 실행 파일을 생성하는 방식이고, 인터프리터는 소스 코드를 한 줄씩 읽어들여 즉시 실행하는 방식을 말합니다.컴파일러의 경우엔 전체 성능과 보안에 강점이 있지만, 초기 개발속도가 상대적으로 느릴 수 있습니다. 반면 인터프리터는 빠른 디버깅과 높은 개발 편의성을 제공하지만, 전체적인 실행속도가 상대적으로 느릴 수 있습니다. 이러한 특징을 가진 컴파일러와 인터프리터는 프로젝트의 특성과 목적에 따라 선택해서 진행하게 됩니다. 최근엔 현대 언어들이 이 둘의 특징을 혼합한 JIT(Just-In-Time)컴파일 등의 방식을 사용해 최적으로 실행합니다.