このようなものが書かれているのを見たことがあります... CはCで書かれているか、ABAPはABAPで書かれています。
これが言語を真のプログラミング言語に分類するための基準の1つであると言っている人を見たことさえあります。
これが何を意味するのか誰かに説明してもらいたい。
前もって感謝します。
編集:タイトルを「CはCを使用して作成されました」から「CはCを使用してコンパイルされました」に変更されました。
このようなものが書かれているのを見たことがあります... CはCで書かれているか、ABAPはABAPで書かれています。
これが言語を真のプログラミング言語に分類するための基準の1つであると言っている人を見たことさえあります。
これが何を意味するのか誰かに説明してもらいたい。
前もって感謝します。
編集:タイトルを「CはCを使用して作成されました」から「CはCを使用してコンパイルされました」に変更されました。
アセンブリから始めて、最初のバージョンを作成し、以前のバージョンを使用して常に新しいバージョンのコンパイラを作成できます。
その言語で書かれたコンパイラを起動するために、コンパイラは必要ありません。C サブセット用のインタープリターを作成するだけです。次に、このサブセットを拡張するために使用します。
C が発明された当時 (1967 年頃)、ブライアン・カーニンハンとデニス・リッチーを除いて、高水準言語でコンパイラーやオペレーティング・システムを作成することが賢明な考えだとは誰も考えていませんでした。彼らは正しいことが証明されました!
これは、CコンパイラがCで記述されていることを意味します。
Cのコンパイラがまだ存在しない場合、Cでコンパイラを作成するにはどうすればよいのでしょうか。
アップデート:
異なる言語でコンパイラーを作成する場合、人々は、コンパイラーを構築するにはその言語が制限されすぎているのか、それともその言語の発明者が自分の言語に納得しておらず、別の言語を好んでいるのかを自問します。
しかし、別の言語でコンパイラを作成するのには十分な理由があります。
コンパイラは比較的複雑なプログラムであるため、コンパイラのようなものを作成できるということは、そのコンピュータ言語が複雑なプログラムを作成するのに十分な能力を備えていること、つまり「真の」プログラミング言語であると見なされることがあります。
コンパイラは、コンパイルと同じ言語で書かれている必要はありません。たとえば、C を使用して Pascal コンパイラを作成した場合でも、C が真のプログラミング言語であるという (やや非科学的な) テストを満たします。
明らかに、テストが行われるためには、コンパイラを作成するのに十分なほど強力ではないコンピュータ言語が必要です。一部の 4GL、特定のスクリプト言語、または特殊な言語 (LISP でコンパイラを作成できますか? わかりません...) は、このカテゴリに分類される場合があります。
前述のように、これは言語の「科学的」テストではありません。もともとはマーケティングのためだけに生まれました。ただし、いくつかの利点があります。コンパイラ、O/S、およびユーティリティが同じ言語で記述されているということは、1 つの言語で完全なプログラミング環境を構築できるため、メンテナンスが大幅に簡素化されるということです。Unix と C は、「C のみ」の環境の最初の良い例です。
それは本当に何の意味もありません。そのようなステートメントは、言語全体に実際に適用することはできず、言語の特定の実装にすぎません。たとえば、CコンパイラのコードはCで記述されている場合があります。
「真の言語」の真のテストは、それがチューリング完全であるかどうかであることをお勧めします。解釈された言語も真の言語ではありませんが、解釈された言語でインタプリタを書くことはできませんでした。(実際には可能ですが、新しいインタープリターを実行するには元のインタープリターが必要です。数世代後には恐ろしく遅くて大きくなります)。