ForthのSelf-compilation(a.k.a。Meta-compilation)とは何ですか?それがどのように機能し、なぜそれが役立つのですか?それは実用的な使用法がありますか、そしてそれは現代のシステムでまだ使用されていますか?
メタプログラムは、別のプログラムを入力として受け取るものです。この意味で、すべてのコンパイラはメタプログラムです。
メタコンパイラーは、コンパイラーが入力であり、通常はそれ自体であるコンパイラーです。これは、ブートストラップコンパイラのアイデアと密接に関連しています。別の関連する概念は同像性です。これは、プログラムの構造が、プログラムが操作するデータと形式が類似していることを意味します。
考慮すべき典型的な言語はLISPとForthです。 LISPではすべてがリストです。新しい操作を定義する機能を含む操作の中核があります。大規模なLISPシステムは、小さなコアからブートストラップできます。
Forthはスタックと単語を扱います。新しい単語を定義する機能など、基本的な操作を実行するコアワードの小さなセットがあります。そして、大きなForthアプリケーションは、その小さなコアからブートストラップされます。
どちらの場合も主な利点は、bootstrap新しいシステムを一部のプロセッサでアセンブリ言語で小さな(4K以下)コアで記述し、それを使用して残りをコンパイルすることにより、この機能を利用できることです。
Forthは生き残っており、一部の組み込みシステムでまだ使用されていますが、主な利点は、より多くのメモリを備えたより高速なプロセッサと標準の高水準言語を使用することで追い抜かれています。しかし、プロセッサのコードを肉眼で見るには小さすぎる場合は、Forthに留意してください。