blevels

Home / AI / AI 용어사전 / 컴파일러(Compiler) — 코드를 기계어로 번역하는 소프트웨어의 원리

TERM

컴파일러(Compiler) — 코드를 기계어로 번역하는 소프트웨어의 원리

게시일 2026-04-30수정일 2026-04-30
공식 링크
On this page

파이썬으로 작성한 코드를 CPU는 바로 이해하지 못한다. CPU는 0과 1로 이루어진 기계어(Machine Code)만 처리한다. 사람이 쓴 고수준 언어를 기계어로 변환하는 소프트웨어가 컴파일러(Compiler)다.

정의

컴파일러(Compiler)는 특정 프로그래밍 언어로 작성된 소스 코드(Source Code)를 다른 언어(주로 기계어 또는 중간 언어)로 변환하는 소프트웨어다. 변환 과정 전체를 컴파일(Compile)이라 한다. C, Go, Rust, Swift 같은 언어는 컴파일러를 통해 실행 가능한 바이너리 파일을 생성한다. 컴파일이 완료된 뒤에는 컴파일러 없이도 프로그램이 실행된다.

컴파일 과정 — 소스 코드에서 기계어까지

컴파일러는 소스 코드를 여러 단계를 거쳐 기계어로 변환한다.

| 단계 | 작업 | |---|---| | 어휘 분석(Lexical Analysis) | 소스 코드를 토큰(키워드, 변수명, 연산자 등) 단위로 분해 | | 구문 분석(Parsing) | 토큰을 문법 규칙에 따라 트리 구조(AST)로 변환 | | 의미 분석(Semantic Analysis) | 타입 검사, 선언되지 않은 변수 참조 검사 | | 중간 코드 생성 | 플랫폼에 독립적인 중간 표현(IR) 생성 | | 코드 최적화 | 불필요한 연산 제거, 실행 속도 개선 | | 기계어 생성 | 대상 CPU 아키텍처에 맞는 바이너리 출력 |

AD

컴파일러 vs 인터프리터

| 구분 | 컴파일러 | 인터프리터 | |---|---|---| | 실행 방식 | 전체 코드를 먼저 번역 후 실행 | 코드를 한 줄씩 즉시 실행 | | 실행 속도 | 빠름 | 상대적으로 느림 | | 오류 탐지 | 실행 전 전체 오류 탐지 가능 | 실행 중 오류 발견 | | 대표 언어 | C, Go, Rust | Python, Ruby | | 배포 | 컴파일된 바이너리 배포 | 소스 코드 배포 필요 |

Python은 인터프리터 언어처럼 사용되지만, 내부적으로 .pyc 바이트코드로 컴파일한 뒤 CPython 가상 머신이 실행하는 하이브리드 방식이다. JavaScript 역시 V8 엔진이 JIT(Just-In-Time) 컴파일로 런타임 중 기계어로 변환한다.

AI 개발에서 컴파일러의 역할

AI 추론 속도 최적화에서 컴파일러는 핵심 역할을 한다.

  • PyTorch torch.compile: Python 모델 코드를 분석해 하드웨어에 최적화된 커널로 컴파일. 추론 속도를 수십 % 향상시킬 수 있다.
import torch

model = MyModel()
compiled_model = torch.compile(model)  # 컴파일 후 사용
output = compiled_model(input_tensor)
  • TensorFlow XLA: 신경망 연산 그래프를 가속기(GPU, TPU)에 맞게 최적화 컴파일
  • ONNX: 다양한 AI 프레임워크의 모델을 공통 중간 표현으로 변환해 다른 런타임에서 실행 가능하게 함
  • LLVM: Apple Silicon, NVIDIA GPU 등 다양한 칩에서 AI 모델이 실행될 수 있도록 플랫폼 수준 컴파일

관련 용어

  • interpreter — 코드를 한 줄씩 즉시 실행하는 방식
  • bytecode — 중간 언어, 가상 머신이 실행하는 코드
  • runtime — 프로그램 실행 중 환경
  • llvm — 범용 컴파일러 인프라
  • jit — Just-In-Time, 실행 직전에 기계어로 컴파일하는 방식
AD