컴퓨터 구조

💻 고급 언어 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이라는 인터프리터가 이를 실행합니다.