오늘은 무엇을 배우게 될까요?
프로그래밍을 시작하면 꼭 듣게 되는 단어들이 있습니다.
바로 “컴파일”과 “실행”, 그리고 “컴파일러”와 “인터프리터”라는 개념이죠.
“코드를 작성했는데 왜 바로 실행되지 않지?”
“왜 어떤 언어는 실행이 빠르고, 어떤 언어는 느릴까?”
“코드를 이해한다는 건 무슨 뜻이지?”
오늘은 이런 질문에 답을 주는 중요한 기초 CS 개념,
컴파일러와 인터프리터의 차이점과 원리, 그리고 실생활과의 연결점까지 자세히 알아보겠습니다.
컴퓨터는 우리가 쓴 코드를 바로 이해하지 못해요
우리는 다음과 같이 사람이 읽기 쉬운 코드(고급 언어)를 작성합니다:
print("안녕하세요!")
하지만 컴퓨터는 이 코드를 이해하지 못해요.
컴퓨터가 이해할 수 있는 언어는 단 하나, 바로 기계어(0과 1)입니다.
즉, 우리가 작성한 코드를 컴퓨터가 실행하려면 반드시 번역(Translation) 과정이 필요해요.
이 번역을 담당하는 것이 바로 컴파일러(Compiler)와 인터프리터(Interpreter)입니다.
컴파일러란?
컴파일러는 전체 코드를 한꺼번에 읽고, 미리 기계어로 번역한 뒤 실행 파일을 만들어주는 프로그램입니다.
예를 들어,
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
이 코드는 C 언어로 작성된 코드입니다.
gcc라는 컴파일러로 코드를 컴파일하면, .exe처럼 실행 가능한 파일이 만들어지고, 이걸 더블 클릭하면 프로그램이 실행돼요.
컴파일러의 특징 정리
- 코드를 한 번에 전부 읽고 번역함
- 번역된 결과를 파일로 저장
- 실행은 매우 빠름 (이미 번역돼 있으니까)
- 코드 전체를 분석하므로 오류도 미리 발견 가능
- 실행하려면 컴파일 과정이 꼭 필요함
인터프리터란?
인터프리터는 코드를 한 줄씩 읽어가며, 그때그때 바로 실행하는 프로그램입니다.
번역과 실행이 동시에 이뤄지는 셈이죠.
예를 들어,
print("안녕하세요!")
이 코드는 Python 언어로 작성된 코드입니다.
python hello.py라고 실행하면, 파이썬 인터프리터가 코드를 읽고 바로 실행해 줍니다. 실행 파일은 따로 만들어지지 않아요.
인터프리터의 특징 정리
- 코드를 한 줄씩 읽고 바로 실행함
- 실행 파일을 만들지 않음
- 실행 속도는 상대적으로 느릴 수 있음
- 오류는 실행 중간에 발생할 수 있음
- 디버깅(문제 찾기)이 빠르고 편함
컴파일러 vs 인터프리터 비교표
항목컴파일러인터프리터
번역 방식 | 전체 코드 → 한 번에 번역 | 한 줄씩 → 실행하며 번역 |
실행 속도 | 빠름 (이미 번역된 상태) | 느릴 수 있음 (실시간 번역) |
오류 발견 시점 | 컴파일 시점에서 한꺼번에 확인 | 실행 중 발견됨 |
실행 파일 생성 여부 | 예 (예: .exe, .out) | 아니오 (실행만 함) |
코드 수정 후 실행 | 매번 컴파일 필요 | 바로 수정 후 실행 가능 |
사용 예시 언어 | C, C++, Go, Rust 등 | Python, JavaScript, Ruby, PHP 등 |
실생활 비유로 쉽게 이해하자
컴파일러는 “한 번에 번역하는 통역사”
- 외국 소설책을 번역가가 처음부터 끝까지 읽고, 한국어 책으로 번역한 뒤 출판합니다.
- 한 번 완성된 책은 아무나 빨리 읽을 수 있어요.
- 단, 번역하는 데 시간이 걸려요.
인터프리터는 “실시간 통역사”
- 영어로 말하면 바로바로 옆에서 한국어로 통역해주는 느낌이에요.
- 빠르게 말해도 실시간으로 대응 가능하지만, 통역사가 없으면 듣지 못하죠.
어떤 상황에 어떤 걸 쓰면 좋을까?
컴파일러가 유리한 경우
- 최종 사용자에게 배포할 실행 프로그램이 필요할 때
- 속도가 중요한 경우 (게임, 고성능 프로그램 등)
- 보안상 소스를 공개하지 않아야 할 때
인터프리터가 유리한 경우
- 개발 중 실험과 디버깅이 자주 필요한 경우
- 초보자가 코드 실행을 빠르게 확인해가며 공부할 때
- 웹 개발처럼 코드 수정이 잦은 환경
요즘은 둘 다 사용하는 언어도 있어요
- Java는 소스를 먼저 바이트코드로 컴파일한 뒤, JVM이라는 인터프리터가 그 코드를 실행합니다.
- Python도 .pyc라는 바이트코드 파일을 생성해서 실행 속도를 높이는 방식을 씁니다.
이처럼 컴파일과 인터프리팅을 혼합해서 사용하는 하이브리드 언어도 많아요.
혼동하기 쉬운 개념 정리
개념설명
컴파일 | 코드를 기계어로 번역하는 과정 |
인터프리트 | 코드를 즉시 실행하는 과정 |
실행 파일 | 컴파일된 결과물, 더블 클릭으로 실행 가능 |
IDE | 통합 개발 환경. 컴파일러 또는 인터프리터를 포함하기도 함 |
한 줄 요약
👉 컴파일러는 코드를 미리 번역해 빠르게 실행하고, 인터프리터는 코드를 한 줄씩 바로 읽으며 실행하는 방식이에요.
'IT 초보 탈출 100일 챌린지' 카테고리의 다른 글
[100일의 IT 초보 탈출] #37 DNS의 원리 _ 인터넷 전화번호부의 비밀 (3) | 2025.05.07 |
---|---|
[100일의 IT 초보 탈출] #36 IP 주소와 도메인 네임의 차이 _ 컴퓨터의 주소는 어떻게 생겼을까? (2) | 2025.05.05 |
[100일의 IT 초보 탈출] #34 TCP vs UDP 신뢰와 속도의 싸움 (2) | 2025.05.01 |
[100일의 IT 초보 탈출] #33 🧠 컴퓨터는 어떻게 생각할까? 불(Boolean) 연산의 세계 (3) | 2025.05.01 |
[100일의 IT 초보 탈출] #32 함께 만드는 코드: GitHub와 Git 협업 워크플로우 🤝 (5) | 2025.04.28 |