피드로 돌아가기
The Chicken, the Egg, and the Compiler
Dev.toDev.to
Infrastructure

자기 참조적 컴파일러 설계를 통한 Self-hosting 언어 구현 전략

The Chicken, the Egg, and the Compiler

Dheeraj Babu Dendukuri2026년 7월 1일6intermediate

Context

신규 프로그래밍 언어 개발 시 해당 언어를 컴파일할 컴파일러가 부재한 닭과 달걀의 모순 발생. 외부 언어 의존성을 영구적으로 유지할 경우 유지보수 부담 증가 및 언어 진화 속도 저하라는 한계점 존재.

Technical Solution

  • 기존 컴파일러가 존재하는 C 또는 Assembly를 이용해 초기 버전의 최소 기능 컴파일러(v0) 구현
  • v0 컴파일러를 통해 언어의 일부 구문을 처리할 수 있는 개선된 버전(v1)을 빌드하는 반복적 확장 수행
  • 컴파일러 소스 코드의 일부를 대상 언어로 재작성하여 점진적으로 Self-hosting 구조로 전환
  • 최종적으로 전체 소스 코드를 해당 언어로 작성하고 스스로를 컴파일하는 완전한 Self-hosting 컴파일러 완성
  • Binary → Assembly → C → High-level Language로 이어지는 계층적 추상화 사다리 구조 활용
  • 외부 언어 의존성을 제거하여 플랫폼 이식성 향상 및 언어 자체 기능으로 컴파일러 성능 최적화 도모

1. 신규 도구 개발 시 초기 단계에서 완전한 기능을 구현하려 하기보다 다음 버전을 만들 수 있는 최소 기능 정의

2. 외부 라이브러리나 프레임워크 의존성이 시스템의 핵심 진화를 방해하는지 검토

3. 반복적인 자동화 스크립트 작성을 통해 개발 생산성을 단계적으로 높이는 Bootstrapping 워크플로우 적용

4. 시스템의 Self-hosting 가능 여부를 판단하여 장기적인 유지보수 비용 최적화 전략 수립

원문 읽기