들어가며
앞서 컴파일 언어는 소스 코드 전체를 한 번에 기계어로 번역한다고 정리했습니다.
이번에는 반대 방식인 인터프리터 언어에 대해 정리해보겠습니다.
코드를 한 줄씩 읽고 실행하는 방식이 어떤 의미인지, 장단점은 무엇인지 알아보겠습니다.
인터프리터 언어란?
인터프리터 언어는 소스 코드를 미리 번역하지 않고, 한 줄씩 읽으면서 바로 실행하는 방식입니다.
인터프리터(Interpreter) 가 코드를 위에서 아래로 한 줄씩 해석하고 즉시 실행합니다.
[인터프리터 언어 실행 과정]
소스 코드
1번째 줄 ──▶ 인터프리터 해석 ──▶ 실행
2번째 줄 ──▶ 인터프리터 해석 ──▶ 실행
3번째 줄 ──▶ 인터프리터 해석 ──▶ 실행
...
대표적인 인터프리터 언어로는 Python, JavaScript, Ruby 가 있습니다.
인터프리터 언어의 특징
장점 - 여러 OS에서 별도 설치 없이 사용 가능
컴파일 언어는 OS마다 별도로 컴파일해서 실행 파일을 만들어야 했습니다.
인터프리터 언어는 해당 OS에 인터프리터만 설치되어 있으면 같은 소스 코드를 그대로 실행할 수 있습니다.
같은 소스 코드 하나로:
소스 코드(.py)
├── Windows Python 인터프리터 ──▶ 실행
├── Linux Python 인터프리터 ──▶ 실행
└── Mac Python 인터프리터 ──▶ 실행
OS마다 재컴파일이 필요 없어 이식성이 높습니다.
장점 - 코드 수정 후 즉시 실행 가능
컴파일 과정이 없기 때문에 코드를 수정하면 바로 실행해서 결과를 확인할 수 있습니다.
개발 중 빠른 테스트와 수정이 필요할 때 편리합니다.
단점 - 실행 속도가 느리다
코드를 실행할 때마다 한 줄씩 해석하는 과정이 필요하기 때문에, 미리 번역이 완료된 컴파일 언어보다 실행 속도가 느립니다.
단점 - 실행 중에 오류를 확인한다
코드 전체를 미리 검사하지 않고 실행하면서 해당 줄에 도달했을 때 오류를 발견합니다.
오류가 있는 줄 이전까지는 정상적으로 실행되다가, 오류 줄에서 멈춥니다.
# Python 예시
print("1번째 줄 실행") # 정상 실행
print("2번째 줄 실행") # 정상 실행
print(없는변수) # 여기서 오류 발생 - 실행 중에 확인
print("4번째 줄 실행") # 실행되지 않음
컴파일 언어 vs 인터프리터 언어
| 항목 | 컴파일 언어 | 인터프리터 언어 |
|---|---|---|
| 번역 방식 | 전체를 한 번에 기계어로 번역 | 한 줄씩 해석하며 실행 |
| 실행 속도 | 빠름 | 상대적으로 느림 |
| 오류 확인 시점 | 실행 전 컴파일 시 | 실행 중 해당 줄 도달 시 |
| 플랫폼 이식성 | 낮음 (OS마다 재컴파일 필요) | 높음 (인터프리터만 있으면 실행) |
| 대표 언어 | C, C++ | Python, JavaScript, Ruby |
오류 확인 방식의 차이
컴파일 언어와 인터프리터 언어의 가장 큰 차이 중 하나가 오류를 언제 발견하느냐입니다.
[컴파일 언어 - 실행 전 오류 확인]
소스 코드 작성
↓
컴파일 시도
↓
오류 발견 → 실행 불가, 즉시 수정 가능
↓
오류 없으면 실행
[인터프리터 언어 - 실행 중 오류 확인]
소스 코드 작성
↓
실행
↓
1번 줄 실행 → 성공
2번 줄 실행 → 성공
3번 줄 실행 → 오류 발생! 여기서 멈춤
인터프리터 언어는 오류가 있는 줄 이전 코드가 이미 실행된 후에 오류를 발견하기 때문에, 예상치 못한 부작용이 생길 수 있습니다.
Java와의 비교
Java는 앞서 정리한 것처럼 컴파일과 인터프리터를 혼합한 방식입니다.
세 가지 방식을 나란히 비교하면 아래와 같습니다.
| 항목 | 컴파일 언어 (C) | 인터프리터 언어 (Python) | Java |
|---|---|---|---|
| 번역 방식 | 기계어로 컴파일 | 한 줄씩 인터프리터 | 바이트코드로 컴파일 후 JVM 실행 |
| 실행 속도 | 가장 빠름 | 느림 | 중간 (JIT로 빠른 편) |
| 오류 확인 | 컴파일 시 | 실행 중 | 컴파일 시 |
| 이식성 | 낮음 | 높음 | 높음 (JVM만 있으면 실행) |
Java는 컴파일 언어처럼 실행 전에 오류를 확인하면서, 인터프리터 언어처럼 플랫폼 이식성도 갖추고 있습니다.
정리
- 인터프리터 언어는 소스 코드를 한 줄씩 읽고 바로 실행하는 방식이다.
- 실행 중에 오류를 확인하기 때문에 오류가 있는 줄 이전 코드는 먼저 실행된다.
- 실행 속도는 컴파일 언어보다 느리지만, OS에 인터프리터만 설치되면 같은 코드를 바로 실행할 수 있어 이식성이 높다.
- 코드 수정 후 즉시 실행이 가능해 개발 중 빠른 테스트가 필요할 때 편리하다.
- Java는 컴파일 언어의 오류 사전 확인과 인터프리터 언어의 높은 이식성을 모두 갖춘 혼합 방식이다.
'-- 오늘 있었던 개발 일기' 카테고리의 다른 글
| @Controller란? - Spring 자동 매핑과 Bean 등록 (0) | 2026.05.06 |
|---|---|
| 호이스팅(Hoisting)이란? (1) | 2026.04.15 |
| 컴파일 언어란? - 그리고 Java는 어떻게 다를까? (0) | 2026.04.12 |
| 매개변수(Parameter)란? (1) | 2026.04.11 |
| static 메서드란? - 객체 생성 없이 바로 호출 (0) | 2026.04.09 |