Squeak-vmdev メーリングリスト

余り知られていないのかもしれないが、世の中にはSqueak-vmdevというメーリングリストがあって、Squeak Version 4.0に向けて、新しいイメージフォーマットを作る、という話が進んでいる。

今のバージョンはメモリ使用量を減らす方向でがんばっていた面があって、String, CompiledMethod, Arrayのようにインスタンス数の多いクラスはそのクラスの番号をヘッダの中に入れることによって、クラスへのポインタ分4バイトを減らす、ということをやっていた。僕がMI-506ザウルス版を作ったときなどはこれが本当にクリティカルで、もしこのcompact classの仕組みがなければVMそのものはポートできたとしても動かせるイメージはちょっと作れなかった事であろう。その頃テストに使っていたのは600k程度のサイズの自製イメージだったが、思うにその中には多分15000個くらいのオブジェクトがあって、その99%はcompact classだったように思われる。もし、600kが660kだったら、800k弱のMI-506ザウルスヒープでは起動したかどうかも怪しいところである。

が、もちろん今は100k稼いでも誰もなんとも思わない時代になってしまった。そのため、compact classはやめる、という事には合意がとれつつあるようである。これはよいよい。

が、別の問題になりそうな動きとして、CharacterとかColorとかをimmediateにしよう、というものがある。みんながもはや当然Characterもimmediateにできるよな、というような考えのようだが、なんだか一人で違う事(24bit rangeのimmediateにするくらいならnon-immediateでいいよという事)を言っているので、肩身が狭い。DanやAndreasは判ってくれているようなので良いのだが。まあやるなら最初の256文字はimmediateにしておいて、他の文字はboxedにしておく、ということを今は考えている。

もっと妥協的なことをしたければ、UTF-16の文字列でさらに固定長でアクセスできるものを表現するためのUTF16FixedStringみたいなクラスとその文字クラスを作っておいて、compositionやBMP以外の文字が入っていたり、タグをいろいろ付けられたりする文字列クラスを別に用意するとかね。死ぬからやめたほうが良さそうだけど。

究極の問題は、ある属性の付いている文字列で表現された式を評価したときに、その結果に元の文字列についていた属性が残るべきかどうか、ということなんだよね。青い文字列を#,でつなげたときに青い文字列が出てくるべきかどうか、という。文字色はいらないけど、言語タグだったら残したい、というような話になると思うので、どちらかの極によったような解ではなく中庸をとらなくてはいけないとは思う今日この頃なわけである。とはいうものの、属性が「ちゃーんと」残るような属性の規則が定義できれば、そういうcompilerを作ればかっこいい世界が待っているような気もまたするわけであるが。

まつもとさんにコメントをもらったりした結果、なんだかそっちに引っ張られたことを書いてみてしまった。影響されやすい私。

John Maxwell

British Columbia在住の歴史家で、70年代のXEROX Parcや、Vivarium Projectのような80年代のAlan Kayの活動について調べているJohn Maxwellという人もViewpointsを今日明日と訪れている(http://thinkubator.ccsp.sfu.ca/People/jmax)。まるで喜多さんのようだ。70年代のことはいろいろ書かれたものがあるし、95年以降なら腐るほど資料はあるけど、80年代のことはなかなか調べるのが難しいので、一次資料(というのかな)にあたりに来ている由。UCLAの講義への送り迎えもするので、もう少し話を聞いてみよう。

SqueakNihongo6.1

アップデートサーバーを作って、イメージが見に行くサーバーもセットした。が、3.6 releaseに入っていたコードは変で、アップロードのほうができない。しょうがないので、あるchange setを3.7のほうから持ってきたりして入れたわけである。なんだか危なっかしいが、見たところ問題はなさそうである。変なの。

Seymour PapertのUCLA-京大講義

Seymourの講義は期待を裏切りませんでしたねえ。アクセントがあって微妙に聞きとりにくいところはありましたし、latinesqueとかdrivesqueとかmathoid(だと思う)とか造語もすごいので導入部はちょっと戸惑いましたが、本編に入ってくると、Squeakers DVDにもあるようなmathlandを作るには、という話から話が大きく展開してきました。以下は、聞きながら取っていたメモ(の半分くらい)を簡単にまとめておきます。

学校が保守的だから変わらないと決め付けるのは変で、特殊学級などは昔は存在しなかったのに今はあるのだし、変わろうと思えば変われるはず。DaVinci(について言っていたのだと思う)が空飛ぶ機械をデザインしたときにはおおくのインフラストラクチャーがなかったのでライト兄弟のように実現はできなかったが、教育を変えるためのインフラは整ってきている。

教育方法を提案するときには多くの人が自分の意見だけに基づいて提案するが、やっぱり理論的裏づけが必要。Mindstormsが出たときはほめられることよりも攻撃される事が多かったし、ほめた人もコンピュータと子供の教育に関する良い本ですね、というほめ方だった。書いた本人はPowerful Ideasに関する本だと思っていたのに卑小化された(dispowerment)ほめ方だったのでがっかりした。

確率について学校で教えるようにしよう、というと、すぐに「女の子の中でチョコレートが好きな子の数を数えて、チョコが好きな女の子は何%」というようなことをやる人がいる。これは確率論というすばらしいものをdispowermentした例といえる。

ロボットがあるとして、ある光源に向かって動いていくようにプログラムをしたいとしよう。ひとつの方針は、いろいろなセンサーを付けて、自分の座標と光源の座標を求めて、その間をつなぐように動かす事である。が、もうひとつのやり方は明るさだけを測る簡単なセンサーを付けて、明るいほうにちょっとだけ動く、という事を繰り返すだけという簡単なやり方もできる。後者はより簡単で強力なだけでなくincrementalな動きを繰り返す、という積分の考えも使っている。

進路の途中に障害物があるときにそれをよけさせたいときにも、障害物の位置を完全に把握して、それをよけて通るように完全なプログラムを作ろうとする事もできる。が、動きにちょっとした乱数を導入して、完璧にまっすぐ進まないようにすればそれだけで障害物をおおむねよけてしまうようなロボットが作れる。これは生物がやっているやり方にも近いし、確率という概念をより力強くした(empower)やりかたで使っている良いやり方である。

ケプラーは完全な楕円を描いたが、ニュートンの強みは、局所的な変化の繰り返しという形で世界を記述した事である。incrementalに繰り返すという概念はpowerfulである。

MIT時代の学生の一人は"teaching more is easier than teaching less"ということで論文を書いた。全体像の中で位置づけながら部分を教えたほうが、細切れにして教えるよりも教えやすい。

Chomskyは、言語を人間が習えるのは本来人間が言語を習うための遺伝子的に組み込まれた学習機能を備えているからだといった。Pinkerのように代数を習うのは言語を習うように簡単ではないというお間抜けな意見もあるが私はそうはおもわない。

代数は発明されたが、言語は自然発生的だった。代数も自然発生的な記述法をたくさん作って、それが収斂して行くようなやりかたで作っていればより学びやすいものだったかもしれない。ピジンクレオールがどのように収斂するか、という観察があって面白い。

変数という概念を教えるのが難しい、という話がある。変数とは代名詞みたいなものでJohnとかBobとかになれる、という教え方でわかる子も多い。人間が何かを知る(know)というとき、なんらかの概念を知る、というのとAlan Kayを知っているというとでは根源的に違うことのように思う。オブジェクト指向というのは後者のようにより深い知り方につながるので良い。

代数はコンピュータを使うことによってよりaccessibleにできるはず。

というあたりまでで本編は大体終わってあとは質疑応答になりました。computer scienceとはなにか、というような論でUCLAの学生の一人ががんばったりしてなかなか面白かったですね。京都側からも質問が出てよかったと思います。あとは、「環境主義」みたいに誰も名前を付けなかったために存在しなかったかのようなものが、数年のうちに一気に共通知識になったりしたように、learningということも一気に違う意味をもって広まる下地はできてきているかも、というコメントにはわくわくするものがありました。

「代数はコンピュータを使うことによってよりaccessibleにできるはず」というような発想が一番の収穫でしたね、僕にとっては。

自分のために書いた日記だが、これは京大の学生さんの役に立ちそうだな(笑)。それもまたよし。

Seymour Papertを送ったよ

KimもAlanUCLAに近いところに住んでいるので、帰りは結局俺がSeymourを連れて帰ることになった。Story Musgraveを送ったときはもっとびびったが、やっぱり大物を乗せて運転するのはびびるよ、まじで。John Maxwellも一緒だったし。