우리는 흔히 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이라는 인터프리터가 이를 실행합니다.
'컴퓨터 구조' 카테고리의 다른 글
CPU의 핵심 구성 요소: ALU, 제어장치, 그리고 인터럽트 (0) | 2025.06.01 |
---|---|
오퍼랜드와 주소 지정 방식: 컴퓨터가 데이터를 다루는 방식 (0) | 2025.06.01 |
💡 컴퓨터는 어떻게 문자를 이해할까? — 비트와 인코딩의 이야기 (0) | 2025.06.01 |
컴퓨터의 네 가지 핵심 부품: 🧠 CPU 쉽게 이해하기 (0) | 2025.06.01 |
컴퓨터의 네 가지 핵심 부품: ‘메모리’를 중심으로 쉽게 이해하기 (1) | 2025.06.01 |