最も単純なプログラム(スイッチ)
仮にもSEなので、プログラムの話でもしようかと。
プログラムの基本 蛍光灯のON/OFF
プログラムといえばアプリやゲームを思い浮かべると思う。
しかし、最も単純なプログラムはスイッチ/ボタンのON/OFF。
家の蛍光灯を思い浮かべてほしい。
OFFだと消える
ONにすると光る
これが最も単純なプログラム。
0と1の世界みたいな話も、結局は0をOFF、1をONにしましょうの決め事。
複雑なプログラム 蛍光灯の明かりレベル
これを複雑化したものが、「紐をひっぱると明るさが変わる」。
OFFだと消える(変更なし)
ONだとレベルによって明るさが変わる
①最初は消える
②一度引っ張ると2つの蛍光灯が光る
③もう一度引っ張ると1つの蛍光灯が光る
④さらにもう一度引っ張ると豆電球が光る
プログラムによっては、③の時には別の回答がある
③’もう一度引っ張ると、1つの蛍光灯が消える
「人によってプログラムのつくり方は変わる」というのはこの部分。
そして、「お客さんが何言ってるかわからない・・・」もこの部分。
明かりレベルも0と1
プログラムで表現するとき、それぞれの状態を数値で表現する場合は以下。
0:消灯
1:点灯 蛍光灯1、蛍光灯2
2:点灯 蛍光灯1
3:点灯 豆電球
0と1じゃないじゃん・・・・!!でもプログラムの中では0と1。
内部的には2進数で管理されている。
00:消灯
01:点灯 蛍光灯1、蛍光灯2
10:点灯 蛍光灯1
11:点灯 豆電球
詳しく知りたいなら基本情報処理技術者試験でも受けて下さい。
数値で管理なんてしねーよ!という人はその通りなのでお帰りください。
わかりやすいように数値にしてるだけで、結局内部的には数値でしょ。
[tips]曖昧な表現が生むプログラムのバグ
電気のON/OFFや、ONの時の紐を引っ張った回数で光ることがわかったら、
じゃあなぜ、こんな単純なことでバグが起こるんだ?と考えてみる。
明かりレベルの①~④は、実は曖昧な表現である。
蛍光灯のことを知らない人は、以下のような勘違いをするかもしれない。
① 蛍光灯は消えている
② 蛍光灯が2つ光る
③ 蛍光灯が3つ光る
④ 蛍光灯が3つ、豆電球が1つ光る
X もう一度引っ張ったらどうなるんだ・・??
蛍光灯のことを知っている人は、
消えている⇒2つ光る⇒1つだけ光る⇒豆電球だけ光る⇒消える
というのが分かるが、知らない人にはわからない。
もしかしたら、「うちの蛍光灯は8段階明るさを変えられるんだけど!!」とか言いかねない。
開発者の中でも言うやつはいる。お客さんの言うことを優先しろバカが。
まとめ
最も単純なプログラムはON/OFFであること。
状態も0、1の組み合わせでしかないこと。
おまけとして、バグが発生する要因の一つ「曖昧な表現」。
僕は常々、プログラムなんてIF文と処理だけで十分作れると思っている。
最終的には0と1なんだから、当然よな。(暴論)