Joy in Squeakをインストールしてみる。

https://propella.hatenablog.com/entries/2007/07/15 のJoy.csを試してみたくてインストールを試みました。まずは、手元にあるSqueak3.9のイメージで読み込んでみるとプログレスバーの途中でSyntax Error.

JoyMScanner Joy atomicSymbol
atomic Symbol Nothing more expected ->::\
ずらずら

あわてて2005Jのイメージで読み込んで見ても同じメッセージ。

もしやと思い、tinlizzie.org/olpcにあるolpc用?のイメージで読み込んでみたらエラーなしでうまくいきました。

使ったのは、etoys-dev-2.0-1460.zip(latestのもの)で、VMはMac OS X用のSqueak VM070309J(たぶんほかのでもOK)でした。

起動はJoy.csの先頭に書かれているように、JoyShell openをdo itします。すると、上下3ペインにわかれたウィンドウが現れ、一番上のペインにある式を適当に選んでdo itします。真ん中の画面には実行中のトレースがぐりぐりと表示され、一番下の1行ペインにはその時点でのスタックの状態が表示されます。

動いている様子が直にわかってとても楽しいですね。授業でもJoyの実演をしていたので今後はこっちを利用させてもらおうと思います。山宮さん公開ありがとうございました。

実は私もJoyを一部実装していたのですが、かなり手を抜いていたものでもあるので、方針を変えて別のアプローチを模索しようと思います。

まあ、夏休みの自由研究ということで。

P.S.

ひとつの問題はうちのMacではマウスカーソルがばかでかいこと。小さくする方法はあるのでしょうか。

Microsoft Small Business Server 2003R2

わけあって先月SBS Serverのプリインストール済みのDell PCがうちに送られてきたのですが、ずっと放ったらかしにしとくのも限界が来て昨日ようやく梱包を開けてみました。

PC関係のパーツは最小限しか入っていないのは良いのですが、冊子のたぐいが山ほどあってどれから手をつけていいかよくわかりません。

・はじめに

・重要情報

・重要情報 – Microsoft Windows OSの最新アップデートのダウンロード

・サーバ製品設置場所登録変更について

・Microsoftディスクの管理ユーティリティによるソフトウェアRAID

・ファーストステップガイド

・品質保証規程

・MICROSOFT WINDOWS SMALL BUSINESS SERVER 2003 STANDARD EDITION, PREMIUM EDITIONのクライアント・ライセンス

・Read Me First

・ユーザークライアントアクセスライセンス数:5

・製品情報ガイド

・サービス&サポートのご案内

・Dell PowerEdge SC440 System Information Update

・Dell SAS 5i/R Integrated/アダプタ ユーザーズガイド

・Software Quick Installation Guide

・DELL SOFTWARE LICENSE AGREEMENT

・この他、CD入れが7つ。

同根されているはずのSQL Serverをインストールしたかったのですが、どうやるのか上記資料では見つかりませんでした。

結局、適当に選んだCD(プレミアムテクノロジ Disc1)を挿入したらその中にSQL Serverのインストールプログラムが入っていました。

整理されてない情報を一方的に押し付けられると腹が立ちます。

Cincom SmalltalkとSqueak Smalltalk

学生さんにSmalltalk/80の処理系を選びなさいと言ったら、皆さんCincomを選ばれたので、私も数年ぶりにCincom Smalltalk(旧Visual works)を使いました。

最初は大した違いはなかろうとタカをくくっていたのですが、学生さんへのプログラミング上のアドバイスがことごとく外れ、「Transcript show: 15 asString.」すら思うように動かせないことを悟るにあたってかなり愕然としました。(printStringにすればいいと後でわかりました)

実は、かつて、Visual Worksがメインであって多少の仕事もしていました。Squeakが面白そうだなぁと思って移ってきたときにはMorphでかなり戸惑ったのを今でも思えています。しかし、今やすっかりSqueakが身体に染みついてしまったようで、その状況も逆転してしまいました。

Squeakの画面を開くとホッとするのも不思議な感じです。

おかしくならない…

Squeakを使ったデモにて。

「Smalltalk/80のクラスブラウザは強力で基本的な変更をシステムに加えることもできるんだ」

「ほらほら*メソッドがいつでも1を返すようにしたらどうなるかな~?」

「あれれ何にも起こらない(汗)。100*100はどうだ?10000がかえってくるぞ」

「おっと間違えた。Integerをいじっちゃったよ(汗汗)。SmallIntegerを上書きするんだった。」

「あれれやっぱり100*100が10000がかえすよ~」

直接バイトコードに変換されちゃうんですね~。

一発でとどめをさすのは結構難しいです。

IIEN.Y

昨日はIIEN.Yという地域の交流ネットワークの総会に参加してきました。自分に関係する発表のサポートのつもりで行ったのですが、実際には何をすることもなくただの参加者として発表を聞いていました。

http://iien-y.net/yotei/detail.php?id=33

基調講演は広島5:01クラブの西出さんによるものでした。5:01クラブとは何か全く知りませんでしたが、なかなか興味深いネットワークであると思いました。

http://www.cnbc.or.jp/02activity/05club/index.html

西出さんの話しかたはリズム・テンポが良く、プレゼンも的をついた内容で引き込まれるように聞いてしまい時のたつのを忘れるほどでした。

また、岩手ネットワークシステム(INS)の清水さんの発表は、冗談を交えた話しぶりの中に強い問題意識を持っていることや今までの実績に対する誇りのようなものを感じました。「い(I)つも飲(N)んで騒(S)ぐ会」だとおっしゃられていましたが、現状を改善しようという意気込みが20年近くも長く続いてきて実際の結果も出されているのは素晴らしいことです。

http://www.ins.ccrd.iwate-u.ac.jp/

翻って自分たちのネットワークを見てみると、まだまだ交流が板についたとは言えず総会の参加者も毎回減る一方です。これでは産学官の交流を深めるどころか、失敗の思い出だけが積もっていきそうな感じです。

いろいろと考えさせられた一日でした。

2007-06-21

このところ恐ろしく多忙で自分の仕事が何にもできない状態です。(仮払いの請求書書きがやっと…)

とはいうもののたまる一方のストレス解消に買ってしまいました。rx4540

以前友人のを見て「欲しい」と思ったので購入したのですが久しぶりのCE?マシンでいろんな事情がよくわかりません。

まあ、本業がめちゃ忙しいし会議の時にでもボチボチとやっていこうと思っています。

JoyでFizzBuzz(3)

もう少し整理してみました。

DEFINE
roll4 == swap [swap [swap] dip] dip;
mkifte == [unitlist swap] dip unitlist swap;
fbq == roll4 [rem 0 =] dip mkifte ifte;
fbnum == dup 15 "FizzBuzz"
[dup 3 "Fizz"
[dup 5 "Buzz" [dup] fbq]
fbq]
fbq popd;
fblist == [fbnum] map;
interval == swap [<=]
[pop [] cons]
[dup [swap] dip succ]
[cons]
linrec.

実際のところ(2)も(3)もgcが動き出すのでリソース使い過ぎなのでしょう(dip依存症)。最初のはそんなことありません。

いっさい代入せずにスタック操作だけでプログラムを作ると「変数、代入」の便利さがよくわかります。

JoyでFizzBuzz(2)

少しパワーアップしました。

DEFINE rem2 == swap [integer] [swap rem 0 =] [pop pop false] ifte;
lst == [] cons;
fbq == [dup] dipd [rem2] dip [lst swap lst] dip lst swap ifte;
fbnum == 15 "FizzBuzz" fbq
3 "Fizz" fbq
5 "Buzz" fbq;
fblist == [fbnum] map;
interval == swap [<=]
[pop [] cons]
[dup [swap] dip succ]
[cons]
linrec.

lstは何か他にありそう。rem2はあざとい?でもfbnumはスタックいじってる感が出ているような。

JoyでFizzBuzz

ぜんぜんJoyっぽくないんですが手習い中ということで…

DEFINE fizz == 3 rem 0 =;
buzz == 5 rem 0 =;
fizzbuzz == 15 rem 0 =;
fbnum == [fizzbuzz]
[pop "FizzBuzz"]
[ [fizz]
[pop "Fizz"]
[ [buzz]
[pop "Buzz"]
[]
ifte]
ifte]
ifte;
fblist == [fbnum] map;
interval == swap [<=]
[pop [] cons]
[dup [swap] dip succ]
[cons]
linrec.

こんな感じです。(だっさー)。苦労したのはinterval。他に見るべきものはないですね。

1 100 interval fblist.
[1 2 "Fizz" 4 "Buzz" "Fizz" 7 8 "Fizz" "Buzz" 11 "Fizz" 13 14 "FizzBuzz" 16 17 "Fizz" 19 "Buzz" "Fizz" 22 23 "Fizz" "Buzz" 26 "Fizz" 28 29 "FizzBuzz" 31 32 "Fizz" 34 "Buzz" "Fizz" 37 38 "Fizz" "Buzz" 41 "Fizz" 43 44 "FizzBuzz" 46 47 "Fizz" 49 "Buzz" "Fizz" 52 53 "Fizz" "Buzz" 56 "Fizz" 58 59 "FizzBuzz" 61 62 "Fizz" 64 "Buzz" "Fizz" 67 68 "Fizz" "Buzz" 71 "Fizz" 73 74 "FizzBuzz" 76 77 "Fizz" 79 "Buzz" "Fizz" 82 83 "Fizz" "Buzz" 86 "Fizz" 88 89 "FizzBuzz" 91 92 "Fizz" 94 "Buzz" "Fizz" 97 98 "Fizz" "Buzz"]

もうちょっと、らしくしないと。

高層マンション

しばらくぶりに東京へ。千歳烏山に用事があって出かけたのですが周囲のいろんなところに高層マンションが出来ているのに驚きました。といっても山梨でさえ増えているのですから珍しいことではないのでしょうが。

高層マンションで不思議なのはゴミの始末です。うちは小さな集合住宅ですがゴミはそれなりに出ます。高層マンションだと住居も多いのでかなりのゴミが出そうです。1日にいったいどの位のゴミがでるのかわかりませんが単純に外挿しただけでも多そうです。

普段は処理業者の人が来て持っていってくれるのでしょうが、災害の時なんかどうなるんでしょう。そういえば下の処理も大変そうです。「イザというとき食べ物は2、3日すれば支援物資が届くが、下の処理は1週間くらい覚悟しとかないと生活するのが大変になる」なんてことを誰かが言っていたような記憶があるのですが、マンションの大量のゴミも生活する上では厄介なことになるんじゃないでしょうか。

まあ、「きっと最近の住宅は進歩してゴミや下の処理も考えてあるんだろうな~」なんて、信号待ちで高層マンションを見ながらボケーっと考えていました。