블로그/CS 기초
CS 기초주니어2026-04-15

컴파일러와 인터프리터의 차이는 무엇인가요?

한 줄 답변

컴파일러는 전체 코드를 기계어로 번역해 실행 파일을 만들며 실행 속도가 빠릅니다. 반면 인터프리터는 한 줄씩 읽어 즉시 실행하므로 수정과 디버깅이 용이하지만 반복 작업 시 성능이 낮을 수 있습니다.

핵심 개념 정리

컴파일러는 고수준 언어로 작성된 소스 코드 전체를 분석하여 타겟 언어인 기계어로 변환하는 과정을 거칩니다. 이 과정에서 구문 분석과 최적화가 수행되며, 최종적으로 실행 가능한 목적 파일을 생성합니다. C, C++, Rust 같은 언어가 대표적이며, 실행 시점에 이미 번역이 완료되어 있어 런타임 성능이 매우 뛰어납니다. 다만, 코드 수정 시 매번 전체를 다시 빌드해야 하는 번거로움이 있습니다.

인터프리터는 별도의 컴파일 과정 없이 소스 코드를 한 줄씩 읽어 들여 즉시 실행합니다. Python, Javascript, Ruby 등이 이에 해당하며, 프로그램 실행 중에 코드를 해석하기 때문에 개발 속도가 빠르고 플랫폼 독립적인 실행이 가능합니다. 하지만 반복문과 같은 동일한 코드를 실행할 때마다 매번 해석 과정을 거쳐야 하므로 대규모 연산 작업에서는 컴파일 언어보다 속도가 느린 경향이 있습니다.

최근에는 두 방식의 장점을 결합한 JIT(Just-In-Time) 컴파일 방식이 널리 쓰입니다. Java의 JVM이나 Javascript의 V8 엔진이 대표적인 예로, 인터프리터 방식으로 실행하다가 자주 호출되는 'Hot Code' 영역을 런타임에 직접 기계어로 컴파일하여 캐싱합니다. 이를 통해 인터프리터의 유연성과 컴파일러의 고성능을 동시에 확보하며 현대적 애플리케이션의 성능 최적화를 달성하고 있습니다.

비교 정리

항목컴파일러 (Compiler)인터프리터 (Interpreter)
번역 단위소스 코드 전체를 한 번에 번역한 줄씩 읽어서 즉각 실행
실행 속도매우 빠름 (번역 완료 상태)비교적 느림 (실시간 해석)
결과물독립적 실행 파일 (.exe 등) 생성별도 파일 없음 (실행기 필요)
디버깅컴파일 완료 후 오류 일괄 확인실행 도중 오류 즉시 확인 가능

면접에서 이렇게 답하세요

단순히 '한 번에 번역' vs '한 줄씩 실행'으로 답변하기보다, 하드웨어 자원 활용과 개발 생산성 관점에서 접근하세요. 'C언어는 시스템 제어와 성능이 중요할 때 쓰고, Python은 빠른 로직 검증에 유리하다'는 식으로 언어별 목적을 연결하면 좋습니다. 특히 Java나 JS를 예로 들어 '현대적인 언어들은 JIT 컴파일러를 통해 두 방식의 경계를 허물고 있다'는 점을 언급하면 기술적 깊이를 보여줄 수 있습니다.

자주 묻는 추가 질문

Q. JIT 컴파일러가 왜 필요한가요?

인터프리터의 느린 속도를 보완하기 위해 런타임에 자주 쓰이는 코드를 기계어로 번역/캐싱하여 성능을 비약적으로 높여줍니다.

Q. 컴파일 언어가 항상 인터프리터 언어보다 빠른가요?

일반적으로는 그렇지만, 인터프리터 언어도 최적화된 엔진과 고성능 라이브러리를 사용하면 실행 성능 차이를 상당히 좁힐 수 있습니다.

Q. Java는 컴파일 언어인가요 인터프리터 언어인가요?

둘 다입니다. 소스를 바이트코드로 컴파일한 후, JVM 내부에서 인터프리터와 JIT 컴파일러가 협력하여 실행하기 때문입니다.

커뮤니티 하이라이트

주니어 면접에서 '컴파일'의 의미를 정확히 모르는 경우가 많아요. 목적 파일 생성 단계를 설명할 수 있으면 확실히 차별화됩니다.

@backend_dev_king42

요즘은 WASM 같은 기술 덕분에 브라우저에서도 컴파일 수준의 속도가 나오죠. 최신 트렌드와 연결해서 공부해보는 것을 추천합니다.

@fullstack_pro19

38명의 개발자가 이 질문에 참여했습니다

관련 면접 질문

앱에서 직접 답변해보세요

매일 3개의 면접 질문에 답변하고,
다른 개발자들의 답변을 비교해보세요.

무료로 시작하기