e知識「e-chishiki.com」では、インドでの著名なIT著者、IT教育者、eセキュリティーの大家により作成された様々な種類のプログラミング言語に関する技術的なコンテンツを知識情報データーベースとして提供します。
オンライン書籍; インド式プログラミングバイブル C言語入門 (上)
第 1 章 : C言語入門 始めに(書籍のプレビュー)
インド式プログラミングバイブル C言語入門
この記事は、2008年4月から発売の「インド式プログラミングバイブル C言語入門 (上)」より掲載しました。書籍の情報は、こちらをご覧ください。
Cとは
C とは、1972年に、米国AT&Tベル研究所で開発されたプログラム言語です。設計と記述は、研究所のデニス・リッチーによって、行われました。70年代後半になると、C は、PL/IやALGOLといった、当時幅広く使われていた言語に代わって使われ始めました。誰かがC を使うように強制したわけではありません。ベル研究所の公式採用言語でもありませんでした。つまり、C は、何の宣伝もしていないのに、その評判を高め、ユーザ数が増え続けていったのです。デニス・リッチー自身も、C が、FORTRANやPL/Iのような従来の言語よりも、さらにはPascalやAPLといった新しい言語よりも、プログラマたちの支持を得たことを、意外に思ったそうですが、これはC が本当に歓迎されたことを表しています。
C の人気は、その信頼性や、簡潔で使用しやすいと言う点でしょう。さらに、新しい言語、ツール、技術が日々現れては消えていく業界で、1つの言語が30年以上も使われ続けたと言う事実が、その実力を証明しています。
C について、最近よく聞く意見は、「すでにC++やC#、Javaといった言語に置き換わっているC を、今さらなぜ勉強しなければならないのでしょうか?」というものです。このような意見は、残念ながら、正しいとは言えないでしょう。それには、次のような理由があげられます。
- まず、C++やJavaをいきなり学ぶ人はいないでしょう。C++やJavaのような言語を習得するには、その言語要素とは別に、クラスやオブジェクト、継承、多態性、テンプレート、例外処理、参照などについて理解していなければならないからです。基本的な言語要素さえ理解していないのに、このようなわかりにくい概念を学ぼうとすることは、順番が間違っています。つまり、C++やC#、Javaなどに移行する前に、言語要素すべてを、C でしっかりと習得しておくことが望ましいです。このように、2段階に分けて学ぶことは、1度に学ぶよりも時間がかかるかもしれません。しかし結局は、それだけの手間をかける価値があることがすぐにわかるでしょう。
- C++やC#、Javaでは、オブジェクト指向プログラミング(OOP)という概念に基づいて、プログラムを構成します。この構成概念には、たくさんの利点があります。OOPを使うには、C の言語要素のしっかりとした把握と、基本的なプログラミング能力は不可欠です。
- 何年も前から、多くのC++やJavaを元にしたプログラミング ツールやフレームワークが発展してきたにも関わらず、C の重要性はその地位を失っていません。なぜならば、そのようなフレームワークやツールを使用するには、C の言語要素の理解が必要だからです。
- WindowsやUnix、Linuxのような有名なオペレーティング システムの大部分は、今でもC で記述されています。その理由は、パフォーマンス(実行速度)の点で、C に優る言語がないからです。その上、オペレーティング システムで新しい機器を使用するには、その機器を動作させるためのデバイス ドライバをプログラミングしなければなりません。そのようなプログラミングができるのは、C だけです。
- 今日では、携帯電話やPDAのようなモバイル機器が非常に多く使われています。また、電子レンジや洗濯機、デジタル カメラのような家電も、新しい機能を備えたものが次々に登場しています。このような新機能は、機器に内蔵されたマイクロプロセッサ、オペレーティング システム、そしてプログラムによって実現されています。これらのプログラムは、実行速度だけではなく、限られたメモリ上で動作する能力も求められます。そのようなプログラムは、当然C で記述されています。時間と空間に制約がある状況で、オペレーティング システムやプログラムを記述する言語としては、C が最良の選択です。
- 今までに、高画質3Dコンピュータ ゲームを目にしたことがあると思います。例えば、宇宙船を操作して敵の宇宙人を撃つといった、ユーザがオブジェクトを操作するゲームです。この種のゲームに一番大切なことは速度です。宇宙船を動かしたり、弾を撃ったりするたびに時間がかかっているようでは、人気が出ないのは言うまでもありません。プレイヤーの期待に応えるには、入力に対するゲームの反応が、素早くなくてはならなりません。ここでもまた、C言語が他の言語よりも好まれます。多くの有名なゲーム用フレームワークは、C言語を使って作られています。
- プログラムは、ハードウェア機器と非常に密接にやりとりを行う必要が求められる場合があります。C は、このようなやりとりを、パフォーマンスに影響を与えることなく実行できる言語要素を持っているため、プログラマにとって望ましい選択肢です。
ここまでで、プログラム言語を学ぶ長い道のりの最初に、なぜC を習得すべきなのか、何が大事なのかを十分に納得できたことと思います。



