프로그래밍 언어의 변환 과정: 컴파일과 인터프리터
|
2 min read
프로그래머가 작성한 소스코드는 사람이 읽기 좋은 '고급 언어'입니다. 하지만 컴퓨터의 뇌인 CPU는 0과 1로 된 '기계어'만을 이해하죠. 우리가 짠 코드가 어떻게 컴퓨터의 명령어로 변하는지 그 과정을 정리해 보았습니다.
1. 고급 언어에서 저급 언어로
- 고급 언어 (High-level Language): 사람이 이해하기 쉽게 설계된 언어 (C, Python, Java 등)
- 저급 언어 (Low-level Language): 컴퓨터가 직접 이해하거나, 기계어와 일대일 대응되는 언어
- 기계어 (Machine Code): 0과 1의 비트 단위로 이루어진 CPU의 직접적인 언어
- 어셈블리어 (Assembly Language): 기계어를 사람이 읽기 편하게 문자 형태로 바꾼 언어
2. 변환의 두 방식: 컴파일 vs 인터프리트
소스코드를 저급 언어로 바꾸는 방식에는 크게 두 가지가 있습니다.
🔹 컴파일 (Compile)
- 소스코드 전체를 한꺼번에 저급 언어(목적 코드)로 변환합니다.
- 변환된 파일을 실행만 하면 되므로 실행 속도가 빠릅니다.
- 대표 언어: C, C++, Rust
🔹 인터프리트 (Interpret)
- 소스코드를 한 줄씩 읽어가며 즉시 저급 언어로 변환하고 실행합니다.
- 코드 수정 후 즉시 결과를 확인할 수 있어 개발 속도가 빠릅니다.
- 대표 언어: Python, JavaScript
참고: 최근에는 자바(Java)처럼 두 방식을 혼합하여 사용하는 언어도 많기 때문에, 단순히 언어 하나를 하나의 방식으로만 정의하기는 어렵습니다.
3. 실습: 내 코드가 어셈블리어로 변하는 과정
직접 작성한 C언어 코드가 어떤 저급 언어로 변하는지 확인해 볼 수 있습니다.
샘플 코드 (hello.c):
c
#include <stdio.h>
int main() {
printf("hello world\n");
return 0;
}어셈블리어 파일 생성 (GCC 사용):
bash
gcc -S hello.c -o hello.S이렇게 생성된
text
hello.Stext
Compiler Explorer(godbolt.org)우리가 무심코 작성하는
text
print