컴파일
기술노트
⚙️ 컴파일 (Compile) & 인터프리터 (Interpreter)
컴파일과 인터프리터는 개발자가 작성한 고급 언어(C, Java, Python 등)를 컴퓨터가 이해할 수 있는 기계어(Machine Code)로 번역하는 방식입니다. 두 방식의 가장 큰 차이는 번역이 이루어지는 시점입니다.
📜 컴파일 (Compile)
컴파일은 소스 코드 전체를 실행하기 전에 한 번에 기계어로 번역하는 방식입니다. 컴파일러(Compiler)라는 프로그램을 통해 소스 코드 파일은 실행 가능한 파일(예: `.exe`)로 변환됩니다.
- 번역 단위 : 소스 코드 전체
- 실행 속도 : 이미 모든 코드가 번역되어 있어 매우 빠름
- 대표 언어 : C, C++, Java, Go
- 과정 : 소스 코드 → 컴파일러 → 실행 파일 → 실행
🗣️ 인터프리터 (Interpreter)
인터프리터는 소스 코드를 실행하는 시점에 한 줄씩 번역하면서 즉시 실행하는 방식입니다. 별도의 실행 파일을 생성하지 않습니다.
- 번역 단위 : 코드 한 줄
- 실행 속도 : 매번 번역과 실행을 동시에 하므로 컴파일 방식보다 느림
- 대표 언어 : Python, JavaScript, Ruby
- 과정 : 소스 코드 → 인터프리터가 한 줄씩 번역 및 실행
🆚 주요 차이점 요약
구분 | 컴파일 방식 | 인터프리터 방식 |
---|---|---|
번역 시점 | 실행 전 (전체) | 실행 중 (한 줄씩) |
실행 속도 | 빠름 | 느림 |
플랫폼 의존성 | 높음 (OS에 맞는 실행 파일 필요) | 낮음 (인터프리터만 있으면 실행 가능) |
오류 발견 시점 | 컴파일 시 (전체 오류 발견) | 실행 시 (해당 라인 실행 시 발견) |
- Java와 Python의 경우 : Java는 바이트코드(.class)로 컴파일된 후, JVM이라는 가상 머신 위에서 인터프리터 방식으로 동작하는 하이브리드 형태를 띱니다. Python 역시 바이트코드를 생성하지만, 일반적으로 인터프리터 언어로 분류됩니다.
💡 개발자 핵심 Point
- 컴파일 언어는 높은 성능이 요구되는 시스템 소프트웨어나 게임 개발에 주로 사용됩니다.
- 인터프리터 언어는 개발 속도가 빠르고 플랫폼 독립성이 높아 웹 개발이나 스크립트 작성에 많이 사용됩니다.
- 어떤 언어가 어떤 방식으로 동작하는지 이해하면, 해당 언어의 특성과 성능을 더 깊이 이해할 수 있습니다.