福盛さんのところより

http://fukumori.org/diary/20051113.html#p01

データ構造はもはやプログラミングにおいては主要なトピックでない、という言い方でよいと思います。例えばコレクションオブジェクトがあるとして、それに要素を置き換えたり追加したりしようというときに、実際問題としてどのくらいそのオブジェクトが内部的に使っているデータ構造を知ることに意味があるのか、と言えば、答えはほとんど「重要ではない」といえると思います。ハッシュテーブルと数字でインデックスする配列も、数字インデックスは特殊例だと思えば結局似たようなものですし。非オブジェクト指向的にPerlプログラミングしているときなど、世の中の人がいったいどれだけデータ構造のことを意識しているのかな?

データ構造は性能を考えるときには重要ですが、Donald Knuthが"Premature optimization is the root of all evil (or at least most of it) in programming"と言ったことを思うと、最適化を最初から考えなくてはいけないようなことを暗示する「アルゴリズム+データ構造=プログラム」という考え方は、コンピュータが遅くて、オブジェクト指向的な考え方もなかったころはともかく、今ではかなり論点を逃していると思われます。インターフェイスを足して3本足にすることもない。(というか、多分違う切り口がより適当。)

実は某Alan Kayさんは、80年代半ばに、「Software Engineeringと言う言葉は自己矛盾」というテーマでソフトウェア工学の会議でキーノートスピーチをして、そこで「アルゴリズム+データ構造=プログラム」という考え方は時代遅れだ、とぶったところ、そのカンファレンスチェアーだった...さん(忘れた)が「... + ... = ...」の強い信奉者だったため徹底的に怒らせてしまうこととなり、なんとなく出入り禁止っぽい雰囲気になったとかなんとか言っていました。