Robot Turtles

Kickstarterに出資したBertに送ってもらいました。

http://www.robotturtles.com/
コンセプトとしては阿部さん他の「にんげんプログラミングhttp://www.canvas.ws/kenkyujo/scratch/index.html」のようなものですが、きれいにパッケージして製品化しているところがすごいです。ルールはあってもないようなもので、子供と一緒にルールを作りながら遊べます。なかなかよし。

Emina Torlak来訪

Eminaさんは、KodkodというSATソルバーを作ったり、ソルバーを使ったDSLを作るためのフレームワークRosetteというものを作ったりししている研究者の人です。Onward 2013!で発表が前後したりした関係で(同僚のHesamは前からDagstuhlセミナーに一緒に参加したりしていたので既知でしたし)、Viewpointsに一度来て話をしてもらうということになりました。

Alanの斜め上からの質問にも動じずに、かつ分からないことは分からない、ということもはっきりと言える落ち着いた人でした。

どきどきプログラミング

こんなものがでるとは。

http://www.amazon.co.jp/dp/4822297314/ref=cm_sw_r_tw_dp_eEpMsb12D4SRP
「わくわくプログラミング」に載っているエッセイを以下のサイトに載せるときに、本の説明のために書名を英語に訳してくれないか、と命令を受けたのですが、
http://www.vpri.org/pdf/hc_what_Is_a_dynabook.pdf
「いやいや、私ごときのものが訳すのは難しいです」と答えて、結局は訳さず内容の説明をするにとどめた、という経緯がありました。いやー、我ながら素晴らしき慧眼。「どきどき」が出るとしらないままで「わくわく」を訳していたら、大はまりしていたところでした。

第三弾は「てかてか」に違いない。

Cyc

先週は1週間まるまるAustinにあるCycorpに缶詰になり、みっちりとCycについて勉強していました。

Cycというのは大きな知識ベースとその推論システムの名前です。もともとは日本の第5世代コンピューティングプロジェクトに脅威を覚えたアメリカが、対抗するプロジェクトとしてMCCという組織を立ち上げて、知識ベースをを作って行こうということではじまったプロジェクトでした。第五世代の人々とも交流が多々あったようです。その後は会社組織となり、山あり谷ありながら30年の時間をかけてみっちりと知識やルールを積み上げ、矛盾を内包するようなデータからでもなんらかの結論を出せるという推論エンジンになっています。

Cycは現在のところ、50万の概念、17万の集合、それらの関係を記述するassertionの総数として1200万、というような規模に育っています。Doug曰く、成人は5億個くらいの言明を頭に蓄えているが、Cycはその2%くらいまで来ていて、主導者のDoug Lenat曰く、予定より20年遅れたがようやく「使えるようになってきた」というところです。

いろいろなデモをみた限りでは、「常識」を備えたコンピュータ、というところまでは来ているとは言えないのですが、ちゃんとドメインに特化した知識を登録し、それに応じたqueryを投げるとちゃんと推論して、推論の根拠をちゃんと表示できるようになっています。

我々の研究では、プログラム同士がお互いを発見して、どのように恊働できるかを導きだす、というようなこともしたいのですが、Cycがその助けになるのではなかろうかと探っているところです。

Joe Hellersteinの講演

今週は、Bloomをやっていて、今はTrifactaという会社を始めている Joe HellersteinがUCLAに来て講演していました。Bloomというのは、Alan Kayが「未来はみんなこういう風にプログラムを書くようになる!」と言ったとされている言語で、我々のグループも注目しているのです。

https://twitter.com/tcondie/status/309510224992153601

時間の概念を取り入れた言語で分散環境もモデル化しているというところが売りです。


私はやや誤解していましたが、同期をとること事態は否定していないし、non-monotonicな計算も排除していないのです。要はnon-monotonicな計算がデータフローの中でどこに流れ込んでいるかを調べることができ、それが順序を要求するノードに入っているところでのみ同期をとれば良いということが静的に分かる、ということが真の強みですね。

「プログラムがノードごと別々に進化するようなタイプの分散環境もあるが、そういうところではBloomがどのくらい助けになるのか」ということを質問したのですが、「プログラムに変更があった場合は、静的検査をやり直さなくては行けないのは確かだが、情報としてはnon-monotonicな計算をするかどうかというフラグみたいなものさえ伝えれば良いのだ」ということでした。なるほど。

English translation of http://d.hatena.ne.jp/squeaker/20131101#p1

There was a co-located workshop called FOOL, or Foundation of Object-Oriented Languages (http://fool2013.cs.brown.edu/). It was a gathering of mainly static-type theorists. I snuck into it when I saw David Ungar and Gilad Bracha chatting there, so I anticipated something would happen. Kim Bruce was about to give his keynote on the history of last 20 years of FOOL.

After Kim Bruce' talk, Dave Ungar asked a question (I paraphrase): "What is the best thing that came out from this community that contributed to the real world, beyond academics, in last 20 years?" (Well, he clearly was trying to be usual Dave Ungar and be provocative). Answers from audience were "GJ", "F-bounded polymorphism, the idea of contravariance of inherited methods, and killing Eiffel and shut Bertrand Meyer up; but not much more. Dave was unconvinced (he would not be convinced with these answers from the beginning anyway). When one answer mentioned that static-typing is good for documentation, Dave then suddenly quoted my talk; He said (to the effect) that "there was a fantastic talk by a young fellow in the morning, who turned a few hundreds of thousands (sic, I corrected it to hundreds of millions) lines of code into 20,000 lines of clear code. That could be a better documentation!" It is flattering but I really did not want to be involved in a controversy with type theorists!