コンピュータ科学者がめったに語らないこと

id:MaD:20070121の続き。最後まで読み終わった。

コンピュータ科学者がめったに語らないこと

コンピュータ科学者がめったに語らないこと

自分は宗教には全く感心がないし、神がいるかいないかにも興味ないのだけど、それとは関係なく面白い箇所が何ヵ所かあった。
第2回目の講義はランダム化について。
前半は確率的アルゴリズムについて取り上げていたのだけど、後半はランダム化を応用する話。
Knuth

  1. 66の聖書それぞれからランダムに1節を取り出して(完全にランダムではなくそれぞれの聖書の3:16節を取り出す)
  2. その1節を中心にして徹底的に調べる。
    1. 前後の節の内容も吟味して話の流れを調べる(その節から離れるほど重みを小さくして)
    2. 1つ1つの単語についてその意味を調べる
    3. 様々な神学者の解釈本を読み、その節についての解釈を比較する

と3:16プロジェクトというのをやったという。
Knuthが使ってる表現では

教育というのは「あらゆることについての何かと、何かについてのあらゆること」を教えることである。

ということ。日本で言えば小中高教育が「あらゆることについての何か」を教えるもので、大学教育が「何かについてあらゆること」を教えるものになっているなぁ。

これを個人レベルの研究にも応用して、聖書全体を浅く広く調べるのではなく、普段光を当てられない一節だけに注目して徹底的に調べたところで大成功したということだった。
1つ1つの聖書から一節ずつというのも重要な要素らしい。「層化抽出」っていうらしい。

このやり方は凄く興味ある。実践してみたいなぁ。例えばLinuxカーネルについて勉強しようと思ったけど、bootsect.Sから順番に読んでいくとかしたら効率が悪すぎ。でも本当に上手くいくのかに興味がある。小説の真ん中からいきなり読み始めるようなものだから。逆にストーリーのない1つ1つが独立した物からランダム抽出しても全体について何かを知れるかというかというと微妙。

やっぱり広く浅く知っているものをよりよく知る為にやるべき方法だと思う。

wikiのネタも探してた事だし何かやってみようかな。
イデア(今勉強したいもの)

Linuxカーネル
ソースをランダムに抽出してそれらを徹底的に読む
コンパイラインタプリタ
Ruby*1のCで書かれたコアの部分、rubyで書かれたライブラリなどをランダムに抽出して読む
英語*2
(おおまかなストーリーを知っている)英語の小説の一章くらいをストーリー・単語・文法など徹底的に調べる。

これ良さそうだな〜。効率が良さそうだし、やる気がでる。


第3回は言語翻訳がテーマ。と言っても機械翻訳ではなく、Knuthが自力でヘブライ語ギリシア語で書かれた聖書を翻訳した話。
第4回は美学について。美しさがないとやる気がでないというのは凄く分かる。数学者であるKnuthの性格がよくわかった。それにしても、印刷が汚いからって自分でTeXを作ってしまうというのは凄すぎ。完璧主義者なんだろうなぁ。
第5回・第6回は神と科学の関係などについてのいろいろな考え方を書いていたけど、無限についての考察が面白かった。特に実数について。

実数は抽象であり、理想化です。この上なく有効な抽象であることは認めます。つまり、私達は、実数の概念によって微積分やその他数学者の手段を応用し、あらゆる種類の重要な問題を解決することができます。
しかし、実数を現実世界に完全に適用できると考えるのは大変な盲信です。

多くの科学が実世界に実数が存在するという仮定の上に成り立っているというのはその通り。でもそれはそうすることによって実世界の現象を上手く説明できるからそうしているのであって、実数が本当に存在していると信じているわけではないんじゃないかな?でも、その考えに支配されているというのには納得。

例えばルート2という数は理想的には存在するけど、実世界にルート2という値でなければ表せない量があるか?という疑問には、この世界が連続的かどうかという疑問に答える必要があるけど、この疑問は解決できるのだろうか??*3

コンピュータ科学的には、無限と有限の区別はそれほど重要じゃないといことには納得。有限の大きさの程度が大事なのであって。

*1:Rubyはソースが綺麗らしいので

*2:留年しそうなほど語学はだめなのです

*3:ルート2ってのはあくまで例え。人間の決め方次第で変わるものなので。