ブートストラップ問題とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > ブートストラップ問題の意味・解説 

ブートストラップ問題

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/03/18 01:22 UTC 版)

ブートストラップ問題 (Bootstrap problem) は、コンパイラをコンパイル対象のプログラミング言語で作成した際に、そのコンパイラの最初のコンパイルをどうするかといった場合を典型的な例とする、いわゆる「鶏と卵」の形をしたセルフホスティング環境の問題を指す。これを解決するための方式をブートストラップ方式といい、この問題を何とかして最初の完備した環境を作ることをブートストラッピングという[1]

名前についてはブートストラップの記事を参照。

種類

言語 X のコンパイラを言語 X で書く場合、次のような対処法がある。

  • 言語 X のインタプリタコンパイラを言語 Y で実装する。ニクラウス・ヴィルトは、最初のPascalコンパイラをFORTRANで書いたとされている。
  • X の別のインタプリタかコンパイラが言語 Y で既に書かれて存在している。これはSchemeでしばしば用いられる手法である。
  • X のサブセットのコンパイラをまず用意し、その X のサブセットで X のコンパイラを書く。Javaを拡張した言語のコンパイラの幾つかやHaskellコンパイラの幾つか、最初のFree Pascalコンパイラはこの方式で作成されている。
  • X のコンパイラが既に存在するプラットフォーム上で、別のプラットフォームのオブジェクトコードを生成する X のコンパイラをコンパイルし、クロスコンパイラとする。そのクロスコンパイラでコンパイラをコンパイルすれば、ターゲットのプラットフォーム上で動作するコンパイラが得られる。C言語コンパイラを別のプラットフォームに移植する際にこの方式が採用される。
  • X のインタプリタが実装されている場合に、そのインタプリタ上で X のコンパイラを実行し、 X のコンパイラ自身をコンパイルする。UCSD PascalP-Codeで書かれたトランクコンパイラの場合がこれに相当する。トランクコンパイラは、オブジェクトコード生成部がコメントとなっている場合があり、その場合にはコンパイル前にターゲットマシンに合わせたものに書き換える必要がある。
  • X で書かれたコンパイラのソースの最初のコンパイルは、人手により「ハンドコンパイル」する。ドナルド・クヌースは、文芸的プログラミングシステム WEB でこの方式を採用した。

コンパイラをソースコード形式で配布する場合、同時に移植の容易なバイトコード版のコンパイラを提供し、コンパイラ自身のコンパイルができるようにする(一例)。

経緯

ブートストラップがおこなわれた最初の実装はNELIAC(ALGOLの一種)であった。商用の実装ではPL/Iの実装が最初である。

今日の言語処理系では、C言語のようなシステム記述に向いた基本的な言語処理系の実装などは、その言語自身で書かれることが多いため、全く手掛かりのない環境ではブートストラッピングが必要になることがある(大抵の環境では、バイナリディストリビューションやクロスコンパイルを利用して回避できるので、難しいプロセスは回避できる)。以下に幾つかの実装が行っているブートストラッピングの方法を示す。

  • OCaml: OCamlで書かれているネイティブコードコンパイラは、ソースだけでなくバイトコードも配布している
  • Glasgow Haskell Compiler: Haskellで書かれているので、中間言語としてC言語を使うオプションを利用した、Cコンパイラでコンパイルできるコードを、ブートストラッピング用に配布している

また、パーサジェネレータなど、言語処理系の実装に際して、プログラムを生成するプログラムを使っている場合も、似たような再帰的依存関係の問題がある。

脚注



このページでは「ウィキペディア」からブートストラップ問題を検索した結果を表示しています。
Weblioに収録されているすべての辞書からブートストラップ問題を検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からブートストラップ問題を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ブートストラップ問題」の関連用語

ブートストラップ問題のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ブートストラップ問題のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのブートストラップ問題 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS