累乗
2009年01月31日
アルゴリズムへの感動
久しぶりにプログラミングのことで、反省しなければならないことを読んだ。確かに反省しなければならないけれど、まずは感動した。
単純な繰り返しのループなんて、for(i=0; i<n; i++){ ... } 以外で書こうなんて考える気すらなかった。いや、確かに、まだCPUが1MHzとか(MSX時代)、10MHz(PC98時代)にBASICでプログラムを書いていた時は、結構どん欲にアルゴリズムを変更していた気がする。
大学で学んでいたころも、テスト対策とはいえ、計算量のオーダーについて、ちゃんと考えていたし、こういったアルゴリズムがあることは勉強した(させられた?)。
でも、最近は、こんなことを考えていない。
確かにプログラムが直観的ではなくなって、見づらくなる弊害も大きい。そんな言い訳もしたい。
昔に比べて、自分で全部書かなければならないプログラムというのは、あまりなく、DBに放り込んで、SQLでサクッとデータを検索して持ってくる、とか、PerlやPHPなどから実装されてきたハッシュ変数(連想配列)という概念やら、正規表現という文字比較方法がプログラミング言語そのものに用意されたので、ループを多段で回したり、switch caseの嵐みたいなことは、かなり減った。
だからといって、Javascriptで、そしてIEでこんなに差が出るなんて、しかも、こんな単純な操作で。といった、ものすごい感動と、急激な焦り。これまで作ったプログラムを見直したくなってしまう。
今年のプログラミングのこだわりの一つに、計算量オーダーを小さくする、といったテーマを意識的に加えようと思います。
単純な繰り返しのループなんて、for(i=0; i<n; i++){ ... } 以外で書こうなんて考える気すらなかった。いや、確かに、まだCPUが1MHzとか(MSX時代)、10MHz(PC98時代)にBASICでプログラムを書いていた時は、結構どん欲にアルゴリズムを変更していた気がする。
大学で学んでいたころも、テスト対策とはいえ、計算量のオーダーについて、ちゃんと考えていたし、こういったアルゴリズムがあることは勉強した(させられた?)。
でも、最近は、こんなことを考えていない。
確かにプログラムが直観的ではなくなって、見づらくなる弊害も大きい。そんな言い訳もしたい。
昔に比べて、自分で全部書かなければならないプログラムというのは、あまりなく、DBに放り込んで、SQLでサクッとデータを検索して持ってくる、とか、PerlやPHPなどから実装されてきたハッシュ変数(連想配列)という概念やら、正規表現という文字比較方法がプログラミング言語そのものに用意されたので、ループを多段で回したり、switch caseの嵐みたいなことは、かなり減った。
だからといって、Javascriptで、そしてIEでこんなに差が出るなんて、しかも、こんな単純な操作で。といった、ものすごい感動と、急激な焦り。これまで作ったプログラムを見直したくなってしまう。
今年のプログラミングのこだわりの一つに、計算量オーダーを小さくする、といったテーマを意識的に加えようと思います。