|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ ー : [ちょうおん] (n) long vowel mark (usually only used in katakana) ・ 問 : [もん] 【名詞】 1. problem 2. question ・ 問題 : [もんだい] 【名詞】 1. problem 2. question ・ 題 : [だい] 1. (n,vs) title 2. subject 3. theme 4. topic
ブートストラップ問題(Bootstrap problem)は、コンパイラをコンパイル対象のプログラミング言語で作成した際に、そのコンパイラの最初のコンパイルをどうするかといった場合を典型的な例とする、いわゆる「鶏と卵」の形をしたセルフホスティング環境の問題を指す。これを解決するための方式をブートストラップ方式と言い、この問題を何とかして最初の完備した環境を作ることをブートストラッピングと言う。名前についてはブートストラップの記事を参照のこと。 == 種類 == 言語 X のコンパイラを言語 X で書く場合、次のような対処法がある。 * 言語 X のインタプリタかコンパイラを言語 Y で実装する。ニクラウス・ヴィルトは、最初のPascalコンパイラをFORTRANで書いたとされている。 * X の別のインタプリタかコンパイラが言語 Y で既に書かれて存在している。これはSchemeでしばしば用いられる手法である。 * X のサブセットのコンパイラをまず用意し、その X のサブセットで X のコンパイラを書く。Javaを拡張した言語のコンパイラの幾つかやHaskellコンパイラの幾つか、最初のFree Pascalコンパイラはこの方式で作成されている。 * X のコンパイラが既に存在するプラットフォーム上で、別のプラットフォームのオブジェクトコードを生成する X のコンパイラをコンパイルし、クロスコンパイラとする。そのクロスコンパイラでコンパイラをコンパイルすれば、ターゲットのプラットフォーム上で動作するコンパイラが得られる。C言語コンパイラを別のプラットフォームに移植する際にこの方式が採用される。 * X のインタプリタが実装されている場合に、そのインタプリタ上で X のコンパイラを実行し、 X のコンパイラ自身をコンパイルする。UCSD PascalのP-Codeで書かれたトランクコンパイラの場合がこれに相当する。トランクコンパイラは、オブジェクトコード生成部がコメントとなっている場合があり、その場合にはコンパイル前にターゲットマシンに合わせたものに書き換える必要がある。 * X で書かれたコンパイラのソースを、人間が(最適化なしで)コンパイル(つまり機械語に翻訳)し、それを使って最適化コンパイラをコンパイルする。ドナルド・クヌースは、文芸的プログラミングシステム WEB でこの方式を採用した。 コンパイラをソースコード形式で配布する場合、同時に移植の容易なバイトコード版のコンパイラを提供し、コンパイラ自身のコンパイルができるようにする。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「ブートストラップ問題」の詳細全文を読む スポンサード リンク
|