プログラムとは、エンジニアからコンピュータに対する指示だと書きましたが、プログラムを作る上で基本になる考え方について書きます。
普通の勉強(数学とかをイメージしてください)では、答えを求めるために色々と計算をしたりするわけですが、プログラムは答えを考えるものではないと思います。
イメージ的に近いのは数学の「証明」でしょうか。
結果から過程を考える作業ですね。
(三平方の定理の証明とか)
ほとんどのプログラムは結果が分かっています。
また、結果をイメージして作ります。
(イメージするというニュアンスよりちょっと具体的でないと作れませんが・・・)
例えば、学生20人のクラスがあり、国語のテスト(0〜100点)のクラス平均を求めるプログラムを書きたい。
はっきり言って、20人分の平均であれば、電卓でも手計算でも出来ると思いますが、プログラムで結果を求めたいとします。
やりたいことは、20人分のデータを入力して、平均を求めるだけですので、結果は計算できます。(1万人分とかだと死にそうですが・・・)
では、そのプログラムを組む時に何を考えれば良いのでしょうか?
・20人分のデータを入力するにはどんな方法を使えばいいのか?
・平均を求めるには、合計値とデータ件数が必要だが、どうやって計算させればいいのか?
(あくまでも人間は指示を出す側ですから計算はコンピュータにやらせます)
・平均は小数点以下何桁まで必要なのか?(整数なのか、少数なのか)
・間違って100点より大きい点数を入れた場合どうするのか?
等々、色々なことを考えます。
ここが重要なのですが、プログラマが考えるのは「どう指示すればコンピュータが期待通りの結果をだすのか」という「指示の手順」を考えるということです。
コンピュータに仕事をさせるには、どんな情報が必要で、どんな手順で処理をさせれば良いのかということを前もって考えなければいけません。
コンピュータは日本語を理解できません(英語もですが)。
皆さんが唯一コンピュータに指示できるのがプログラム言語なのです。
言語ですから、文法もあります。
人間の言語であれば、ニュアンスで伝わることもあるでしょうが、コンピュータにニュアンスは伝わりません。
間違ったプログラムを書けば、間違った動作をするのです。
プログラムを組むという作業は、言われたことはしっかりやるが、まったく融通が利かない部下に指示を出すようなものです。
しっかりした指示を出せば期待通りの結果が得られますが、指示を間違えるととんでもない結果が返ってきます。
唯一救い?なのが、正しかろうが間違っていようが処理は早いという点でしょうか・・・
なんにせよ、コンピュータが賢いのではなく、指示を正確に出す人間が賢いのです。
コンピュータは指示通りにしか動きません。
ブラウザの戻るボタンで戻ってください。