『Cプログラミング専門課程』目次第0章準備

準備 ■誤解


プログラムはなかなか思ったようには動かない。予定は遅れる、所期の性能 は出ない、停止してしまう……などというトラブルが起きます。トラブルは勝 手に起きるのではなく、ちゃんと理由があって起きます。このトラブルの原因 は、実際には様々の要素が複雑に絡み合っているのですが、それを大胆に3つ に分類しました。

1つ目は、汚ないプログラムです。見苦しい、整理の悪い、ぐちゃぐちゃな プログラムです。プログラムがある程度大きくなると、整理が悪いプログラム は簡単に収拾がつかなくなり、保守が不可能になります。コンピュータの方は どんどん進化しますが、汚ないプログラムは新機種への移植の際に過大な労力 を必要とします。もちろんバグもいっぱい潜んでいます。こういうプログラム は一番よくお目にかかります。それで、この種のプログラムを集めて診断を行 ない、本にまとめたのが『Cプログラミング診断室』(拙著、技術評論社)で す。こういうプログラムは、他人のであれば、まるで「落語的」とでもいう感 じで、そのバカさ加減をあざ笑うことで楽しめます。この本は落語的読物とし て楽しんでいただければ最高です。本書よりちょっとレベルが高いので、次に 読む本として適当でしょう。あるいは、実際にプログラムを半年なり1年ぐら い組む経験を積んでから読めばさらに良いでしょう。

2つ目は、技術や知識レベルの低いプログラムです。常識と思うようなアル ゴリズムも知らず、変な方法を苦心して考案し、最後は失敗するたぐいです。 データ構造として配列しか知らないのではどうしようもありません。C言語以 前の話で、コンピュータ処理する場合の基本的な技法をどのくらい知っている かは重要です。「永久入門プログラマ」に甘んじるのでなければ、アルゴリズ ム関係の書籍には必ず目を通すべきです。非常に時間がかかりますが、きっと むくわれます。プログラミング全般に関係する基礎アルゴリズムという分野か ら個別分野の特殊技術までありますが、これらは重要です。あるアルゴリズム を知っているだけで、処理速度が 1000倍になることはよくあります。こうい うプログラムを、本章の最後に1例だけ紹介します。

3つ目は、本書で扱う「誤解」に基づいて作られたプログラムです。「バグ」 は誤りというより、誤解という言葉を使った方が実際の状況をよりよく説明し ているでしょう。

誤解にも色々ありますが、作るべき関数の仕様を間違っていて、その誤解の 通りに動作するものを作ることがあります。複数人で開発している時にはよく 起きます。こういう誤解の防止は、プロジェクト管理の重要な部分ですが、こ れも本書では扱いません。

誤解にはもう1つあって、コンピュータへの理解不足があります。どのよう にしてC言語が動いているか全然分かっていない。分かっていないのはまだ良 い方で、勝手な解釈をしていることがあります。C言語は非常に高度な言語で、 C言語でプログラムを作ればどの機種ででも動作するような誤解が多いのは困っ たものです。現実はすごい低級な言語で、せいぜい高級アセンブラとでも言っ た方が適当な、極めてハードウェア依存の言語です。だから、ある程度のハー ドウェアの理解は不可欠です。

C言語は、メモリを理解していないと何も説明できません。メモリに始まり メモリに終わるというくらい、C言語のほとんどはメモリで説明できます。他 のハードウェアについての知識は、あれば損にはならないくらいですが、メモ リは理解していないと絶対にCを使いこなせません。それで、本書ではメモリ を全ての中心に置き、じっくり説明します。


Copyright1996 Hirofumi Fujiwara. No reproduction or republication without written permission
『Cプログラミング専門課程』目次第0章準備