pepsi勉強中

サンプルを作ってみようとid:sumimさんの自然対数の底を求めるプログラムを移植してみました。

Intervalがないのでいろいろ追加したせいで結構長くなってしまいました。

{ import: st80 }
Interval : Collection (start stop step)
Interval new
[
self := super new.
start := 0.
stop := 0.
step := 1.
]
Interval start: aNumber [ start := aNumber ]
Interval stop: aNumber  [ stop := aNumber ]
Interval step: aNumber  [ step := aNumber ]
Interval do: aBlock
[
| aValue |
aValue := start.
step < 0
ifTrue: [  [stop <= aValue]
whileTrue:
[aBlock value: aValue.
aValue := aValue + step]  ]
ifFalse: [  [stop >= aValue]
whileTrue:
[aBlock value: aValue.
aValue := aValue + step]  ]
]
Integer to: aNumber
[
| obj |
obj := Interval new.
obj start: self.
obj stop: aNumber.
^ obj
]
Integer factorial
[
self = 0 ifTrue: [^ 1].
self > 0 ifTrue: [^ self * (self - 1) factorial].
self error: 'Not valid for negative integers'
]
[
((1 to: 12) inject: 1 into: [:e :i | e + (1 / i factorial)])  println
]

LargePositiveInteger does not understand ‘asFloat’

ということで割り算が途中でできなくなるため100でなく12で終わりです。自分で実装すればいいんですが面倒なので。

IntervalやfactorialはSqueakのもののほぼコピペです。結構あっさり動いてしまうので拍子抜けしました。

pepsiはプロトタイプベース言語?

こっちに引っ越してきました。

pepsi.htmlを読んでいます。表題の通りなんですね。Smalltalk/80と似た言語ということで頭っからクラスベースと思い込んでいました。

むちゃくちゃな例ですが、こんなことができます。

{ import: st80 }
Wao : Object ()
Wao wao [ 'wao' println ]
[
Wao wao.
]
Wap := [ Wao new ]
Wao wap [ 'wap' println ]
[
Wap wao.
]

WaoはObjectを継承するプロトタイプオブジェクトです。Objectを継承する理由は、途中でnewメソッドを使っているからです。これはただの宣言のように見えますが実際Waoオブジェクトを作成したことになります。

その次の行でWaoにメソッドwaoを追加しています。これは画面にwaoと表示します。

トップレベルにある大カッコで囲まれたのはブロックで、ファイルの頭の方のものから実行されます。最初のものは定義したWaoにいきなりwaoメッセージを送ります。

WapはTranslation Unit変数(変換単位変数?グローバル変数のようなもの)で、プロトタイプWaoのコピーが格納されます。

次のはWaoオブジェクトにwapメソッドを追加しています。

最後のブロックはWapにwaoを送ったり、後から追加したwapをWaoに送ったりしています。

出力は以下のようになります。

'wao'
'wao'
'wap'
'wap'

st80ライブラリやjoltのソースを見るとかなりいろんなことがわかります。

pepsi学習開始

来年の専門ゼミで扱うLLを探しているうちに、(インタープリタじゃない時点でLLじゃないんでしょうが)pepsiが面白そうに思えたので学び始めることにしました。

これを読みながら勉強です。

http://www.piumarta.com/pepsi/pepsi.html

インストールはこちらを参考にしました。

http://d.hatena.ne.jp/propella/20070112/p3

最初はお決まりのプログラム(hello.st)を作ってみました。

{ import: st80 }
[
'hello world.?n' put
]

上記をコンパイルするには、以下のようにします。

idc hello.st

結果としてhelloというバイナリができるので、./helloで実行できます。

./hello
hello world.

適当に先のpepsi.htmlを訳しながら学び進めていこうと思っています。

Squeak 3.8.14beta7U(mac)での日本語表示

squeak.orgで公開されているmac版ですが、ただそのままインストールしても日本語がうまく表示されません。問題はファイルリストなどで日本語のファイル名を表示させたときで、日本語の部分が?になってしまいます。

とりあえずsqueak3.0.appでごまかしていたのですが、ちゃんと表示させる方法がありました。

http://squeak.sakura.ne.jp/modules/newbb/viewtopic.php?topic_id=41&forum=8

上記のSqueaker’s Scrapbookにある、ゲストさんの発言で

さっそく確認ありがとうございます。

動作確認に際して、私の方で書き漏らしがあったので補足したいのですが

1)VMアイコンを「パッケージの内容を表示」で開く

2)Contentsフォルダの中のInfo.plistをダブルクリックしてPropertyList Editorで開く

3)Rootからのツリーを展開しSqueakEncodingTypeの値をmacintoshからUTF-8に変更して保存する。パッケージのウィンドウを閉じる

という前処理が必要でありました。

もしすでにやられてた上での確認でしたらご容赦。

これをやったらちゃんと日本語ファイルなんかが表示できるようになりました。

#もちろん、梅澤さんのJapanese Environmentをインストールした後で。

さきのページでは日本語入力がおかしいとの内容ですが、今のバージョンでは特に問題なく入力できました。

#インライン入力ではないですが。

とりあえず備忘録として。

野良仕事

今日は久しぶりに農業ボランティアの仕事をしてきました。枯れた雑草の始末のついでに今年の活動についての打ち合わせを行いました。昨年はかなりの作物が雑草にやられてしまったので、今年は雑草を抑える工夫をしようということになりました。手を入れにくい場所には花を植えることと、昨年かなり調子のよかったジャガイモ、サツマイモを広げようと考えています。キャベツもかなりよかったので今年もやるでしょう。

イモ類に関しては、区画を作って希望者を募り、自由に管理してもらおうかと考えています。そうすることでイモのメンテを任せることができて我々は別の作業をすることができます。何より週末に人がくるようになれば山に活気がでるでしょう。

ジャガイモは強いですね。今日掘り返してみたらまだまだ掘り残したイモがたくさん残っていました。ダメなものもありましたが食べられるものが3kgは出たと思います。

身体がなまっているので半日の仕事でヘトヘトです。来週末もがんばろう。

C4

今日は秋葉原のデジタルハリウッド大学でC4が行われました。

http://squeakland.jp/sqmedia/20070210C4.html

今年度は諸事情で全然外に出れなかったので、先週の未来パーティに引き続いて出かけてきました。以下は全然客観的でない、私の感想まじりのレポートです。

高田先生の開会挨拶から始まり、すぐに山宮さんのOLPCに関する講演になりました。山宮さんが最初にOLPCのことを聞いたときから今までをかいつまんで話されていました。OLPCの歴史やコンセプトについてもわかりやすく説明されており、ずいぶんと勉強になりました。

Children first:eToyを中心にしていこうという話はちょっとびっくりしました。このところのPepsiなどの動きや阿部さんの以前にも増すeToy講釈がそれに結びつくんですね。確かに今のSqueakは複雑で雑多ですからシンプルな形で新しいものを作る方が良い気がしてました。

eToyをもっと強化していろんなモノ(フォントやサウンド、ネットワークパケット)を見えるように(わかるように)する話も同感できます。とにかく技術が複雑になってブラックボックスが多くなってきました。少なくとも自分たちに関係するインフラのようなものについては、直接的な操作や具体的なイメージを持てるようにするべきだと思いました。

阿部さんのワークショップでは、最初はゆっくりとすぐに猛スピードでeToyのtipsを説明されていました。前回の未来パーティで伺ったものと関連があったのでついていけましたが、途中で見る(聞く)方に専念された方も多かったのではと思います。

サンプルとしてはテキストを大きくする、ストップウォッチを作るをちゃっちゃっと説明した後で、乱数を作るタイルからサイコロを作って、出た目を入れ物に入れて確認させ、分布を見るために棒グラフにするということをかなりのスピードで説明していました。説明を聞いているだけで面白かったです。実際のワークショップにも参加してみたいと思いました。時間がない中でやった円周率を求める例も興味深かったです。

高田先生の子どものプログラミングと大人のプログラミングは自分の研究にも関係することだったので興味深く拝聴しました。Squeakを紙とエンピツと喩えたのは「まさに!」という感じで、そういう入り方が一番自然だなぁと思いました。実際自分の学生たちについて考えても、Squeakが定着した学生さんは紙やエンピツのように使っていたようです。

(ExcelやwordでやっていることがeToyでできることを示すのも一つの手かもしれません)

「プログラミングは物事を構成する力を養う」というのも同感でした。頭の中でわかっている(と思っている)ことをプログラムとして再構成することができればさらに理解が深まります。(あるいは「わかってないこと」がわかります)

「なんとなくわかった」と教えている学生さんがよく使うのですが「わかった」を知るためのツールとしてSqueakをもっと積極的に活用できるのではないかと思います。

Florianさんの質問の中で「物事をロジックに表すとその物事自体が壊れてしまう」(と感じる)恐怖症について話されていたのがウケていました。私自身の経験では、該当するのは学生さんより大人に多い気がしました。

瓜谷さんは、今までにHPスーパーサイエンスキッズでどのようなことをやってきたか、これからどんなことを進めていくのかについて楽しそうに話されていました。今までの活動で関わった子どもたちをサポーターとして活用するのは良いアイデアですね。そうすることでコミュニティも大きくなりますしより理解も深まるでしょう。

慶応大学の岡田さんの「ことだま on Squeak」は、昨年に話を伺ったときよりもさらに進歩していました。ことだまを使ってピンセットでゴキブリを捕まえる例では、タイルによって自然に読めるようなスクリプトが形作られる様子がよくわかりました。また、オルゴールは女の子向けに考えたとのことでしたが、こういう教材を考える重要性がよくわかりました。譜面とプログラムとの対比はとても興味深かったです。(個人的にはパチンコ台のプログラムを思い出しました)ちょっと時間が足りなかったのが残念です。

和田小学校の横山先生。小学校の校長先生のイメージにぴったり会う方でしたが、内容は面白く、子どもたちのことをよく考えられており、聞いていて頭が下がる思いでした。小学校1年生がつまづく点やその対処方法は大学生でも通用するところがあるように思えます。xy座標の説明や、アニメーション沼からの脱出方法について、いくつも示唆を受けたように思います。ジグソーパズルのプログラム(やそれの実演)や気球のサンプルプログラムを見ていて、こういう先生が必要だなぁとかこういう先生が上にいるのはありがたいなぁなどと思ってしまいました。

武蔵工業大学の学生さんたちの発表では、自分たちの作った教科書で系列の高校の生徒に授業を行った模様が話されていました。女子高生を対象にするというのはある種の面白いチャレンジですが、作られた教科書の中身は誰でも使えそうなしっかりしているものに思えました。大切なのは教科書やインフラではなく、コミュニケーションや場作りなんだという話も良かったです。高校の先生をその気にさせたというのが大きな成果だと思います。

最後に宮坂さんのデジタルハリウッド大学院での活動について。「良い先生と普通の先生」の話はウケました。これはぜひネタとして使わせていただこうと思います。興味を引き出すための工夫は何でしょうね。同様の意味合いでロボットを使っている身としてはこれは大きな問題です。

今回のC4に参加して思ったのは、たくさんのネタが披露されて参考になったということと、それと同時にeToyの可能性が以前にも増して感じられるようになったこと。もう少し背後の考え方についても伺いたかったのですが時間がなくて残念でした。ともあれ発表された皆様、本当におつかれさまでした。とてもためになりました。

夜行バス

ニュースを読んで何となく。

私にとって夜行バスでなんとかしてほしいのはにおいです。明るさはアイマスクでなんとかなりますし、騒音は耳栓でなんとかなります。でも臭いのはどうにもならないのです。

以前、新宿から福岡までの夜行バスに乗ったとき、後ろのおじさんの加齢臭が人並み以上でした。「ぷーん」と漂ってくるものから逃げようもありません。そのにおいに耐えられずにずっと眠れませんでした。それ以後は、加齢臭アレルギーになってその手のにおいがすると気持ち悪くなってしまうほどです。まあ、自分がおっさんとなった今では他人のことも言えないようなにおいを発しているかもしれませんが。

座席を心地よくするのも結構なのですが、バスのような狭い空間でのにおいってどうにかならないものでしょうか。

マックスヘッドルーム

NHKの受信料徴収に関する報道を見るたびに、昔見たテレビ映画を思い出します。

http://www.hermitage.rdy.jp/max/episodes.html

どの回かは思い出せないのですが、テレビにオフスイッチをつけるのが重大な罪として扱われていました。

見るのはタダだけど消しちゃ駄目というのも、見ようが見まいが金払えというのもどっちも悪質に思えます。

NT4.0のインストール

事情があってNT4.0 Workstationをインストールしようとしたのですが、XPではインストール用のフロッピーを作ろうとしたらwinnt32.exeを起動してもエラーになってしまいました。

XPではどうやっても駄目で、結局Windows 2000のマシンでフロッピーを作成できました。Vistaが出た今、まじめに移行を考えないとやばそうです。