프로그래밍 언어는 코드의 실행 방식에 따라 크게 인터프리터 언어(interpreted language)와 컴파일러 언어(compiled language)로 나뉜다. 이 두 방식은 코드의 처리 과정, 실행 속도, 활용 분야에 있어 명확한 차이를 보인다.
인터프리터 언어는 소스 코드를 실행할 때 별도의 컴파일 과정 없이 인터프리터가 코드를 직접 한 줄씩 읽고 즉시 실행하는 방식이다.
실행 과정
소스 코드 → 인터프리터가 한 줄씩 해석 → 즉시 실행
예시 언어
컴파일러 언어는 소스 코드를 미리 기계어(machine language) 혹은 중간 언어(bytecode)로 변환(컴파일)하여 실행하는 방식을 의미한다.
실행 과정
소스 코드 → 컴파일러가 전체 코드를 기계어로 변환 → 생성된 실행 파일을 실행
예시 언어
| 구분 | 인터프리터 언어 | 컴파일러 언어 |
|---|---|---|
| 실행 방식 | 한 줄씩 해석 및 즉시 실행 | 전체를 컴파일 후 실행 파일 실행 |
| 속도 | 느림 (실행 시마다 해석) | 빠름 (미리 기계어로 변환) |
| 개발 생산성 | 높음 (즉각적 테스트 가능) | 낮음 (재컴파일 필수) |
| 플랫폼 이식성 | 우수 (인터프리터만 있으면 됨) | 제한적 (플랫폼별 컴파일 필요) |
| 디버깅 | 쉬움 (즉각적 오류 탐지) | 상대적으로 복잡함 (별도 도구 필요) |
| 배포 방식 | 소스 코드와 인터프리터 필요 | 독립된 실행 파일 제공 가능 |
print("Hello, World!")
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
gcc hello.c -o hello # 컴파일 과정
./hello # 생성된 파일 실행
인터프리터 언어와 컴파일러 언어는 서로의 강점과 약점을 보완하면서 다양한 환경에서 쓰인다.
인터프리터 언어:
빠른 프로토타입 개발, 웹 개발, 스크립트 작성 등 개발 속도와 유연성을 요구할 때 사용된다.
컴파일러 언어:
시스템 프로그래밍, 고성능 애플리케이션, 게임 개발, 임베디드 시스템 등 속도와 효율성, 보안성이 중요한 환경에서 사용된다.
프로젝트의 요구 사항과 특성에 따라 적합한 방식을 선택하는 것이 중요하다.