プログラミングをする人が考えていること
nikkeibp に「プログラミングをしない人が考えていること」という記事があった。
自分のこれまでの経験から非常に納得のいく内容で、逆に言うと見えていた事だったので物足りなかったかもしれん。
今30代でプログラミングを「しない」人でも「昔はパソコンを買ってBASICで組んだこともあるんだけれどもね、それ止まりさ」と返す場合が結構ある。
BASIC でいくらかプログラムを組むことができたんならそれで十分だよ、Perl でプログラムを組むのも大して変わらないよ、ほらほら。とか思ってしまうのがプログラミング「できる」人の思考だったりする。
しかし、BASIC と Perl は全く違う物なので「勉強し直さないとならない」と思ってしまうのが一般的なようで、そこに違いを感じる事が多い。
世の中ほとんどの物がそうなのだが、物を創るための手順ひとつひとつはとても単純で他愛のない物だ。プログラム言語の命令一つ一つもそう。極端な話をするとアセンブラなんて数種類の命令形態しかなく、あとはそのバリエーションでしかない。
そのエレメントひとつひとつは簡単過ぎるぐらいなんだけれども、簡単で数が少ない故に「それがどう積み重なると完成形になるのか想像できない」のである。
これは、絵画も彫刻も音楽も、その他諸々同じだと思っている。
そしてその単純な構成要素を「どう組み上げていったら自分の意図する物になっていくのか」を理解する術が、経験だったり才能だったりする。
経験ならばちびちび積み重ねればモノになるだろうと思いがちだけれども、実はそのあたりそうもいかないところがプログラミングの難しさなのかもしれない。
過去の私でも、ひとつひとつは理解できるんだけれどもそれがどうしてプログラムになるのか分からない事が多々あった。アセンブラなんか、本を見ては離れ、また本を見ては離れで数年経過していたほど。
それがね、ある時何度目かのチャレンジでふと頭の中で繋がっていくのよ。
突然、ぱあぁぁぁっと、今までバラバラの部品でしかなかった知識が面白いように繋がっていって、どう組み上げればプログラムになるのかが見えてくる様になる。
もう、悟りを開いたと言っても過言じゃないね。
でも程度はどうあれそういった場面を何度も繰り返さないとならないという辛さはあるかもしれない。
プログラマーはソフトウェア工学やハードウェアの進歩、そして求められるアプリケーションの急速な肥大化に対応するため、新しい手法や組み立て方を常に取り入れている。その新しい思考は、これまでと全く違っていたり、今までの手法を捨てて異なる手法に鞍替えしなければならない事がある。パラダイムシフトと呼ばれるものである。
プログラマーじゃない一般の人において、考え方や思考手順が成人後劇的に変化することはそうそう無いんじゃないかと思われる。だが、プログラミングを職業にしているとパラダイムシフトを 5年に 1回くらい行わなければならない。やっかいなものである。
プログラマーがプログラミングをしない人に対して妙にシニカルなのはその辺があるんじゃないかしらん。
あとプログラミングとひとまとめにしているけれども、目的があってその目的のためにプログラミングをする工学的な人と、問題解決手法としてのプログラミングに惚れ込みより良い手法を論じ続ける数学的な人がいると思う。
理学と工学は中から見たら結構違うものなのだよ。