墜落日記 - 2008年7月6日の墜落
再教育プログラムの必要性
この土日、共通部品をイージーに直されて腹立った事件から回復できず悶々としていたのだが、今日の夕方に結論を出した。
その共通部品がさる事情で別プロジェクト向けにフォークしていたので、現在進めている案件のついでに統合して運用・メンテナンスを簡素化しようと目論んでいたのだが、共通部品をイージーに弄りくさる事象が現実に発生したので統合を見送らせてもらう旨を提言する。
共通部品をイージーに弄って、弄った本人が全く知らない別システムがすっこけて損失が出るよりはずっとイイが、ハッキリ言って屈辱だ。
こんな些細なことで警戒線を張らなければならないほど、自分のやった共通化は脆弱な物ではなかったはずだ。
さて、経緯は別として、今回のことで色々と思ったことがある。
と言うか、ビジネスで職業的プログラムをしていて常々思っていることを今回の件で認識し直したわけだが、とにかくまともなプログラマは希少であるし、量産されたダメなプログラムは殊の外多いということである。
グローバル変数を多用してドコで何が起こるか分からないプログラムがある。
1メソッドの行数が数千行のプログラムがある。
意味のないコメントや巫山戯たコメント、間違ったコメントが書かれたプログラムがある。
そもそも構造化すら考えられていない、オブジェクト指向ではなくオブジェクト試行ないしオブジェクト嗜好なプログラムがある。
その他色々、小はコードの書き方から、大は実装ポリシーまで、枚挙に暇がない。
驚くなかれ、ビジネスで構築されたプログラムにこそこの手のダメなプログラムは多い。
自分も大した能力を持っているわけではないが、その自分から見てもどう考えても目に余る物が多すぎる。
プログラムは動けばいいのではない。
正常に動き、可読性が高く、仕様変更が容易であって初めて良いプログラムと言える。
かつてスイス連邦工科大の Niklaus Wirth 教授は教育用言語として PASCAL を作った。
ALGOL の流れをくんだこれは、Edsger Wybe Dijkstra によって提唱された構造化プログラミングに取り組んだ言語として、後の言語の元になっている。
しかしココで言う教育用とは、ずぶの弩素人相手の教育用ということではない。
ココで言う教育用とは、COBOL なんかでプログラムを囓った人間相手に正しいプログラミングを教育する為の教育用という意味である。
これと同じ事をやらなければならないのかもしれない。
つまり、唐突に VisalBasic や JAVA なんかでプログラミングの世界に入って、ろくな教育も受けないまま、構造化プログラミングもまともに出来ずに脳味噌が破壊され尽くした2年目、3年目の連中に対して、再教育プログラムを考えないといけないのかもしれないのである。
しかしこれは一大事だ。
脳味噌が破壊され尽くした2年目、3年目に対して、エレガントで普遍的なコーディングを教えるためにはどうしたらよい物か………?
何をやってはいけないかは身の回りにあるプログラムを見渡せば実例に事欠かないが、正しいプログラムの例は驚くほど少ない。
(そもそも“正しい”という考え方自体が宗教論争的で微妙だ)
言語の選定も大変だ。
ガーベージコレクションを前提とした言語や、CPU に対しての高率化を最優先した摩訶不思議な仕様を抱えた言語では普遍性がない。
どうする?
これは本気で取り込むとそれだけで本が書ける内容になるぞ?
取り敢えず読んどけ的な本があればよいのだけど………探してみるか………?
コメントは投稿されていません。