1 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 16:47:13 ] 全然スレ立たないけどみんな興味無いの? いっしょに遊びましょ♪
91 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 04:59:12 ] 最新Squeak(英語版)をGetして実行したら、Package Browserを発見。 ここに列挙されたclassが全部実装されているかと思うと喚起雀躍。 さっそくSqueakからtelnetしたいと思った。 Package BrowserからTelnetMachineというclass発見。そこで、 host := TelnetMachine new. をdo it。->Error:UndefinedObject cannot be changed どんなもんでもinstanceになるわけではないのか..。 テキスト「自由自在Squeakプログラミング」登場。 morph2 := Morph new openInWorld. 同じエラーメッセージが出た。そもそも考え方が違うってか。
92 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 05:24:30 ] テキストの一行だけをコピペってたからダメだったんだろうか。 全部で、たった3行だし真面目に入れるか。 "do it" うんともすんとも言わなくなってしまった。タスクマネージャも ユーザタブから変更が効かない。止む無くリブート。(Win2k) もう寝ろ、と言っていたのかも知れない。
93 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 11:17:05 ] >>91 TelnetMachine はともかく、Morph がエラーになるのはなにかおかしいですね。 (
94 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 11:27:38 ] >>91 ちなみに TelnetMachine は TelnetMachine open の do it (alt/cmd + d) で ウインドウが開きます。TelnetMachine class >> #open の定義は、ブラウザの 上段第2ペイン下の class ボタンを押して切り替えることで見ることができます。
95 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 11:34:19 ] >>92 とりあえず、3 + 4 とかの print it (alt/cmd + p) は出来ていますか?
96 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 11:36:17 ] >>95 あ、win2k なら alt + p ですね。念のため。(cmd は Mac ユーザー向け)
97 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 16:20:13 ] >squeakを知りたい。きっとこれは素晴らしいものだと感じている。 実はSqueakには2つのシステムがあって、1つは「Smalltalk」。 もう1つは、Smalltalkの上にある「SqueakToys」。子供たちが 使っているのはSqueakToysの方です。Squeakで素晴らしい、 すごいと言えるのはSmalltalkというシステムの方だと思います。 >smalltalkなんか教えるより 誤解じゃないかな。Smalltalkは教えていないと思います。
98 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:20:45 ] >>94 > ちなみに TelnetMachine は TelnetMachine open たしかにopenで成功しました。そこで質問ですが、 ・なぜ「open」という存在を知っていたのか、 ・それがインスタンスでなくてクラスである理由 は なんでしょうか?判る範囲で構いませんのでゼヒ。 ちなみに、Morphにおける「new」というメソッドはMorphでも、そのSuperclassである ObjectでもさらにそのSuperclassであるProtoObjectでも定義されていないんですが、 なぜ有効なんでしょう。
99 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:23:44 ] >>95 > とりあえず、3 + 4 とかの print it (alt/cmd + p) は出来ていますか? 7になりますね。 再起動後は問題ないです。「morph2 := Morph new openInWorld. 」も成功します。 コードをいじっているんだから頻繁に停止したり、そのために再起動することに なるのは別に珍しくないような気もしますが。
100 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:30:33 ] TelnetMachine open. の do itで作成したオブジェクトにWorkspaceから メッセージを送る方法はありますか? 表示されたobject(ウィンドウ)のハローを表示してインスペクタでselfを みるとオブジェクトIDっぽい数字「a SystemWindow(3652)」が現れるんですが、 この数字を介してメッセージの送信は可能でしょうか。
101 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 01:13:43 ] >>98 > ・なぜ「open」という存在を知っていたのか、 知りませんでした。が、クラスメソッドで見つけました。 > ・それがインスタンスでなくてクラスである理由 いろいろと複雑な事情がありますが、簡単にいえば単なる慣習です。 MVC でいうところの M(モデル)の属するクラスのクラスメソッドに V や C を担当する クラスと関連付けをする作業を定義することをよくします。 > ちなみに、Morphにおける「new」というメソッドは > なぜ有効なんでしょう。 #new は Behavior に定義されています。 Morph はクラスですが、自身もインスタンスです。属するクラスは無名ですが、 便宜的に Morph class と呼称します。いわゆるメタクラスというやつです。 メタクラスのスーパークラスパスは、原則としてそのインスタンスである クラスのスーパークラスパスと同じです。したがって、Morph class の スーパークラスをたどると ProtoObject class に行き着きます。 ProtoObject class は ProtoObject と違って、さらにスーパークラスがあります。 それが、Class です。そこからは普通に ClassDescription、Behavior とたどることができます。 | superclass | World findATranscript: nil. superclass := Morph class superclass. [superclass isNil] whileFalse: [ Transcript cr; show: superclass. superclass := superclass superclass] 余談ですが、このスクリプトの全角スペースをタブに置き換えるには、 最初の全角スペースを削除してタブをタイプした後、alt + shift + j としてみてください。 again という機能です。
102 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 01:26:42 ] >>100 インスペクタの左側のペインで model をダブルクリックしてください。 新しいインスペクタが現れて、これのインスペクタワークスペース(下のペイン)で self に束縛した a TelnetMachine にメッセージを投げれます。 そんなことをせずとも元のインスペクタのインスペクタワークスペースで model に対して メッセージを送ってもよいでしょう。 どうしてもワークスペースを使いたい(例えば、ワークスペース変数が好き、とかの) 理由があるならば、グローバル変数に model を束縛しておくという手もあります。 Smalltalk at: #MYTELNET put: model これで、ワークスペースからでも MYTELNET でアクセスできます。
103 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 01:31:41 ] >>102 どうして model に a TelnetMachine が束縛されているのをしっているのか? という質問がきそうなので先に答えておくと、それは、TelnetMachine class >> #open の定義をざっと見たからです。
104 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 02:06:50 ] あと、メソッド名が分かっている場合、たとえば今の場合 #new なら、new を (必要ならタイプして入力して)選択した後、browse it (alt + b) か、 implementors of it (alt + m) すれば、定義をブラウズできます。 もちろん同名メソッドがあったり、オーバーライドされている場合は、 適切なクラスを探さないといけませんが…。クラスが分かっているなら 後述のプロトコルブラウザを活用したほうがよいでしょう。 メソッド名の一部しか分からない場合は、その文字列を選択して selectors containing it (alt + shift + W) をします。 メソッドの機能しか分からないときはメソッドファインダが便利です。 (デスクトップメニュー → open... → method finder で起動) <<レシーバ>>. <<第一パラメータ>>. <<第二パラメータ>>. …. <<返り値>> というようにレシーバ、パラメータ群、結果をピリオドで区切って入れると、 そういう結果を返してくるメソッドを列挙してくれます。 クラスの定義を見るのにシステムブラウザは有効ですが、あるオブジェクトが 起動可能なメソッド(受信可能なメッセージ)を一覧するのには向きません。 そういう目的にはプロトコルブラウザを使います。そのオブジェクトの属する クラスをシステムブラウザでブラウズしている状態で、クラスペインか、 メソッド名ペインにポインタを合わせて alt + p をタイプします。(あるいは、 黄ボタン=右クリック メニューから browse protocol を選択)
105 名前:98 mailto:sage [2006/05/07(日) 03:55:23 ] >>101-104 詳しい回答ありがとうございます。 簡単な質問ばかりして迷惑かけてそうなんで、疑問の解決は しばらく書籍に頼ってみようと思います。ちょうど、手元の本に メタクラスもメソッドファインダの話も載ってました。 (ゲームを実装する章だったんで飛ばしてた)
106 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 00:01:08 ] >>105 まあ、基本かどうかはあまり気にせず、悩んだときにはいつでもどうぞ。 Smalltalkは、コツがつかめるまでは、ささいな事でも人に訊いて解決するのが 一番ですから。
107 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 22:33:54 ] SqueakからXにウィンドウを表示させたりできるんですか? GTKでGUI作っているんですけど,これと同じことってSqueakでもできるのか気になります。 後,シェルスクリプトみたいにコマンドラインツールとしてSqueakを利用できるのですか?
108 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 22:48:52 ] >>107 X --> むりぽ(多分...) コマンドライン --> languagegame.org:8888/propella/88
109 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 23:03:51 ] >>108 > コマンドライン --> languagegame.org:8888/propella/88 Lisp見たいにソケット経由で式を評価する感じかなこれ。SqueakをOS起動時にデーモンとして動かして,接続毎に環境を作って動かせばシェルスクリプトっぽいもんとして使えそうな気が
110 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 23:27:23 ] どちらも GNU Smalltalk を使うと良いナリ。 JIT だから速いし、コマンドラインから使えるし、Tk で GUI 作れるし、クロージャもあるナリよ。 昔ちょっとインスコしただけだから保証は出来ないけどね。
111 名前:デフォルトの名無しさん [2006/05/11(木) 21:24:06 ] >107 wxSqueakがある。 www.wxsqueak.org/
112 名前:デフォルトの名無しさん [2006/05/11(木) 22:48:36 ] カッコいい! 使ってみよ
113 名前:デフォルトの名無しさん [2006/05/12(金) 14:38:40 ] >>84 >俺はsqueakを知りたい。きっとこれは素晴らしいものだと感じている。 >でも、どうすればいいのか検討もつかない。くもの糸はどこ? とりあえず。。。 佐々木かをりのwin-win 素敵な人に会いました、聞きました(アラン・ケイ) yamabuki.ewoman.co.jp/winwin/44ak/ Squeak について 〜Dynabook OS としての Squeak/Smalltalk 考〜 sumim.no-ip.com:8080/xemem/7 squeakの「何を」知りたいのですか?使い方?教え方?考え方?売り方?
114 名前:84 & 88 mailto:sage [2006/05/14(日) 01:57:29 ] >>113 >squeakの「何を」知りたいのですか?使い方?教え方?考え方?売り方? squeakを通して『オブジェクト(指向)』というものを知りたいのです。概念を体験したい。 BASICでアルゴリズム、プログラミムというもの、 MS-DOSでカーネルやシェル、そしてファイルシステム、 Cとアセンブラでプロセッサのアーキテクチャ、スタックやメモリモデル、 unixでハードウェアの(ファイルという)仮想化、ツールボックスアプローチ、システム管理、 MACやwindwosでユーザインタフェース。 いろんなものを学びました。今度は「オブジェクト指向」がターゲットです。 いつでも感性が「コレだ!」と告げるものを学んできました。今は「Squeak」がソレです。 まあ、趣味なんですが。
115 名前:デフォルトの名無しさん mailto:sage [2006/05/14(日) 02:04:47 ] オブジェクト指向なんて単なる hash と syntax sugar さ。 とりあえず workspace から色々弄ってみては? ↓こんな感じで。 ttp://squeak.qp.land.to/index.php?Workspace%A4%C7GO!
116 名前:デフォルトの名無しさん [2006/05/14(日) 03:40:08 ] それだけいろいろなものに触れてきた人が 自分で道を開けないなんて・・・ まさにローリングストーンだね
117 名前:114 mailto:sage [2006/05/14(日) 08:51:24 ] >>116 > それだけいろいろなものに触れてきた人が > 自分で道を開けないなんて・・・ コンピュータ暦10年以上。それぞれ数年懸けて身に着けました。 いつまでたっても要領は良くならない、生みの苦しみはなくならない。 でも関連する書籍やモノに触れて一年か二年くらいすると、あるとき突然啓示が来ますね。 カーニハンとかストールマンとかエイホとか、アラン・ケイとかは 違うんだろうな。 生きてるうちに理解できれば良しとしたいところですが、生まれるまでは 苦しいんです。(コンビ芸人の片方の名前を思い出せないくらいの苦しみ)
118 名前:114 mailto:sage [2006/05/14(日) 08:58:25 ] >>115 thnx。とっかかりもつかめてないんで なんでもwelcom。 辛気臭くなると叶わんし、低姿勢なのもストレス溜まる。もうROMる。
119 名前:デフォルトの名無しさん mailto:sage [2006/05/14(日) 10:53:15 ] Smalltalkイディオム www.sra.co.jp/people/aoki/SmalltalkIdioms/index.htm >もうROMる。 せっかくなので、いろいろ書いてください。気軽に。
120 名前:デフォルトの名無しさん mailto:sage [2006/05/14(日) 11:01:08 ] おっと、これも Happy Squeaking!! -オブジェクト指向再入門- www.ogis-ri.co.jp/otc/hiroba/technical/Squeak/squeak.html
121 名前:デフォルトの名無しさん mailto:sage [2006/05/17(水) 22:05:26 ] シンボルって何につかうんだろう。
122 名前:デフォルトの名無しさん mailto:sage [2006/05/17(水) 22:17:02 ] >>121 事故解決。固定文字列を定義するものらしい。 しかもシステムでユニークだそうだ。適当に書いてもバッティングしないんかしら。
123 名前:デフォルトの名無しさん mailto:sage [2006/05/18(木) 15:26:50 ] >>122 バッティング、即ち同一ですから。 新しいのをつくれば、シンボルテーブルに追加されます。
124 名前:デフォルトの名無しさん [2006/05/19(金) 00:00:51 ] みんなSqueakで何やってんだ?まさかメイン環境にしてるってこたないよな。
125 名前:デフォルトの名無しさん mailto:sage [2006/05/19(金) 01:14:36 ] >>124 しょっちゅう起動はするけれど、あんましたいしたことには使ってないなぁ…。 again が好きなので、短かい文章を書いたり、再構成の必要があるときの エディタ代わりかな。あと、広い意味での(数値だけじゃなく、数値列や文字列、 画像なんかも対象とする…)ちょっとした電卓代わり。たまに、幾何的な図が 欲しいときにタートルに描かせたりとか。
126 名前:デフォルトの名無しさん mailto:sage [2006/05/19(金) 17:21:01 ] インスコ作業で爆発的な満足感を得る。 その後、次のバージョンが出るまでねっとりとした放置プレイで愉悦。
127 名前:age mailto:age [2006/05/20(土) 01:46:21 ] 設計のパクリのネタ元になるかと思ったけど今イチ使いこなせない... 使えないおいらが悪いのかもしれないけどね なんつーかね、使いにくい訳よ、VisualStudioなんかと比べたら。 あとMacOSXのInterfaceBuilderみたいなGUIなビルダー(デザイナー?)が欲しい訳よ、おいら eToyをやればいいのかもしれんがあれは亀動かしたら次がよくわかんねーし なんか妙にCUI(?)に縛られてて気持ち悪い
128 名前:デフォルトの名無しさん mailto:sage [2006/05/20(土) 03:14:22 ] >>127 俺もまだろくに触れてないんだけど、その比較はちょっと違うと思う。 GUIとかCUIとかじゃなくて、オブジェクトがたまたまグラフィカルに見せることもあるし、 そうでないこともあって、「GUIの部品」みたいな概念はないんだと思う。 他言語のIDEみたいに見てると、不満ばかり持つんじゃないかな。 間違ってたら誰か訂正して。
129 名前:デフォルトの名無しさん mailto:sage [2006/05/20(土) 04:15:34 ] >>127 パクる目的なら、あえて慣れない場所でいつもの何かをどうやって作るか…ではなくて、 そこで新しく触れる手近なものたちがどんなふうに「メッセージング」というパラダイムのみで 実現されているのか…を調べるスタイルに接し方を変えてみたらどうでしょう? 例: - ウインドウやポップアップはどう実装され機能しているか? - テキストエディタは? テキストの入出力は? - do it でどうやって単なる文字列がコードとして評価されているのか? - コンパイラの仕組みは? デバッガの仕組みは? - ワークスペースやシステムブラウザ、ファイルリストなどのアプリの実装は? - クラスは? メソッドは? 継承機構は? あとは、ライブラリ内に潜って、デザインパターンの実例を探してみる…とか。 その前に、キーとなる「メッセージング」というメンタルモデルのほうは大丈夫でしょうか?
130 名前:デフォルトの名無しさん mailto:age [2006/05/20(土) 07:29:41 ] これダウンロードしてインストールしたけど そっから先、どうしていいかわかんない
131 名前:デフォルトの名無しさん mailto:sage [2006/05/20(土) 09:50:13 ] >>130 大丈夫、わからんのは俺も一緒。一人じゃない。よかったね。
132 名前:デフォルトの名無しさん mailto:sage [2006/05/20(土) 10:47:49 ] >>130 - ドラッグ&ドロップでプログラミングをする eToys と、 - メッセージングでプログラミングをする Smalltalk 、 どちらに興味がありま万か? 前者なら 1. 画面の下にある「ナビゲータ(Navigator)」タブから、刷毛ボタンでペイントツール起動。 2. 適当な絵を描いて(あまり凝ったものにはしないこと)「ほぞん(Keep)」 3. 絵を、Mac ならコマンド(以下、cmd)キーを、それ以外なら alt を押しながらクリックして選択。 4. 現れるボタン群から左中央の目玉をクリックして、ビューワを起動(画面左側に現れる)。 5. ビューワから [スケッチ][を回す:][5](または、[sketch][turn:][5])をデスクトップにドラッグ&ドロップ。 6. 現れたスクリプトパネルの時計ボタンをクリックしてプログラムを実行… というようにするととりあえず遊べます。さらに詳しく知りたければ、 squeakland.jp/sqsqsqueak/ などを参考にしてみてください。 後者(Smalltalk に興味…)なら、とりあえずは、 1. デスクトップをクリックしてメニューを呼び出し。 1'. もし無反応なら、デスクトップを ctrl クリック →「デスクトップメニュー…(desktop menu...)」 2. 「開く…(open...)」→「ワークスペース(workspase)」を選択。 3. 書き捨てのメモ帳(シンプルなウインドウ)が開くので、そこで 3 + 4 とタイプして入力。 4. 右クリック(Mac では option クリック)でメニューから print it (p) を選択して結果の 7 を確認… というようにして遊べます。3 + 4 の代わりに 100 factorial などの Smalltalk 式が試せます。 分からないことは、些細なことだと思っても、自力で解決しようとせず、どんどん訊いてください。
133 名前:デフォルトの名無しさん [2006/05/23(火) 22:50:34 ] ウィンドウのデフォルトサイズの変更の仕方を知っているひとはいます? フォントサイズを大きくしたら、ボタン名がキレイに表示されなくなった。 毎回ウィンドサイズを変更するのがメンドイ。
134 名前:デフォルトの名無しさん mailto:sage [2006/05/24(水) 13:40:08 ] >>133 いささか、その場しのぎ的方法で恐縮ですが、RealEstateAgent class >> #standardWindowExtent の ^ (allowedArea extent - (grid*(maxLevel+1*2) + (grid//2))) min: StandardSize "600@400"]. という行を、 ^ 800@600 "(allowedArea extent - (grid*(maxLevel+1*2) + (grid//2))) min: StandardSize" "600@400"]. というように書き換えて accept(alt/cmd + s)してしまえば、指定した好きなサイズに固定できます。
135 名前:デフォルトの名無しさん mailto:sage [2006/05/24(水) 22:55:17 ] 長文失礼。書き込みたかっただけ。 コトの発端は、 Smalltalk keysDo: [:each |Transcript cr; show: each]. で、システムに登録されたキーをすべて表示したとき、途中を見たかったが、 量が多いし辞書順に出力されるわけでもないんでバックスクロールが面倒だったこと。 select:とか使えば見たい部分を引っ掛けられるんだが、「なんとなく見たい」場合は見たい部分を 指定できるハズもない。 windwowsなら中間ファイルにリダイレクトしてエディタで開く。unixならパイプでless起動。 squeak的にはどんなアプローチが『普通』なんだろう? squeakではファイルという存在が見えにくい。ならsqueak的にデータは どこに格納すべきなんだ。やっぱり生データではなくオブジェクトにする んだろうか。すべてのオブジェクトは生きている(動いている)というのが 元の設計思想らしいので、これに従うと、例えばsqueakにmovieファイルを ドラッグアンドドロップすると、そのファイルはオブジェクトに自動変換され、 Squeakの画面にある間はずっと再生しつづける、とかかな。オブジェクト4つくらいで コマ落ちしそう。プロセッサパワーが無限にあると仮定しても、オブジェクトが50とか あると1画面に入りきらないような気がする。大量のオブジェクトがあった場合、 必要なオブジェクトを探す方法が必要になるね。 いまのsqueakにそんなものってあったっけ。俺が探せていないだけか。
136 名前:デフォルトの名無しさん mailto:sage [2006/05/24(水) 23:10:35 ] Smalltalk keys または Smalltalk keys asSortedArray を inspect するのはダメ?
137 名前:135 mailto:sage [2006/05/25(木) 00:11:42 ] >>136 まあ、確かに結果は得られるんですが。 なんというか、やっぱいいです。
138 名前:デフォルトの名無しさん mailto:sage [2006/05/25(木) 00:23:56 ] >>136 インスペクタは途中を省略してしまうので、この局面には向かないかも…。 >>135 | contents | contents := String streamContents: [:ss | Smalltalk keys asSortedArray do: [:each | ss nextPutAll: each; cr]]. Workspace new contents: contents; openLabel: 'Smalltalk keys' なんていうのではどうでしょう。あるいは、いっそファイルにはき出してしまうとか。 | file | file := FileStream fileNamed: 'smalltalkkeys.txt'. Smalltalk keys asSortedArray do: [:each | file nextPutAll: each; cr]. file edit なお、ここでは、上のワークスペース同様、ファイルリストを使ってあえて出力したファイルを閲覧していますが、 メッセージング・パラダイムに脳が冒されているか、熱烈な暫定ダイナブック環境支持者、はたまた again 中毒者(^_^;)…でもないならば、すべて Smalltalk 環境で済ませる必要はなさそうです。 作ったファイルはお好みのエディタで閲覧するほうが現実的だと思います。 Squeak を、使い慣れて熟知した環境と比べて、その使い勝手がひどく劣っていると判断したり、 馴染みのツールや機能が無いことを見つけて、使えないシステムだと切って捨ててしまうことは、 とてもたやすいことだと思います。でも、ちょっと見方を変えて、使い慣れた環境には存在し得なかった 面白いツールを発見したり、新しいコンピューティング像を模索してみるというのもまた一興かなと思います。
139 名前:デフォルトの名無しさん mailto:sage [2006/05/25(木) 15:59:35 ] 単純に'Smalltalk'をエクスプロアすればOKだと思うけど。 ところで、ショートカットをAlt-?からCtrl-?に変えるには、どうすればいいのでしょうか? Alt-X、Alt-C、Alt-Vとか使いにくい。そもそもなんで、Ctrl-XじゃなくてAlt-Xなんだろう。
140 名前:デフォルトの名無しさん mailto:sage [2006/05/25(木) 16:57:08 ] >>139 help.../appearance... → preferences... → general → swapControlAndAltKeys → ON Squeak はもともと Mac 上で開発されていて(つか、ベースに使った Smalltalk が Apple 製…) cmd-z/x/c/v だった。ctrl には shift+cmd のキーショートカットが割り振られていたので Win などでは ctrl はそのまま shift + cmd 関係を引き継ぎ、alt が cmd の代わりになった。 あと、Squeak ではほとんどのアルファベットにキーショートカットが割り振られているが、 ctrl だと本来の意味とバッティングしてしまい起動できない場合があるのも無関係ではないかも。
141 名前:135 mailto:sage [2006/05/29(月) 22:11:34 ] >>138 どっちも文句ないです。 (前者はSmalltalkの前に全角スペースがあって戸惑った) > メッセージング・パラダイムに脳が冒されているか、 ぜひ冒して欲しい。
142 名前:135 mailto:sage [2006/05/29(月) 22:13:24 ] >>136 否定的な書き込みすまん。 「オブジェクトブラウザ」を提案したつもりだったが食いつきがなかったもんで。
143 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 13:29:41 ] > Win などでは ctrl はそのまま shift + cmd 関係を引き継ぎ、alt が cmd の代わりになった。 Win に移植した時点で変更するべきだったのでしょうね。 今からでもデフォルトを swapControlAndAltKeys が ON の状態にしたほうが 良いのではないでしょうか。 >>138 さんのおっしゃるように Smalltalk 環境ですべてを済ませることが現実的 でないなら、もうすこし、OS や他のアプリケーションとの親和性を考慮したほうが ユーザーにとってはありがたいと思います。
144 名前:デフォルトの名無しさん [2006/06/11(日) 10:59:56 ] binaryファイル->textファイルの変換プログラムを作成したい。 [入力ファイル] 4byte unsigned long bigendian * 25 = 100byte [出力データ] 25個の数字。(10進) どーすんだー。(泣) なんかクラスでもつくるんかー。 せめてサンプルになりそうなヤツのタイトル教えて。なるべくかんたんなヤツ。 squeak.qp.land.to/index.php?Squeak%2FSampleCode#content_1_33
145 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 12:53:24 ] 入力が100バイト=800ビットで 出力が10進数25ケタってことは220ビットくらいか? どっかで情報が失われてるぞ 入力に制限があるんじゃないの?
146 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 13:29:05 ] >>145 >どっかで情報が失われてるぞ えーと、25個の数字というのは25桁の数字ではないです。 4byteなので1個の数字の最大桁数は10桁かと。
147 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 13:38:22 ] 実は作成したいんは バイナリログファイル->テキストログファイル です。ハイ。 ファイルの先頭48byteはヘッダで、とりあえず無視します。 そのあとから16byteごとのレコードが続いています。で、レコードは 4つの4byteフィールドからなるっていて、フィールドはその数字に 対応する文字列が別途あり、ここを対応付けるスクリプトを書きたい。 でも4byteの数字をつくることさえ、ままならない。(現時点では掛け算で求めてる) なお、Cでは簡単にかけちゃうんですが、そこはSqueakを使いたい。 クラス、メソッド、メッセージ。オブジェクト指向って何かがわかるかな〜と。
148 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 15:22:54 ] >147 Integer class >> byte1:byte2:byte3:byte4: を見れ。
149 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 18:42:16 ] 開発するときはsystem browserを直接書き換える以外の方法はないか。 他のクラスを参照するために複数のbrowser立ち上げる必要あって、それぞれの 概観が一緒なのでうざい。あと、一時的に作成する場合に、いったん過去のコードを 削除して作成したものをアクセプトするのがイヤ。(前のコードを忘れそう) プロジェクト変えてもbrowserの中身は変わってないし。 複数のsqueak立ち上げるのもバカっぽい。
150 名前:147 mailto:sage [2006/06/11(日) 18:56:50 ] >>148 動かん。 fileStream := FileStream readOnlyFileNamed:'log.bin'. fileStream binary. fileStream position: 48. b1 := Integer new. b2 := b1 byte1:(fileStream next) byte2:(fileStream next) byte3:(fileStream next) byte4:(fileStream next). Transcript cr; show: b2. えーと、byte1:...はクラスメソッドだからオブジェクトb1は必要ないのか。
151 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 19:29:46 ] >>149 ナニ言いたいのかさっぱりわからない。きちんと整理してからしゃべってくれるか。
152 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 20:30:49 ] >>150 必要ない。Integer クラスに直接メッセージを送って起動する。>#byte1:byte2:byte3:byte4: >>149 複数のブラウザを開くのは(タブブラウジングという文化がなかった時代からのなごりなので) 慣れるか、それがどうしても耐えられないなら、自分用にタブブラウザを作るしかないですね。 前のコードはバージョンブラウザで閲覧できます。 ブラウザで versions ボタンを押すか、メソッド名リスト枠で alt/cmd + v で起動できます。 もとのコードに戻すには、バージョンブラウザで過去のコードを選択して revert 。
153 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 21:05:18 ] >>152 > >>150 > 必要ない。Integer クラスに直接メッセージを送って起動する。>#byte1:byte2:byte3:byte4: いけました。ごっちゃんです。 > >>149 > 複数のブラウザを開くのは(タブブラウジングという文化がなかった時代からのなごりなので) > 慣れるか、それがどうしても耐えられないなら、自分用にタブブラウザを作るしかないですね。 エディタを使用して作成したりはしないということですね。 そーゆーもんなら、私もそうやって作成することにします。 > 前のコードはバージョンブラウザで閲覧できます。 おおっ、便利。知らんかった。
154 名前:デフォルトの名無しさん [2006/06/12(月) 22:22:36 ] "_"はどうやって入力すればいいのでしょう。否応無く左矢印になってしまって...
155 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 23:28:38 ] 同じ文字コードです。グリフがそうなっちゃってるのです。 あきらめましょう。
156 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 01:24:25 ] >>154 SqueakPlugin-dev で、デフォルトの状態なら、 TextStyle defaultFont fontArray first edit: $_ で、開いたビットエディタで _ を描いて、黄ボタン(通常は右クリック)メニューから accept 。 クローズボックスクリックでウインドウを閉じれば、以降は _ で表示されるよ。
157 名前:154 mailto:sage [2006/06/13(火) 17:45:29 ] >>156 詳しく回答していただいてありがとうございます。 でも怖いんであきらめることにしました。
158 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 20:16:06 ] >>157 いや。失敗したら、保存しないで再起動すればいいだけなので、是非、チャレンジしてください。 実際、やってみて分からないこと、うまくいかないことは、どんどん訊いてください。
159 名前:デフォルトの名無しさん [2006/06/21(水) 15:45:53 ] >格差社会は、IT 業界も例外ではありません。Java/Eclipse や C#/VisualStudio の生産性の低さには >居た堪れず、先祖返りを見せられる思いがします。これらの開発環境を見ていると、南極物語と同じ年に >公開された Smalltalk-80 には遠く及ばず、その格差には愕然とする思いです。本来の統合開発環境は、 >このような際物ではなかったはずです。 >Eclipse/VisualStudio などは統合開発環境〔IDE〕とされていますが、本来の IDE は、このような際物では >なかったはずです。これらが「あまり早く開発されては困る」とさえ言いたげに見えてしまうのは、 >Smalltalk-80/Interlisp-D など真の IDE を知っているからかもしれません。 >環境などにはさらに進化がみられない。1970年代後半の Smalltalk 環境などは私の今までつかった経験の >なかで、最も快適で最もクリーンで最も高速で最もスムーズなプログラミング環境なのである。たとえ、 >CodeWarrior が C++ による開発においてそれ相応によくできた製品であったとしても、私がほとんど >20年前に使っていた Smalltalk システムと、ひいき目に見ても比較の対象にはならないのだ Eclipse / VisualStudio / CodeWarrior と Smalltalk の開発環境は、何がどうそんなに違うのですか?
160 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 01:12:11 ] >>159 REPL が有るか無いかの違い。それだけ。
161 名前:デフォルトの名無しさん [2006/06/22(木) 16:00:31 ] read-eval-print loop のことですか?
162 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 02:17:58 ] t
163 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 07:44:40 ] edit-compile-test loop しか無い環境とは手軽さが全然違うからね。 後はリフレクション機能が充実していたり、VM やオブジェクトシステムの挙動まで弄れるので、 開発のシームレス度が全然違うんだと思うよ。 環境に関して高度な知識を有する少人数のグループで開発するには最高だと思うけど、 デメリットもはっきりしているので、残念ながら今後も主流にはなり得ないと思うけどね。
164 名前:デフォルトの名無しさん [2006/06/23(金) 16:06:21 ] 話が一般的過ぎて、よくわかりません。具体的な例をあげてみてください。
165 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 17:25:10 ] マンドクサイから、自分で調べてみて下さい。
166 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 08:22:41 ] キーバインドをemacs風にしたい xkeymacs使って大体間に合ってるけどもっと
167 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 13:00:34 ] >>166 ParagraphEditor class >> #initialize から手繰って、#initializeCmdKeyShortcuts #initializeShiftCmdKeyShortcuts を手始めにいじるというのはどうでしょう。 変えたあと、ParagaraphEditor initialize を do it することをお忘れなく。 ちなみにコマンドキー(command、cmd)とあるのは Mac 時代の名残りなので、 他の環境では alt と読みかえてください。 最終的には ParagraphEditor >> #dispatchOnCharacter:with: まで手を入れれば、 かなりの部分まで思い通りの挙動をさせることが可能でしょう。 ただ、#dispatchOnCharacter:with: は建て増しに次ぐ建て増しで、 えらい読みにくいコードになっているので、挙動の把握がまず難しいかもしれません。 あと、#dispatchOnCharacter:with: をいじるのに失敗すると文字入力ができなくなる 場合もあるので、復活の方法(たとえば、バージョンブラウザの使い方とか)あるいは 強制終了後に、直前前の作業を復活する方法(チェンジログのあさり方とか)をあらかじめ 練習しておきましょう。分からなければ気軽に訊いてください(調べるのはなにかと大変なので…)。
168 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 22:25:26 ] ∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< 漏れもインスコしたモナー ( ) \_____ | | | (__)_)
169 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 09:38:15 ] ( ´∀`)σ)∀`)
170 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 21:59:28 ] linuxにインスコしたんだけど、あっという間に時間が過ぎたよ! …起動させるのに、、、orz 解決するのにググったり削除インスコ繰り返したり、トータル10時間以上かかった
171 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 03:48:26 ] Squeak初心者です。面白そうなのでSmallWikiを導入したのですが、RSSが使えずに困っています。 localhost:8080/?action=RSSChangesFeed としてRSSを指定したのですが駄目でした。 www.mars.dti.ne.jp/~umejava/smalltalk/squeak/swiki/smallWiki.html を見て日本語バージョンをインストールしたのですが、このバージョンはそもそもRSSに対応しているのでしょうか。
172 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 22:54:26 ] >171 してないよ
173 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 23:08:18 ] >171 ここにあるの使ってみたら? smallwiki.unibe.ch/smallwiki/ VisualWorksなのと、日本語がどこまで通るかはわからないけど
174 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 02:38:31 ] 折角なのでSqueakで使いたいです。 バックポートできる力があればいいんですが、、、。 (そもそもRSSのアクションがサポートされてるかどうかも、自力でコードをみて調べられなかったしナ)
175 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 16:23:20 ] >174 じゃ、素のSqueakイメージ(3.8)にSqueakMapから導入ですね。 最新版入れたらRSSにも対応してんじゃないかと。 いろいろライブラリを入れる必要があるから、それらのうまくバージョンがあわずにはまると思うけど。
176 名前:デフォルトの名無しさん [2006/08/31(木) 00:58:55 ] #スレ違いすまん。 VisualWorks 7.4.1 NCってどうなの? 日経ソフトウエアの付録に付いてくるって話だが・・・
177 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 10:20:51 ] あ、そうなんだ。買おうっと。>日経ソ Smalltalk 関係は、もう、適当なスレがないから、ここでいんじゃない? どうって、何に比べて? Squeak? それとも、他の Smalltalk 処理系? VisualWorks の以前のバージョン?
178 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 17:28:09 ] Cincomからダウンロードして試してみるという選択肢もある
179 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 18:33:11 ] どう?と言われると… 相変わらずOSX VMは腐りまくり。7.5までに改善版を出すと言っているが… 既に陳腐化して久しいGUI部分の救世主(予定)、Pollockの遅れっぷりがヤバい。 ちゅうか。最近は.1系列での機能追加が行われなくなったところに、Cincom Smalltalkチームの余力の無さを感じる。大丈夫か、おい。
180 名前:デフォルトの名無しさん [2006/09/23(土) 16:57:39 ] VisualWorksって、Winアプリよりも軽いらしい。 Squeakって、Javaアプリよりも軽いらしい。 そうなの?なぜ?
181 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 17:04:38 ] >>180 そんなことはないと思うけど…
182 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 17:24:32 ] 同じVMでも、Javaと比べるとカールルイスと小学生くらいの差があるって。
183 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 22:12:00 ] >182 どっちがどっち? 本気でベンチマーク取ったらどうなんだろう?
184 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 22:36:46 ] VisualWorksは相当速い。StrongTalkもバカっ速い。 Javaも最近のはアレやこれや突っ込まれて速い。 ここらへんはベンチマークの条件によって前後するだろう。 Squeakは時代に完全に取り残されてるというか、コアの人たちが 速く動かすとか、安定させるとか、そういう現世のことに全然興味を 示さないので、もうどうにもなりようがない。
185 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 20:44:17 ] postCopy の使い方が良く分からず混乱しています。 ttp://www.sra.co.jp/people/kondo/business/VW/Basic/2-3/2-3.html ここの「コピーの作法について」という文章を読みました。 イメージとしては otherObject := aObject deepCopy. と otherObject := aObject shallowCopy. object postCopy. が同じ、という解釈でいいのでしょうか。
186 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 20:45:19 ] > otherObject := aObject shallowCopy. > object postCopy. は > otherObject := aObject shallowCopy. > otherObject postCopy. です、すみません。 あと、aObject は anObject ですね…(´・ω・`)
187 名前:デフォルトの名無しさん [2006/10/05(木) 21:39:16 ] >185 全然ちがいますよ。 AがBを持っていて、BがCを持っているような構造のオブジェクトがあったとして、 A->B->C deepCopyなら A'->B'->C' shallowCopyなら A'->B->C というイメージ。
188 名前:デフォルトの名無しさん [2006/10/05(木) 21:49:20 ] >185 postCopyはObject>>copy(これはshallowCopy)の中で呼ばれていて、デフォルトではなにもしない。 サブクラスを作っていくうちに、copyだけでは足らなかったり、小細工したくなることがある。 IDをふり直すとか、187でいうBもB'にしたいとかね。 そんな時にサブクラス側でpostCopyをオーバーライドする。copyはいじらない。 Object>>copy、Object>>shallowCopy を見た後に、 shallowCopyをImplementorsサーチ、Sendersサーチで確認して。
189 名前:185 mailto:sage [2006/10/06(金) 01:06:21 ] deepCopy shallowCopy copy (デフォルトでは shallowCopy を呼びだすだけ) という 3 つのコピーがあって、copy の挙動を変えたい時に postCopy を定義する。 使用する側は状況に応じて、必要なコピーを行う。 …ということ?
190 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 10:49:30 ] >189 そう。
191 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 23:07:45 ] Squeakを勉強したいのですが、お勧めの書籍を1,2冊教えてください。 C/C++は大体わかります。