WIPIVERSE

부트스트랩 (컴파일러)

부트스트랩 (컴파일러)

정의
부트스트랩 컴파일러(bootstrap compiler)란, 자신이 작성된 프로그래밍 언어 자체로 구현된 컴파일러를 말한다. 즉, 컴파일러가 해당 언어의 초기 버전으로 작성된 후, 그 자체를 새로운 버전으로 재컴파일함으로써 스스로를 개선하거나 최신 버전으로 전환한다.

주요 특징

특징 설명
자기 호스트(self-hosting) 컴파일러가 자신이 컴파일하려는 언어로 구현되어 있다.
점진적 발전 초기 단계에서는 간단한 구현으로 시작해, 점차 기능을 추가하면서 스스로를 다시 컴파일한다.
이식성 새로운 하드웨어나 운영체제에 이식할 때, 최소한의 기능만을 가진 부트스트랩 컴파일러를 사용해 전체 컴파일러를 구축한다.
신뢰성 동일 언어로 구현되므로, 언어 사양과 구현 사이의 일관성을 확보하기 용이하다.

역사 및 어원
‘부트스트랩(bootstrap)’이라는 용어는 “신발 끈을 스스로 잡아당겨 신발을 신는다”는 비유에서 유래한다. 컴퓨터 과학에서는 초기 시스템을 최소한의 자원으로 시작해 스스로 완전한 시스템을 구축하는 과정을 의미한다. 부트스트랩 컴파일러는 1960년대 초반부터 여러 프로그래밍 언어(예: C, Pascal, Java)에서 도입되어 왔다.

사용 사례

  1. C 언어 컴파일러 – GCC와 같은 오픈소스 컴파일러는 초기에는 다른 컴파일러로 빌드되었으며, 이후 자체 소스 코드로 재컴파일되는 부트스트랩 과정을 거친다.
  2. Java 컴파일러 – javac는 Java로 구현된 컴파일러이며, JDK 자체를 통해 자신을 다시 컴파일한다.
  3. 새로운 프로그래밍 언어 – 언어 설계 단계에서 최초 구현을 다른 언어(예: C)로 작성한 뒤, 해당 언어 자체로 재작성하여 부트스트랩한다.

관련 개념

  • 자체 호스트(self-hosted): 부트스트랩 컴파일러와 동의어로 사용되는 경우가 많다.
  • 크로스 컴파일러(cross-compiler): 목표 플랫폼과 다른 환경에서 실행되는 컴파일러와는 구별된다.
  • 컴파일러 프론트엔드/백엔드: 부트스트랩 과정에서 프론트엔드와 백엔드가 동시에 발전한다.

요약
부트스트랩 컴파일러는 컴파일러 설계와 구현에서 핵심적인 전략으로, 최소한의 초기 구현을 기반으로 스스로를 재컴파일하여 완전한 컴파일러 체인을 구축한다. 이는 언어의 이식성, 유지보수성, 그리고 구현 일관성을 높이는 데 기여한다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기