100ドルコンピュータとSqueak
http://d.hatena.ne.jp/Florian/20050517のFlorianさん経由で。Negroponteは東京なのですね。土曜日には彼はLAにいるはずなのですが、「Nicholasは飛行機に住んでいる」というのはほとんど本当のようです。
Squeakは、JITとあとは2D accelerationがあればこのスペックでもいけます。eToysでいくつかのオブジェクトを回転させたりしているときは、一番遅いのは画像の回転でそれだけでCPUパワーの50%とか70%とか使ってしまいますので。
JITはあるにはありますし、2D accelerationのハードウェアは「第一世代」のハードウェアにも入っていて、スペックは知りませんが多分ビットマップの回転くらいはできるはずなので、それで大分ものになると思っています。
UCLAと京大の遠隔講義
京大はもちろん半年区切りなのだが、UCLAはquarter制なのでこの講義もかなり終盤にさしかかったムードがある。今日は、京大側の人が、期末にやるはずのプロジェクトとして何をするかをプレゼンテーション。
京大の人は、うーん。若いです。授業の文脈として「未来」の話が多かったので幻惑されてしまったのかもしれませんが、いくつかのグループはちょっと未来過ぎて地に足が着いていない話になってしまったように思います。子供の年代と、その教材で子供がどのように何を学ぶのかという(高田さんが話したような)内容をこの先地道に詰めていってくれれば良いのですが、去年の例を見ると、「最初のアイディアから離れられず、深く詰めていくこともできない」というグループも多くなる傾向があるのでちょっと心配ですね。グループで考えたことになっていて、5分とはいえ構想を一度発表してしまうと、その後「これはやっぱり企画倒れだからやめよう」という話にはしにくいとは思いますが。
Alanが最後創造性ということについてちょっと議論をしようとして考えを述べました。Arthur Koestlerによる"The Act of Creation"という本があって、想像性のモデルについて滑らかに書かれた本ですが、800ページもある本です。創造性にも、ある文脈の中で改良を施していく、というものと、その文脈を超えて新たなものを作り出す、という2種類がある、というのはこの本に書かれているものだったようです。ViewpointsのBlue PlaneとPink Planeはここから来たわけでした。
一度青平面に飛び出せても、今度はそこにはまってしまうこともあります。
というあたりから学生の感想を求めました。「創造性を育てる(foster creativity)」という考え方に関する否定的意見は出ました(僕もおかしいとは思うわけですが)。発見と創造の違いなども。
ジョークと科学的発見と芸術的創造は"ha ha"と"A-ha"と"ahh"の違いであるという話もありました。ジョークが面白いのは、想像していた展開と違う意外性があるためですが、科学的発見の後にもしばしば笑いがこぼれます。これも今までの考え方の枠を外れることによるめんが多分にあります。
もしかして期待されているかもしれないので(されてないされてない)、ここで今日の警句的なやつを。「学習する、ということは自分に変化をもたらして、それまでの自分とは違う人間になるということです。つまり、学習そのものがなんらかの創造的活動ともいえます。」
コツとしては、自由連想で思いついたことを、書いた端から忘れるように努めつつノートに20くらい書きとめていく。その後で、全部を読み返してみる。大事なのは、最初のフェイズでは"super easy"に考えるようにしていろいろ自由連想し、後のフェイズでは悪いアイディアはどんどんすて、良いアイディアを洗練するために"critical"になる。ということを挙げていました。
属性評価器
属性評価器、というか簡単な属性評価器生成系を作ってしまうのが早道かなあと思いつつ。いろいろな構文木変形を試したくなるので、いろいろな属性評価もしたくなりそうなので。
とはいうものの、あまりにも一般化したものにする必要はなくて、とりあえずSqueakコンパイラ、またはTweakコンパイラが生成する構文木で良いです。原理的には、「レシーバーとセレクターと引数リスト」という構文しかないわけですが、終端記号の種類としてはリテラルとか変数とかがあり、ブロックは微妙に毛色が違うのでブロックと普通のオブジェクトもちょっと違います。
ちょっと毛色が違うのは、これらを構文解析、意味解析した結果の構文木のノードは、ParseNodeというクラスを根とするクラス階層内のインスタンスになっているということと、あとはBNFで普通にパーズした構文木ではなくて、繰り返されている要素が可変長のリストとして組み立てられている、ということでしょうか。クラス階層があるので、親クラスに定義された属性は子クラスでも使いたい、という問題があるのと、可変長リストなので属性規則を書くのがややこしい、というところでしょうか。
というわけで、識者の方(AS君、君です)、「オブジェクト指向で、可変長リストを考慮した属性評価器」の良いリファレンスがあれば教えてください。参考にしたいと思います。