プログラマがC言語を学ぶべき10の理由を読んで思った
C言語が学ぶ価値のあるプログラミング言語であることは間違いない。しかし、あまりに特別視するのはよくないと思う
- C言語は、C++やJavaと比べて低レベル(low level)な言語である。低レベルな記述が必要になるまでは、高レベルな話にとどめるようにしないと遠くには行けない(相対的な話ではありますが、C言語を低級あるいは低水準と呼ぶのが許せないという人は、K&Rの1ページ目を参照してください)
- デバイスドライバやオペレーティングシステム(OS)はもっぱらC言語により書かれている。デバドラやOSをいじるようになるまでは、C言語は要らないかもしれない
- マイクロコントローラを書く仕事を受注したいと思った場合にはC言語が出来ないといけない。リレーショナル・データベースに関連する仕事を受注したいと思った場合にはSQLが出来ないといけない。受注できる仕事の幅を広くしたいなら、たくさんの言語を知っているべきだろう
- C言語で書かれたプログラムは、他の言語で書かれたプログラムよりも小さくて実行速度が速いと思われている。サイズについて言えば、システムがある程度以上大きくなったら、「インタプリタ+インタプリタ用のプログラム」より小さくすることは難しくなるだろう(C言語でインタプリタを実装すれば競争になるだろうが、何をしているのかわからなくなる)。速度について言えば、本当に速くしたい場合に使われるスパコン用の言語のうち、もっともチューンナップされているのはFortranだ
- C言語を学んだ事があるのであれば、その他の言語を習得するのは容易である。これは、全ての近代的なプログラミング言語はC言語に基づいているからである。「近代(原文では現代だがあえて)」の言語はそうだったかもしれないが、「現代」の言語はLispからアイディアを借用し、「将来」の言語はLispに向かっている
- C言語は長年使われているので、サンプルコードや基盤コードが豊富にある。これにより、例えば既に実装された事がある新しいアルゴリズムや機能を迅速に実装できると思われている。しかし、基本的なデータ構造を使うのにかかる手間はJavaのほうがはるかに少ない
- C言語はオープンソースコミュニティが利用する言語である。LinuxはC言語により実装されている。JavaやPHP, Perl, Rubyもオープンソースコミュニティが利用する言語である。ほとんどのウェブアプリは、これらの言語で実装されている(C言語で実装されるウェブアプリはほとんどない)
- ポインタについて教えてくれるのはC言語だけである。ほかの言語はこの煩わしさから解放されている
- C言語は職を得る上で最も要求されているプログラミング言語である。近いうちにJavaがその座に着くだろう。これがいいことなのかどうかはわからないが
- マイクロプロセッサを持つ全ての物はC言語をサポートしているわけではない。私が所有するマイクロプロセッサ内蔵製品で、C言語を「サポート」しているのはPCのみだ。FlashはPCとPSP、携帯電話がサポートしている。JavaScriptはPCとPSP、Nintendo DSがサポートしている。製品が何で動作しているかということに関しては、C言語が多いかもしれないがすべてではない(アセンブラで動作しているものがあるからといって、アセンブラを学ぶべきということにはならない)
追記(参考):C言語が嫌いな理由
>計算は物理過程
現実の計算機ではそうですが。
計算モデル等では物理過程といえないのでは?
まあ、そういうモデルが多いでしょうね。でも、たいていの人はこの世界で使える計算機でプログラムを動かしたいのでしょう
Cで高水準なことをすることは全く遠くはないぞ。
標準では高水準な関数がないだけでライブラリをつくってしまえばなんのこともない。
確かに
つくってしまえばなんのことはないのですが,
つくってしまえるかどうかはいろいろで,
自分ではつくれなくても,
他人がつくったライブラリを使えれば十分な状況があると思うのです。