2025-11-03 01:10
Tags: 소프트웨어 아키텍처
컴파일러
- 우리가 작성한 코드를 컴퓨터가 이해하는 언어로 바꿔주는 핵심적인 번역기다.
- 컴파일러는 어휘 분석, 구문 분석, 의미 분석, 중간 코드 생성, 최적화, 코드 생성의 6단계를 거친다.
| 구분 | 컴파일러 (Compiler) | 인터프리터 (Interpreter) |
|---|---|---|
| 번역 단위 | 프로그램 전체를 한 번에 번역 | 코드를 한 줄씩 읽고 실행 |
| 실행 시점 | 번역 후 생성된 실행 파일 실행 | 번역과 실행이 동시에 발생 |
| 실행 속도 | 빠름 (이미 기계어로 변환됨) | 느림 (매번 번역 필요) |
| 플랫폼 | 종속적 (특정 OS/CPU용으로 컴파일) | 독립적 (인터프리터만 있으면 실행 가능) |
| 대표 언어 | C, C++, Go | Python, JavaScript, Ruby |
| 비유 | 책 전체를 번역하는 번역가 | 대화를 실시간으로 통역하는 통역사 |
JIT (Just-In-Time) 컴파일러
- JIT 컴파일러는 인터프리터의 유연성과 컴파일러의 실행 속도라는 두 마리 토끼를 잡기 위해 등장했다.
- 프로그램 실행 시점에 인터프리터 방식으로 코드를 실행하다가, 자주 사용되는 코드를 발견하면 그 부분만 컴파일하여 기계어로 바꿔놓는다.
- 이후에는 컴파일된 코드를 직접 실행하여 성능을 향상시킨다.
- Java의 JVM(Java Virtual Machine)과 JavaScript의 V8 엔진이 대표적인 JIT 컴파일러 사용자다.