인터프리터
코드를 한 줄씩 읽으면서 바로 실행하는 방식입니다.
컴파일러 vs 인터프리터
| 컴파일러 | 인터프리터 | |
|---|---|---|
| 방식 | 전체 코드 변환 → 실행 | 한 줄씩 변환하면서 실행 |
| 비유 | 책 전체를 번역한 후 출판 | 통역사가 실시간으로 통역 |
| 실행 속도 | 빠름 | 느림 |
| 에러 발견 | 실행 전에 발견 | 실행하다가 발견 |
예시
# Python (인터프리터)
print("1번 줄") # 실행됨
print("2번 줄") # 실행됨
x = 1 / 0 # 여기서 에러, 위 두 줄은 이미 실행됨
print("3번 줄") # 실행 안 됨
// Java (컴파일러)
int x = "hello"; // 컴파일 에러
// 전체 코드가 아예 실행 안 됨
언어 분류
| 컴파일 | 인터프리터 |
|---|---|
| Java, C, C++, Go, Rust | Python, JavaScript, Ruby |
요즘은 섞어 씀
Java: 컴파일(바이트코드) + JVM이 인터프리팅/JIT 컴파일
JavaScript: V8 엔진이 JIT 컴파일로 최적화
순수하게 하나만 쓰는 경우는 드물고, 장점을 조합합니다.