- PR -

どの言語を勉強すればいいのですか?

投稿者投稿内容
ごりさん
会議室デビュー日: 2004/07/20
投稿数: 9
投稿日時: 2004-08-11 13:53
ご返答の中で、多数C言語で多くの基本となるソフトを作ってきたとありました。また、自分なりの勉強の中で、LinuxもC言語を使われてきたという記述ありました。現在もCでLinuxは書かれているのでしょうか?もし、そうであるのでしたら、どうして古い言語であるCを使うのでしょうか(安定してるから?)?カーネルもCで書かれているのですか?また、ど素人の質問で、怒られそうです。

[ メッセージ編集済み 編集者: ごりさん 編集日時 2004-08-11 13:56 ]
Toshi
ベテラン
会議室デビュー日: 2003/09/12
投稿数: 62
投稿日時: 2004-08-11 17:05
Red Hat Linux 7.3 kernel 2.4.20 では /usr/src/linux-2.4 以下に
13350 のファイルが有り、
C言語と思われるファイル(*.c)は 4967、
ヘッダと思われるファイル(*.h)は 5134 ありました。

因にアセンブり言語と思われるファイル(*.S)は 504、
*.txt は 504、
Makefile は 466、
何も拡張子が付いていないファイル(多くがドキュメント)が 1029 ありました。

最新のカーネルでは有りませんが、Cで(狭義の)Linux(=カーネル)は書かれていることに間違いないようです。

なぜCを使うのか?
Unix が公開されたときに C言語が使われていたから Linux もそれを踏襲したのでしょう。もしかするとLinus Torvalds氏がC言語が得意だったからかも。
(臆測に過ぎません。その理由は開発者のLinus Torvalds氏に聞かないと...)
顔爺
ベテラン
会議室デビュー日: 2003/10/03
投稿数: 52
投稿日時: 2004-08-11 17:17
引用:

ごりさんさんの書き込み (2004-08-11 13:53) より:
そうであるのでしたら、どうして古い言語であるCを使うのでしょうか(安定してるから?)?




単純に、各言語の適性の問題です。
C は低水準(機械語よりという意味です)の記述に向いていますし、
今でも学術計算では FORTRAN が使われたりしています。

追記

あと、過去の資産というものもありますね。

[ メッセージ編集済み 編集者: 顔爺 編集日時 2004-08-11 17:24 ]
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2004-08-11 17:25
ごりさん は、何をされたいのでしょう?
hsi
ベテラン
会議室デビュー日: 2004/06/27
投稿数: 84
お住まい・勤務地: 東京都内
投稿日時: 2004-08-11 22:53
こんばんは。

>ごり樣

プログラムを覚える勢いはそうとうなものと思われますが、
シェル、C/C++、Java、この種類を覚える前に何をしたいのか
を考えた方がよろしいのではないでしょうか?

私もHTML言語、JavaScriptが楽しくてホームページ作成から
ネットーワークに入ったわけですが、いまだに私はJavaScript
どころか、HTML言語もきちんと使いこなせませんでした。

それに加えJavaAppletまで使い始めてみごとに中途半端になりました。

ホームページを作り初めてもう4年がたちますけど、結果、プログラムの
一部を覚えたくらいで、サーバ構築をして、設定等でつまづきそのあげく
spamメールに悩まされたくらいです。

プログラムを覚える前に

◯アプリケーションの作成
◯サーバ維持管理(ネットワーク)

アプリケーションというだけそうとう種類があります。
exeファイルが良い例かと。

サーバ維持管理だってポータルサイト、グループウェアみたいな
ものがあるので。。。

やりたい事を考えると言うことは大事だと思います。

ちなみにC言語そのものを覚えるためには、非常に時間がかかるものだと
私個人的に思います。覚える近道として、先輩の作ったプログラムをみて
参考にすると言ったような感じ(そのままプログラムを使うのではなく
自分だけのオリジナルプログラムに変える)

計算だって人によって答のだし方が異なる。
話し方も人によって様々。

私のようなものがこのようなことを書いて申訳ないとは思うのですが。
ちょと気になったので書いてしまいました。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2004-08-12 00:25
# アタシも素人なんですが...
## 順番変更しています。
引用:

カーネルもCで書かれているのですか?


そうです。てゆーか、まさしくカーネルこそが C で書かれるところの
典型です。

引用:

どうして古い言語であるCを使うのでしょうか


C は Unix を記述するために設計された言語であるのでカーネルを記述する
のに適していること、Unix系 OS を記述するための言語は C 以外には開発
されていないこと、が理由でしょうね。
Unix の改良版 OS という性格の強い Plan9 ですら、カーネルは C で記述
されていると聞きます。一方、Unix 系から離れれば、OS を記述する言語には
いろいろあるようです。

あと、i386 が C を実装するのに適したアーキテクチャーである、という
ことも... もっとも、i386 が C に適さないアーキテクチャーだったならば、
そこに Unix を移植しようとか、ましてや、そこで動く Unix 的な OS を
実装しよう、などという考えは生まれなかっただろうと思いますが...
ごりさん
会議室デビュー日: 2004/07/20
投稿数: 9
投稿日時: 2004-08-13 14:10
御返答有難う御座います。皆様にとって些細なことかもしれませんが、私にするととても勉強になります。
soluna
ベテラン
会議室デビュー日: 2004/06/15
投稿数: 59
投稿日時: 2004-08-24 00:58
今更ながらですが。

引用:

ぽんすさんの書き込み (2004-08-12 00:25) より:
あと、i386 が C を実装するのに適したアーキテクチャーである、という
ことも... もっとも、i386 が C に適さないアーキテクチャーだったならば、
そこに Unix を移植しようとか、ましてや、そこで動く Unix 的な OS を
実装しよう、などという考えは生まれなかっただろうと思いますが...


i386系は決してCを実装するのには向いているとは言えません。
さすがにPentiumクラスになると改善されているでしょうけど。

Cでカーネルなどの、低レベル制御が書かれるのは、アセンブラと相性がよいというところです。
対象とするCPUのアセンブラを知っていれば、ある程度どのようなコードがはき出されるかが解るのです。
後、I/Oポート制御命令がサポートされたり、割り込みハンドルがサポートされたり。と。
いざとなれば、直接アセンブラの命令を書き込んだりとか。

ちなみに、噂によると、Cが開発されたUnixのCPU(PDP11?PDP7)では、アセンブラの命令と、
Cの命令が、ほぼ1対1に対応するぐらいだったという噂を聞いたことがあります。(確証ナシ)
私が知っているCPUではMC68000系が、本当にそんな感じでした。

スキルアップ/キャリアアップ(JOB@IT)