web-dev-qa-db-ja.com

コンパイラがコンパイルするのと同じ言語でコンパイラが実装される利点は何ですか?

コンパイラーがコンパイルする言語で作成されることは非常に一般的です。これの利点は何ですか?それは部外者(そしてしばらくの間開発者)のプロセスをより難しくするようです。

例えば:

開発者にとって(少なくとも初期段階では)、コンパイラのユーザーにとっては、事態がよりトリッキーになるようです...

18
user160274

ある意味で、言語自体をブートストラップすると複雑になる可能性があることは事実です。一方、C++向けにコンパイラーを作成している人々は、C++の世界で最も優れたエキスパートである可能性があります。したがって、ある程度までは、コードを記述するためにその言語を選択するのは当然のことです。

また、作成者は完全な自律性を備えています。言語Xがサポートされなくなることを心配する必要はありません。言語Yバージョン1で言語Yバージョン2のコンパイラを作成しているとき、言語Yバージョン1のコンパイラはわかっていないためです。姿を消したり、サポートを終了したりすることはありません。彼らは文字通り、それを維持し、サポートする責任がある人々です。

その上、コンパイラーが適切に機能しているかどうかのテストは、それ自体のソースコードを渡すよりもはるかに優れています。 :)

これは、「 自分のドッグフードを食べる 」の例です。コンパイラーをターゲット言語で作成することにより、その言語が機能し、複雑なタスクに対して十分に強力であるかどうかを確認します。

5
JacquesB