3.プログラムとは




「2.コンピュータの動作」で例に挙げた「足し算の結果を画面に表示する」という一連の処理について、流れを追って説明しましたが、この処理(手順)の流れを記述した手順書の事をプログラムといい、同手順書を記述する作業をプログラミングといいます。
ちなみにプログラムはROM/RAMに記憶されており、CPUは一つの手順を行なう度に次の手順をROM/RAMから参照しています。

CPUが参照するプログラム(WINDOWSでは*.exeや*.dllファイルをさします)は、CPUが処理しやすいような言語(数字の羅列)で書かれており、人間が理解するのは容易な事では有りません。そこで、人間に理解しやすい言語(単語の組合わせ)で一旦書いたプログラムをCPUが参照できるプログラムに変換(翻訳)するという手法を使います。BASICやC言語、LGPはこの翻訳をする製品であり、コンパイラと呼びます。(翻訳する事をコンパイルと呼びます)

これだけを聞くと、なんか「プログラムって難しそう」と感じるかもしれません。それは半分正しいですが半分は誤解です。誤解というのはプログラムをするのに覚えなければならない事は少ないと言う点です。ちょっとは安心しました?
では逆に正しい(難しい)というのはどういう事かといえば、前述の「覚えなければならない事は少ない」に関係します。つまり、高度なプログラムを作るにも、少ない(簡単、基本的という意味)機能を沢山組み合わせて作らなければならないと言う所です。
でも、これも心配しないでください。この組合わせ(アルゴリズムと言います)というのは、どんなに優秀な人でも経験で積み重ねて行った、たまものですのですから、時間が解決してくれます。
それに、本当によく使う機能は部品(これもプログラムです)として、OSの開発元やコンパイラの開発元が提供してくれますから、それらを使えば良いでしょう。

あと、難しい点として、プログラムの誤りを探す事もあげる事が出来ます。プログラムを作れば必ずプログラムに誤り(”バグ”とか”不良”とかと呼ぶ)を作り込んでしまいます。
その為、文章を書いた後に文章の推考を行うように、プログラムを作ったらプログラムの不良を摘出する作業が必要になってきます。ところが、人間というものはアホな生き物で、自分で作ったものを見直すのが苦手であったりします。(完璧だと思ったら、人に簡単に指摘される事ってありますよね。)

私の会社の品質管理部門(最終的な製品のテストをする、開発部門の天敵です)で統計をとったところ、「1個不良が見つかれば、10個は不良が隠れている」らしいです。まるでゴキブリですね。

テストの方法には色々なものがあり、それだけで一冊の厚い書籍が何十冊も出来てしまう程のものですし、このテストの方法は各社で考えられた一つの重要なノウハウであるため、ここで全容を明かす事はむりです。が、しいて言えば、あらゆるパターンのテストを行う事が基本でしょう。「なんだ、当然じゃん」と思われるかもしれませんが結構大変な作業です。
例えば「1〜100範囲の整数をユーザの打ち込ませる」場合なら、

テスト内容 テスト結果 理由
−1を打ち込んだ場合 エラー処理 マイナスの処理チェック
0を打ち込んだ場合 エラー処理 1の判定範囲チェック
1を打ち込んだ場合 成功 1の前後処理
2を打ち込んだ場合 成功 1の前後処理
50を打ち込んだ場合 成功 中間の数字チェック
99を打ち込んだ場合 成功 100の判定範囲チェック
100を打ち込んだ場合 成功 100の判定範囲チェック
101を打ち込んだ場合 エラー処理 100の判定範囲チェック
めちゃくちゃ大きい数字打ち込んだ場合 エラー処理 プログラムの許容範囲
文字を含む数字を打ち込んだ場合 エラー処理 文字をエラーとするか?

などと、たった一個の入力処理でも、これだけのパターンが容易に思い付きます。これだけテストをしても不良を摘出しきれないのですから大変です。
ちなみに、これだけのテストをしても、まだ十分ではないのですが分かりますか?
答えは「小数点を含む数字を打ち込まれた場合のエラーチェック」や「なにも打ち込まれなっかた場合のエラーチェック」等です。他にも「”0000100”等の数字の前のゼロはどうするのか」という事も考慮しなければならないですね。