컴파일러 개요 및 구조
이전 페이지: Compiler
컴파일러 시리즈의 첫 번째 글입니다. 이번 시간에는 간단하게 컴파일러가 무엇인지 정의하고, 왜 필요한지, 그리고 어떤 주요 단계를 거쳐 작업을 수행하는지에 대한 전체적인 그림을 그려보겠습니다.
1. 컴파일러란?
메인 페이지에도 언급되어 있지만, 우리가 프로그래밍 언어(예: C, Java, Python)로 작성한 코드는 컴퓨터가 직접 이해할 수 있는 형태가 아닙니다. 컴퓨터의 중앙 처리 장치(CPU)는 기계어(machine language)라는 매우 단순한 명령어들의 집합만을 해석할 수 있기 때문입니다. 따라서 우리가 작성한 고수준의 소스 코드(source code)를 컴퓨터가 실행할 수 있는 형태로 바꾸어주는 번역가가 필요한데, 이 역할을 하는 소프트웨어가 바로 컴파일러입니다.
컴파일러는 특정 프로그래밍 언어, 즉 소스 언어(source language)로 작성된 프로그램을 다른 언어인 목표 언어(target language)로 번역합니다.

2. 컴파일러의 단계적 구조
컴파일러는 복잡한 번역 과정을 효율적으로 수행하기 위해 여러 단계(phase)로 나뉘어 구성되는 것이 일반적입니다. 각 단계는 이전 단계의 출력을 입력으로 받아 특정 작업을 수행하고, 그 결과를 다음 단계로 전달합니다. 크게 프론트엔드(Front End), 미들엔드(Middle End), 그리고 백엔드(Back End)로 구분할 수 있습니다.