mai7star’s diary

練習用ブログなんで何でも無節操に書きます。

プログラムを一般の人に説明するには料理に例えるとわかりやすい

プログラム(プログラミング)って何と聞かれたら?

「プログラム(プログラミング)」って何? と聞かれたら何と説明しますか?

私はいつも料理に例えることにしています。

つまり

プログラム → レシピ プログラマ → レシピを書く人 プログラミング → レシピを書くこと プログラミング言語 → レシピの記載方法(言語) コンピュータ → レシピ通りに料理を作ってくれるシェフ

となるわけです。

プログラムを実行するとは?

プログラム(レシピ)をコンピュータ(シェフ)に渡して料理を作ってもらうことです。

ちゃんと正しくプログラムを書けば、コンピュータが美味しい料理を作ってくれます。 材料や分量を間違ったり順番を間違ったりすると、不味かったり、黒焦げになったり、生焼けになったり、そもそも得体のしれない何かになっちゃうわけですね。

また、レシピもシェフが理解できる言葉で書かなければいけません。レシピの書き方を間違うとシェフはこんなレシピはわからない。とさじを投げちゃいます。

プログラミングの難しさ

レシピの書き方自体はパターン化されているのでそう難しいものではありません。 本当の難しさはプログラマ(レシピを書く人)の意図通りを正しくシェフに伝えることにあります。

なにせこのシェフは融通がきかず、レシピの内容を忠実に一切の忖度なしに実行しようとします。 普通のレシピで多用されるような「適宜」とか「お好みで」といった曖昧な指定は一切受け付けてもらえません。

塩なら0.8gとか、胡椒なら1.3gとか、気温が何度だったら0.1g追加するとか、焼き加減についても「様子を見ながら」みたいな指定も受け付けてもらえません。 野菜や肉を「一口大に切る」といった曖昧な表現も駄目です。ちゃんと最大5cmに収まり、重さは25g以上30g以下のような指定をする必要があります。

レシピの書き方を間違うと、シェフは正しく間違ってくれます。全てはレシピを書いたあなたの責任です。 ここがプログラミングの難しさの最大のポイントであり、プログラミングの面白さでもあるのです。

ライブラリはなんとかの素や調理器具である

プログラミングに欠かせないのはライブラリです。

カレーのレシピを書くにしても、カレールー(粉)のレシピを書くのが面倒な場合は、出来合いのカレールー(粉)を使うことがよくあるでしょう。具材だってカレー用野菜セットを使うことも多いはずです。 野菜の皮を剥くのにピーラーを使ったり、煮るためには鍋が必要でしょう。

こういった、なんとかの素や調理器具はライブラリと呼ばれます。

プログラムはライブラリの塊でできている

プログラミングは普通の料理以上に、誰かが作ってくれたライブラリの塊でできています。 画面に点1つを表示するのにだって、ディスクから1バイトのデータを読み込むのだって、ネットに1バイトのデータを送信するのだって、キーボードから1文字の入力を受け付けるのだって膨大なライブラリが必要なのです。

プログラミングの7割は適切なライブラリを探すこと、そのライブラリを正しく利用することです。 1から全てを作ろうとしたら10年たってもレシピは完成できません。使えるライブラリは最大限利用する必要があります。

プログラミングの勉強の難しさとは

ライブラリの知識が不足していると、いくらプログラミング言語を勉強しても、実際の業務になると全く歯が立ちません。プログラマを目指す人の多くはここで躓くのです。

しかもライブラリは一度覚えればそれでOKということはありません。ライブラリには流行り廃りがあるからです。 特にJavaScriptはその勢いが激しく、つい最近までVueが全盛だったと思ったら、今はReactに置き換えられていこうとしています。そのReactも数年後には新しいライブラリに置き換わっていくと思います。