[良いプログラムとは] (5/18)
「良いプログラム」とはどんな物をいうのでしょうか?
「無駄の無い高速に動作するプログラム」
「品質の良い(不良の少ない)プログラム」
「他人に理解しやすいプログラム」
「生産効率の良い(短期間で作った)プログラム」
「プログラムサイズの小さなプログラム」
など、あげようと思えばまだまだ沢山の要因が考えられます。このように列挙されると「なるほど、どれも一理ある」と思われるかもしれません。しかし、これは非常に難しい矛盾があるのです。
例えば「無駄の無い高速に動作するプログラム」と「他人に理解しやすいプログラム」は相反する場合があります。無駄の無いプログラムを作るにはプログラムを簡略する手法が考えられますが、簡略するという中には「コンピュータにとって簡単なプログラムにする」とかいう作業があります。
コンピュータにとって簡単なプログラムは時に人間にとって分かりづらい物であったりします。
他にも難しい問題をあげると、
ホビーでプログラムを行っている方にありがちなのですが、プログラムに詳しくなってくると高速にする為に高度でジャンキー(”マニアック”とか”個性が強い”とも言うが・・・)なプログラムを作りがちになります。
個人で作っている製品である場合には「無駄の無い高速に動作するプログラム」という点で優れています。しかし、プロの世界では多人数で一つの製品を手がける(または将来のバージョンアップを他人がやる事にもなる場合がよくある)場合がほとんどなので、プログラムした人間でしか理解の出来ない高度でジャンキーなプログラムは「最悪なプログラム」となり、多少速度を犠牲にしても「他人に理解しやすいプログラム」を優先するという判断を下している現場はよく見られる光景です。
というわけで、何がもっとも良いプログラムかは、作る製品の性質で変わってくるのです。