「アルゴリズムを知らない子ども達」の補足(?)

This entry was posted by on Thursday, 13 September, 2007

先日のアレについては予想通りそれなりの注目を集めたみたいなんだけど、思ったよりも波紋が広がったようなので、誤解を避けるためにちょっと解説を試みたい。

まず言っておきたいのだけれど、わたしには「マシン語を知らない子ども達」という文章を書いた shi3z さんを揶揄する気持ちはないのである。個人的には「マシン語」という表現にはひっかかりを感じるのだが、ハードウェアに近い低層の知識は必要でしょ、という指摘についてはうなずくところがある。

これは書いたあとで思ったのだが、「アルゴリズム」というものは広いスペクトラムにまたがっていて、一方の端は数学だが、もう一方の端は機械につながっている。簡単な例としては除算はコストが高いからビットマスクを使うとかそういうアレとか。そんなのは数学とはまるっきり関係ないけれども、すくなくとも今のわれわれのコンピュータにおいては真だ。だからまったくリンクしない話ではないわけだ(shiroさんの言うとおり TAOCP 最強論かもしらん)。

で、異論はないのだけれどわたしは不満もあった。機械語の知識というのは重要な面もあるけれど、一方で使うハードウェアに依存した知識の集積である。なんというかウェブを観察していて、それ以前なのでは、という状況もままあるような気がしたわけ。その一例が ruby-list のハッシュ表の話。

本題とは関係ないけど、個人的にはハッシュは今のままでいてほしい。OrderedHash がデフォルトになるのは個人的にはかなり気持ち悪い。Hash はハッシュのままで、既存のハッシュリテラルが OrderedHash になる、というあたりならオレは使わないからオーケーなんですが。

話を戻すと、 LL にはいろんなデータ構造が組み込みで入っているから、それがどういうアルゴリズムで動いているかっていうことをあんまり知らないママなんじゃないかという危惧がある。「車輪の再発明」云々の話題がちょっと前にあったけどあれも似たような話なのかな? つまり、アルゴリズムを自分で思いつくのは無駄かもしれないけど、どういう仕組みで動くかくらいのことは知っておきましょうと。

ところで、当の shi3z さんからツッコミを受けたのだけど、「そこまで軽視されているか」というと実際のところはわかりません。そういう現場で働いたこともわたしはないので。でも LL を使ってると、アルゴリズムやデータ構造の理解がおろそかなままでもわりとそれっぽいプログラムが書けてしまう。 Rails でちょっとしたサイトを立ち上げるのには、実はほとんどそうした知識もなくすぐ出来るし、少しの危うさを感じる。

実はこのネタは大昔に高林さんが「プログラミングのノウハウ」という題で書いていることに近い気がする。今回の話で「大事だよ」って書いていることは中国拳法の奥義みたいなもので、しかし奥義だけでは何の役に立つというものでもないと。

結論: だいたいさあ、プログラマのくせに論理回路も知らねぇとなると、このジョークすらいちいち説明してやらにゃならんわけ?

追記: ふとだらだら「OOエンジニアの輪!」を読んでたら、川合史朗さんの回のオチがこんなだった。

>

後輩を見ていて感じるのは、最近は特にいろんなコンポーネントがブラック・ボックスになってきて、PC を組み立てるにしても、マザー・ボードや CPU を買ってきて組み立てれば出来ますし、ソフトウェアでもライブラリをつなぎあわせれば出来る。それは手軽でいいんですけど、若い間にブラック・ボックスの中身がどうなっているのかにも興味を持って欲しいな、とすごく感じるんです。それも程度問題で、私もチップを買ってきてやっていましたけど、じゃぁ CPU の中はどうなってるんだとか、その、量子力学でどうのってそこまでは行っていないですから、どこまでやるかなんですけど。それはもう、半ば趣味みたいな感じでさらっておくだけでも、きっと将来、システムを大きな眼で見る時に効いてくると思うんですね。 >

で、ブラック・ボックスを組み合わせてやるのも楽ですし、本もいっぱい出ていますけど、そういうのは一応、ブラック・ボックスの中が判っている人が便利だから使うっていうのが正しいやり方であって、なんかわかんないけどとりあえず組み合わせればいいや、というふうにはなって欲しくないかな、と思います

まあ、こういう話の結論はそうそう変わるものではないよなあ。

One Response to “「アルゴリズムを知らない子ども達」の補足(?)”

  1. takkanm

    オブラブというイベントでこういう講演(http://www.objectclub.jp/download/files/event/2006Christmas/session_f_tokui.pdf)をやられていたんですが、そのときのKPTに、LLの自分にはtoo ハードって書かれていて、なんか複雑な気分になったのを思い出しました。