📜 プログラムとは何か
🎯 プログラムが満たすべき3条件(順序・明確さ・有限)を理解し、曖昧な指示との違いを説明できる
友達に「カレー作っといて」と頼めば、たぶんカレーが出てきます。玉ねぎの切り方も火加減も、相手が経験で補ってくれるからです。ところが同じ言葉をロボットに言うと、何も起きないか、とんでもないものが出てきます。補ってくれる人がいないからです。
プログラムとは、この「補ってくれない相手」に向けて書く手順書のことです。人間向けの手順書とは、要求される厳しさが違います。良い手順書には3つの条件があります。
3つ目は見落とされがちですが、実は事故が多い条件です。「お湯が沸くまで待つ」は、火をつけ忘れれば永遠に終わりません。コンピュータの場合、終わらない手順を渡すと本当に終わりません。画面が固まったまま反応しなくなる現象の正体は、たいていこれです(無限ループといいます)。終わる条件を書いたかは、手順書を書いたら必ず確認する点です。
順番が意味を持つ
「鍋に水を入れる」「火にかける」——この2つは入れ替えると空焚きになります。手順書では、並びそのものが意味を持ちます。プログラムもまったく同じで、上の行から順に実行されます。行を1つ入れ替えただけで結果が変わる、というのはCでも日常茶飯事です。
曖昧さを消す練習
試しに「じゃんけんの勝敗を判定する手順」を書いてみましょう。
面倒に感じますか。その面倒くささこそがプログラミングの本体です。人間なら「グーはチョキに勝つ」と一言で済むところを、機械には組み合わせごとに教える必要があります。人間が普段いかに大量の判断を無意識に済ませているかが分かります。書き出していないことは、実行されません。
この手順の中身、つまり「どういう段取りで問題を解くか」という考え方の部分をアルゴリズムと呼びます。アルゴリズムは次のトラックでじっくり扱います。ここでは「プログラム=機械のための、抜けのない手順書」という一点だけ持ち帰ってください。
ちなみに、この感覚はAIへの指示にもそのまま効きます。「なんかいい感じの文章書いて」より「読者は初心者、400字、です・ます調」のほうが良い結果が返るのは、曖昧さを減らしているからです。相手が機械でもAIでも人でも、指示を具体化する力は同じ筋肉を使います。プログラミングを学ぶと日常の段取りが上手くなる、と言われるのはこのためです。手順書を書く訓練は、コンピュータのためだけのものではありません。
コンピュータに実行させたい処理の手順を、決まった書き方で並べたもの。料理でいうレシピに近く、上から順に指示を実行させる設計図のような存在。プログラムを書く行為はこの手順書を設計する作業そのものと言える。
問題を解くための手順を、誰が読んでも同じ結果になるように整理したもの。料理のレシピのように、順序立った具体的な手続きのことを指す。同じ問題でも、良いアルゴリズムを選ぶことで処理速度が大きく変わることがある。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。