コンパイラーがコンパイルする言語で作成されることは非常に一般的です。これの利点は何ですか?それは部外者(そしてしばらくの間開発者)のプロセスをより難しくするようです。
例えば:
開発者にとって(少なくとも初期段階では)、コンパイラのユーザーにとっては、事態がよりトリッキーになるようです...
ある意味で、言語自体をブートストラップすると複雑になる可能性があることは事実です。一方、C++向けにコンパイラーを作成している人々は、C++の世界で最も優れたエキスパートである可能性があります。したがって、ある程度までは、コードを記述するためにその言語を選択するのは当然のことです。
また、作成者は完全な自律性を備えています。言語Xがサポートされなくなることを心配する必要はありません。言語Yバージョン1で言語Yバージョン2のコンパイラを作成しているとき、言語Yバージョン1のコンパイラはわかっていないためです。姿を消したり、サポートを終了したりすることはありません。彼らは文字通り、それを維持し、サポートする責任がある人々です。
その上、コンパイラーが適切に機能しているかどうかのテストは、それ自体のソースコードを渡すよりもはるかに優れています。 :)
これは、「 自分のドッグフードを食べる 」の例です。コンパイラーをターゲット言語で作成することにより、その言語が機能し、複雑なタスクに対して十分に強力であるかどうかを確認します。