Smalltalk(Squeak/VisualWorks/etc.)総合スレ

このエントリーをはてなブックマークに追加
927デフォルトの名無しさん:2005/09/08(木) 13:28:27
>>926
LispでVMを書いてSmalltalkイメージをロードするとSmalltalkになります。
928デフォルトの名無しさん:2005/09/09(金) 01:55:41
Lisp も Smalltalk も色んな実装があるから一概には言えないけど。
最後の2つは言語自体ではないね。

Lisp - Smalltalk =
 マクロ
 クロージャ(ANSI Smalltalk にはある / Squeak には無い)
 S 式(プログラム=データ)
 オプショナルな型付け(Strongtalk は強型付け)
 ネイティブコンパイルする実装(Smalltalk はネイティブでも JIT が殆ど?)
 草の根実装(組み込みとか小さい実装は Lisp が圧倒的に多い)
929デフォルトの名無しさん:2005/09/13(火) 16:25:41
>>928
逆も、知りたいです。
Smalltalk - Lisp =
930デフォルトの名無しさん:2005/09/13(火) 22:43:26
Smalltalk - Lisp = 箱庭
931デフォルトの名無しさん:2005/09/13(火) 23:43:01
Smalltalk - Lisp = matak-ip
932デフォルトの名無しさん:2005/09/14(水) 02:57:49
Smalltalk - Lisp =
  GUI(Smalltalk は VM にグラフィック命令があるんだっけ?)
  シングルパラダイム(純粋オブジェクト指向)の統一された美しさ
  VM の仕様が存在している(Blue Book)

どっちも標準化は ANSI 止まりだね(Scheme は ISO まで)

大きな違いをまとめると↓こんなところかな
  マクロの有無
  シングルパラダイムかマルチパラダイムか
  S 式かメッセージ式か
  バイトコンパイルかネイティブコンパイルか

他の言語に比べると共通点の方が圧倒的に多いけど。
933デフォルトの名無しさん:2005/09/14(水) 10:41:11
>>932に追加
SmalltalkはVM+Imageでひとつの世界を作っていて単体でOSみたいなもん。
Lispは一般的なOSの中で動く言語/開発環境。
934デフォルトの名無しさん:2005/09/14(水) 11:01:27
>他の言語に比べると共通点の方が圧倒的に多いけど。
では、Smalltalk & Lisp - Java = だと?
935デフォルトの名無しさん:2005/09/14(水) 12:18:45
>>933
Lisp も LispM とかは Lisp で閉じた世界だね
936デフォルトの名無しさん:2005/09/14(水) 22:20:20
>>934
動的型付け(変数に型が無い)
自由にカスタマイズ可能な環境(snapshot image)
環境にコンパイラが含まれる
 --> REPL
 --> 差分コンパイル
クロージャ

両方とも、他の言語とは自由度が全然違う。
937デフォルトの名無しさん:2005/09/16(金) 11:26:57
Tweakって言葉だけよく聞くんですが、
Squeakの中のetoysを置き換える新しい実装
という理解で合ってますか?

あと、Morph自体は変化なし?
938デフォルトの名無しさん:2005/09/16(金) 17:55:50
>937
Morphに置き換わる新しい実装。
タイルスクリプティング環境としてeToys2がTweak上に組まれている。
939デフォルトの名無しさん:2005/09/16(金) 22:17:29
>>938
ありがとうございます。
Morphを置き換えるということは、
インスタンス生成のついでにクラスまで動的に作っちゃう
あの気持ち悪い仕様が改善されるんでしょうか?
940デフォルトの名無しさん:2005/09/17(土) 00:59:12
>>939
Morphという言葉が指すものについてなんか大きな勘違いをしていないか?
941デフォルトの名無しさん:2005/09/17(土) 17:10:39
>>940
Playerの仕組みはスクリプティングだけのためにあるってことですか?
942938:2005/09/18(日) 07:32:50
>941
Morph(Morphic)はいまのSqueakのGUI部分を担当するフレームワークのことか、そのフレームワークを利用してできている画面に自分を表示することのできるオブジェクトを指している。
でもってタイルスクリプティング環境を実現する実装のeToysとは別物ということなんでしょ。
Morphのインスタンスを生成した段階ではPlayerくっついてないしね。

eToys2ではPlayerクラスを動的に作ることはしてないみたいね。
943まぬけな質問すまん:2005/09/18(日) 14:12:11
すまん、最近Squeakを始めたんだが今イチよくわからないところが
あるんで教えてくれ

SmalltalkってOSみたいなも、って聞くけど、じゃぁMorphは普通のPCでいうとこの
”シングルウインドウプログラム”みたいなものなのか?
#でもPCで各プロセスが独立したメモリ空間をもってるみたいに
#”シングルウインドウプログラム”毎は互いに独立してるわけじゃないよな??

Squeakのプログラムをつくるってのは一つのimage上でいろんなMorph(アプリ?)を
つくるのが作法なのか?PCがアプリ毎に.exeを作るようにimageをつくるほうがいいのか?

***.imageって”PCをスリープさせたときのメモリの状態”+”HDDのファイル群”を
一つのファイルに書き出したようなものなのか?


言語やライブラリ側は何とかなりそうだけどこの辺りの「コンセプト(?)」がよくわからん・・・
944デフォルトの名無しさん:2005/09/18(日) 15:36:58
それでは馬鹿と言ってあげよう。
945デフォルトの名無しさん:2005/09/18(日) 18:08:50
>>943
Morphは、君のひとつ上のスレに書いてある通り、自分を画面に表示する機能を持つオブジェクト。
ボタン一個のMorphもあれば、ウィンドウのMorphやデスクトップのMorphもある。
マウスカーソルもMorph。画面上に見えているものがすべてMorphと思ってもいい。
いろいろな大きさのMorphを組み合わせてGUIが作られている。

SqueakのアプリケーションはひとつのImageの中にそれぞれオブジェクトとして存在する。
ひとつのアプリケーションを稼動させるための独立したImageを作成するのは、商用Smalltalkでは
よくある手だけど、Squeakではあまりやらないと思う。

Imageはメモリ上のオブジェクト空間のスナップショット。
Smalltalkはコンパイル前のソースコード以外のリソースをすべてオンメモリで「オブジェクト」
として持つから、「メモリの状態をファイルに書き出したもの」と考えていい。
946デフォルトの名無しさん:2005/09/29(木) 06:13:45
ケント・ベックのSmalltalkベストプラクティス・パターン が
何処にも売ってない....絶版? それとも刷り直し中...

早く買っとけばよかったと後悔してます
....あり得ないとは思うけど, フォント直して改訂してくれて
るんなら嬉しいけど
947デフォルトの名無しさん:2005/09/29(木) 10:33:58
948デフォルトの名無しさん:2005/09/29(木) 18:00:58
>>947
thx
949デフォルトの名無しさん:2005/10/03(月) 12:23:06
何故じゅんはSqueakに移植されないんですか?
青木さんはSqueakが嫌い?
950デフォルトの名無しさん:2005/10/03(月) 16:43:12
>949
やりたがる人がいないだけでは?
951デフォルトの名無しさん:2005/10/03(月) 21:35:57
SMLで進捗が流れてくるけど、青木さんはVW版の機能追加・バグフィックスあ
たりに専念してるような希ガス。Java版への移植は別メンバーがメインでやっ
てるような希ガス。

Smalltalkの違う処理系への移植はやりたい人が好きにやってくれと言外に言っ
ているような希ガス。たけのこもあるし。

ただ誰かがSqueakに移植したとして、それをSqueakの最新版で動き続けるよう
にメンテし続けるのはかなり不毛な作業のような希ガス。


<邪推>
VWで好きにやってもらっていいが成果としてJava版だけは出せというのが会社
からの条件のような希ガス。
</邪推>
952デフォルトの名無しさん:2005/10/04(火) 13:00:19
>ただ誰かがSqueakに移植したとして、それをSqueakの最新版で動き続けるよう
>にメンテし続けるのはかなり不毛な作業のような希ガス。

需要があれば不毛じゃないんじゃね?
953デフォルトの名無しさん:2005/10/04(火) 16:02:18
>952
Squeakはバージョンごとの変化が大きいからメンテコストかなりかかるよね。オレならやってらんなくなって投げ出すな。
じゅんはものすごく大きいし、今もどんどん実装されてるから追いかけるのも大変よね。

ユーザーとしてじゅんの機能を利用したいのなら無理してSqueakでやらんでも、ちゃんとメンテされてるVisualWorks使えばいいと思うね。
商用でなけりゃタダで使えるものだし。

もし「なんとなく欲しいから、じゅんチームとか誰か暇な人やってくれくれ」と言ってるだけなら、つまらないな。
反論期待。
954デフォルトの名無しさん:2005/10/04(火) 18:36:02
で、Ambraiも1.0.7 Beta4が出ている模様。
955951:2005/10/05(水) 13:37:29
>>953
SqueakとVWの違いがかなり大きくなってきていて、Squeakから入った人の中には
「VW版があるのは知っているけど、VW自体どういじるのかよくわからん」
みたいな現象はあるかも知れないけどね。
956デフォルトの名無しさん:2005/10/05(水) 18:26:42
>955
あるかもね。

じゅんオールインワン for VisualWorks 3.x
http://www.sra.co.jp/people/aoki/Jun/JunAllInOne/

なら、Squeakとのギャップはなんとか対応できる範囲かな。

957デフォルトの名無しさん:2005/10/07(金) 04:43:29
Smalltalkの箱庭環境には全く興味がないんだけど
Xサーバみたいに外出しできないっすか?
958952:2005/10/07(金) 10:06:13
>>953
スマン、同じSmalltalkなんだから、最初がんばって移植しちゃえば
メンテはそんなにむずかしくないんだと思ってた。
じゅんのコードは綺麗だし、Javaに移植した実績もあるんだし。

Squeakってそんなにバージョンごとに変わるの?それだと、もともと
Squeakで動いてるアプリも、ついてくの大変じゃない?
959デフォルトの名無しさん:2005/10/07(金) 14:16:21
>>957
外出しではないけれども、同じようなことはできますよ。
ところで、なぜSmalltalkの箱庭環境には全く興味がないのですか?
960デフォルトの名無しさん:2005/10/07(金) 15:46:05
興味がないからです
961デフォルトの名無しさん:2005/10/07(金) 15:52:59
インタプリタ+クラスライブラリのスタイルにならないかっていうのはFAQだけど
「Xサーバみたいに外出し」ってどういうイメージ?

962デフォルトの名無しさん:2005/10/07(金) 16:04:05
Xサーバみたいに外だしです
963デフォルトの名無しさん:2005/10/07(金) 17:53:51
話にならん
964デフォルトの名無しさん:2005/10/07(金) 18:10:13
別人だろ
反応しないのが一番
965デフォルトの名無しさん:2005/10/07(金) 23:03:27
>>958
バージョンごとに、デフォのイメージに入ってるものですら
どんどん脱落してますよ。
966デフォルトの名無しさん:2005/10/10(月) 04:04:40
>958
965の言うように、Squeakはバージョンごとに結構変わってて
特にGUI関連の変化が大きくてメンテが面倒なんだな。
コアなロジックの部分はがんばって移植しちゃえばその後は難しくないだろうね。
一度やってみたら?




967デフォルトの名無しさん:2005/10/11(火) 11:13:08
何年か前までは、面白そうなもの、完成度の高いものはリリースイメージに
直接取り込まれていたけど、だんだん肥大化して管理コストが上がってきて
結局コアイメージと外部パッケージに分ける方向になってきたね。

UNIXとかEmacsとか見てれば、そういう方向に行かざるを得ないって最初から
分かりそうなもんだけど。
968教えて下さい:2005/10/21(金) 11:17:14
超初心者なんだけどメソッドのところでインスタンスとクラスの分け方の
基準って何なの?
969デフォルトの名無しさん:2005/10/21(金) 11:47:36
>>968
超初心者だったらというか、一番最初のとっかかりとしては...
・普通はインスタンスメソッドを書いとけ。
・例外:オブジェクトの新規作成方法(newメソッド)はクラスメソッドに置け。

余裕があったら、なぜnewはインスタンスメソッドにしないか(できないのか)
考えよ。

これで困る程度に進化したら、また別途勉強すりゃいいよ。
970教えて下さい:2005/10/21(金) 13:58:45
969さん どうもありがとう
totalCalc
| total |
total:=3+4.
^total.
はクラスメソッドに書かないと出来なかった。
ここがわからない。
newはインスタンスを作るからかなと思うがどうでしょうか。



971デフォルトの名無しさん:2005/10/21(金) 14:16:48
>>970
- (Smalltalk では)すべてのオブジェクトはクラスに属する。
- オブジェクトは、それが属するクラスに定義されたメソッドを起動できる。

ここまではオッケー?
972デフォルトの名無しさん:2005/10/21(金) 14:20:08
>>971 さらに加えて
- (Smalltalk では)クラスもオブジェクト。

つまり(オブジェクトとしての)クラスが属するクラスが存在する…という話。
これも了解済みとしていい?
973デフォルトの名無しさん:2005/10/21(金) 14:26:04
>>970
> クラスメソッドに書かないと出来なかった。

クラス名がわからないので仮にCalcという名前だとして、

Calc totalcalc.
 --(print it)--> 7

と書いてない?

| aCalc |
aCalc := Calc new.
^aCalc totalCalc.

と書けばインスタンスメソッドにできるはず。
974教えて下さい:2005/10/21(金) 15:28:11
971,972,973の皆さん お答え有り難う御座いました。
私は973に有るようにCalc totalCalc."print it"にしていました。
| aCalc |のように書けばインスタンスメソッドに出来ました。

これはCalc totalCalcの方はクラスに送っているのでクラスメソッドで
| aCalc |はインスタンスに送っているからインスタンスメソッドに
書くということなんですね。
975デフォルトの名無しさん:2005/10/21(金) 16:01:44
そゆこと。
976デフォルトの名無しさん
SqueakでQuickTime用のクラスってないの?