プログラミング言語のPythonを、1週間ほど勉強した。Pythonという言語は開発効率の向上や、親しみやすさに配慮されていると感じた(挫折しにくいと思う)。
プログラミング大好きマンたちが汗水たらして、取っ付きにくさを解消してくれているのが非常に頼もしい。一方で、ここは変わらないものなんだな、という点も多くあった。
プログラミングの勉強にいちばんガッツリと取り組んだのは高校生のとき(COBOLという言語を勉強し、プログラマになるのはナシやなと思った)。
その経験も思い出しつつ、ここは変わらない要素だなと思ったものを記録しておく。
プログラミングは役割分担
プログラミングは、魔法ではない。人間が行っている知的作業の一部を、コンピュータが代わりに行ってくれるように組み立てることだ。
ではどうやったら、人間の作業をコンピュータにお願いできるのか。まずは人間の行う作業を分解する。次は、その中からどれを任せられそうかを試していくことになる。
要領は、人間の役割分担と同じだ。現代人には大きく分けて、お金を稼ぐこと、お家をキレイな状態に保つこと、食事を用意すること、という仕事がある。
一昔前の家庭では、お金を稼ぐことは男性が、お家の整頓と食事の用意は女性が担当することが一般的であった。
入力・演算・出力という見方
プログラミング的な観点では、人間の行う知的作業を「入力・演算・出力」に分解したようである。
目や耳や鼻や口や皮膚から情報が入力されて、脳みそで何らかの処理をして、そして何らかの反応を起こす。例えば、朝起きてカーテンを開け、太陽光に思わず目をつむる行為を分解してみる。
まずはカーテンを開けたとき、光という情報が目から入力された。今度は脳みそが「入力量を制限しろ!」と命令を下し(演算)、目をつむるという反応が起こった(出力)。
情報が入力される → 情報の解釈・加工 → 解釈に応じた動きをする
という感じだ。
人間はこの内の、情報の解釈と加工および出力をコンピュータに担ってもらおうと頑張り続けてきた(そして近ごろは入力さえも自動化しようとしている)んだと思う。
もう少し細かくいえば入力・演算・出力を統括する「制御」という行為もあるけど、その点の解説は宿題にさせて下さい。
情報の型:文字・数値・真偽(フラグ)
人間の行為を入力・演算・出力に分けたあとは、情報をいくつかの型に分類して扱うようにしている。
その代表が、文字・数値・真偽(フラグ)だ。
人間は空気感や感情も察知できる機能を持つ。しかしコンピュータには荷が重いため、取り扱う情報を文字・数値・真偽に限定した。
文字は「あ」とか「う」とか「お」とかのテキスト情報。数値は0~9の、10種類の数字のこと。
真偽というのはぼくもちょっと曖昧なんだけど、Yes or No の判断結果の情報と考えるとイメージしやすい。
例えば【今日の天気は雨か?】
Yes → 傘を持つ
No → 何も持たない
という具合に「条件に応じて行動を変化させること」を、再現する狙いがあるんだと思う。
まとめ
あらためて要約すると
・プログラミングは、人間の知的行為の一部を、コンピュータに受け持ってもらうこと。
・大きく分けて、入力・演算・出力(と制御)という分け方をしている
・コンピュータが取り扱う情報を、文字・数値・真偽とした
となる。要は「楽をするためにある」ものなので、怠惰な人間はプログラマに向いているんじゃないか。
出発点は人間なので、もしかしたら脳科学なんかをかじってから始めるとスムーズに勉強できるかもしれない。