- ベストアンサー
unixはC言語で書かれている?不思議?
unix、linuxはC言語で書かれている、と聞いたのですが、不思議なことがあります。 そもそもC言語を書くためにはviとか必要ですしコンパイルするにもccとかgccとか必要ですよね? viとかccとかを使うには、また、unixが必要な気がします。どうやってunixを作ることができたのでしょうか? ニワトリと卵みたいですごく不思議なのですが・・ linuxのところで http://virus.okwave.jp/kotaeru.php3?q=2246024 のような質問をしているうちに不思議に思ってきました。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
最初に搭載するプロセッサに合ったアセンブラやそれよりも低級言語でC言語のコンパイラをまず書きます。それからOSを構築していったものと考えられます。私も10年ぐらい前にUnixを使った頃あなたと同じような疑問を持ちましたが、良く分かっている人間からそういう答えをもらいました。確かこのようなことをいったのを聞いたことがあります。 また、現在の例を考えてもらえばわかるのですが、例えばあるコード(ゲーム機など)のソフトなどを開発するためにはWindows上で開発しますよね? Source code -> Target machine code compile ある機械にあったコンパイラを作りそれでシステムを構築するわけです。つまり違うOSでターゲットとなるマシンにあったコンパイラを書き OSやそのAPIを書きアプリケーションを書いていく感じです。どちらも似たような答えですが、いずれかのうちの一つでしょう。他のOSでコンパイラを書き構築したかマシン語をベースにそのマシーンで開発していったかのいずれかと思います。
その他の回答 (4)
- rancers5
- ベストアンサー率6% (3/43)
この世にはOSが無いマシンが存在します。OSと同等のコードを自分で組み上げるのです。 といっても、実行コードは別環境で作り上げるのですが。 何もないので機械語で組み、ROMに焼いたりして実行させます。 ツールの類はその後に作ったりするんですよ。 ちなみにC言語はB言語で作られたシステムで開発されました。 まあコンピュータの歴史を調べた方が早い気もしますが。
お礼
#2さんと同じように考えればよいのですね。 ありがとうございました。
補足
機械語で組まれている、とすれば、 「unixがC言語で書かれている」 というのはどういうことなのでしょうか?
別に不思議でもなんでもないでしょ PS2のゲームとかの開発、まさかPS2でやっていると思っていないでしょうね(^_^; それと一緒です。 開発環境は別の環境です。 それにviってどういう物か御存知? 単なるテキストエディタですよ。 それぐらいならば、Linuxにもありますよ。 コンパイラもそうです。 Unix自体も別のシステム上で構築されただけです。
お礼
#2,#5さんによると、 別環境で開発された、という訳ではないようです。
- ymmasayan
- ベストアンサー率30% (2593/8599)
Cコンパイラーをアセンブラー(又は機械語)で書いたと考えれば判りやすいでしょう。 そのCコンパイラーを使ってUNIXを書くのです。 実際には程度の低いコンパイラーを先に作ってこれを使ってCコンパイラーを作り そのCコンパイラーを使ってUNIXを書く方法もあります。 後者の方法はコンパイラー・コンパイラーと呼ばれる技術分野です。 文字通りコンパイラーを作るためのコンパイラーです。 余談ですが吊り橋にロープを渡す場合、まず細いワイヤーをヘリで渡し 段々太いワイヤーに取り替えて最後にロープを渡すのに似ています。
お礼
分かりやすい説明をありがとうございます余す。 ということは、C言語だけではなく、やはりCより低級な言語も必要だったと言うことですね。
- linus1974
- ベストアンサー率19% (71/370)
最初は他のプラットフォームで書いていた んだと思います。UNIX以前にもOSは ありましたから。
お礼
例えば、linuxの場合の他のプラットホームというのはなんだったのでしょうか?ライナスさんが使っていたのは。。 1台のパソコンだけで全部は作れなかったと言うことでしょうか。(仮想マシンは別にして)
お礼
ありがとうございました。 2つめは私も最初思ったのですが、これだと、究極的にはニワトリと卵の問題が解決しないので、どうかなと思ったのです。 1つめはなるほどと思います。