컴퓨터 구조
💻 고급 언어 vs 저급 언어, 그리고 컴파일과 인터프리트의 차이
Data Jun
2025. 6. 1. 12:19
우리는 흔히 Python, Java, C 등 다양한 프로그래밍 언어를 사용합니다. 하지만 컴퓨터는 이 언어들을 바로 이해하지 못합니다.
왜냐하면 컴퓨터는 **0과 1로 이루어진 기계어(machine code)**만 이해할 수 있기 때문이죠.
그렇다면, 우리가 쓴 코드가 어떻게 컴퓨터가 이해할 수 있는 형태로 바뀌는 걸까요?
바로 고급 언어 → 저급 언어로 번역하는 과정이 필요합니다.
🧾 기계어와 어셈블리어
컴퓨터가 진짜로 이해하는 언어는 기계어입니다.
예: 0101 0101, 0101 1101 같은 0과 1의 조합
하지만 사람이 이걸 직접 쓰기는 너무 불편하겠죠?
그래서 등장한 것이 **어셈블리어(Assembly Language)**입니다.
- 기계어: 0101 0101
- 어셈블리어: push rbp
👉 어셈블리어는 기계어를 사람이 좀 더 읽기 쉽게 만든 저급 언어입니다.
🧠 고급 언어란?
고급 언어는 사람이 이해하기 쉬운 언어입니다.
예를 들어 Python에서 print("Hello")라고 쓰면, 내부에서는 수많은 기계어 명령으로 바뀌어 실행됩니다.
우리가 고급 언어로 작성한 프로그램은 컴파일러나 인터프리터에 의해 저급 언어로 번역되어야만 실제 실행이 가능합니다.
🛠 컴파일 언어 vs 인터프리트 언어
고급 언어를 저급 언어로 바꾸는 방법에는 두 가지가 있습니다:
📦 컴파일 언어 (C, C++, Java 등)
- 컴파일러라는 도구가 전체 소스 코드를 한 번에 분석하고
- 한꺼번에 **기계어로 번역(=컴파일)**해서
- **목적 코드(실행파일)**를 생성합니다.
✅ 장점:
- 실행 속도가 빠름
- 실행 전 전체 코드 오류를 확인할 수 있음
❌ 단점:
- 번역에 시간이 걸림
- 코드 일부만 수정해도 전체를 다시 컴파일해야 할 수 있음
⚙️ 인터프리트 언어 (Python, JavaScript 등)
- 인터프리터가 소스 코드를 한 줄씩 읽고 즉시 실행합니다.
- 전체를 번역하지 않고, 필요한 부분만 그때그때 해석해서 실행합니다.
✅ 장점:
- 실행까지 빠르게 시작 가능
- 디버깅이 용이함
❌ 단점:
- 실행 속도는 느릴 수 있음
- 오류가 실행 중간에 발생할 수 있음
두 방식의 차이를 비유로 이해해보기
- 컴파일 방식:
누군가가 전체 책을 한 번에 번역해서 완성본을 넘겨주는 것 - 인터프리트 방식:
책을 옆에서 한 문장씩 읽어주며 즉석에서 번역해주는 것
정리
💬 마무리 Tip
요즘에는 컴파일과 인터프리트를 혼합한 하이브리드 방식도 많습니다. 예를 들어 Java는 소스 코드를 바이트 코드로 컴파일한 뒤, JVM이라는 인터프리터가 이를 실행합니다.