こんな妄想沸いてきます。--kenkSmalltalkの世界にはオブジェクトしかありません。3)の配列も、クラスも、メソッドも、モーフも、プレイヤも、ビューワも、ハロも、ワールドもみんなオブジェクトです。そのなかに「なにもないこと」を表すためのオブジェクトがあります。なにもないのだから、なにもなくてよいような気もしますが、Smalltalkの世界にはオブジェクトしかないので、なにもないこともオブジェクトでなければならないのです。Smalltalkで新しい変数を定義すると、それにはnilが入ります。それでは、SqueakToysの場合はどうかというと、SqueakToysの世界は原則としてモーフだけで構成されているので(実際はプレイヤなどが介在するわけですが)、なにもないことも当然モーフになります。ドットは普段は隠れていますが、タイルの引数の初期値として現れることもあります。ひょんなことから、ワールドに登場することもあります。空のスタックをポップしたときに出てくるのもこいつです。お茶目といえばお茶目なのですが、SqueakToysの詰めが甘いところのひとつかもしれません。nilくんってことで)のかわりというのは面白いですね。いえばいつも画面の左下にとうじょうしてましたっけ。pmSqueakで遊ぶ方法としておいら的には1)SqueakToysを使ってシンプルに遊ぶ。2)SqueakToysを使ってどこまでも複雑になってもそれでも遊ぶ(スピードも遅くなる)3)SqueakToysからSmalltalkを呼び出して遊ぶ。4)MorphのClassを作ってSqueakToysからそれを使って遊ぶ。(あくまでもSqueakToysにこだわるおいら)5)WorkSpaceで簡単なソースコードでSmalltalkを使って遊ぶ。両面からちょっとづつ攻めていくのもなかなか興味深そう。1)の”SqueakToysを使ってシンプルに遊ぶ”で1つの機能をどのように解釈するかとか何に使うのかという発想(受け売りだけど)あたりがやっぱり面白いかと。pmkenkさん、お疲れ様でした。SqueakToysではスクリプトに閉じた局所変数(引数変数を含む)が作れないのが大変さの原因だったと思います。仕組みの上からは再帰可能なスクリプトは書けない筈なのですが、kenkさんが試みられた様に、状態を外に出して、それにアクセスすることで実現することが可能です。これは大域変数しか持てない構造化以前のBASICなどで使われていたテクニックで、さすがはkenkさんという感じです。SqueakToysが現代版のLOGOとして作られたことは明白だと思います。それなのに、なぜ再帰を書けなく(書き辛く)してしまったのかはよく分かりません。thoruさんも書かれていますが、Smalltalk版のdragonを見ても分かるように本来再帰はシンプルで美しいものです。これはコンピュータリテラシーには欠かせないもののような気がします。やっておりまして無理筋だとの感じが強いかったです。シンプルにかけるものをわざわざごてごて組み上げるわけですから。thoruさんがやられたようSqueakToysのPlayerを入れ物として、オブジェクトとは無関係なSmalltalkのコードかけば、ToysからSmalltalkよびだしていることになります。Workspaceの代わりに使えますし、保存が出来、整理するのも便利です。逆にSqueakでオブジェクト作り、仕上げを、viewerを出してやるのも便利なことあります。個人的にはあまり意識しないで使って行こうとおもっております。SqueakToysとしては何か一線があるような気がします。?--kenk1970年代の終わりにアラン・ケイがPARCを去ることになったのは、子供たちがSmalltalkを使わなくなったからだと言われています。研究者たちはSmalltalkの潜在力に魅せられて、その高度化と洗練に熱中するのですが、その一方で、複雑化したSmalltalkは子供たちの手に負えなくなってしまった訳です。アラン・ケイは皆をキャンプに連れ出し、成果物の入ったディスクパックを燃やしてしまおうとアジるのですが、もう付いて来る者はいなかったという話です。SqueakToysにはこの轍を踏まないようにという配慮が随所に見られるのですが、その「線引き」の意図に分からない点があるのも事実です。--abeeやっぱ、いい話です。pmkenkさん>dragonカーブ完成おめでとうございます。abeeさんの入れ物のアイデアとの合体大変美しかったです。おいらはやっとドラゴン曲線がどのような仕組みかがやっと理解でき始めたあたりです。本来けっこうシンプルなコードになるものらしいですがSqueakToysだとdragonスクリプトに引数をつかえないってのがポイントだったのではと想像してます。試したけど失敗してました。am>>先日dragon(Penクラスのデモ)と言う模様描くメソド思い出しまして、abeeさんの作品参考にSqueakToysでトライしました。考え方はわかりましたが、フリーズしてしまい失敗でした。原因不明ですが深追いできません。うまくいったらUPLOADしたかったのですが。何かご存知の方、コメントください。10]こうゆうのはどうですか?(WorkSpaceでだけど)--thoruSqueakToysで楕円をボタンにして(マウスアップで実行)上のコードを書いて実験したらうまくいったです。それからkenkさんが具体的にどうしたらうまく行かなかったのか教えていただければ、いろいろ考えることが出来るし僕としては参考になるです。(解明はきっとabeeさんがしてくれそう・・・こらこら!)よろしくです。--thoruもしかしてdragonメソッドを使わずにSqueakToysのみでの挑戦だったのかしら?--thoruはいSqueakToysだけでのトライです。多角形をmyPenと命名、引数をインスタント変数にわりあてまして、dragonのソースをみながらつくりました。タイルいれますとフリーズしてしまいます。これを入れないと動くのは動きますがへんなうごきです(再現性あり)。仕事場に置いておきます。病人ですのでご注意ください。--kenk再帰するためには、引数をスタックみたいなものに入れておく必要がありますね。単純にインスタント変数を使っておりました。abeeさんの見本再読してみます。とちり病は私みたいですね。--kenk引数の設定を変えたらフリーズはしなくなりました。までは見かけうまく行きました。再帰の考えかたが間違っておりました。2がうまく行かないのは、dragon:1が正確でないためとかんがえます。あとは理屈の世界ですのでトライしてみます。thoruさんお手数かけました。報告をかねてUploadしたいと思っております。途中の経過は仕事場に置きます。--kenk一応、後を追っかけてますが、解決方法は闇の中です。dragonを僕もよく理解してないからですけどね。(汗)kenkさんが解決できるよう応援させていただきます。(応援だけか〜い)kenkさんのプロジェクトをいろいろいじっているうちに再帰というのがなかなかの癖ものだということがわかってきてます。Uploadしました。dragon:2がうまくいかなかったので、dragonの前後にカウンターいれて調べましたら、回数は再帰の回数で回っておりました。結果のカーブを観察、引数の問題と絞り込みました。再帰の深さと、引数をカーソルに対応させ(阿部さんのをいただき)、やったらうまくいきました。再帰のtreeを紙上でトレースしたりしましたが、最後はSmalltalkのカーブと比較しました。12までは確認しました。他の再帰問題でも確認する必要ありますが、当分再帰の顔見たくありません。thoruさんの応援有難うございました。きめるパラメータとして、XYの座標を用いたものと、時間を用いたものを混用しております。表示はXY、そして時間、これとr、g、bをどうくみあわせるか、「いろいろ」あると思います。使うほうも、デジタル時計の文字を時間でかえるとか、アナログ時計の針の先の色を座標で変えるとか「いろいろ」つかえそうです。私は楕円とか、多角形にいろのメソドを加えたもの等を、自分用のパーツ用のフラップにいれて使用しております。--kenkSqueakToysはプロトタイプベース(インスタンスベース)の環境なので、その環境内で使う限り、新しいサブクラスを作ることができません。kenkさんが行われたのは「プロトタイプを作った」と言うことになります。Smalltalkのようなクラスベースの環境では、同一のクラスの個々のインスタンスに異なる振る舞いを与えることができませんが、プロトタイプベースの環境ではこれができます(同じ楕円でも異なるスクリプトを持てる)。クラスベースではインスタンスを生成して作るのに対して、プロトタイプベースではプロトタイプを複製して作るところも異なります。Squeakの場合、SmalltalkとSqueakToysという異なる考えが同居しており、それらが必ずしもきれいに統合されていません。これが面白い点でもあり、混乱するところでもあります。クラスベースとプロトタイプベースについては、鷲見さんのSwikiで議論されているので、参考にされるとよいと思います。--abeeSqeakToysからSmalltalkへのグラデーションはここも超わかりやすかったです。(これまたsumimさん)具体的だし、ステップバイステップで超ありがたいです。い世SqueakToysなんだよなあ。ここからSmalltalkのメソッドにアクセスすればけっこう遊べるし。-thoruabeeさん、thoruさん有難うございました。はじめはインスタンス変数知りませんでしたし、スクリプトもタイルなっているものしか使えないと思い込んでいました。playerとやらのインスタンスをいじっているのだなと思っておりました。インスタンス変数使える、スクリプト追加できると便利になりましたがこの辺からSmalltalkとの混乱が始まっていたようです。昔々Smalltalk/?にチャレンジ、半年で撤退(たたき出されること)した経験ありますので、悪夢の断片が残っているようです。関係、イメージ(都合のいい言葉です)なんとなく分かってきました。体力不足ですので「感じニァリング」で先ずはやります。pmてんとう虫おもしろかったです。カラーチェンジ使ってましたね!忍者はスクリプトだけ見たときは??でしたが、わかってみればなるほどでし。ゆうときにこれに気づいたのか興味津々です。--thoru虫7匹動かしていましたら、どうひいきめに見てもゴキブリゾロゾロです。なにかかわった芸やるのおいれようとして、前なら乱数を発生させとくるところでっすが、知恵がついたのですね。thoruさんの回転軸ずらし、私は重心ずらしと理解しておりますが、何か変わった行動とるのだろうとやってみましたら、やりました。ゴキブリに似てきました。題名に偽りありですね。ほかにも目的以外の性質利用できそうです。「をその方向に動す」ありますね。このときその方向は、回転軸です。離れたところにおびき寄せことできそうです。SqueakToysでは”目的以外の性質の利用”で可能性がぐ〜んとひろがりそうですね!!個人的にもこれって大好きな世界です。--thoruスピイカーのない機械で作りました。別の機械でテストしましたらあまり騒々しさにびっくり、「しーん」に修正しました。