プログラマーから見たあやふやな世界
コラム
プログラマーの夫とその妻という設定でこんなジョークがあります。
A wife asks her husband, a programmer, “Could you please go shopping for me and buy one carton of milk, and if they have eggs, get6?”
A short time later the husband comes back with 6cartons of milk and his wife asks “Why did you buy 6 cartons of milk?”
He replies “They had eggs.”
英語原文
妻がプログラマーの夫におつかいを頼んだ。
「牛乳買ってきてくれない?あともし卵があったら6個。よろしくねー。」しばらくして夫が買い物から帰ってきた。
牛乳を6つも抱えて。妻は聞いた。
「なんで牛乳を6つも買ってきちゃったの!?」夫「だって、卵があったから。」
意訳
もしかするとプログラミングを経験した事が無い人はこの話のミソが分からないかもしれませんね。
普通であれば「牛乳を1つと、卵があれば”卵を”6つ」買ってくるのが自然な行動と言えます。
実にたわいもないありふれた日常会話です。
ではなぜプログラム経験者であればクスっときてしまうのか。
プログラミングには
if 〜〜 else 〜〜 という書き方があります。
日本語でも全く同じで「もしであれば〜〜もしそうでなければ〜〜」です。
このジョークをプログラム風に書いてみると。。。
初期値↓;
牛乳の数 = 1;
卵の数 = 0;もし(店に置いている卵の数が(1以上だったら)) {
牛乳の数 = 6;
卵の数 = 0;
} その他にもし(店に置いている卵の数が 0だったら ) {
牛乳の数 = 1
卵の数 = 0;
}買い物をする((牛乳の数)と(卵の数)だけ);
と、こんな感じになるでしょうか。
店に卵が1個でもあったから牛乳を6つ買ってきた!
プログラムとしては非常に素直かつ当然の挙動です。
プログラムは行間が読めません。
所謂KYですが、書いてある事が全てなのです。
ちなみにこの書き方だと卵の数は変動しませんので、
夫はいずれにしても卵を買う事はなかったのでしょうね。
株式会社Knocknote代表取締役。大学卒業後不動産営業に従事した後、ITの重要性を強く感じエンジニアへ転職。ソーシャルゲーム開発、スマホアプリやPepperアプリの企画及び開発、高校でのプログラミング講師などの業務に携わる。2017年1月に創業。現在はプログラミング教育事業、システム開発事業を展開。今後は海外向けの教育事業をさらに拡大させていく事が目標。著書:『作って学べるUnity超入門』(技術評論者)