「Lem さんによる、Morphic 奮闘記」に対するぼけ・つっこみ
> お絵かきツールで遊びながらプログラミングを学んで、飽きたらない人はちゃんとバックにSmalltalkが□
前にもちょろっと書いたのですが、タイルスクリプティング・システムっていうのは風変わりな(大胆なデフォルメの) Self の実装だから、Smallalk とはあんまし関係ないんですよね…。実は(笑)。 で、やはりこれも書きましたが、タイルスクリプティングから Smalltalk プログラミングへのまたひとつ越えていただかなければならない壁があると。 Lem さんは、これを一気に飛び越える脚力をお持ちのようで…うらやましいやら驚くやら(笑)。--sumim
> この黄色の楕円モルフは一体なんて名前なんだ?□
そこいらへんの適当なオブジェクトを捕まえるのは簡単なのですが、きっと存在するはずの(もしくは、今、目に見えているそれ。たとえば MVC フレームワーク GUI 時代のウインドウとか)を狙い定めてガシッと捕まえてどうこうするのって難しいですよね。もしかして私が知らないだけかも知れませんが…。結局、allInstances とかから特徴で抽出するしかない。
- そりゃあ、アクティブにしておいて、ユーザインタラプトでイチコロですよ。--abee
- がーん。でも、まあ、そうするのが手っ取り早いですよね。オブジェクトたちと戯れているとアイデンティティとはなにかを考えさせられます(笑)。--sumim
- アクティブとかユーザーインタラプトというのがわかりません。簡単に説明できることだったら教えていただけませんか。--Lem
- ああ。これは一昔前に Morphic がまだ開発途上で使えなくて、昔の Smalltalk-80 からある枠組み(MVC フレームワーク)を使っていた時代の話です。このころは、Morphic の モルフ(視覚化されたオブジェクト)やハロ(モルフに対してできる操作の一覧)のような便利な仕組みがありませんでした。そこで、私が申し上げたように allInstances のようなものを使って特徴から抽出するしかなかったわけです。しかし阿部さんのご指摘のとおり、ウインドウのように視覚化され制御を受け付けるものならクリックして“アクティブ”にしてコマンド(Win では alt) + ピリオドで“ユーザーインタラプト”をかけると、対象になるオブジェクトが何らかのかたちで関わるメッセージの送信局面を捕まえられる…ということです。Morphicでは、1) アクティブという概念が希薄(というより「アクティブでない」という概念が希薄)なので仮にユーザーインタラプトをかけても見ているオブジェクト(へ)のメッセージ送信局面を捉えることができるかといえばそれは難しいこと。また、2) 灰ハロで inspect this morph すれば済む。という理由から私はあまり使いません。--sumim
- MVCの場合、ControlManagerのインスタンスであるグローバル変数ScheduledControllersが、複数のウィンドウ間の制御を司っています。このとき、表示順と制御順が一致しているので、ユーザインタラプトのような野蛮な方法が使えます。もうすこし、洗練された方法としては、「ScheduledControllers activeController model」という式を評価しても同じ結果が得られます。(MVC時代は、黄ボタンメニューに「inspect」を追加したものです)
Morphicの場合、表示順と制御順は必ずしも一致しませんが、PasteUpMorphのインスタンスであるグローバル変数Worldの、インスタンス変数submorphsの格納順が表示順と一致するため、「World firstSubmorph」を評価することで、最前面のMorphのインスタンスを得ることができます。--abee
- sumim さん abee さんありがとうございました。少し試してみたらなにやら出てきました。あまり理解はしてないとおもうけど。しかし、アイデンティティとは何かということを考えさせられるというのは、ほんとにつくづく思いました。なんだか哲学的な気分にさせられましたもん(笑)--Lem
それとちょっと似ているか、もしかしたら全然違う次元の話かもしれませんけど、オブジェクトの世界で視界とか視野とかみたいなもの、たとえば飛行機のオブジェクトが3次元(ま、2次元でもいいんですが)空間を飛んでいて、前に別の飛行機が“見える”から回避しないとっ、みたいなものをどうやって表現したらいいのかなぁ…なんてちょっと考えあぐんでいたりします。--sumim
- 「神様の視点」を使わないのなら、「光」とか「電波」の反射を使うとか。自機に先行した「センサ」を仕掛けておき、これが他機に接触したかどうかを判定するのも面白いかも。--abee
- センサならぬ視界オブジェクトあたりが、よい落としどころでしょうか…。互いの存在を知らなくとも影響を及ぼし合うというモデルは自然界にはよくあるけど、オブジェクトの世界にはなじまないですね(やはり神はいるのだろうか…(笑))。そういえば、全然関係ないですけど新説では脳細胞はデムパ…じゃなくて電波でも通信しているらしいですね(^_^;)。--sumim
>初心者に進化した差なんかわかるんかいな。□
どちらかというと、逆でしょうね。進化・整備された結果を知らず知らずのうちに享受することで、初心者は論理的思考や学習自体に専念できる、と。 たとえば、昨夜、サーバの仕様を変更するときに、私(やはり Smalltalk 入門中…)が小一時間ハマった問題があります。本に収められたページを取り出して処理をほどこしたかったのですが、ページ一枚だけとりだして処理するときは平気なのに、複数のページを処理しようとすると論理的でない謎の事態が引き起こされる。 まったく同じコードを使っているのに…ですよ!? 他のプログラミング・スクリプティング言語を使うときは、こういうことは多いので特に驚きもせず対症療法的解決を図ってさっさとその場を立ち去るのが常なのですが、こと Smalltalk に関して言えば、そうした理不尽さを強要される経験は数えるほどしかありません。そこで、時間をかけて解決しようとしてしまいます。結論から言えば、これはブロックというオブジェクトの仕様が古く不完全であるがゆえの典型的な障害例であることに最終的に思い至り、無事、解決を図ることができました。もし、VisualWorks で同じ作業をしていたならば、こうした“無意味な”格闘をする必要はなかったのでしょう。きっと。Smalltalker たちはそういうことを言いたいのだろうと私は想像しています。--sumim
> あれほど探していた楕円モルフの名前が出てきた□
先にも述べましたとおりオブジェクトは基本的に名札を下げてはいないので(仮に名札付きでも、それを知ることができたときにはもう捕まえることができている…罠(^_^;))、これはお探しになっていたであろう“名前”ではありません。ドロップインと同時に Workspace が勝手に付けた Workspace のみが知る便宜的なものです。ですから、この“名前”をコピーして別の場所にペーストして評価しようとしてもエラーになります。
>新しいページの削除お願いします。
ページには 32 キロバイトまで収めることができますので、この手の文書の場合、詰め込んでしまったほうがよいと思います。そっちのほうがプリンタ・フレンドリですし。ページの削除はできませんので、ページの作成は慎重にお願いします(笑)。--sumim
- お手数をおかけして申し訳ありませんでした(汗)そうですよねえ、削除も自由にできちゃったらめちゃくちゃになりますよね。以後気をつけます。--Lem
- いえいえ。まあ、気楽になさってください。もし、Swiki システム自体に興味があったり、どんな風になるのかなぁ…といった実験をしたくなったら、遊び場をそれ用に用意していますので、こちらで思う存分試してみてください。こちらなら、多少、ページが増えても構いません。--sumim
>楕円モルフが前に進んだ!!!□
いよいよ佳境に入ってきましたね…。クライマックスが楽しみです。--sumim
>あきれるかもしれないけど□
あきれませんって(^_^;)。--sumim
>困ったときの「なんちゃってSqueak」だ□
気分転換に名称を変えました。「Squab Squeaker's Swiki」。さ茂さんのところと有名書籍タイトルとかぶりますが、愛称は「SquSquSwiki」ということで(^_^;)。--sumim
このページを編集 (7296 bytes)
|
以下の 1 ページから参照されています。 |
This page has been visited 3478 times.