프로그래밍 언어가 컴퓨터에서 실제로 작동하기 위해서는 사람이 작성한 소스 코드를 컴퓨터의 중앙 처리 장치(CPU)가 이해할 수 있는 기계어로 변환하는 과정이 필요합니다. 이 변환을 수행하는 방식에 따라 언어는 크게 컴파일 언어와 인터프리터 언어로 나뉩니다.
1️⃣ 컴파일 언어 (Compiled Languages)
컴파일 언어는 프로그램을 실행하기 전에 전체 소스 코드를 한 번에 기계어로 번역하는 방식을 사용합니다.
- 변환 과정:
- 소스 코드 작성 (예: C, Java)
- 컴파일러라는 특별한 프로그램이 전체 코드를 읽어 들입니다.
- 컴파일러는 코드를 기계어로 이루어진 실행 파일 (Executable file, 예:
.exe또는.app)로 변환합니다.
- 실행 시점: 사용자는 이 실행 파일을 직접 실행합니다. 소스 코드는 다시 필요하지 않습니다.
- 주요 특징:
- 속도: 한 번 컴파일된 후에는 기계어로 바로 실행되므로 실행 속도가 매우 빠릅니다. 🚀
- 오류 검출: 컴파일 과정에서 대부분의 문법적 오류를 미리 발견할 수 있습니다.
- 이식성 (Portability): 특정 운영체제(OS)와 CPU 아키텍처에 맞게 컴파일된 실행 파일은 다른 환경에서는 작동하지 않을 수 있습니다. (재컴파일이 필요함)
- 예시: C, C++, Java, Go (엄밀히 말해 Java는 바이트 코드라는 중간 단계가 있지만, 기계어로 사전 변환된다는 점에서 컴파일 방식에 가깝습니다.)

2️⃣ 인터프리터 언어 (Interpreted Languages)
인터프리터 언어는 프로그램을 실행하는 동시에 소스 코드를 한 줄씩 읽어 들여 기계어로 변환하고 바로 실행하는 방식을 사용합니다.
- 변환 과정:
- 소스 코드 작성 (예: Python, JavaScript)
- 인터프리터라는 프로그램이 소스 코드를 한 줄씩 읽습니다.
- 읽은 한 줄을 즉시 기계어로 변환하고 실행합니다. 소스 코드가 실행 시점에 항상 필요합니다.
- 실행 시점: 코드를 실행할 때마다 인터프리터가 필요합니다.
- 주요 특징:
- 속도: 실행할 때마다 변환 과정이 필요하므로 일반적으로 컴파일 언어보다 실행 속도가 느립니다. 🐢 (최근에는 JIT(Just-In-Time) 컴파일러 등의 기술로 속도가 많이 개선됨)
- 오류 검출: 실행하려는 줄에 도달해야 오류가 발견됩니다. (런타임 오류)
- 이식성 (Portability): 소스 코드가 있다면 어떤 OS든 해당 언어의 인터프리터만 설치되어 있으면 바로 실행 가능합니다. (OS에 독립적임)
- 예시: Python, JavaScript, Ruby, PHP

3️⃣ 🏠 핵심 차이점 요약 테이블 🖥
| 구분 | 컴파일 언어 | 인터프리터 언어 |
| 변환 시점 | 프로그램 실행 전에 전체 변환 | 프로그램 실행 중에 한 줄씩 변환 |
| 변환 도구 | 컴파일러 (Compiler) | 인터프리터 (Interpreter) |
| 결과물 | 기계어 실행 파일 (Executable) | 소스 코드 (실행 시 필요) |
| 실행 속도 | 빠름 🚀 | 상대적으로 느림 🐢 |
| 오류 발견 | 실행 전에 대부분 발견 | 실행 중에 발견 (런타임 오류) |
| 대표 예시 | C, C++, Java, Go | Python, JavaScript, Ruby |
4️⃣ 실제 예시: C 언어 vs. Python 언어 ❌
C (컴파일 언어)
C로 작성된 프로그램은 먼저 컴파일 과정을 거쳐 특정 OS와 CPU에 최적화된 실행 파일(.exe 등)로 만들어집니다. 이 실행 파일이 생성된 후에는 소스 코드를 수정하지 않는 한 변하지 않으며, 매우 빠르게 실행됩니다.
- 장점: 고성능이 필요한 시스템 프로그래밍, 게임 엔진 등에 적합합니다.
- 단점: 코드를 조금만 수정해도 전체 재컴파일이 필요합니다.
Python (인터프리터 언어)
Python으로 작성된 프로그램은 별도의 실행 파일 생성 과정이 없습니다. 사용자가 코드를 실행할 때마다 Python 인터프리터가 소스 코드를 읽어 즉시 실행합니다.
- 장점: 코드를 수정하고 바로 실행해볼 수 있어 개발 속도가 빠르고 편리합니다.
- 단점: 실행 속도가 C/C++ 같은 컴파일 언어에 비해 느릴 수 있습니다.
결론적으로, 컴파일 언어는 “미리 준비해서 빠르게”, 인터프리터 언어는 “즉석에서 유연하게” 실행한다고 이해하시면 쉽습니다.