現役エンジニアが教える「プログラムって結局なに?」〜魔法ではなく、ただの「おつかいメモ」です〜
こんにちは!オンライン家庭教師のこばやしです。 普段はフリーランスのITエンジニアとしてシステム開発などをしながら、中高生に「情報I」や「理系数学」を教えています。
さて、高校の「情報I」の授業の中で、教科書の最初のほうで必ず出てくるのがこの言葉です。
「プログラムとは、コンピュータに対する命令の集まりである」
…どうでしょうか? 正しい説明ではあるのですが、なんだかピンとこないですよね。この「ピンとこない」状態のまま用語の暗記に走ってしまうと、情報Iはたちまち「つまらない暗記科目」になってしまいます。
今日は、毎日現場でプログラムを書いている現役エンジニアの視点から、「プログラムって結局のところ何なの?」という疑問に、日本一わかりやすくお答えします!
■ コンピュータは「空気の読めない、超優秀な助手」
エンジニア界隈で有名な、こんなアメリカンジョークがあります。
妻がプログラマーの夫に、買い物のおつかいを頼みました。 「牛乳を1つ買ってきて。あ、もし卵があったら、6つお願いね」
しばらくして、夫は牛乳を6つ買って帰ってきました。 妻「なんで牛乳を6つも買ってきたの!?」 夫「だって、卵があったから……」
笑い話ですが、実はこれが「コンピュータの思考回路(プログラム)」の本質を完璧に表しています。
私たち人間は、「卵があったら(卵を)6つ買ってきて」と文脈を読んで補完します。しかし、コンピュータは「空気を読む」ことが一切できません。言われた言葉をそのまま、文字通りにしか受け取らないのです。
つまり、プログラムとは魔法の呪文ではなく、「超高速で動くけれど、空気は全く読めない助手へ渡す、絶対に見誤らないための『おつかいメモ』」なのです。
■ 「おつかい」をバグらせないための3つの武器
では、この空気が読めない助手に、正しくおつかいをしてもらうにはどうメモを書けば良いでしょうか? ここで登場するのが、情報Iの教科書に載っている「順次」「分岐」「反復」という3つの論理構造です。
曖昧な言葉を捨てて、以下のように順序立てて指示を出します。
スーパーに行く (順次:上から順番に実行)
牛乳を1つカゴに入れる (順次)
【もし】 卵が売っている【ならば】(分岐:条件によって行動を変える)
卵を1パック(6個入り)カゴに入れる
レジでお金を払う
いかがでしょうか? これなら、絶対に「牛乳を6つ買ってくる」というエラー(バグ)は起きませんよね。
エンジニアというのは、特殊な魔法を使っているわけではありません。複雑な課題を、「空気が読めないコンピュータでも絶対に間違えないレベルまで、論理的に細かく分解して説明する」ことのプロフェッショナルなのです。
■ 共通テスト「情報I」が求めている力とは?
共通テストのプログラミング問題では、PythonやJavaScriptといった特定の言語ではなく、「DNCL」という日本語ベースの共通言語(擬似言語)が出題されます。
なぜでしょうか? それは、大学側が「特定のプログラミング言語の英単語や文法を暗記しているか」をテストしたいわけではないからです。
本当にテストしたいのは、「曖昧な人間の言葉や課題を、論理的な手順(アルゴリズム)に分解して組み立てる力があるか?」という部分です。
私の「情報I」の授業では、教科書の丸暗記はさせません。 現役エンジニアの実務経験を活かし、「なぜこのアルゴリズムになるのか」「どこでバグが起きやすいのか」を、まるでパズルを解くように論理的に解説していきます。
「学校の情報の授業がよくわからない」
「共通テストのプログラミング問題に苦手意識がある」
そんな方は、ぜひ一度体験授業にいらしてください。 暗記に逃げない、本質的な「論理の面白さ」をお伝えします!
【プロフィール】
北海道大卒。現役のITエンジニアとして活動しながら、オンライン家庭教師として中高生に「情報I」「数学」「英語」を指導中。企業の新人ITエンジニア研修のメイン講師も務めるプロが、「仕組みから理解する」論理的な指導を行います。
▼ 開講中のコースはこちら
【現役エンジニア】暗記不要。「論理」で攻める共通テスト情報I
【旧帝大卒】暗記に逃げない。「論理」で完全攻略する理系数学
【旧帝大卒】感覚に頼らない。「論理」で読み解く中学英語
(他、中学数学など)