2005.11.19
エセ漢文に誰も突っ込んでくれないので大変寂しい白林檎である。おかげで風邪をひいてしまった。もう大分良いが。
漢文といえば中国であるが、今、かの国では、大学生の自殺が社会問題になっているそうだ。一人っ子政策のおかげで過保護な上にも過保護に育てられ、了見の狭いまま突然激しい競争にさらされるおかげで、自己崩壊するケースがほとんどだという。他国の話とはいえ、嘆かわしいことである。
ところで、ほとんどのプログラミング言語では、ifという予約語が用意されている。これは条件分岐に使用するもので、平たく言えば「もしこういう操作がされたら、こう対応する」というプログラムを組みたいときに使うものである。多くの場合elseという語と対で用意されていて、「もし○○なら△△して、そうでなければ□□する」という動作をさせることが出来るようになっている。白林檎が愛用するPerlではelsifというのも用意されているが、
スペルが非常にビミョーという点も含め、機能やら何やらを調べてみるのもご一興だろう。
条件分岐はプログラミングに於いて最も基礎的な要素のひとつである。まあ、当然といえば当然だ。例えば自動販売機はコンピュータで制御されているが、そのコンピュータはプログラムによって動作している。100円を入れても500円を入れても同じ動作だったり、どのボタンを押しても同じ商品しか出てこないようでは、何の役にもたたない。役立たずどころか至極迷惑な存在になる。
そんなわけで、条件分岐はプログラミングの基礎的な要素である。と同時に分岐条件の設定、つまり「プログラムが動作するシチュエーション」を想定する能力は、プログラマの基本スキルのひとつと言って良い。大袈裟な言い方をすると、未来を見通す能力が、プログラマには求められる。過去の事例を参考にしたり既存の資産を活用することはもちろんあるけれど、プログラミングという作業に於いて、時間は常に「現在」よりも少し先を走っている。
どんな優秀なプログラマでも、予測を誤ったり、予想を遥かに超える状況に自分のプログラムがさらされることは必ずある。いわんや一般プログラマにおいてをや。一般プログラマレベルにすら達していない白林檎に至っては、自慢ではないが、作ったものが正しい(つまり白林檎の予測した)操作を一度もされずに終わることなどざらにある。
こういうとき、プログラムは──というより、それが動作しているコンピュータはエラーを出す。エラーが出るのは腹立たしいものだが、考えようによっては安全機構とも言える。思いもよらぬ使い方をされ、データが思いもよらぬ状態になったまま操作が継続されて、思いもよらぬ散々な事態になるよりは、「こんな状況知りません」といって中断した方が、結果として安泰な場合が多いからだ。
問題はエラーが発生したときの処理方法で、強制終了という最悪の事態を引き起こさずにいかにプログラムの進行を継続させるかが求められる。この辺もプログラマの腕次第ということになる。
少し余談になるが、
想定の範囲外という意味で、プログラムエラーのことを日本語では「例外」という。エラーが発生したときの処理は「例外処理」といって、プログラミングの教本などを見るとひとつの章を設けられていることが多い。
さて、ここまで書いたことは、何もコンピュータプログラミングに限った話ではない。製造業や建設業はもちろん、すべての業種にも当てはまる話であるし、それどころか個人々々にとっても身近な話だ。週末に旅行をしようと計画をたてたり、翌日の予定を確認して空き時間の詳細を詰めてみたりというのは、誰しも経験のあるところだろう。
中学校で素晴らしい成績を収めて○△高校へ進学し、現役で東大に入って首席で卒業した後、将来のことを考えてワカメを食べながら財務省官僚として働き、ゆくゆくは大臣になって故郷に新幹線を作るのだと野望を抱くのだって、いわば人生をプログラミングしているのである。
現代社会において、人生に線路を敷くのは親の役割であることが多い。いわば子供プログラマである。世の中から大人がいなくならないところを見ると、ほとんどの親が何らかの結果を導くことに成功しているということになる──最初に予定していた結果と異なっていたとしても、だ。
予定と異なる結果になるのは、子供の成長過程で、予想していなかった事がしばしば起きるからだ。だからといって、まさか成長をシャットダウンするわけにもいかない。そこで、方針を変更する。方針を変更すれば、それは結果だって変わるだろう。
こういうことはしばしばある。むしろ一度も変更されない方が稀であろうし、変更すなわち親の例外対応を経験していない子供は不幸ですらある。何か障害に突き当たったときに「一度立ち止まって、進路修正を行う」という処理が許されることを、親から吸収出来ないからだ。
正しい、あるいは比較的正しい例外処理を知らない人間は、例外にぶつかると、強制終了せざるを得なくなる。言い換えれば、自ら命を断つことを選択するケースが非常に多い。エリートとすることを期して英才教育を子供に施す者は、すべからく例外処理についてもきちんとプログラムしてやるべきである。それがプログラマの義務であるし、親として出来る最大限の教育というものだろう。