不意にプログラム脳論をでっち上げる

プログラムを組みながらふと思った事をメモ。
(事前注釈:ここでいう「プログラマ」は私のことであり、全ての開発職の方の脳内がそうだと決めつけるわけではありません。そんなアホなプログラマーもいるんだね、と見守ってあげて下さい)
 
 
プログラミングの経験が無い、もしくは経験が浅い人にはピンとこないだろうけど、プログラムをしている時の脳内って、誰かと会話している時の状態に近い気がする。無論、PCに向かってブツブツ呟きながら時折ウフフと笑うという危険な意味ではない。
 
なぜそう思うかというと、プログラムを組んでいる時、脳内ではほとんど日本語が使用されないから。勿論日本語でコメント(プログラムの文中に挿入する説明文。プログラム自体ではなく、自分や他のプログラマへのメッセージやメモという役割を持つ)を書いたり、一歩下がって全体を見ながら考える時は日本語が脳内をよぎっているが、完全にコーディングへ集中している時は、脳がプログラム言語に支配されている。
 
プログラムというのは、詳細で膨大な手順書。それを書くプログラミングというのは、機械に対して手取り足取り、あーしてこーして、と全ての行動を事前にまとめる作業だ。
人に何か作業させる為にその手順を説明するのと、概念的には同じ事。相手が人間か機械か、言語が日本語かプログラム言語かの違いしかないように思う。
 
データのバッファ処理を適当に日本語に訳すとこんな感じだ。
「事前に箱を準備する」「ベルトコンベアに部品がやってくるのを待つ」「部品が来たら、それが自分の担当の部品かを確認」「自分の担当だったらそれを拾い上げ、箱に入れる」「箱がいっぱいになったら台車に乗せて最初に戻る」
この説明を日本語で作業員に話すか、プログラム言語でコーディングするか、その違いがあるが、手順を分解して言語で相手に伝えるという意味では、同じ事だろう。
 
無論、プログラムでは人間相手にはない独特な点も多い。上記の例の説明でいうと「箱が無かった時」「ベルトコンベアが止まった時」「部品がいつまでたっても来ない時」「部品を拾い上げそこなった時」「箱より部品の方が大きかった時」「箱を乗せる台車が見あたらないとき」「途中で終業ベルがなった時」等々、あらゆる事態でも破綻しないように手順書を記述・工夫する必要がある。
人間なら「どうすればいいですか?」と都度解決できるが、プログラムは行き詰まった時点で全てを放棄して動かなくなってしまうからだ。
これは、プライベートなプログラムなら微笑ましいレベルだが、業務・商品としてのプログラムなら「欠陥商品」扱いになる重要な点。破綻しない=品質であり、ユーザーから見れば破綻なく動いて当たり前=ミスが全くないという事であり、ミスがない=概念的にも言語的にも隙が無いって事になり、それがプログラマの肉体や精神力(脳力?)を消耗する原因なんだとも思う。
 
こういう、見た目に反して殺伐とした(時に繊細、時に大胆に)作業をこなしているプログラミング中のプログラマの脳内では、ほとんどの思考がプログラム言語になっている。その方が直接的で効率的だし安全だ。イチイチ日本語で処理を考え、それを都度プログラム言語のリファレンスで翻訳して書いていたら日が暮れる。
だから、動きのイメージは直接プログラム言語的な思考で分解され、コード全体はプログラマ各人のルールでイメージ化されて脳内に展開されている。これは文章では伝わらない感覚かもしれないが。
強いて言うなら、
「initializeしてloadしたら変数群をvar」「do loopでbuffasizeを監視」「if 部品=myparts then get(部品)」「if 台車スペース>部品サイズ then 台車set(部品) else send(台車)&new(台車)」
みたいな。かなり適当だが。
こうして脳内で組まれる手順概念が、両手の指を通してキーボードに滴り、画面にプログラムという作品になって現れてくるわけだ。
そういう見方をすれば、プログラマは技術職というより絵や音楽を創造する芸術職的な面もあるかもしれない。奢りかもしれないがw
 
とまあ、プログラムのソースコードなんて、プログラムが読めない人には意味不明な記号の羅列だろうけど、書いた人間にとっては思考の軌跡、つまり作品だ。
日本語の文章と同じように伏線も在るし、人それぞれ方言や言い回しの違いもある。四字熟語で効率的に伝える事もあれば、あえて自分流の説明で語る時もある。倒置法的な記述もあるし、代名詞が多すぎて分かりにくい事もある。○×銀行を○銀と呼ぶような書き方もいっぱいある。そして短縮記述が多すぎて分かりにくくなる事もよくある。登場人物(変数とか)には作った人間のセンスや嗜好がモロに出てしまうので、他人に見せたくなくなる時だってある。
沢山の人に受け入れられて活用されれば嬉しいが、使う人が居なければ(どんな力作・名作でも)作者は見事に凹むしかない。
大規模な修正指示を受け、自分を全否定されたようなショックとストレスを感じる時もある。そうは見えないでしょうけど。
 
 
きっと、プログラムって単なる手順書ではなくて物語なのかも。
プログラマも、サルの如くキーボードを叩き続けるPCジャンキーではなく、孤高のストーリーテラーなんだよ。多分。うわ、俺ってばカッコイイw
 
 
ただ、小説や音楽にもルールがある。最低限の文法や、作品が作品たるべく存在する為のルールや法則や限界がある。それと同じく、プログラムにも限界がある。
プログラマは魔法使いじゃない。ただの言葉使いなんだって事をプログラム非経験者には知って貰いたい。
「困難を解決することはできても、不可能を可能にする事は出来ないんだ!」
無茶な要求をしてくるお客さんの修正項目指示を読むたび、そう叫びたくなる今日この頃です。
 
 
 
 
 
 
 
・・・しかし、一体何が言いたかったんだろう、この日記wwww