Smalltalk(Squeak/VisualWorks/etc.)総合スレ
>>926 LispでVMを書いてSmalltalkイメージをロードするとSmalltalkになります。
Lisp も Smalltalk も色んな実装があるから一概には言えないけど。
最後の2つは言語自体ではないね。
Lisp - Smalltalk =
マクロ
クロージャ(ANSI Smalltalk にはある / Squeak には無い)
S 式(プログラム=データ)
オプショナルな型付け(Strongtalk は強型付け)
ネイティブコンパイルする実装(Smalltalk はネイティブでも JIT が殆ど?)
草の根実装(組み込みとか小さい実装は Lisp が圧倒的に多い)
>>928 逆も、知りたいです。
Smalltalk - Lisp =
Smalltalk - Lisp = 箱庭
Smalltalk - Lisp = matak-ip
Smalltalk - Lisp =
GUI(Smalltalk は VM にグラフィック命令があるんだっけ?)
シングルパラダイム(純粋オブジェクト指向)の統一された美しさ
VM の仕様が存在している(Blue Book)
どっちも標準化は ANSI 止まりだね(Scheme は ISO まで)
大きな違いをまとめると↓こんなところかな
マクロの有無
シングルパラダイムかマルチパラダイムか
S 式かメッセージ式か
バイトコンパイルかネイティブコンパイルか
他の言語に比べると共通点の方が圧倒的に多いけど。
>>932に追加
SmalltalkはVM+Imageでひとつの世界を作っていて単体でOSみたいなもん。
Lispは一般的なOSの中で動く言語/開発環境。
>他の言語に比べると共通点の方が圧倒的に多いけど。
では、Smalltalk & Lisp - Java = だと?
>>933 Lisp も LispM とかは Lisp で閉じた世界だね
>>934 動的型付け(変数に型が無い)
自由にカスタマイズ可能な環境(snapshot image)
環境にコンパイラが含まれる
--> REPL
--> 差分コンパイル
クロージャ
両方とも、他の言語とは自由度が全然違う。
Tweakって言葉だけよく聞くんですが、
Squeakの中のetoysを置き換える新しい実装
という理解で合ってますか?
あと、Morph自体は変化なし?
938 :
デフォルトの名無しさん:2005/09/16(金) 17:55:50
>937
Morphに置き換わる新しい実装。
タイルスクリプティング環境としてeToys2がTweak上に組まれている。
>>938 ありがとうございます。
Morphを置き換えるということは、
インスタンス生成のついでにクラスまで動的に作っちゃう
あの気持ち悪い仕様が改善されるんでしょうか?
>>939 Morphという言葉が指すものについてなんか大きな勘違いをしていないか?
>>940 Playerの仕組みはスクリプティングだけのためにあるってことですか?
942 :
938:2005/09/18(日) 07:32:50
>941
Morph(Morphic)はいまのSqueakのGUI部分を担当するフレームワークのことか、そのフレームワークを利用してできている画面に自分を表示することのできるオブジェクトを指している。
でもってタイルスクリプティング環境を実現する実装のeToysとは別物ということなんでしょ。
Morphのインスタンスを生成した段階ではPlayerくっついてないしね。
eToys2ではPlayerクラスを動的に作ることはしてないみたいね。
すまん、最近Squeakを始めたんだが今イチよくわからないところが
あるんで教えてくれ
SmalltalkってOSみたいなも、って聞くけど、じゃぁMorphは普通のPCでいうとこの
”シングルウインドウプログラム”みたいなものなのか?
#でもPCで各プロセスが独立したメモリ空間をもってるみたいに
#”シングルウインドウプログラム”毎は互いに独立してるわけじゃないよな??
Squeakのプログラムをつくるってのは一つのimage上でいろんなMorph(アプリ?)を
つくるのが作法なのか?PCがアプリ毎に.exeを作るようにimageをつくるほうがいいのか?
***.imageって”PCをスリープさせたときのメモリの状態”+”HDDのファイル群”を
一つのファイルに書き出したようなものなのか?
言語やライブラリ側は何とかなりそうだけどこの辺りの「コンセプト(?)」がよくわからん・・・
それでは馬鹿と言ってあげよう。
>>943 Morphは、君のひとつ上のスレに書いてある通り、自分を画面に表示する機能を持つオブジェクト。
ボタン一個のMorphもあれば、ウィンドウのMorphやデスクトップのMorphもある。
マウスカーソルもMorph。画面上に見えているものがすべてMorphと思ってもいい。
いろいろな大きさのMorphを組み合わせてGUIが作られている。
SqueakのアプリケーションはひとつのImageの中にそれぞれオブジェクトとして存在する。
ひとつのアプリケーションを稼動させるための独立したImageを作成するのは、商用Smalltalkでは
よくある手だけど、Squeakではあまりやらないと思う。
Imageはメモリ上のオブジェクト空間のスナップショット。
Smalltalkはコンパイル前のソースコード以外のリソースをすべてオンメモリで「オブジェクト」
として持つから、「メモリの状態をファイルに書き出したもの」と考えていい。
ケント・ベックのSmalltalkベストプラクティス・パターン が
何処にも売ってない....絶版? それとも刷り直し中...
早く買っとけばよかったと後悔してます
....あり得ないとは思うけど, フォント直して改訂してくれて
るんなら嬉しいけど
947 :
デフォルトの名無しさん:2005/09/29(木) 10:33:58
何故じゅんはSqueakに移植されないんですか?
青木さんはSqueakが嫌い?
>949
やりたがる人がいないだけでは?
SMLで進捗が流れてくるけど、青木さんはVW版の機能追加・バグフィックスあ
たりに専念してるような希ガス。Java版への移植は別メンバーがメインでやっ
てるような希ガス。
Smalltalkの違う処理系への移植はやりたい人が好きにやってくれと言外に言っ
ているような希ガス。たけのこもあるし。
ただ誰かがSqueakに移植したとして、それをSqueakの最新版で動き続けるよう
にメンテし続けるのはかなり不毛な作業のような希ガス。
<邪推>
VWで好きにやってもらっていいが成果としてJava版だけは出せというのが会社
からの条件のような希ガス。
</邪推>
>ただ誰かがSqueakに移植したとして、それをSqueakの最新版で動き続けるよう
>にメンテし続けるのはかなり不毛な作業のような希ガス。
需要があれば不毛じゃないんじゃね?
953 :
デフォルトの名無しさん:2005/10/04(火) 16:02:18
>952
Squeakはバージョンごとの変化が大きいからメンテコストかなりかかるよね。オレならやってらんなくなって投げ出すな。
じゅんはものすごく大きいし、今もどんどん実装されてるから追いかけるのも大変よね。
ユーザーとしてじゅんの機能を利用したいのなら無理してSqueakでやらんでも、ちゃんとメンテされてるVisualWorks使えばいいと思うね。
商用でなけりゃタダで使えるものだし。
もし「なんとなく欲しいから、じゅんチームとか誰か暇な人やってくれくれ」と言ってるだけなら、つまらないな。
反論期待。
で、Ambraiも1.0.7 Beta4が出ている模様。
955 :
951:2005/10/05(水) 13:37:29
>>953 SqueakとVWの違いがかなり大きくなってきていて、Squeakから入った人の中には
「VW版があるのは知っているけど、VW自体どういじるのかよくわからん」
みたいな現象はあるかも知れないけどね。
956 :
デフォルトの名無しさん:2005/10/05(水) 18:26:42
Smalltalkの箱庭環境には全く興味がないんだけど
Xサーバみたいに外出しできないっすか?
958 :
952:2005/10/07(金) 10:06:13
>>953 スマン、同じSmalltalkなんだから、最初がんばって移植しちゃえば
メンテはそんなにむずかしくないんだと思ってた。
じゅんのコードは綺麗だし、Javaに移植した実績もあるんだし。
Squeakってそんなにバージョンごとに変わるの?それだと、もともと
Squeakで動いてるアプリも、ついてくの大変じゃない?
>>957 外出しではないけれども、同じようなことはできますよ。
ところで、なぜSmalltalkの箱庭環境には全く興味がないのですか?
興味がないからです
インタプリタ+クラスライブラリのスタイルにならないかっていうのはFAQだけど
「Xサーバみたいに外出し」ってどういうイメージ?
Xサーバみたいに外だしです
話にならん
別人だろ
反応しないのが一番
>>958 バージョンごとに、デフォのイメージに入ってるものですら
どんどん脱落してますよ。
966 :
デフォルトの名無しさん:2005/10/10(月) 04:04:40
>958
965の言うように、Squeakはバージョンごとに結構変わってて
特にGUI関連の変化が大きくてメンテが面倒なんだな。
コアなロジックの部分はがんばって移植しちゃえばその後は難しくないだろうね。
一度やってみたら?
何年か前までは、面白そうなもの、完成度の高いものはリリースイメージに
直接取り込まれていたけど、だんだん肥大化して管理コストが上がってきて
結局コアイメージと外部パッケージに分ける方向になってきたね。
UNIXとかEmacsとか見てれば、そういう方向に行かざるを得ないって最初から
分かりそうなもんだけど。
968 :
教えて下さい:2005/10/21(金) 11:17:14
超初心者なんだけどメソッドのところでインスタンスとクラスの分け方の
基準って何なの?
>>968 超初心者だったらというか、一番最初のとっかかりとしては...
・普通はインスタンスメソッドを書いとけ。
・例外:オブジェクトの新規作成方法(newメソッド)はクラスメソッドに置け。
余裕があったら、なぜnewはインスタンスメソッドにしないか(できないのか)
考えよ。
これで困る程度に進化したら、また別途勉強すりゃいいよ。
970 :
教えて下さい:2005/10/21(金) 13:58:45
969さん どうもありがとう
totalCalc
| total |
total:=3+4.
^total.
はクラスメソッドに書かないと出来なかった。
ここがわからない。
newはインスタンスを作るからかなと思うがどうでしょうか。
>>970 - (Smalltalk では)すべてのオブジェクトはクラスに属する。
- オブジェクトは、それが属するクラスに定義されたメソッドを起動できる。
ここまではオッケー?
>>971 さらに加えて
- (Smalltalk では)クラスもオブジェクト。
つまり(オブジェクトとしての)クラスが属するクラスが存在する…という話。
これも了解済みとしていい?
>>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 |はインスタンスに送っているからインスタンスメソッドに
書くということなんですね。
そゆこと。
SqueakでQuickTime用のクラスってないの?