著作一覧 |
6/20はとちぎRuby会議06なので那須に行った。四谷でogijunさんを拾って、後ろに猫廼舎の出張キットを積み込む。カウンターの上にやたらとおもしろそうな本があり手に取ると、昨夜はこの本を訳した方を始めとしたイベントがあって、この本の話題になったので家から持ってきたのだと教えられた。そんなおもしろそうなことをしていたとは。
オフ・ザ・マップ 世界から隔絶された場所(アラステア・ボネット)
割と早く着いたので、以前ごとけんさんに連れてってもらったSHOZOで昼飯を食べようと考えた(が、SHOZOという名前は完全に忘れ去っている)。
確か、左折すると公民館がある大通りをそのまま廃墟のお城(ラブホテルのように見えるが確か喫茶店)を過ぎて那須の町の中のほうに行くのだなと思い出しながら進むと行き過ぎて橋を渡ってしまった。どう見ても別荘地へ続く道で、道路脇の紫陽花が青くて美しい。Uターンできない雰囲気の片側1車線の延々と続く道だがどうにかこうにか、引き返して今度は右手に折れると少し早過ぎたが、そうは言っても規模が小さいので次のブロックに入るとそれっぽくなってきた。で、駐車場で完全に思い出して停めたのだが、なんか2年たって店舗が増殖しているうえに、似たような雰囲気の別の店も出来ている。こうやって町の色というものが決まるのだなと感じる。おれの印象だと広尾のFOB COOPやら、恵比寿の今は無きCOOPERATIONとかに似た色なのだ。それが寂れてしまった町を変えていくというのは面白いのだが、ノスタルジックなようでもあり、単なるカリカチュアのようでもあり、不可思議な感覚だ。
で、それはそれとして少し遅れてしまって会場に入ると、すでにmatzの基調講演が始まっていて、高校生でポケコンの500行24変数BASICしか持たなかったころの話をしていた。で、PASCAL入門を買ったが処理系がないので、机上でいろいろやっていて、授業で数学的帰納法を教わると、ああこれが再帰だな、シグマを教わると、forループきたーとか、そういう話だった。
原先生のは、確率と人間感覚の違いについて。悪いことが続くと何か特別なことがおきたような気になるが、少しも特別ではないということ。
ある日に悪いことがあれば0、良いことがあれば1とする。すると365日は以下の文字列として表現できる。(以下のコードはその場で示されたものではなく、今、適当に書いている)
days = 1.upto(365).inject('') {|past,x| past + (rand < 0.5 ? '0' : '1')}
大数の法則から、良い日と悪い日はだいたい半分ずつとなる。
days.each_char.inject(0) {|a, x| a + (x == '0' ? 0 : 1)} # => 179
しかし、良い日と悪い日が交互に出現するわけではない。
x = days
r = {}
while x =~ /(\d)\1*/
r[[$&.size, $1]] = (r[[$&.size, $1]] || 0) + 1
x = $'
end
r.sort.reverse # => [[[14, "1"], 1], [[12, "0"], 1], [[10, "0"], 1], [[8, "0"], 1], [[6, "0"], 1], [[5, "1"], 3], [[5, "0"], 3],...
と、良い日が14連続とか、悪い日12連続とかが平気である。5日連続良い日とか悪い日なら1年に3回もある。
一応、検算。
r.sort.reverse.inject(0) {|t, e| t + e[1] * e[0][0]} # => 365
というわけで長い目で見れば良い日も悪い日も同程度にあるので続いたからと言ってもこれっぽっちも特別なことではない(という結論だったかどうかは忘れた)。
最後、笹田さんがアンダースタンディングコンピュテーションを朗読。
アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで(Tom Stuart)
抽象構文木という言葉が出てくるが、具象構文木というのは抽象化(たとえば、Rubyの場合だとunlessをif !に置き換える)していない木だと説明したら、会場から、ECMA Scriptでは具象構文木としてコメントなども持つ構文木と定義されているという声がかかる。このあたりかな。Defining a standard JavaScript CST (concrete syntax tree) to complement ASTs.
構造化エディターが扱うのがCSTなのかな?
スタッフはみんな咳さんTシャツを着ていた。
懇親会のLTでt-wadaさんがeasyとsimplicityは異なり、価値があるのはsimplicity(easyは主観、simplicityは客観)という話をしていたが、正しいと思う反面、世の中はそういうようには回っていないので、1)プログラマーは正しくsimplicityを追及すべき、ではなく、2)世の中の方向性と同様にeasyを最重要視すべきか、ではないかと感じた。そこからsimplicityとeasyの生き残りをかけた淘汰バトルをいろいろ想像して楽しむ。
ジェズイットを見習え |