檜山セミナーに行ってきたよ

場所: 代々木公園の近く
時間: 14:00〜17:00
人数: 10名
http://d.hatena.ne.jp/m-hiyama/20090122/1232594439
檜山さん、参加者の皆さんおつかれさまでした。

ざっと復習をば。

まずスノーグローブとは、お土産屋に売っているガラス容器に家や雪だるまが入っているアレです。
もし私たちの世界のミニチュアが手元のスノーグローブに入っているとすれば、
その中にあるスノーグローブには、もっと小さな世界が広がっているだろう、と。
逆に考えて、私たちの世界もまたスノーグローブの中で、一段上の世界があるのかもしれない、と想像できる。
メン・イン・ブラックにそんな画が出てたな。本編と全く関係なかったけど。それとグレッグ・イーガンのSF「ディアスポラ」もこのモチーフを扱っていた。コンピュータ関係でいうとVMWareの中で動くWindows7の中でコマンドプロンプトを開くようなもんでしょうか)

今回の趣旨は別に「天にまします我らが創造主様」とかそういう方面じゃなくて、ジョン・バエズという物理学者がたとえ話として使ったのだそうだ。いったい何の理論なんだろう?
でもセミナーの前半は結構あやしげでした。幽体離脱の練習をしましょう、とか。

つぎに、足し算2+3を例にとって、いろいろなタイプの関数をイメージしました。

  • a: 真の関数2+3=5
  • b: 一時的に2+xという関数を生成して、それに3を適用する
  • c: 一時的に、なんやわからんものを生成して、それと3から答えを導く
  • d: 一時的に、暗号文のようなものを生成して、それと3から答えを導く
  • e: 一時的に、数式のように見てわかるものを生成して、それと3から答えを導く

c,d,eは一時データを読み込むための補助マシンがついていて、中間のデータ形式以外は同じ構成です。

ここで、今まではcとそれに対する補助マシンc'と書いていたのを、補助マシンEをメインとして、E向けにエンコードされた足し算関数f^Eのように書こう、と。

あとはこれを図で表現する話で、はてブに書くのはあきらめます。

<わかったこと>
今まで計算機科学を学んで来なかった人の意見として、関数といっても数学や工学論理学でいろんな概念?(a〜e)があるんだなというのが新鮮だった。
数学者流のbマシンでc,d,eのような補助マシン式にしようと思ったら、足し算関数のコピーを大量に持っていて、それに入力の2という数字を貼り付けて吐き出すんだ、という考え方は、なるほど富豪だなと思った(笑。
普通は足し算関数を1コ外出しして、アウトソーシングするだろうコスト的に考えて。と思った自分はプログラマだなぁ。
だから図の説明でバブルに包まれた足し算がぺっと吐き出されていたのはすごくよくわかる。

<わからなかったこと>
f^EのEが「エンジン」と呼ばれた瞬間、自分の中でJavaScriptエンジンみたいな具体的なエンジンを想像してしまい、じゃあc関数で吐き出されるのはJavaScriptのコードで、cはコードジェネレータかプログラマか?みたいな想像をしてました。
しかし話が進むにつれ、
あれ?このEは何をやっているんだっけ?
という疑問で頭がいっぱいに・・・。
やってることは、関数のパラメータを1個引き剥がしているだけだしなぁ。

プログラミング言語的に考えると・・・>
バブルの図はプログラミング言語的に考えるとわかりやすい気がする。

f^は処理をモノとして扱えるようにしたもの、つまりC言語の関数。Eは利用者で、その間のデータは関数と利用者の間の取り決め(インタフェース)である。
でも多分ラムダ計算とかの話とはちょっとズレてるんだよなぁ。。。

圏論て一体何だ???
次回があるならきっと参加せねば。