gotoとか

C言語には、goto文の構文がある。そして2言目には、これを使ってはいけないと教わる。
しかし実際には、まともなプログラマでgotoを批判する人はいない。今やそれを教えるのは学校の先生だけかもしれない。


http://www.hyuki.com/yukiwiki/wiki.cgi?HowToWriteAnEffectiveDesignDocument をぼんやり眺めていて、
「多くのプログラマが仕事にデザインパターンを持ち込みたがる。」が目に止まった。
デザインパターン」と書かれた本を読んで勉強することは有用なことだと思うけれど、掲載のソースをコピペして
自分の作る実用的なプログラムに組み込むという場面はまずない。それ程即効性のあるパターンは2つ3つという世界だろう。
デザインパターンのように高く抽象化されたアイデアを利用するのは、中大規模ソフトウェアの中枢の設計などに多い。
中大規模ソフトウェアを日に幾つも設計する事など無いし、既存のパターンをそのまま適用することも無いし、
そもそも、何度もコピペを繰り返すという行為が良い設計の方針に反している。


gotoが悪だと言われたのは、かつてgoto病が世界を席巻したからだろう。病気は現在は駆逐されている。
デザインパターンを持ち込みたがる。」呼ばわりされてしまうのは、デザインパターンプログラマに支持されていた事の
裏返しでもある。
流行のさなかにあるアイデアは、その評価が正当でない場合も多い。一つの流行が過ぎ去り、冷静な心でその価値を再検討した時、
そのアイデアに対する一歩進んだ認識が共有される。
しかし流行の力は強く、ひとりの人間が後世もたらされる一歩進んだ認識を時代に先じて主張しても、それが的を射たものであっても、
その当時の時代においては評価されない場合が多い。
(評価は生きる糧に直結するので、切実な問題なのである。他人が遅れているのだと確信していたとしても、それで飯にありつけなければ飢え死にしてしまう)


後の時代に得られた結論が最終的に正しい、という考え方も、そもそも正しくないのかもしれない。
その瞬間の最大多数が、その瞬間における正義だと考えざるを得ない。
しかし時代の先が見えているのに、今に合わせて上手でないやり方をして、やっと時代が追い付いたと気が付いた時には、
何だか悔しいような馬鹿馬鹿しいような、無気力感に捕らわれたりするかもしれない。
自分の手で時代を導ければいいのだが、当然それは簡単なことではないし、そもそも誘導するまでもなく他人に
気付いて欲しい、というところでもある。自然にそうなるべきであって、自分で作り変えるのは少々趣が異なる。


(つづかない?)