プログラミングセンス

決して自分にプログラミングのセンスがあるとは思わないが、プログラミングとは合理化だと思って久しい。
自分が若いときにやっていた例では、64KBメモリしかないシステムを、拡張しつつ64KBを維持するという仕事があったが、これはすなわち、いかに合理化するかに神経を注ぐだけだ。
自分というのは、こういう条件下で伸ばしていくものだと思う。

DBから、あるテーブルを検索する。特定範囲の日時を条件に、特定のIDを持つレコードを検索する。擬似コードを使って説明する。符号の細かい判断(>か>=かなど)やエラー処理例外処理などは、ここでは気にしない。

“select id from テーブル where day > 開始日 and day < 終了日;”;
for (検索されたレコードがある間) {
  if (id == 特定のID) {
    ”発見”;
    break;
  }
}

このコードを見たときに、この人はシステムのそれぞれに出来ることをちゃんと考えない人(考えられない人、ではない)と思ってしまう。SQLで実現可能なこと、プログラミングで実現可能なことをちゃんと理解しないと、無駄な処理、無駄なコードを埋めまくって、単にパフォーマンスを落とすだけになる。
もちろんDB側で処理させるとパフォーマンスが落ちるからプログラム側でやるのだ、というならわかる。が、例えばPerlやPHPのようなスクリプト系言語で処理させる場合、DB側での処理とスクリプトエンジンを使った処理では、どちらに分があるかは一目瞭然だと思う。データベースシステムは通常C/C++言語で実装され、バイナリで動作している。コンパイルされないスクリプト言語は、せいぜいよくて中間コードだ。

それにしたって、せいぜい、こう書くのが普通だろう。

“select id from テーブル where day > 開始日 and day < 終了日 and id = 特定のID;”;
if (レコード発見) {
  ”発見”;
}

人のコードをコピーペーストしてつぎはぎし、その場をしのぎながら動けばいいというコードを作る人は、たぶん何も考えていないと思う。
単に、確実に動いている部分を持ってきて、貼るのだ。だからインデントもコーディングスタイルも醜悪になり、結果enbugしやすい状況を招き、最終的に自分でdebugできなくなるか無駄な時間を掛けていくという負の循環を引き起こす。

決して、自分がプログラミングセンスを有しているとは思わない。
重要なのは、どう合理化/効率化を考えながらプログラムを書くかだと思う。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください