부트스트랩 (컴파일러)

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기

부트스트래핑(bootstrapping)은 컴퓨터 과학에서 컴파일러 (또는 어셈블러)를 컴파일 하고자하는 프로그래밍 언어로 작성하는 과정이다. 이 기술의 적용은 셀프 호스팅 컴파일러로 이어진다.

BASIC, ALGOL, C, Pascal, PL/I, 팩터, 하스켈, Modula-2, 오베론, OCaml, Common Lisp, 스킴, 자바, 파이썬, 스칼라, 님로드, Eiffel 등 수많은 프로그래밍 언어들의 컴파일러들이 부트스트래핑 되었다

장점[편집]

컴파일러를 부트스트래핑 하는것은 다음과 같은 장점들을 가진다:[1] [2]

  • 컴파일러 부트스트래핑은 컴파일될 언어에 대한 중대한 테스트이다.
  • 컴파일러 개발자들은 컴파일될 언어만 알면 된다.
  • 컴파일러 개발이 컴파일될 해당 고급 언어로 이루어질 수 있다.
  • 해당 컴파일러의 백엔드 개선이 범용 목적 프로그램 뿐만 아니라 해당 컴파일러 자신 또한 개선한다.
  • 컴파일러가 언어 자신의 목적코드를 재생산해 내어야 하므로 컴파일러 부트스트래핑은 포괄적인 일관성 검사이다.

닭이 먼저냐, 달걀이 먼저냐 문제[편집]

만약 X 언어(X 언어로 작성될)를 위한 컴파일러를 얻을 필요가 있을때 '어떻게 첫번째 컴파일러가 작성될 수 있는가' 에 대한 문제가 생긴다. 이 닭이 먼저냐, 달걀이 먼저냐 문제 를 해결하기 위해 현장에서 사용되는 각기 다른 방법들은 다음을 포함한다:

  • 인터프리터 또는 Y 언어를 사용하여 X언어를 위한 컴파일러를 작성한다. 니클라우스 워스(Niklaus Wirth)는 그가 첫 번째 파스칼 컴파일러를 포트란 으로 작성했다고 밝혔다.
  • X 언어를 위한 또다른 인터프리터 또는 컴파일러가 Y 언어로 작성되었다; 이는 스킴 이 종종 부트스트랩 되는 방법이다.
  • X 언어를 위한 컴파일러의 초창기 버전들은 컴파일러가 존재하는 X 언어의 일부만을 사용해서 작성되었다. 이는 JAVA, 하스켈, 초기 프리 파스칼을 포함하는 언어들의 컴파일러가 종종 부트스트랩되는 방법이다.
  • X 언어로 컴파일러를 만든뒤, 직접 (주로 최적화가 부족한 방법으로) 컴파일한다. 그 다음 그 컴파일러를 다시 그 컴파일러의 코드에 적용하여 최적화된 컴파일러를 얻는다.

역사[편집]

어셈블러는 스스로를 부트스트랩 하기 위한 첫번째 언어 도구였다.

셀프 호스팅 컴파일러를 가지고 있는 언어 목록[편집]

아래 프로그래밍 언어들은 셀프호스팅 컴파일러를 가지고 있다:

참조[편집]

  1. Compilers and Compiler Generators: An Introduction With C++. Patrick D. Terry 1997. International Thomson Computer Press. ISBN 1-85032-298-8
  2. "Compiler Construction and Bootstrapping" by P.D.Terry 2000. HTML Archived 2009년 11월 23일 - 웨이백 머신. PDF Archived 2010년 12월 14일 - 웨이백 머신. HTML Archived [날짜 없음], - Archive.is.