プログラミングを修得する過程で身についた能力について
この前後輩に、プログラミングをやって論理的思考力はつきましたか、あるいは、日常の何気ないものから何か今までと違う意味を見出せるようになりましたか?ということを聞かれたので、その答えをメモがてら書き残しておこうと思います。特に、ものごとの仕組みの部分は自分も理解が甘いので、その点、ご容赦ください。
Q. プログラミングをやって論理的思考力がついたり、日常のなにげなく見ていたものに何かを見いだせたりなるようになりましたか?
A. 短期記憶能力と緻密な思考力・表現力はついた気がする。
短期記憶の話
要は、一度にどれくらいの情報を頭の中に保持して考えられるか。
普通、一つのことしか、しかも、情報量的には小さいサイズのことしか考えられないんだけど、プログラミングやってると、次から次へとわからないことがでてくるから、わからないことを調べるために新しいタブを開いて、その説明もわからないから新しく調べるのね。
で、最終的に色々わかった後に、もう一度最初の地点に戻らなければいけない。その調べたことが一体何に紐付いているのか、そして、自分はなぜそれを調べていたのか。
この思考の上下運動とその過程の、複雑な情報を一度に保持して処理する能力はプログラミングというより、それを身につける中で修得したスキルだと思う。
これが短期記憶能力の話。
思考力と表現力の話
次、緻密な思考力・表現力の話。
コンピューターは柔軟じゃないから一意に定まる指示を出さないと動かない。そして、自分が指示を出してないことはしない。
人間なら池袋東口集合といえば、なんとなく東口に集まるけど、コンピューターは「東口の階段の上ですか、下ですか。2つ目の柱から緯度・経度それぞれいくつずつ進んだところですか?」となる。
曖昧さは排除しなければいけない。
そして、人間ならそこで、東口についた後、LINEで「ついたけど、どこにいけばいい?」って(指示されてないことでも、自分で考えて)できる。
これがコンピューターだと、指示が抜け落ちてるため、エラーを吐く。
12/8 12:00 に池袋東口(緯度:x, 経度y)に東を向いて直立して10分滞在していてください。10分滞在していて、何も起こらなければ○○に電話をかけてください。
ここまで言わないといけない。
でも、ここまで自分の頭の中で噛み砕いて考えられるようになると、どんな問題でもある程度は自分で解決出来るようになる。自分でやってもいいし、遠隔の誰かに指示出してもいい。パソコンですらできるんだから人間、バイトでもなんとかなる。
何気ない日常から見える非日常
で、こうすると原理的に考えるのが楽しくなってくる。原理がわかれば、原理を応用していじればいいから、新しい何かが生み出せる。
例えば、自動改札機を見てもその仕組みが気になる。実はあれは Suica の中に IC チップがあって、その周りに銅線が走り、自動改札機にかざす毎に電流が流れ、ローレンツ力で磁力が発生し、IC チップ内の情報が書き換えられる。
じゃあ、別に自動改札機いらないじゃん。要は、磁力があればいいんだよね。それで情報をいじればああいうシステムが作れるようになるわけだ。という思考回路になって、これが最初の質問の答えになる。
>日常のなにげなく見ていたものに何かを見いだせたりなるようになりましたか?
最後に、
普段ぼんやり考えていたことを聞かれたから答えたのだけど、なんとなく言語化できた気がするので、メモしておきました。
ではでは。