こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

unixはC言語で書かれている?不思議?

unix、linuxはC言語で書かれている、と聞いたのですが、不思議なことがあります。

そもそもC言語を書くためにはviとか必要ですしコンパイルするにもccとかgccとか必要ですよね?

viとかccとかを使うには、また、unixが必要な気がします。どうやってunixを作ることができたのでしょうか?

ニワトリと卵みたいですごく不思議なのですが・・

linuxのところで
http://virus.okwave.jp/kotaeru.php3?q=2246024
のような質問をしているうちに不思議に思ってきました。

投稿日時 - 2006-07-01 23:35:05

QNo.2249943

暇なときに回答ください

質問者が選んだベストアンサー

最初に搭載するプロセッサに合ったアセンブラやそれよりも低級言語でC言語のコンパイラをまず書きます。それからOSを構築していったものと考えられます。私も10年ぐらい前にUnixを使った頃あなたと同じような疑問を持ちましたが、良く分かっている人間からそういう答えをもらいました。確かこのようなことをいったのを聞いたことがあります。

また、現在の例を考えてもらえばわかるのですが、例えばあるコード(ゲーム機など)のソフトなどを開発するためにはWindows上で開発しますよね?
 Source code -> Target machine code
   compile 
ある機械にあったコンパイラを作りそれでシステムを構築するわけです。つまり違うOSでターゲットとなるマシンにあったコンパイラを書き
OSやそのAPIを書きアプリケーションを書いていく感じです。どちらも似たような答えですが、いずれかのうちの一つでしょう。他のOSでコンパイラを書き構築したかマシン語をベースにそのマシーンで開発していったかのいずれかと思います。

投稿日時 - 2006-07-02 00:00:22

お礼

ありがとうございました。

2つめは私も最初思ったのですが、これだと、究極的にはニワトリと卵の問題が解決しないので、どうかなと思ったのです。

1つめはなるほどと思います。

投稿日時 - 2006-07-03 02:14:27

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

この世にはOSが無いマシンが存在します。OSと同等のコードを自分で組み上げるのです。
といっても、実行コードは別環境で作り上げるのですが。

何もないので機械語で組み、ROMに焼いたりして実行させます。
ツールの類はその後に作ったりするんですよ。
ちなみにC言語はB言語で作られたシステムで開発されました。
まあコンピュータの歴史を調べた方が早い気もしますが。

投稿日時 - 2006-07-03 01:28:20

補足

機械語で組まれている、とすれば、
「unixがC言語で書かれている」
というのはどういうことなのでしょうか?

投稿日時 - 2006-07-03 02:10:30

お礼

#2さんと同じように考えればよいのですね。
ありがとうございました。

投稿日時 - 2006-07-03 02:19:14

ANo.4

別に不思議でもなんでもないでしょ
PS2のゲームとかの開発、まさかPS2でやっていると思っていないでしょうね(^_^;
それと一緒です。
開発環境は別の環境です。
それにviってどういう物か御存知?
単なるテキストエディタですよ。
それぐらいならば、Linuxにもありますよ。
コンパイラもそうです。
Unix自体も別のシステム上で構築されただけです。

参考URL:http://ja.wikipedia.org/wiki/UNIX

投稿日時 - 2006-07-02 00:10:23

お礼

#2,#5さんによると、
別環境で開発された、という訳ではないようです。

投稿日時 - 2006-07-03 02:23:28

ANo.2

Cコンパイラーをアセンブラー(又は機械語)で書いたと考えれば判りやすいでしょう。
そのCコンパイラーを使ってUNIXを書くのです。
実際には程度の低いコンパイラーを先に作ってこれを使ってCコンパイラーを作り
そのCコンパイラーを使ってUNIXを書く方法もあります。

後者の方法はコンパイラー・コンパイラーと呼ばれる技術分野です。
文字通りコンパイラーを作るためのコンパイラーです。

余談ですが吊り橋にロープを渡す場合、まず細いワイヤーをヘリで渡し
段々太いワイヤーに取り替えて最後にロープを渡すのに似ています。

投稿日時 - 2006-07-01 23:58:09

お礼

分かりやすい説明をありがとうございます余す。

ということは、C言語だけではなく、やはりCより低級な言語も必要だったと言うことですね。

投稿日時 - 2006-07-03 02:15:42

ANo.1

最初は他のプラットフォームで書いていた
んだと思います。UNIX以前にもOSは
ありましたから。

投稿日時 - 2006-07-01 23:39:48

お礼

例えば、linuxの場合の他のプラットホームというのはなんだったのでしょうか?ライナスさんが使っていたのは。。

1台のパソコンだけで全部は作れなかったと言うことでしょうか。(仮想マシンは別にして)

投稿日時 - 2006-07-03 02:18:19

あなたにオススメの質問