Cコンパイラの歴史は何ですか?


23

「デニスリッチーがC言語を開発した」と言うとき、C言語で記述されたソースコードをコンパイルできるコンパイラーを(「既に」開発された他の言語を使用して)作成したということですか?はいの場合、彼が最初のCコンパイラを書くのに使用した言語は何ですか?コンパイラはプログラムであり、現在利用可能なCコンパイラを使用してC言語用の別のコンパイラを作成できることを理解しています。あれは正しいですか?

回答:


23

ウィキから:

リッチーは、Cプログラミング言語の作成者であり、Unixオペレーティングシステムの主要な開発者として、またCに関する決定的な本の共著者として最もよく知られています。

wikiからも:

Dennis Ritchieによって書かれた最初のCコンパイラは、再帰降下パーサーを使用し、PDP-11に関する特定の知識を組み込み、オプションのマシン固有のオプティマイザーに依存して、生成したアセンブリ言語コードを改善しました。

最初のCコンパイラも彼がアセンブリで作成しました。

ベルラボのこのページでは、ほとんどの質問に答えています。


最初のリンクが壊れています。
マフムードホッサム

IIRC、CはBと呼ばれる以前の言語に基づいており、UnixはMulticsと呼ばれる以前のオペレーティングシステムに基づいていました。これらが開発のブートストラップに使用されたことは明らかな推測ですが、私が読んだことから、それは間違った推測です。Unixの初期の開発は、たとえばCが引き継ぐまでアセンブラーで行われました。
Steve314

2
IIRC、BはBCPLの簡略版で、初期のシステムプログラミング言語でした。初期のUnixの作業の多くはBを使用して説明されていたと思いますが、実際のUnixコンパイラ(おそらく他の何かで実行されたクロスコンパイラ)があったかどうかはわかりません。
TMN

痛い 。。アセンブリ言語でコンパイラを書く。
コンプマン

6
@compmanある時点で、誰かがアセンブリでコンパイラを作成する必要があります-HLLでコンパイラへの道を他にどのようにブートストラップしますか?
リチャードガズデン

9

歴史のレッスンについてはこちらをご覧くださいhttp : //www.livinginternet.com/i/iw_unix_c.htm

PDP-11コンピューターがBell Labsに到着すると、デニスリッチーはBに基づいて、Cという新しい言語を作成しました。システム。Unixのほとんどのコンポーネントは最終的にCで書き直され、1973年にカーネル自体に到達しました。

また、これは興味深いかもしれません:http : //cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
私の知る限り、「上に構築された」のように「の設計に基づいて設計」、ではないとして、「使用してコンパイル」
バルテック

8

デニスリッチーはブートストラップを使用しました。ブートストラップは簡単なアイデアです。アセンブリで初期の単純なコンパイラを開発し、この単純なコンパイラを使用して、ターゲット言語(のサブセット)で記述された本格的なコンパイラをコンパイルします。これが、リッチーが初期のlast1120cコンパイラーを作成した方法です。



2

Cは、新しいプラットフォーム用のすべてのアセンブリコードを書き直すことなく、Unixを他のプラットフォームに移植できるように設計されました。

したがって、「Cはポータブルアセンブラー」という一般的な言い回しです。これは、Cが抽象レベルで意図的にCPUに非常に近い(1970年頃から)ことを反映しており、ほとんどの組み込みソフトウェアが何らかのCで書かれている理由でもあります。

したがって、CはUnixと密接に関連しており、Unixの人々は、必要なことを行うための初期の作業に基づいて最初のCコンパイラを作成しました。

KerniganとRichieがCに関する優れた本を書いていることに注意してください。これはおそらくコンピューター言語に関する最も影響力のある参考作品の1つです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.