Smalltalk(Squeak/VisualWorks/etc.)総合スレ
1 :
デフォルトの名無しさん :
02/12/05 01:02
2 :
デフォルトの名無しさん :02/12/05 01:02
>>2 に追加
VisualWorks のページ 処理系: VisualWorks
ttp://www.sra.co.jp/people/kondo/business/VW/ 関連リンク集は出来ればちゃんと整形して欲しかったです。
処理系のリンク集も誰か作ってくれるかなと期待してたんだけどな。
あと Smalltalk 開発陣関連のリンク集もテンプレに欲しいね。
忘れちゃいけないのが、国内の情報源。日本語化イメージとか。
時間があったら次スレ(何時だろう?)くらい迄には用意しておきます。
何と言っても、"The best way to predict the future is to invent
it." ですからね。Happy Smalltalking!!
偽スレが上がっているのでage
どなたかSelfばりばりって人おらんの?
>>13 Class-Instanceっていう構造の必要性がいまいちわからんのよ。
それでPrototypeベースの言語にちょっと興味が湧いたということ。
>>14 SunもMacも持っとらんなぁ。どうしよ。
>>15 それならSelfじゃなくてSimula67をやりなさい藁
CLOS でも良いね。
>>15 ほんとだ。なんでclassがいるんだろうね。instance(Selfでいえば、
frame)だけでいいのにね…。ところでprototype-basedで隠蔽とか
ってできるのかなぁ。すくなくともSelfはslotまるだしだけど…。
20 :
デフォルトの名無しさん :02/12/09 13:50
これからSmalltalkを始めようと思っているのですが、 Smalltalkをまったく知らない場合に何を使ったら良いでしょうか? 2の関連リンクを見るとSqueakとVisualWorksの解説が 多いようなのでどちらかにしようとは思っているのですが。
>>20 まじめにやりたいのならVisualWorks
おかしくなりたいのならSqueak
選択後は互いに交わらないので注意
>>21 > 選択後は互いに交わらないので注意
両方使う人、多いんじゃない?
俺も両方使うし。
両方使うにしても、どっちが先かで未来が決まってしまう気がする
その2択しかないんでつか?
>>21 、23
そんなに最初にやる方って重要なんですね(((;゚д゚)))
SDにSqueakの短期連載が載ってると聞いて借りてきたのですが
安易に始めずに良かった…。
>>24 この二つがメジャーなのか、解説ページも多いようなので
どちらかが良いかなと思っているのですが、他に何かあれば
アドバイスおねがいします。
えっと、Squeakのライブラリはクレイジーです(Morphを見よ)。でも、楽しい。 VisualWorksはストイックできれいで速いくて信頼できますが、お仕事モードかも。 Squeakから入ると、Squeakのどこが汚いのか分からない大人になってしまうかもしれません。 Smalltalkは先人のコードを読んで真似するのがキモなので、妙なクセがつきそう。 私はObjectworksから来たので、笑いながら怒り狂いつつSqueakで遊んでいます。
識者の方が多そうなので便乗質問させて下さい。 Dolphin XPは金を払う価値ありですか? もう買う気は満々なのですが。。。
>>26 > 私はObjectworksから来たので、笑いながら怒り狂いつつSqueakで遊んでいます。
ハゲ同。でも、なぜか好奇心は刺激されるんだよな。
「ハア?何考えてんの、何したいのコイツ…」って 藁
>>27 となりの人が「あり」だといっています。
「金があるならProfessional」とも言っています(RefactoringBrowserもついてくるし)。
次バージョンには前スレで話題のAiboがつっこむやつもついてくるそうです(Aibo以外)。
SqueakでPalmWikiみたいな機能を持ったエディタを作りたいと思っています。 ParagraphEditorを継承していじればいいということは何となくわかるのですが、 こいつがどういう仕組みで動いているのかがさっぱり分かりません。 ソースコード以外で参考にできるような資料はありませんでしょうか?
ソースしかありません。最後に頼れるのは自分とソースだけです。 幸い、SqueakにHyperText機能は既に備わっているので(文字列選択してAlt+6)、 あと一押しでいけるのではないでしょうか。 ParagraphEditor>>changeEmphasis: TextLink などが鍵です(前者は恐ろしく読みにくいですが)。
33 :
デフォルトの名無しさん :02/12/11 00:18
>>31 SwikiをScamperで使うのはどうよ
>>30 よっしゃ買います!背中を押してくれてありが㌧
となりの人にもよろすくどうぞ
>>32 ソースだけですか‥‥‥。 あと Alt+6 は知りませんでした。ありが㌧。
>>33 編集もモードを変えずにやりたいんです。それにPDAでは重いし。
個人的なメモ帳なのでPalmWikiやEmacsWikiの手軽さが欲しい。
>>35 TextSqkProjectLinkのサブクラス(TextWkspWikiLinkとでもしま
しょうか(笑))を作って、actOnClickFor:を定義(オーバーライド)
します。メソッドとしてはとりあえず
actOnClickFor: anObject
| wikiWorkspaces |
wikiWorkspaces _ SystemWindow windowsIn: ActiveWorld satisfying: [ :w |
(w model isKindOf: Workspace) and: [
w label = url]].
wikiWorkspaces size = 0 ifTrue: [
Workspace new openAsMorphLabel: url. ^true].
wikiWorkspaces first activate.
^ true
てなぐあいでいかがでしょうか。動作テストするにはこれをParagraphEditor>>#changeEmphasis:のURLリンク作成あたりに置
き換える(具体的にはindex = 6 ifTrue: [attribute _ TextLink new.
のTextLinkをTextWkspWikiLinkに置き換える)とよろしかと。機能
的にこんなイメージでよければあとは重複しているalt-9あたりに割り
当てるべく作り込めばよいでしょう(alt-9はalt-shift-マイナスと
一緒です)。ただ、この仕様だとワークスペースのタイトルを変えた
りするとリンクが切れてしまうので、本格的なWiki(多くのWikiは
Wikiページのタイトル変更を許していないので仕様的にはSwiki)仕立
てにするには、ワークスペースのサブクラスをしたてるか、最終的
にはきちんとそれ用のオブジェクトを設計したほうがよいと思います。
MorphicになじめないのでMVCでいきたいのですが、 コンボボックスやラジオボタンみたいなウィジェットの部品はないのでしょうか?
>>36 SystemWindow>>windowsIn:
ActiveWorld>>satisfying:
どちらもエラーが出て実行できませんでした。
多分これMorphic系ですよね。MVC系列ではどう書くのでしょう。
39 :
デフォルトの名無しさん :02/12/13 12:46
>>38 1つのキーワードメッセージ式を2つと解釈しているのは、ちとまずい。文法をがんがれ。
MVCは、ほとんどSmalltlak-80なんで、それ系のドキュメントを読むのが吉。
でも、最近のSqueakでMVCはまともに動かない罠。
以下、サービス。
actOnClickFor: anObject
| wikiWorkspaces |
wikiWorkspaces _ ScheduledControllers scheduledControllers
select: [:controller | (controller model isKindOf: Workspace)
and: [controller view label = url]].
wikiWorkspaces isEmpty
ifTrue: [Workspace openLabel: url.
^ true].
ScheduledControllers scheduleActive: wikiWorkspaces first.
^ true
>>39 サービスしてもらったコードで動きますた。
しかしこのままだとプロジェクトがワークスペースで埋め尽くされてしまう。
ST-80のクラスライブラリ解説書ほすい。
41 :
デフォルトの名無しさん :02/12/16 22:29
Junの3DオブジェクトのテクスチャにJunMoviePlayerの画面(QuickTimeのムービー)張りたいんだけど どうしたらいいの?サンプルプログラム書いてくだちい。
42 :
デフォルトの名無しさん :02/12/16 22:36
>>40 >ST-80のクラスライブラリ解説書ほすい。
ソースコードが一番頼れるものです。ソースコードが解説書です。
最近よく考えるんだけど、Squeak って emacs になれる潜在性があるよね。 emacs というのは比喩だけど、プログラマブルな作業環境って事ね。 そういう意味で Squeak == emacs * GUI になれるなんじゃないかと。 今はプログラミング環境という色が強いけど、もっと作業環境、エディタ とかドローツールとかプレゼンツールとか、そういう方向の活用方法が もっと提示されて来ると面白そう。今でも一部そういう使い方をしている 人達がいるけど(ブラウザとかプレゼンとか)、ゆくゆくは Office とか PIM とかデータベースとかを、全部 Squeak 上で済ませられるような作業 環境になったらなと妄想してます。
44 :
デフォルトの名無しさん :02/12/17 03:37
>>43 そして、同じ問題を抱えそう...
SmalltalkでもEmacsでもそうだけど、もうちょっと環境の分離というか、
保護の概念があるといいのになぁ。
45 :
デフォルトの名無しさん :02/12/17 08:19
俺は、全アプリケーションが単一の空間に混ざってる現状のEmacsで問題感じてないよ。 MailとNetNewsとhtml書きが主なEmacsでの作業という軽い使い方だけど。 44はどういう問題を感じていて、保護の概念があるとそれがどう解決するの?
46 :
デフォルトの名無しさん :02/12/17 11:21
?Emacsですら問題感じてないなら別にいいのかもしれないが.... 単一空間に混ざってるシステムは理解していればプログラムは組みやすいだろうし、 たしかに便利な側面もある。 しかし、1つのアプリケーションが悪さが他のアプリケーションに影響を及ぼすのは 許しがたい。これは、見えてるメモリ空間(Object空間??)を分離するとある程度 解決するのではないかと。 この問題と関連して、同じライブラリの互換性のない違うバージョンの同時使用が できないのも問題。 って、これ書いてて、自分でも整理ができてきたのだが、同一VM上で、隔離された 複数の環境が動作して、かつ、それらの環境の操作が容易であるシステムがほしいのだな。うん。
47 :
デフォルトの名無しさん :02/12/17 11:34
>>46 普通にVisualWorksの名前空間じゃダメ?
前スレでVW用Emacsが欲しいと書いた者ですが、
>>43 、そう、そんな風に使いたいんですよ!
実行中にデバッガやインスペクタ使いつつ改造して即accept
で、どんどん自分好みの環境に育てていく感じ
あーー
はやく色々作れるようになりたい
49 :
デフォルトの名無しさん :02/12/17 16:45
>>42 どんな構成になっているかとか、どこから読み始めるとか、チュートリアルとか、
そういったものの必要性すら皆無ってことですか。
すでに知っている人には、まだ知らない人の気持ちなんて分かる訳ないですよね。
50 :
デフォルトの名無しさん :02/12/17 17:29
>>49 > どんな構成になっているかとか、どこから読み始めるとか、チュートリアルとか、
> そういったものの必要性すら皆無ってことですか。
これは正論だが、
> すでに知っている人には、まだ知らない人の気持ちなんて分かる訳ないですよね。
これはただの暴言だぞ。
今Smalltalkでバリバリ書いてる人だって、最初はソースコードにかじりついて
勉強したんだよ。ソースコード以外は英書(the Blue Book)しかないような状況で。
「まだ知らない人の気持ちなんて分かる訳ない」のではなく、
「まだ知らなかった頃の自分がやった事を勧めている」んだよ。
もちろん、いいチュートリアルがあったほうがいいのは間違いないわけだけど、
それは
>>1-3 のリンク先を読んだ上での話なんだよね?
だったら、どのチュートリアルのどんな所が解り難かったか、という話から始めたほうが
建設的だと思うけど、どうよ?
>>41 静止画のテクスチャを貼る方法は分かるんだよね。
動画から一定間隔で静止画を抜き出して、テクスチャを差し替えてから
3Dオブジェクトを更新する戦略でどうよ。
52 :
デフォルトの名無しさん :02/12/18 11:19
>>51 最初その方法でやってみました。
マウスの形とか変わっちゃうし、動きもぎこちないんだよなー。
| handle player anImage texture object model process|
player := JunMoviePlayer request.
object := JunOpenGL3dObject cube .
player isNil ifTrue: [^nil].
model := object show.
handle := player movieHandle.
process := [
[0 to: 10 by:0.5 do:[ :i|
player gotoInSeconds: i.
anImage := handle asImage.
texture := JunOpenGLTexture image: anImage.
object texture: texture.
model changed:#texture.
Processor yield.
(Delay forMilliseconds: 100) wait.
]
] ensure: [player release]] newProcess.
"process priority: 40."
process resume
>マウスの形変わっちゃうし マウスカーソルの形かわっちゃうし
54 :
名無しさん@Emacs :02/12/21 14:11
Squeakのメーリングリストってなくなりましたか? 以前はinfoseekにあったと思うのですが?
56 :
デフォルトの名無しさん :02/12/21 15:33
↑一日何通ぐらいですか? アーカイブあればいいんですけど。
Workspace って単にテキストモーフ貼り付けてるだけなのね。 ソースコード探しても見つからない訳だ。
59 :
デフォルトの名無しさん :02/12/23 19:15
>>58 そんなこたーない。
MorphicでMVCライクな依存性機構を使うためのPluggableTextMorphを作って、ちゃんと
プラグインメッセージを送っている(StringHolder>>openAsMorphLabel:inWorld:)。
TextMorphとはクラス階層から違うよ。
>>59 失礼しました。一応、inspect morph した上だったのですが、TextMorph と
PluggableTextMorph ってそんなに違うものなのですか。
SML で新しい日本語イメージの話が出てましたね。TrueType フォントと M$
IME の dll、本家に採用されたりしないのかな。
>>47 VisualWorksを含めたプログラミング言語の名前空間というものは、
名前の空間(しきり)に過ぎません。
つまり、何らかの方法(普通は空間の名前を陽に指定する)で相手の
名前がわかったり参照を入手できたりすれば、オブジェクト同士が
対話するのを妨げることはできません。
43-46などで語られている保護の概念は、アプリケーションごとに環境
(オブジェクトがなす場)を隔絶するというものなので、アプリケーションを
構成するオブジェクト同士の対話を制限することが本質的に必要です。
言うならば、OSのプロセスの概念に相当するものでしょう。名前空間は
この用途には向いていません。
(46氏はもちろんプロセス以上のことを念頭においているんだと思います。)
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
ひろゆきが2CHで2CHがひろゆきなんだそ。
ホントだ・・・。右上にIP表示されてる・・・。
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
90 名前:心得をよく読みましょう 本日のレス 投稿日:03/01/08 17:30 Xc+fqEec
>1
>どうやら管理人
>qbサーバ
ってなんですか?
97 名前:●ITAN.IBM ◆GQITAN.IBM 本日のレス 投稿日:03/01/08 17:31 A4oVmFaH
>>90 批判要望、削除議論、削除整理、削除要請
98 名前:心得をよく読みましょう 本日のレス 投稿日:03/01/08 17:31 TzeruebF
>>90 qb.2ch.netで始まるアドレスの鯖。
とありましたな。スマソ
他の鯖はIPとってないの?
大阪キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
大丈夫だって、90%の奴は今までと変わらないって。 今までの騒動もそうだったろ?
71 :
デフォルトの名無しさん :03/01/10 08:02
プログラミングは殆どやったことないんですけど、このスレみて 面白そうなんで、Visual Work 3.1を落としてみますた。 で、青木さんのところに書いてあるように環境を整えたはずなんですけど、 セーブ>終了しても、「チェンジファイル」とゆーものが出来ません。 3.1では出来ないものなんでしょうか? (間違えてないか再チェックしますが。) それから、市販の「Smalltalk Idioms」とWeb版ではどのくらい違うんでしょう? どうぞよろしく。
2chに書き込んだときのIPがわかったとして、そのときそのIPを使っていたのは誰かというのは プロバじゃないとわからないよね
2
くっ、ぬかったわっ!
くっ、ぬかったわっ!
やったね。いただきました!
>>456 localhost:12987みたいな自分のところで立ち上げてから見るんじゃなくて、
自分は立ち上げずに他の人のところで見たいという意味なんだよね。
やっぱ2ちゃんねるのアドバンテージは
多くの人が書き込んでいること、なんだけど、
そのひとつの要因として、ブラウザと言う、
OSに標準でついてるもので簡単に見れること、
があげられるし。
楽して金儲けしようと思うんじゃねえ!とか言いそう。。。隊長
利用者からIP見れないとしても、学校や会社から書き込む香具師は減りそうですな かぁ?
なんだ?IP記録始まったら厨房の避難場所かよ...>プ板
アクセスが増える訳でないから鯖が重くなることはないんでないの?
つまらなくなるね。
あ
「氏ね」だとかはいいよね? 管理人は「逝ってよし」もダメだと言うのか!?
贈収賄事件なんかの摘発の多くは内部告発だと聞いてるけど その告発者は別に2ちゃんに書き込んでたわけじゃなくて ちゃんとなんらかの方法で警察にコンタクト取ってたわけでしょ? ほんとに告発したいことなら掲示板で書くより警察・マスコミに流した方が 早いと思う
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
私は他の掲示板に行かないぞ!2ちゃんが死ぬその時までここにいるっ
テレビで民団取り上げるか?ラジオは?新聞は? 「万札の諭吉消せ」やら「参政権よこせ」やらやっといて、マスコミが取り上げないのはおかしくないか? 創価・公明・民団は聖域で、一切の批判を許さないとでもいうのだろうか……。
猫殺しとか?
肉体改造しろよ。ひろゆき。
あなたの脳内ではひろゆきはあなたの親友なんですね でも現実派、ひろゆきにとってはあなたは単なるユーザーの一人
sports3鯖死んでる?? 国内サッカー板が見れない…
839氏が作るそうです
特に犯罪絡みや名誉毀損な発言ではないけど 繰り返し自作自演でスレ荒らしてる人は 質の低い書き込みだと思うんだけど それは問題なし?
fusianasan
盗んでどうするんだよ、タルタルソースなんて。 エビフライ相当食えるぞ。
もっと減らしたいんだろ。
dat 落ちが恐いので、一応 sage 保守っとく。ネタ無しですまそん。
IP IPって大騒ぎ 多分9割は説明出来ないで騒いでいる
>628 >プロバイダ責任制限法の下で、書き込み内容について管理者に責任を問えるのは、 それは言うまでも無いことですが? ひろゆきが何をしたいかを考えれば問題点がわかるのでは? <争点のことね。
2ちゃんねる閲覧専用ブラウザを「2ちゃんブラウザ」「2chブラウザ」と呼ぶのはやめよう。 特定の2ch専用ブラウザと紛らわしいから。
なんか書き込んだらひろゆきネタ止まるかなぁ
(^^)
48 ワラタよ
(^^)
今更ながら、Self がアップデートして Jaguar に対応していますね。 開発は続いてるのかな?
squeakから外部シェルコマンドを発行して、結果を受け取ることはできないのでしょか? あと、環境変数を参照することはできますか? 環境はMac 10.2です。
114 :
デフォルトの名無しさん :03/01/20 16:02
「カッコ」もオブジェクトってのはマヂですか?
116 :
デフォルトの名無しさん :03/01/20 16:07
♡
>115 ありがとうございます。リンク先のドキュメントに Unix/LinuxとあったのでMacもUNIX 系?とやみくもにMacでFile Inしようとしてみました。 とりあえず、 world open file list OSProcessV3-0-4-full-dtl.cs File-in してみましたが >MessageNotUnderStood: moduleName >UndefinedObject さっぱりわかりません。 .sarファイルがなんだかもよくわかっていないし、もう少し探索してみます。 XonXで squeak(unix)を試すとか VirtualPCで spueak(windows)を試してみるのもあり?(激遅いだろうけど)
>>113 アップルスクリプト経由で、
Applescript doIt: 'do shell script "cal 1 2003"'
などでは駄目ですか?
>118 Applescriptがsqueakから呼び出せるのですか? まさしく求めている機能だとおもいます。 しかし手もとでは、うまく実行できません。 >Object is Negative Integer になってしまいます。 また勉強してきます。
>120 今までためしているのがSqueak3.2-4956-MacOS-Full.sit(3.2.8Beta9)なんですが、 これで>119の症状だたはず。 とおもったのですが、あちこちからイロイロ試していたのを全部ざっくり消去して 再度アーカイブ をゲットしてはじめからやってみます。 展開してPluginsフォルダの中に TestOSAPlugin.bundleその他を再確認。 >118 Applescript doIt: 'do shell script "cal 1 2003"' をWorkspaceに打ち込んで、 やったねエラーはでなくなったみたい、、なのですが、Transcriptの窓に結果が 出力されていないようなのですが。1月のカレンダーが出るんですよね? ン?そんなわけないのか。外部の出力結果をどうやって受け取ればいいんでしょ サンプルで見かけた Applescript doIt: 'beep 2' も、音がでている様子がありませんし。 すいませんsqueakの初歩からでなおしてきまつ。 あと、VMがPluginを認識しているかどうかは、確認できるのでしょうか? 足りない頭で考えると、SystemBrowserの中に存在を確認すればOKなのかな?
自分でもなにが言いたいのか支離滅裂です。 当初の目的を一言でまとめると squeakで作ったデータを一度外部で処理してからsqueakに戻したい。 ということです。 (その先に「偽春菜」や「伺か」がでてくるのはまだまだ後の話ということで、、、、)
>>121 トランスクリプトに結果を表示したいときは、
Transcript cr; show: (Applescript doIt: 'do shell script "cal 1 2003"')
を do-it します。ワークスペース内で結果を出力するのでよければ
Applescript doIt: 'do shell script "cal 1 2003"'
を print-it します。do-it も print-it も選択したメッセージ式を評価
するのですが、後者は返値を式の直後に挿入します。いずれも
黄ボタンメニューから実行可能ですが、cmd-d、cmd-p でもいけます。
今回のような例ならいいのですが、メッセージ式の評価の返値は
文字列できちんと表現できるとは限らないので、inspect-it(cmd-i)も
覚えておいたほうがよいでしょう。これは、式を評価した後、その返値
のインスペクタ(そのオブジェクトのインスタンス変数に束縛されている
オブジェクトを検査するためのツール)を開きます。
(^^)
126 :
デフォルトの名無しさん :03/01/28 05:27
うーむ;の意味が全然分からん。 誰か助けて。 何で 2+1; *3が6になるんだ? 5とか9なら話は分かるんだけど。
カスケード式だから、2*3が評価されて6になります。 詳しくは(Squeakの場合)Transcriptで [^2+1;*3] method symbolic を選択して、メニューから「評価して表示」を実行してみて下さい。
ありがっとん。 BASICのような行表示が出てきて面白いねこれ。 要するに2に+1を送った後、*3を送って結果を返してるってことですね。 やっとわかりました。
あとyourselfって何ですかねこれは。 Objectクラスには yourself "Answer self." って書いてあるんだけれども。 必要性が謎だ。selfでいいじゃん。
カスケード式で最後にレシーバーを返したい時にyourselfを使ったり、 インターフェースオブジェクトを通して他のオブジェクトと会話する場合に、 インターフェースオブジェクトのyourselfをオーバーライドして元のオブジェクトを 返すようにすると、相手は直接話しているのか間接的に話しているのか意識する 必要がなくなるので便利だとか。。。 使用例はBrowserでyourselfを選択して、sendersボタンを押して見て下さい。
131 :
デフォルトの名無しさん :03/01/29 17:11
なるほどね。よくわかりました。 Thx!
132 :
デフォルトの名無しさん :03/02/01 13:07
Objectに何種類のMethodがあるか調べてみたら、 218個もあったよ。(VisualWorks7.0) このうち僕が知ってるのはせいぜい20個くらい。 使ってるのはhaltとかcopyとか、せいぜい10個足らず。 皆さんどのくらい使いこなしてます? 全部知ってて当たり前かな。
>>132 > 全部知ってて当たり前かな。
いや、必要なときだけブラウザで調べる(遅延評価)というのがSmalltalk流では。
よく使うのは記憶してもいいけど、効率を上げるための一時的なキャッシュだな。
実際おれ今10個ぐらいしか思いつかんし。←ヘタレだからか?(w
134 :
デフォルトの名無しさん :03/02/15 08:37
Smalltalkを勉強してます。(C++厨です。) BlockClosureってありますよね。 オブジェクトが関数(メソッド)を持った変数だとすると、BlockClosureって 変数(やコンテキスト)を保持した関数ってイメージでよいんでしょうか。 とてもおもしろいと思いました。 そこで質問なのですが、SmalltalkのBlockClosureのコンセプトをC++で(限定的な機能でも) 実装した例ってどこかにありますでしょうか。
皆さんアドバイスありがとうございます。ですがまだだめです。。。 /var/cvsrootに対して #chmod g+wr /var/cvsroot #ls -ld /var/cvsroot drwxrwsrwx 16 root devgroup 4096 Feb 15 01:45 cvsroot (テスト用にもともとパーミッションをゆるく設定してありました) として、新たなモジュールhogeをImportしました。するとhogeディレクトリ のパーミッションは #ls -ld hoge drwxrwsr-x 3 myacount devgroup 4096 Feb 15 01:45 hoge となるんですが、その下にあるファイルmain.cpp.vのパーミッションが -r--r--r-- となっています。何かおかしいでしょうか。。。
squeakで作ったファイルをHDに保存する時にopensslで暗号化、 取り出すときに復号化したいんですが可能でしょうか? squeakからlinuxのコマンドラインは使用出来るんですかね?
139 :
プラガブルMVCについて。 :03/02/21 17:49
Junのコードを見て勉強してるんですが、 結局各XXXModelに対して、対応するXXXControllerとXXXViewが 定義されていることが多いですよね。(VCがプラガブルになっていない) Modelに全く依存しないView,Controllerって、実際のアプリを作ろうすると 実用にならない気がします。 つまり、ポップアップメニューだけで操作するアプリケーションならともかく、 凝ったGUIを作ろうとしたときには結局プラガブルにはできないのではないですか? いかがでしょうか。。。
メソッドはすべて公開、フィールドはすべて非公開というSmalltalkのアクセス制御は、 メンバーの可視性を自由に設定できる他の言語に比べて、どうなんでしょうか?
過去ログ ΨΨΨ Smalltalk/ Squeak 教えろゴルァ ΨΨΨ の 136 あたりからその話題。 143 あたりが至言だろう。
(良い意味、積極的な意味で)おもちゃのように徹しているという訳ですか。。。なるほど。
マク板にSqueakスレ建てようかと思うんですが、
ここの
>>1-11 のリンク使ってもいいですか?
thx. 2~3日中に建てます。
148 :
デフォルトの名無しさん :03/03/04 00:22
>147 OK
Squeakで変数使うにはどうしたらよいのでしょうか? 今は画面外にスライダーおいてその数値を使ってます。
152 :
デフォルトの名無しさん :03/03/20 23:11
「a non-continuable protection violation has occurred.」 Smalltalk画面操作中に、ときどきこんなエラーがでます。 みなさんでたことあります?
153 :
デフォルトの名無しさん :03/03/23 00:15
質問 GNU Smalltalk version 2.0.11 で | g | g:= (BLOX Gui new). g blox: (BLOX BWindow new: 'test'). g blox map! とやると窓が開きますが終了できません。 なにを加えればよいでしょうか。 コールバックがキーワードだと思いますが よくわかりませんでした。 へたれでごめんなさい。
一応追加情報 環境はLinuxで--with-tclと--with-tkでコンパイルしました。 BLOXはもともとはいってました
できました 誰も知りたくないようですがこだわりません | w | w:= (BLOX BWindow new: 'test'). w map. BLOX Blox dispatchEvents: w. w release. w unmap. BLOX Blox terminateMainLoop! でも、ようわかってないんでまだボタンとか追加できない まあ、ぼちぼちがんばります
156 :
デフォルトの名無しさん :03/03/25 09:43
157 :
デフォルトの名無しさん :03/03/25 21:19
Smalltalkを勉強したいのですが、日本語の書籍で何か 良いものはあるでしょうか。 amazon.co.jpで検索したところ、過去10年に出版された 本で在庫切れになっていないものとしては、 「Smalltalkのススメ」 「サクサクSmalltalk」 「ウィンストンのSmalltalk」 ぐらいしかないようです。 処理系はVisualWorksを使います。
新しく出た Squeak 本、アマゾンで在庫なしだったよ。。。 都内まで買いに出るのはしんどい。
>>157 『Smalltalkイディオム』がおすすめ。書籍は絶版だけどweb上で筆者が全文公開してる。
すいません、変な質問かもしれませんが、「筍寺」って何ですか?
>>163 マジレスすると青木さんが現在いる場所のことです。
マジレスかよ!
>>164 あ、いや、その、そもそも「筍寺」って何のことなのかなと。
ぐぐれ。
>>162 ありがとうございます。
サイトを見てみました。
本一冊分だけあって膨大な量がありますね。
169 :
デフォルトの名無しさん :03/04/09 16:16
vw7でjunの後にたけのこ入れたりすると、 junのクラスやメソッドが変色しますよね。 あれって何でなんでしょうか。 意味を知らないと、知らないうちにとんでもないことになってそうで怖いのです。
他の OOPL でメソッドを定義して呼ぶのと、 smalltalk のメッセージ機構を使うのとはどう違うんですか? 別に大差ないように思うんですが…。
(^^)
保守。
174 :
デフォルトの名無しさん :03/04/19 10:34
hoshu
∧_∧ ( ^^ )< ぬるぽ(^^)
176 :
デフォルトの名無しさん :03/04/20 09:43
VW7.1が出たわけですが。 CDちゃんと焼けます? なんかウチだと焼いてる途中でエラーになっちゃうんだよなぁ。 イメージマウントするか個別のパッケージ毎にDLしてインストールしろってことなの? 保守を兼ねて(w
177 :
デフォルトの名無しさん :03/04/20 17:17
Squeak入門 ~過去から来た未来のプログラミング環境~
原書:Prentice Hall「Squeak:Open Personal Computing and Multimedia」ISBN0130280917
Mark Guzdial/Kim Rose 著
軋音組 訳
A5判 266ページ 本体価格¥2.800 2003年3月発売
http://www.yfcbookshelf.com/programming 's%20books18.htm
おまえらの中で読んだ人はいますか?
いやがったら感想を聞かせてください。
>178 つべこべ言わずに買うときなさい
>>177 今日久々に都会にでたので本屋に寄ってみた。
が、なかった(鬱
思った程の都会ではなかったらしい(死
そうなんすよ オレの地元の本屋も全然見当たらないんですよ 安い本ではないから一度手にとって見たいのです。
>182 すまぬ。レスつける番号違ってた。 >181 amazonでもbk1でも楽天でもいーから通販で買うべし。
一度立ち読みせんと気が済まん性質なのと、本屋でカバーきっちりしてもらわんと気が済まないとい うのが通販で本買えない事になるんだよなぁ。 一番奇麗なの選ぶし(w 本に書き込みとか絶対できないんだよなぁ。 必須とか思ったらノートに書くという。 あぁ、貧乏性。
187 :
デフォルトの名無しさん :03/04/22 23:12
Smalltalk なんか面白そうなんでやってみようと思うんだが難しいかね。
いままで c と vb と vbs くらいしかやったことないが。
まぁ
>>184 の本をとりあえず買ってくる予定。
>>187 変な言い方だけど、この本はある程度分かったやつじゃないと分からない本なんで、
初心者にはおすすめしない。ある段階に達したときにこいつを読めば一気にレベル
アップできる。じゃあ、いい入門書は何かというと、これが結構むずかしい。少な
くともSqueak入門は入門じゃない。青木さんの本はいつか読むべきと思うけれども、
本当に言いたいことが字面には書いていなかったりするので受け手を選ぶ。
Smalltalk で const MaxValue = 237; みたいな定数宣言は出来ますか?
>189 変数にバインドってのはできないんじゃないかなぁ。多分。 そんかしメソッドで代わりにするなぁ。 maxValue ^ 237
>>188 忠告ありがトン。
でも、時既に遅し。
買ってきちゃったよ・・・
でも、なかなか面白い。
かなり実践的なカタログだね。
これって、xp白本とどっちが先なんだろ。
しかし、Smalltalkかなり風変わりな言語だね。
全部オブジェクトってのも驚いた。
条件分岐までオブジェクトのポリモーフィズムで実現しているとは。
あとこれって型がかなり曖昧だから動的継承もどきとかやる気になれば出来るのかな?
それならモデルからクラスに落とすときの苦労が少なくて良いんだけど。
とりあえず、このスレにあるリンクを適当に回ってみようとは思っているけど数が多すぎるので
出来れば絞って教えてくだされ。
良書&開発環境(現在はSqueak)も良い物があればプリーズ。
よろしくです。
「Squeak 入門」読んだんですけど、Smalltalk の文法って、 この本の 2章に書かれているもので全てなんでしょうか? だとしたらめっちゃシンプルでいいですね。
squeak, smalltalkってなにやら楽しそうだなと思い、 いろんな人のサイト(まだ日本のみ)を見て回ったんです。 で、感じたことだけど、ちょっと癖のある人が多いような、 また排他的印象も少なからず... 世界が狭いとこうなちゃうのかな?
クラスライブラリが閉鎖的だからね。
196 :
デフォルトの名無しさん :03/04/26 10:01
スクイークってセキュリティ大丈夫ですか? あまりにもスムーズ(ルーズ)にnet,publish,shareしちゃってて。
だめぽです。上から下まで両手ぶらりのノーガード戦法なので、殴り甲斐がない のではないでしょうか。 Squeakのセキュリティが真剣に議論されるようになれば、Squeakとしては成功か もしれません。
SqueakのVMやライブラリは恐ろしいほどオープンですが、Squeak(Smalltalk)であ ること自体が一種のセキュリティとして働いている面があると思います。
199 :
デフォルトの名無しさん :03/04/26 14:31
Vine Linuxで ppc-unknown-linux-gnu 3.0 #1 XShm Thu Jul 26 00:52:26 CEST 2001 gcc 2.95.3 Linux calvin 2.2.18-4hikp #12 Thu Jul 19 18:01:43 CEST 2001 ppc unknown default plugin location: /usr/local/lib/squeak/3.0/*.so なバージョンのSqueakでSWikiつこうてます。気に入っているんですが、動作が結構 不安定だったりするのでSqueakの新しいバージョンに移行しようと思っています。 そこで相談なのですが、これまで書きためたSwikiの内容を新しい環境にそのまま移すことって 可能なのでしょうか。 そのあたりの手順が書いてあるページとかあったらおしえてもらいたいです、、、。
>>198 あれか。
一昔前言われた、*NIXであることがセキュリティの~と女痔事か。
Squeak に日本語の通るメーラやウェブブラウザって無いですか?
なるほど... 厨にはイノセンス教育ですか。
う~ん、反応無いってことはまだ無いんですね・・・ Squeak ユーザって一日中 Squeak の中で生活してると思ってたんですが、 そんなことでも無いんですね。 メールや Web や SWiki ページの閲覧・編集とかは Squeak の外でやってるんでしょうか。
メンテ要員が消えると、機能も失われる。 考古学者になって、化石を発掘すべし。
言語能力に付いて言えば、Smalltalk の売り文句の殆どは CLOS で実現出来ている と思うのですが、CLOS より機能において Smalltalk が優れている部分って何か ありますか? もともと Smalltalk は Common Lisp をかなり参考にしているそう ですが、Common Lisp からどんな点でエンハンスしているのか気になります。
Squeak って Emacs なんかとどう違うの?
おおLisp屋さんがキターーーーー!のかな。
>>207 ライブラリと環境抜きでの比較ですよね。
とするとSmalltalkの方がCLOSより文法が単純・機能限定と思います。
たとえばCommon Lispは関数定義に関する部分に機能がテンコ盛りで、
CLOSもスロットの初期化やら:before,:afterみたいにメソッド定義に機能が
テンコ盛りで、結果多少複雑です。
多重継承はSmalltalkにはありません。
クラスシステムのmeta関係方面はSmalltalkの方がきれいで強力でしょう。
それから、CLOSのメソッドは言語仕様上も実装上もクラスの持ち物に
していないので、Lisp hackerや行儀悪い人はこれをleakさせちゃえます。
つまり、無関係なクラスでメソッドを流用することがありえますよね。
私はやってみたことないけど。
> もともと Smalltalk は Common Lisp をかなり参考にしているそうですが
えーそれは違う気がするな。
言語としてのLispおよび、多くのLisp処理系を参考にSmalltalkは発展しました。
当然FlavorやLoopsとか横目で見ながら作られたでしょう。ところが、
ことCommonLispとCLOSとなると、影響された部分というのはないでしょ?多分。
>209 Common Lisp 云々は間違いかも。昔どこかでそんな話を聞いたような気がした んだけど。適当な事を書いちゃいけないですね。 一番の疑問は Smalltalk を Smalltalk たらしめている最もプリミティブな特徴って 何だろうかと言う事です。おっしゃる通り、ライブラリと環境抜きでです。 純粋なオブジェクト指向言語であるっていう紋切り型な表現も良いけど、どうも 抽象的すぎるきらいがあります。CLOS を例に出したのは、リフレクション機能が キーワードかと思ったからです。多重継承か単一継承か、メソッドがクラスに従属 しているか等も大きな相違点ですね。
>>210 > 一番の疑問は Smalltalk を Smalltalk たらしめている最もプリミティブな特徴って
> 何だろうかと言う事です。おっしゃる通り、ライブラリと環境抜きでです。
Smalltalkを語るのにライブラリと環境抜きでってのは本末転倒と思われ。
ユーザーとインタラクションするためのSmalltalk環境で、
Smalltalk言語はあくまでSmalltalk環境で使われる記述言語でしょ。
まあこの辺はLISPも同様だろうけどね。
LISP環境の目的はインタラクションというよりも計算(処理)っぽいけど。
213 :
突然ですが :03/05/05 11:08
Swikiでデフォルトのフォントを変える方法をご存知でしたら教えて くださいまし。。。
CommonLispの仕様が完成するのはSmalltalkが誕生した結構後。 アランケイがLisperだったのは確かだけど、もし参考にしたのであれば MacLispとかの統合環境じゃないかな。
>214 あんまりそこには突っ込まないであげて下さい・・・。
>211 読んでみました。今読むと OO 一般の教科書みたいな感じですね。まぁそれだけ 広く支持されているという事でしょうけど。面白いドキュメントをありがとう ございます。 >212 それをあえて考えてみたいと思ったのです。ライブラリや環境は言語のコアとは 別の話ですからね。Simula や Lisp にライブラリを追加するのではなく、新しく 言語を設計したからには何らかの考えがあったと思います。
Squeak入門買ってきました。秋葉のLAOX Book館では平積みですね。 これから読みまつ。 前書きのあたり読んでると面白そうなところが割愛されてそうにも読めたけど(^-^;
219 :
デフォルトの名無しさん :03/05/06 06:46
>>216 > それをあえて考えてみたいと思ったのです。ライブラリや環境は言語のコアとは
> 別の話ですからね。
いや、だから、別の話じゃないんだって。
Smalltalk言語はあくまで対話環境のための言語なんだからさ・・・
もし言語ありきで設計してたら、Smalltalkは今のSmalltalkとは別物になってたろうな。
> Simula や Lisp にライブラリを追加するのではなく、新しく
> 言語を設計したからには何らかの考えがあったと思います。
Smalltalk-72でも使ってみれば、何となく肌で感じると思うぞ。
俺的には、SimulaというよりはむしろLOGOが出発点で、
SimulaやLispをから取り入れた技術要素は、LOGO以上のLOGOをつくるために
利用したに過ぎないと思ってるけどね。
あるいはSmalltalk-72からSmalltalk-80までの道のりを辿るのもまた一興。
220 :
デフォルトの名無しさん :03/05/06 07:28
辿るったって・・
221 :
あほな213 :03/05/06 08:31
>>213 SWikiではHTMLタグは基本的にみんな利用できるのね。
あほな質問してスマソ。
さ、議論の続きをどーぞ。
↓
>>220 要するにSmalltalk72はSqueakで動くやつがあるからそれでも動かしてみて見ろやってことじゃ?
URLはぐぐってみてちょ。
>>219 その出自は別として、どこまで削ぎ落としたらSmalltalkじゃなくなるのかという
のは面白い視点かもしれない。
例えば、Little SmalltalkやGNU Smalltalk, GemStoneのOpal/Topaz、最近では
SmallScriptやS#など、CUIしかない(あるいは中心とした)、 Smalltalk処理系は、
もはやSmalltalkではないのか、それとも、残ったものにこそ、言語としての
Smalltalkの本質があるのか。
そもそものSmalltalk-72はチャンクフォーマットをコマンドラインから逐次入力
して実行する環境だったわけだし。
225 :
マ板ハゲスレ住人 :03/05/06 17:48
Alan Kayの写真ありませんか?
228 :
マ板ハゲスレ住人 :03/05/06 17:57
素早いレスありがとう。 フサフサですね。
>>228 もしやLISPスレでフサフサとかゆーてた人だろーか?
妙にシンクロしてててなんか分散オブジェクトが通信してんのかと(藁
>218 凄い所からドキュメントを引っ張ってきますね。。。是非読ませていただきます。 ご紹介ありがとうございました。ちょっと読み終わるまで時間を下さい。 >219 環境込みで Smalltalk というのは理解しています。Dynabook 構想等、H/W まで 込みで知的アシストを提供するという話は聞いています。環境無しの Smalltalk は GUI 無しの Macintosh みたいな物かなとも思います。 ただ、Lisp Scheme スレでも出ていましたが、Common Lisp に対する Scheme の様な、削ぎ落として見えてくる物もあるかなと思いました。 ただ、如何せん私の知識不足であまり面白そうな話に発展させられそうにないので この辺りで失礼させていただいて、もう少し勉強してきます。お邪魔しますた。
smalltalkで作ったアプリケーションソフトはexe形式で使えますか?
ありがとうございます。 動けばexeでなくとも同じことだということですね。
D、Dolphin買ってみようかな。。
visualage for smalltalk Dolphin GNU smalltalk Squeak VisualWorks win98上で使うならどれがいいですか?
Squeak入門って後半の訳は出る予定あるのかなぁ
>237 VisualWorksが無難
>>237 239と同じくやっぱVisualWorksだろうなぁ。
はじめてのSmalltalkなら迷わずVisualWorksNonCommercialの3.1をお勧め。
で、青木さんのサイトの教科書でお勉強してみるといいんじゃなかろうか?と。
Win98ならその辺でつよね?
>>169 vw7でjunの後にたけのこ入れたりすると、
どちらもパーセルから入れたのでしょうか?二つのパーセルで
クラスに重なりがあるので警告をしているような気がします。
junを使ってるのか、たけのこを使ってるのかわからなくなるので、
混ぜないほうがいいでしょう。
>>207 データが全てオブジェクトという特性も述べておきましょう。
[データ型の単一性(unity)]
言語としてのSmalltalkでは、1st class objectは全てan instance
of Objectです。病的な例外を除き、全てのデータが Object クラスの
メソッドに応答します。そのメソッドの数は200を超えています。
一方Lispでは、1st class objectにはcons cell以外に、nilとか数の
ようなものがありますね。CommonLispに至っては、配列やらクロージャ
やら非常に沢山のデータ型があります。全てのデータに共通して
適用できる関数・スペシャルフォームは、atomぐらいだと思います。
Smalltalkでは、クラスもfirst class objectになっています。よって、
・
>>242 のようなことを美しく実現できます。
・ Reflectiveなプログラミングが可能・容易です。Lispなら専用の
special formやら埋め込みの関数を用意しなければなりません。
>>207 Smalltalkは、データ全体の空間(imageといいます)が一体になっている
という側面があります。imageのsnapshotを撮影して後に再生する機能は
環境に実装された機能ではなく言語仕様の要求です。また、以下のような
膠着性も隠れて存在しています。
[データの膠着性(agglutination)]
Smalltalkのデータは、自分のクラスを知っています。だから
aObject class
を評価すると、aObject のクラス自体(名前でなくクラスの実体)が
得られます。あるクラスからは、クラスシステム全体が参照できます。
さらにそこから、その瞬間に生きている全オブジェクトを参照できます。
(今はできない実装もあるかもしれません。)
つまり、Smalltalkの1個のデータは、独立してencapsulateされた実体
であるかのように見えて、実は背後にシステム全体の後ろ盾があります。
Lisp programmerがあるデータへの参照をつかまえたとしても、
そのLispシステムの全データを参照するのは無理です。Lispは
プログラマが細かくcellの参照関係を制御する言語だからでしょう。
>>209 に述べられている通り、Smalltalk のメソッド定義は
Common Lispよりも簡潔な範囲、最低限に限定されています。
アランケイさんは、元々はその辺の市井のお子様にメソッドを
書かせたかったからでしょう。これは
>>219 にある通りです。
>>214 1970年代のLisp環境といえば MacLisp と InterLisp-D が双頭ですが、
Smalltalk は InterLisp-D 側じゃないでしょうか。
どなたかこのへんの歴史をご存知ありませんか?
Smalltalk-80以降は、Xerox での開発ということもあって InterLisp-D
側ですよね。
244Mもある。
252 :
デフォルトの名無しさん :03/05/10 09:04
>>249 パクリつーかさ、
Squeakはあくまで「どういう環境にしたらより良い対話環境になるのだろうか」という
問いからスタートしているのに対して、
アチラのはあくまで技術主導でしょ。「こんなクールな技術があるから使えよ」という
発想からスタートしているっぽくて、それが対話環境として優れているかどうかは
二の次な感じがありありとしてる。
>>245 image が一体になっている事が必ずしも良いとは思えないけど。むしろ複数
image をプラグイン、プラグアウトして使えた方が嬉しいな。
SmallTalk厨は虚栄心強すぎ カコワルイ
>>245 かっちゃんは、言語としてのSmalltalkとLispの違いは何か?
という質問に回答しているだけと思われ。
別に image が一体になっていることを自慢しているわけではなく。
>>256 Interlisp-DのSYSOUTとかFranzのDUMPLISPとかありますが、
これはどうなんでしょうね。言語仕様の要求とまでは言えない?
それはそれとして、
>>254 の目的に適うものにVisualWorksのparcelなんかがあります。
これはまさにimageの断片をロード/アンロードする仕組みです。
>245 かっちゃんって誰? と思ったら、root で rm -rf / した人か。 確かにそうですね。最近、Squeak プログラムの配布はどうするのが良いのか 考えていて、その都度 image 丸ごと渡すのもしんどいなと思ってた物で。 かといって、cs を file in してねというのも敷居が高いかなと。 Hyper Card のスタックみたいに気軽に渡せると良いんだけど。 image ファイルはメモリダンプみたいな物と考えて良いんですよね?
宛先間違えた・・・。 >245 でなく >256 でした。
イメージ化はSmalltalkの専売特許ってわけでもないけど。
Microsoftを嫌っててもWindowsを嫌ってても構わないんだけど、 公衆の面前で固有名詞をしっかり表記しないってのはどういう 根性してるんだろうか。新しく入ろうとしてる人がLog見たら ひっくり返るぞ。
262 :
デフォルトの名無しさん :03/05/17 16:10
WindowsXPにVisualWorks非商用版のバージョン7.1をインストールしたのですが メニューをクリックすると一瞬だけメニュー(らしきもの)が表示されてすぐに消えてしまいます。 マウスの位置を動かさずにもう一度ゆっくりとクリックすると、今度はちゃんとメニューが現れて 選択することができます。右クリックでコンテキストメニューを出す際も同様で、やはり一回目は だめで2回目にメニューが表示されます。Smalltalkのような環境にあってマウス操作に 難があるのは耐え難いのですが、どなたか対策方法をご存知のかたはいらしゃいますでしょうか。
>>260 他には Mac Common Lisp くらいしか思い付かないけど、どんなのがあるの?
>>261 Micro$oft で google 検索すると Microsoft がトップに出るから良いんじゃね。
>>261 一般人にはわからない、ふかーい理由があるらしいから、そのまま流しましょう。
>>261 私も退いた。
本当に「オープン」ならばあそこまでしないと思たよ。
help me...
267 :
デフォルトの名無しさん :03/05/20 09:20
>266 そんな状況になったことないしのぉ キーボードやマウスのドライバが標準ぢゃないとか、ユーティリティソフト入れてるとか マウス交換したら無事動いちゃうとか 流石にそんなことはない?
>>241 どちらもパーセルです。
そうですね。仰る通り混ぜないようにします。
>>262 クリックでなく押しっぱなしでドラッグしてみそ。
直らなかったら「コントロールパネル」「マウス」「ボタンの設定」を
確認してみ。
最近7.1だと沢山パーセルが準備されてるじゃないですか。
色々使用してみて、おすすめ度とか判定しませんか?
言いだしっぺなんで私から。
パーセル名: ColorEditing
<機能>
コードに色がつけられる
<使える度>
初めはわかりやすいかな?おすすめ。慣れると別にいらないかも
269 :
デフォルトの名無しさん :03/05/21 02:12
正しくはJigsaw
なるほど、そういうことだったのですか。。。
ヤバイ。Smalltalkヤバイ。まじでヤバイよ、マジヤバイ。 Smalltalkヤバイ。 まずオブジェクト。もうオブジェクトなんてもんじゃない。超オブジェクト。 オブジェクトとかっても 「自分でクラスが作れるくらい?」 とか、もう、そういうレベルじゃない。 何しろ全部。スゲェ!なんかオブジェクトじゃないやつとか無いの。インスタンスとかクラスとかを超越してる。全部オブジェクトだし超たくさん。 しかも膨張してるらしい。ヤバイよ、膨張だよ。 だって普通はライブラリとか膨張しないじゃん。だって自分が使っているライブラリががだんだん変わってったら困るじゃん。インタフェースとか変わると困るっしょ。 ライブラリが変わって、一年のときはバッチリだったのに、三年のときはリンクも通らないとか泣くっしょ。 だからlibcとか膨張しない。話のわかるヤツだ。 けどSmalltalkはヤバイ。そんなの気にしない。膨張しまくり。メトリックス計っても毎日わかんなくなるくらい多い。ヤバすぎ。 全部オブジェクトっていったけど、もしかしたらそうじゃないかもしんない。でもそうじゃないって事にすると 「じゃあ、クラスのクラスってナニよ?」 って事になるし、それは誰もわからない(false)。ヤバイ。誰にも分からないなんて凄すぎる(false)。 あと超弱い。カーネルいじり放題。グローバル変数剥き出し。弱すぎ。 Smalltalkにnilを代入しただけで死ぬ。怖い。 それに超ユーザ少ない。超ガラガラ。それに超のんびり。30年とか平気で出てくる。30年て。小学生でも言わねぇよ、最近。 なんつってもSmalltalkは馬力が凄い。無限とか平気だし。 うちらなんて無限とかたかだか積分計算で出てきただけで上手く扱えないから有限にしたり、fと置いてみたり、演算子使ったりするのに、 Smalltalkは全然平気。無限を無限のまま扱ってる。凄い。ヤバイ。 とにかく貴様ら、Smalltalkのヤバさをもっと知るべきだと思います。 そんなヤバイSmalltalkを使ってる青木さんとか超偉い。もっとがんばれ。超がんばれ。
俺この↑コピペ好きだな。 もう少し Smalltalk のお仕事の話を聞かせて欲しいです。差し障り無い程度で お願い出来ませんか。practical scheme の Smalltalk 版が読みたいです。 ;; このスレって schemer 結構いそうですね。
VisualAge Smalltalk ってなくなっちゃったの?
>>275 274は273の別バージョンみたいものを読みたいってことなのかも。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
279 :
デフォルトの名無しさん :03/05/28 12:59
九州大学病院システムでSmalltalkを使ったが故に失敗 したってのにまだSmalltalkとかほざくのか(wwwww
>>279 九大病院の話ってそんなに有名な話だったの?
UNIX マシンで Swiki 使おうと思うんですが、-headless で立ち上げた後、 終了はどうするんでしょうか? いきなり kill しちゃって大丈夫でしょうか? それとも何か終了手順がありますか?
>>279 「ただし、「危機」はプロジェクト管理の問題で、Smalltalkの問題ではないことに注意されたい。」
確かにぽしゃったプロジェクトなんて腐るほどあるしねえ。
>281 Re: [pws] How to stop a Swiki? I just use kill. Peace and Luck! Je77 On Tue, Mar 12, 2002 at 03:47:29PM -0800, Mike O'Brien wrote: > Assume you have a Swiki running in "normal" mode, > thati is, headless and in the background. How do you take > it down safely? Is there a signal that it understands that > makes it shut down cleanly, or do you just aim a "kill -9" > at the sucker? > > Mike O'Brien と開発者は答えておる。killでよし。
>>284 大事なことを言い忘れていました。ComSwiki を使っています。
でも、このへんの事情は変わらないですよね。
というわけで、気兼ね無く kill しちゃうことにします。
ありがとうございました。
くっ、ぬかったわっ!
287 :
デフォルトの名無しさん :03/06/05 23:03
メソッドの引数には代入できて、 ブロッククロージャの引数には代入できない。 なぜ~?
初歩的な事かもしれませんがすみません。 redhat 7.1 に squeak3.5をインストールしてみたのですが、 起動しようとすると、エラーが出てしまい起動できません。 /lib/libc.so.6: version `GLIBC_2.3' not found (required by squeak) というメッセージが出てしまうのですが、これはどのように 対処すればよいのでしょうか? ちなみにredhat7.2のマシンにも入れてみましたが同じでした。
>287 SqueakでもDolphinでもできますたがVisualWorksはできませんですた。
>>289 これってacceptではねられるっていう意味?
もしそうなら、メソッド引数の代入が可能な処理系はないと思う。
ブロック引数の代入ができるのは、VisualWorks以外はちゃんとしたクロージャじゃないから。
VisualWorksでも小手先の技を使えば抜けられるよ。
| block |
block := [:arg |
| argIndex |
argIndex := thisContext tempNames indexOf: 'arg'.
thisContext tempAt: argIndex put: 0.
arg].
^block value: 1
みなさん、Smalltalkの処理系選ぶときに何を基準にしました? 商用利用可能とか書籍が多いとか…
VisualWorksは開発者のソフトに対する愛が感じられない、やっつけ仕事で作った ような感じだったので、Squeakを選択しました。
>>292 愛の問題はさておき、やっつけ仕事はむしろSqueakの方では。
少なくとも初期のParcPlaceはかっこよかったよ。なんとしてもSmalltalkを世に出してやるという気概があった。
そんな抽象的な事をお互いに言い合ってもまったく意味がないわけで。 具体例でも出してくれた方が幾分か参考になる。
>294 293ではないですが、 Squeakのやっつけ仕事っぷりは、Morphクラスの実装をみると一目瞭然です。 さらに、Objectクラスあたりの実装をVWとSqueakで比較してみるとよいでしょう。
アラン・ケイ見てるかな~ (つд・)チラ
ホントだ・・・。右上にIP表示されてる・・・。
VisualWorks7をLinuxにインストールして、じゅんもインストールして ベンゼン環でも表示させようとおもったら"Visual info error"ってのがでて ベンゼン環見れなかった。Mesaちゃんと入ってるはず。Gauche-gl動いてるから。 なんで動かないんだろう?たすけてー
>>298 dri使ってないか?
dri使うとダブルバッファ専用になっちゃって、
#詳しくは知らんけど、ウチではそうなる
じゅんは使えなくなるぞ。
#ダブルバッファ版じゅんをつくってる人がいたと
#思うけど、今どうなってるのかは知らん。
driつかわないようにしても動かず。 glxinfoでdirect rendering: Noになってる。 うぇーん。 300!
モバ板の Newton スレでちょっと話が出たんだけど、MVC と Morphic の 根本的な差異って何でしょう。クラスベースではなく、インスタンスベースの Self の影響が色濃いって事かな。プラガブル何たらクラスは後付けで振る舞い が変えられるオブジェクトを作れるって意味?
SqueakのMorphicに限ればインスタンスベースの色が濃いってことは ないと思いますよ。ちゃんと(かどうかは議論の余地はありますが(笑)) クラスベースでインプリメントされて(つまり、SmalltalkでSelf ライクなフレームワークを作ってそこに実装することもできたのに そこまではしていないという意味。関係ないけど、VisualSmalltalk版の Self処理系ってあったんですね。びくーり)いますし。 稚拙な表現だと、倹約的か富豪的かに尽きるかな…と私は思います。 使っていないのでよく知らないのですが、MVCワールドどっぷりと 言われるVisualWorksユーザーの皆さんはいかがでしょう。聞けば 最近のMVCはどうやら富豪的だともとれる発言を目にすることが 多いので、あるいはVisualWorksもそうなのかな、と。
>>301 インスタンスベースのプログラミング環境であるSqurakToysはMorphicを使って作
られていますが、302さんの言うようにMorphic自体はインスタンスベースではあ
りません。
Morphicは、オブジェクトに「生命感」を与えるというコンセプトで作られていま
す。
MVCではモデル自身に表示能力やイベントハンドリング能力はなく、これらをビ
ューやコントローラと分業することでGUIを構成します。
Morphicのモーフは、このMVCがごっちゃまぜになっていると言えるかもしれませ
ん。 Morphクラスのサブクラスとして定義するだけで、ワールドに表示できます
し、マウス操作に反応することもできます。モーフごとに独立してステッピング
できるので、プロセスを気にすることなく、複数のモーフを並行に動かすことも
できます。
MVCの場合、ビューはモデルに依存しており、モデルの値が変わったら、ビューに
通知して、その部分だけを描き直します。Morphicでは、モーフはステッピングで
定期的に興味のある値をチェックしており、変わっていたら書き直します。ここ
らへんは貧民と富豪的と言えるかもしれません(Morphicを初めて見たときは依存
関係がないインスペクタの値が勝手に変わったのに驚いた)。
あと、プラガブルなんたらクラスは、MVCプログラマがプラガブルMVC的に
Morphicを使うために用意されているクラス群です。同等のものがMVC用に存在し
ます。
MVCについては、青木さんの「使わないと損をするMVC」を、Morphicについては、
ジョン・マロニーさんの「Morphic入門:SqueakのGUIフレームワーク」(Squeak入
門に収録)を読んでください。
ttp://www.jac-net.com/~tarzan/smalltalkers/mvc/mvc.html ttp://www.amazon.co.jp/exec/obidos/ASIN/4434029479 長文スマソ。
>>302-303 どうもありがとうございます。
MVC がごっちゃまぜになっているという形容が一番しっくり来ました。
View が View 以上の能力を持っているという感じでしょうか。
じゅんが動かないー。いまだに解決できません。 Webで調べたんだけどなー。ウインドーズで使わなきゃいかんのはやだー
visualworksとかsqueakじゃなくてperlとかrubyのようなスクリプティングな 処理系ってないんですか?
GNUSmalltalk とか。フリーの Smalltalk 処理系は色々あるから試してみそ。
そうですか。それを聞いて安心しました。というのもsqueakを使ってみたのですが、 私のような大きなお兄さんには何とも言えない違和感がすばらしく隅々まで行き渡って いるので。。。アレかと。。。 アラン刑の影響が大きすぎるのかそれとも、、、、、、 さくらたんのcgがsqueakで動くようになるともっと萌えかもしれません。。。
>308 mpegもjpegも読み込んで、Morphで表示できるので、動くのではないかと
311 :
デフォルトの名無しさん :03/07/10 22:09
出来るか出来ないかだけでいいです。 Cにトランスレート後ならOKと言うのでも大歓迎。 1.環境変数の取得 2.標準入力からの入力 3.標準出力への出力
>>311 OSと処理系の種類を書いてネ。
大体どれでもできますが。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
Simple things should be simple. Complex things should be possible.
Smalltalk(Squeak) って生成後のインスタンスに動的にメソッドを追加出来るの?
>>316 Smalltalkはクラスベースなので、そもそもインスタンスはメソッドを持っていま
せん。インスタンスの生成後であっても、クラスにメソッドを追加することがで
きます。動的束縛ですから、実際にどのメソッドが使われるかは、そのインスタ
ンスにメッセージが送られて、メソッド探索されたときに決まります。
例えば HyperCard の様に GUI コンポーネントに直接コードを記述する感覚を エミュレートするにはどうしたら良いのかなと考えていて生まれた疑問です。
>>318 あんまり面白くない例ですが。
foo
self class
compile: 'foo ^ 3'
classified: 'as yet unclassified'
notifying: nil.
^ self foo
結果は3です。実行後にブラウザでこのメソッドを見ると
foo ^ 3
になってます。
>>319 インスタンスベースのSqueakToysはまさにそれだと思います。
コンポーネント(モーフ)ごとに、対応するクラス(Playerのサブクラス)
を作って、スクリプトをそのクラスのインスタンスメソッドとして定義し、
実行はそのインスタンスにやらせるというかなり無茶な方法ですが。
>>319 単にハイパーカードライクなこと(オブジェクトベースなこと)をしたければ、
Smalltalk ではなく、SqueakToys あるいは、SqueakToys の枠組みで
Smalltalk コードを記述する…という方法があります。
SqueakToys は Squeak に用意されている Smalltalk とは別の、ある種の
ビジュアルプログラミング言語/処理系で、モーフと呼ばれる GUI
ウィジェット(というか、Squeak では画面に見えるものすべてがモーフで
構成されているので、あらゆるもの)に対して、個別にスクリプトを記述すること
ができます。これはハイパーカード、そのまんまです。mouseUp だとか
mouseDown だとかいったイベント駆動型のスクリプトも組めます。
また、こうして記述された SqueakToys スクリプトは、実は、内部的
には Smalltalk に変換されており、スクリプタ(スクリプティとも。タイル
スクリプトを編集するための矩形状のしくみ)の表示モードを切り替える
ことで対応する Smalltalk コードを見たり、Smalltalkコードとして改変
することもできます。ただ、Smalltalk についてや SqueakToys の枠組み
のしくみ(具体的には Morph 、Player クラスについて)を知らないと
いけないので、いろいろと勉強は必要でしょう。
(^^)
>320-322 レス遅れて済みません。いろいろ参考になるお話ありがとうございます。 ruby の singleton method って便利そうとか思ってみたり、Self を ダウンロードして来ていじったりしてました。 SqueakToys を探索してみます。
>>324 そうですね。子供向きとあなどるなかれ。SqueakToysも意外と
奧が深いですよ。わけあって私は嫌いですが(^_^;)。
ちなみに Morphic がらみで Self に行き着かれたのだと思いますが、
Squeak 版 Morphic と Self 版 Morphic は実装者と見た目は同じでも
中身は全然違うので参考程度に留めておくのが吉です。
オブジェクトがクラス(Self の場合、クラスはないのでその役割りは
traits というクラス様のオブジェクトが担います)に依存せず、独自の
機能や属性を持つことができる Self の特性は、Squeak Morphic GUI
フレームワークよりは SqueakToys フレームワークに反映されて
います。ただ、まあ、私のようにあまり Smalltalk になじみのない
人間からみてもかなりトリッキーな方法で実現されているなと感じます。
ちなみに、少々うがちすぎかもしれませんが、プレイヤは Player
(のサブクラス)のシングルトンではありません。インスタンスは
複数存在できるようになっていて、それが sibling(兄弟)と呼ばれる
メソッドだけを共有できるおもしろい効果を生みだしています。
redhat linux 7.1でsqueak3.5動かせた方いますか?
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
Play with Squeak 買った age.周りの人間に布教してみようっと.
>>329 店頭で手にとって見たけど、ちょっと恥ずかしくて買えなかった・・・
SRAの青木さんのHPが閉鎖されてるよ。
>>331 うは。ほんとだ。都合によりってなんだ?なんだ?
SRAから離れる?
日本のコミュニティーに愛想つかした?
真相知っとる椰子は尾鰭つけてええんで、報告よろ。
豆蔵に行っちゃう!
>333 うそだよなっ、なっなっ?
テキトーに言ってみただけ! 心配させちゃってごめんね>334 おれも豆蔵はやだーん
336 :
名無しさん :03/09/01 22:36
それにしてもSmalltalkのドキュメントやプログラムを読みたくなったときに 青木さんのHPがなくなっていたなんて悲惨。 ぜんぜん一人前じゃないことがよくわかったよ。 HP復活するのかな?どこかで
>>337 親切な人もいるんだな。ありがとう。
必要になったら青木さんのHP見ればいいやー、なんて想ってた。
いざ見ることが出来なくなると、おれはいままで何やってたんだって感じ。
おれとおなじことおもったやつら、精進しようね。
結構依存度高いページだったねぇ。 WebArchiveって抜け多くていかんよね。 いざとなるとほんとに情けない自分を再確認できる(死
ウェブページは「苟且(かりそめ)」。 青木さんのHPのバックアップを確認したら、280MBぐらいあった。
青木さん引退かな?スーパープログラマのまま。 だれかが引導わたしてあげたのかなー? だとしたら折れじゃないのがくやちー!
SRAのオープンソースのサイトからSmalltalkの文字が奇麗さっぱりないね。 Smalltalkから撤退?で、青木さん辞めてやる!とかなのかね? SMLで質問してた人スルーされてるのぉ
>>338 SRAの近藤氏さえ「不明」と言っているぐらいだから、色々深そう。
>>341 エライ、よく保存してた!海賊版CDROMとしてこっそり配って下さい。
>>344 青木さんSMLではマメに反応するのになあ。本人でさえ何も書けない
ということなんでしょうか。
しばらくはいろいろと憶測だけが飛び交ってみんな悶々としちゃうんだろうなぁ。 あ、海賊版CDできたらISOイメージかなんかで配布してください(笑) SMLがSRAから追い出されたりしない事をお祈りちう。
SMLに青木さんの解答が出ましたね。 いろいろと想像しつつ12月まで我慢しますか。
よくわからんけど青木さん カコイイ !!
Free Documents for SmalltalkはGPLで公開されていたから、海賊版CD(^^;でなくてもいいかな、とか でも、青木さんの邪魔をしてはいけないな、とか思っていたり。。。
青木さんだけにいじれないなあ。とりあえず待つ。 それはともかく、SRAでさえも人月いくらで請け負いしてるのか。
とりあえずしばらくはSmalltalkは自分でなんとかする時期らしーから しばらくは自分で迷宮に迷い込んで遭難してみまつ
353 :
デフォルトの名無しさん :03/09/08 12:51
Squeak3.4 付 KNOPPIX ハケーン
この間AmazonでSqueakとSmalltalkの本を3冊もいっぺんに買って、 これからSqueakで遊ぼうと思ってた僕はどうすればいいんでしょう……。
>>356 なんかあったら、ここで投げてみたら?
青木さんしか答えられない質問って入門レベルではそうそう出てこないともいう。
358 :
突然ですが :03/09/16 02:23
オブジェクト指向とクラス指向の違いを教えてくたちい。
おーっ、 ここのところ数ヶ月ずっーとカキコに失敗してたから(当方アメリカ在住) だめもとで書き込んだらageてしまった。 なんかマターリしたスレだったのにスマソ。 んで、クラス志向ってなんですか。
>>360 サンクスです。
(実は自分でググってその文章は既に読んでいたのですが。)
単一分類<->多重分類、静的分類<->動的分類という観点から、
それぞれ前者のみの実装しか可能でない現在のほとんどの
"オブジェクト指向"言語は、"クラス指向"言語と呼ぶべきではないのか、
というのが論点でしょうか。
その意味では、"クラス指向"とは、上の観点を意識して
"オブジェクト指向"を呼び変えているだけのもの、ということなのですね。
質問を間違えていました。そもそも聞きたかったのは、とあるページで
「クラスベースのSmalltalkに対してオブジェクトベースのRuby」
という言い回しを読んだのですが、この「クラスベース」、
「オブジェクトベース」な言語の違いとは何なのでしょうか?
(Smalltalkも勉強を始めたばかりですが、Rubyはコードを
見たこともありません。)
たびたびスマソ。
過去ログを読んでみたら、
>>317 あたりからの議論にそれらしいことが書いてあったのですね。
SqueakToysのタイルスクリプティングのように、"インスタンス"にメソッドを動的に
定義できるのが"オブジェクトベース"?
でもSqueakToysって実装はSmalltalkなわけですよね。オブジェクトベースのエミュレート
じゃなくて、VM(って言い方が正しいかは疑問)のレベルでそれをサポートしているのが
Rubyってことなんでしょうか。
クラスベースとオブジェクトベースそれぞれの得意、不得意な面なんかをまとめた
ページか書籍があったら教えてほしいです。どうぞよろしゅう。
UnixのwmがSmalltalk環境だったら面白いと思わない? sawfishなんかLispで動いているわけだし、決して不可能ではないとおもう。 それにSmalltalkの自分で作るって感覚はUnixと相性がいいように思うんだが。
>>365 やっと神が降臨しましたか!このときをどれほど待ったことか・・・(感涙)
>>365 むしろ、X 捨てて Squeak でいいと思う。
>>362 Python や CLOS もプロトタイプベースな書き方が出来るらしいですね。
CLOS はどうやるのか知らないけど。
Self とか Lua とか io とか、他にも色々あります。
>>365 国際化が不十分な現状では勘弁して欲しいけど、実装するなら Direct
FrameBuffer 上に Squeak を載せるのが良いと思う。
sawfish は rep という scheme ちっくな Lisp を使っているけど、
rep のグラフィック周りは確か Gtk+ だから、GNU Smalltalk を使え
ば似たような事は出来るかも。
(UNIX 上の) Squeak からシステムコールは簡単に触れますか?
371 :
デフォルトの名無しさん :03/09/17 08:34
372 :
デフォルトの名無しさん :03/09/17 08:39
squeakで2chブラウザ作ったら,おもしろそ。
Smalltalkは仕事では使う機会は残念ながらないのですが、プログラミングの
センスが養われればいいなぁと思って少しずつ勉強しています。
今仕事でMFCアプリケーションを作っていて、MFCのDocument-Viewアーキテクチャ
(DV)とModel-View-Controllerアーキテクチャ(MVC)との間でどう折り合いを
つければよいか考えています。
SmalltalkでMVCと言ったとき、青木師匠によれば、
http://www.jac-net.com/~tarzan/smalltalkers/mvc/mvc.html 3種類(レベル)あるんですよね。
(1) コントローラが頑張るMVC
(2) 依存性を利用するMVC
(3) プラガブルを利用するMVC
(続き) DVで普通に実装すると(1)か、せいぜい(2)のレベルに落ち着いてしまい そうなんですが、できれば(3)みたいな形で実装したいなぁと。 (3)のようにプラガブル、とまではいかないまでも、Model部分に機能の比重が 置かれ始めると、ほとんどデータの管理者としての役割しかないDVのDとして Modelを実装すると、なんとなく収まりが悪くなってくるような気がします。 、、、って、自分でも何を聞いているのかよくわからないんですが、MVCを強く 意識してプログラムしたいって時に、MFCのDVモデルをどう捕らえればいいのかなーっ て言うのが疑問です。 フレームワークが与えられたときはその流儀に素直に従えば楽だよ、って意見も あるんでしょうが、今回の場合も他のOSにも移植を考えていまして、必ずしも MFCの流儀にそのまま沿った解が正しいとも言えなさそうなので。
>>375 M-VCで良いと思うけど。
どうせ具体的な画面作るのにそれが汎用的なVになんてなるわけがないし、そんなVにくっつくCもまた使い捨てだし。
>>377 そんな身も蓋もない言い方をされると
、、、すっきりしました(w。
具体的な操作画面を作りこんでいくとどうしたってdomain model-specificな
実装になってしまいますよね。
汎用的なV,Cを実装するのは、たとえばVisualWorksみたいにApplicationModel
という概念が存在していて、ボタンなどのUIコントロールの配置情報をモデル側に
エンコードできるようになっていればこそ可能なんでしょうし。
、、とシッタカで言ってみましたが、実はこのApplicatiomModelという概念 についてもよくわかっていませんです。 ドメインモデルからGUI関連の部分を抽出したモデル、という理解でいいのかなぁ。 だとするとそれに相当するものはMFCのDocument-Viewで言えばView側に 実装されるべきもの? その意味で、仮にModelを"DataModel"と"ApplicationModel"とに分けるとして、 DV MVC --------------------------------------------- Document DataModel - - - - - - - - - - - - - - - - - - - - - View ApplicationModel View Controller って感じで分けるのかな。形ではDataModelだけをDocumentで ラップすればいいんだろうけど、そもそもそうしてまでDVアーキテクチャに あわせて実装する意味がよくわからなくなってしまふ
DV MVC ---------------------------------- Document DataModel - - - - - - - - - - - - - - - - - - - - - View ApplicationModel View Controller
なんか自分で書いててウザイ感じのするカキコだよなと。 文章長いし。ちなみに、デザパタにはまってるやつもそうなんだろうけど、 何か他にきちんとした正解があるんじゃないか(よいデザインがあるんじゃないか) といって何も実行に移せない(実装が始まらない)状態を「受験生症候群」というらしいです。 漏れ的にはデザパタの勉強のためにはVisualWorks、受験生-の克服のためには Squeakをいじる、って感じでバランス取れたらとおもとります。 単純に楽しい言語だと思うし。でも周りに誰も使ってる人がいなくて、MLはなんか怖くて 投稿できないし、というわけで連続カキコスマソ。
分割・汎用化する意味は再利用を行うのが前提にある。 再利用を前提とせずにただ既存の形式に沿って分割しても意味がない。 その辺は実際に再利用してみるとよくわかるんじゃないか。 カンを養っていけば、理屈は後から付いてくる。
青木さんのページ復活してますねー。
>>383 SMLでJunの新しいのとTextBookのお知らせがご本人から出てたからそこだけかとおもったら
おおむね復活でつね。
話まとまったんだろか?
>メッセージ送信 >オブジェクト指向という考え方の中の重要な概念。 >オブジェクトに対してメッセージを送信すると、受信したオブジェクトが対応するメソッドを起動する。 メッセージレスのオブジェクト指向言語はないのかな? オブジェクトに対して任意のオブジェクトを送る(ぶつける)みたいな(^^;
そりゃ鉄砲玉指向だな 指詰め理論・ヤクザの抗争デザインパターン
>>386 メッセージの一部としてオブジェクトを渡すことは出来るぞ。
Giko giko = new Giko();
mona.omaeMona(giko);
>>388 このスレではSmalltalkで書いたほうが皆喜ぶと思われ。
>389 じゃあオイがかいちゃる | mona giko | mona := Mona new. giko := Giko new. ^mona omaeMona: giko
Web+DBでMVC2なんてのがあるんだってね。 Javaってすごーい。 このスレさみしいね。
Squeak m17n 最新版のスクリーンショットうpキボン。
Squeak触ってみてFlashみたいな感じのものを簡単に作れるようになったら面白そうだなぁと思ったが よく考えたら漏れにはFlash作る技術と金も絵を描く才能もなかった(鬱
>>394 SqueakPluginでもってそれなりに遊んでみるならとりあえずはタダじゃね?
画才とスキルはまぁ、がんがれ
ひさしぶりに見てみたら
ttp://www.ambrai.com/ のMacOSXSmalltalkがいつのまにかに
coming soon...
MacOS X Smalltalk
- native widgets
- integrated environment
- ansi compliant
とかなってるんですが(w
マジで出すのか!
>>396 これはヤバすぎる。たまらん(;´Д`)ハァハァ
398 :
デフォルトの名無しさん :03/11/04 23:01
>396 これを機にMacに転向するか
>>396 >- native widgets
Screenshot見たけどCarbonみたいだね
400 :
デフォルトの名無しさん :03/11/24 10:51
ウィンストンのSmalltalkはどうなんですか?
>>400 とりあえず買っとけ!って感じじゃないかと。
VW7.2のCD落としてみたが、インストールが途中でこける(w
Previewとかで必ず止まるんで、最後無理矢理手でインスコしますたよ。
でも個人的にはOpenGLのハードウェアアクセラレータないマシンではじめてJunが動いたのが嬉しい。めさめさ遅いけど(藁
紀伊國屋BookWebで「ウィンストンのSmalltalk」入手不可になってた。 青木氏の本は全滅、「サクサク」もいつまであるのか。 Smalltalk書籍は風前の灯か。
誰かCincomのSmalltalkをDual Display環境で うまく使えてる奴いない? ポップアップメニューがプライマリDisplayに出ちゃうんだよね。 何とかなんないかな。
>>403 Cincomに問い合わせてみたら?
インスコできね~~~!にはけっこう親切なメールきたよ。
その先の事態ぽいから有償版買え!ついでにサポートしてやるとか言われるかもだが(死
405 :
名無しさん@Vim%Chalice :03/12/02 22:42
WindowsXPでVisualWorks7.2nc使ってるんだけど、 | aWindow | aWindow := ScheduledWindow new. aWindow openIn: (200 @ 100 extent: 400 @ 300). ^aWindow でウィンドウ開いた後、ウィンドウ閉じるために右上の×ボタン押しても ウィンドウ閉じてくれない。 仕方ないからScheduleWindow allInstancesでインスペクタ開いて それらしいのにcloseメッセージ送って閉じてるけど何とかならんの? こんな症状俺だけ?
このスレでSmalltalkで仕事している人は一人でもいるんでしょうか? ちょっと疑問に思ったもので。
>406 はいはいはーい?
>>407 おぉ~、いらっしゃいましたか。
支障がなければで良いんですけど、どのような分野で使っていますか?
また、実際に使ってみて効率はよいのでしょうか?
409 :
名無しさん :03/12/02 23:30
人に聞くより自分で使って評価してみては。。。
Squeak M17N の最新スクリーンショットが見られるところ無い?
>>409 いえいえ、実際に仕事として使った場合の効率の話でして。
家で趣味でやるものと仕事でプロジェクトとして使い場合では違うじゃありませんか。
412 :
デフォルトの名無しさん :03/12/03 13:14
>405 現象、再現しました。 windowのcomponentがnilであると、この現象が 発生するようです。再現性はたぶん100%です。 componentに何か入っていれば出ないみたい。
追跡しました。 やはりcomponentがnilであるとウインドウは イベント処理をしないというのが「仕様」みたい。 (クラスWindowのcanProcesEvent:に記述有) 現在のVisualWorksは全部イベント駆動なので、 この結果ウインドウは閉じなくなりますね。 何か適当なものをcomponentに設定しましょう。
componentになにか入ってないとイベント拾ってくれないなんていやだから Window>>canProcessEventを書き換えちゃってtrueを返すようにしてみた。 いまのところ問題なく使えてるみたい。 componentに何か入れないとイベント駆動してくれないなんておかしくない? Window>>canProcessEvent ^true
たしかこの現象は7.1のときからあった。 だれも変だなとは思わなかったのかな? それとも自分で解決したのかな?
ウインドウを開く時には、なにかimageなり viewなりcomposedTextなりを放り込むのが 普通だからという思想なんじゃないのかな。 Windowの開き方のチュートリアルならともかく、 サンプルプログラムでもない実システムでそうする 局面が必要とはあまり思えないわけで。 …とはいえ、そうしなければならない必然性もあんまり 思い付かないなあ。何か不具合が出て、アドホックに やったくさいですね。
417 :
デフォルトの名無しさん :03/12/13 22:19
質問いいですか? ブラウザーを一回閉じる→再び前の状態で開く ということをやりたいのです。 アプリケーションモデルのビルダーからウィンドウを取得して,サイズを指定して開くと再び開けるのですが, ビューホルダーを使用している部分のコントローラがnilになってしまします。
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,n。'^゚,n。'^゚,n。'^゚,n。'^゚,n。'^゚,n。'^゚,n。'^゚,n。^゚,n。'^゚,n。'^゚,n。'^゚,n。'^゚,n。'^゚,n。'^゚,n。 _no _no _no _no _no _no _no _no _no_no _no _no _no _no _no _no _l⌒l0 _l⌒l0 _l⌒l0 _l⌒l0 _l⌒l0 _l⌒l0 _l⌒l0 _l⌒l0 _l⌒l0 _l⌒l0 _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
ゲームPG目指している者です。 あまりにも自分の作る設計がゴミなので 言語でカバーしようかと思いSmalltalkの考え方を 参考にしようかと思ってます。 英語もろくにできない雑魚兵ですが どうぞよろしく
>>421 悪いこと言わんからそれだけの理由ならJavaにしとけ。
>>420 すべてがオブジェクトの世界へようこそ。
考え方を参考にするのなら、Smalltalkは最強だと思います。
ここでのJava,C++,C#でも活用できるとおもうので、
がんばってね。
Smalltalkさわってみた感想ですが、 C++,Java などは オブジェクトひとつひとつに多様性をもたせ、 多数のオブジェクトで ひとつのシステムを構築するようなイメージが あるのですが、 Smalltalkは、すべてをオブジェクトととらえ、 このオブジェクト同士を繋げる鎖みたいなもので 構成するイメージですね。 多様性をもたせているのは、鎖側な感じがしました。 ちょっとC++のプログラムが複雑になってきたので、とても参考になります。 特にバージョンが絡むと しんどいです。 鎖に重点を置く考え方、おもしろいですね。 混ぜるという今までの考え方ではなく、繋げるという考え方 言われてみれば簡単ですが、なかなか深いですね。
>>418 反応遅くてすみません。しばらく2ちゃんねるを見てませんでした。
8年半も前の資料をよくぞ発掘して下さいました。
ObjectWorks,VW,VW3,VW5,VW7と、10年余りGCの基本戦略は
変更されていません。10年あまり進化がないとも、10年もつ
設計だったとも言えるでしょう。私のweb pageの内容は、
今のVW7にもあてはまるはずです。
プログラマ向けのメモリ管理のインタフェースはObjectMemory
クラスですが、公開されたメソッドの種類や名前に変更はありません。
このクラスにある、メモリ管理に関する説明の文章も昔のままです。
>>418 一方で、実装には明らかに改善が見られます。
少なくとも、メモリ管理の活動を規定する閾値や空間の広さを
決める定数は、現代のハードウェア環境の裕福化に合わせて
VW5あたり?で調整されました。
また、メモリが逼迫した極限状況でのパフォーマンスと安定性が
VW5ぐらいから大きく改善したのを観測しています。が、どのような
改善が行なわれたのかは私はわかりません。
>>425 > メモリが逼迫した極限状況でのパフォーマンスと安定性
私は時折VMの性能の比較をすることがあります。例えば:
http://katsu.watanabe.name/smalltalk/jun/benchmark/stversion.html http://katsu.watanabe.name/smalltalk/jun/benchmark/ 上を見ると、crtという大量のオブジェクト生成をするベンチマークで
VW3が時折妙に遅いこともあるのが見て取れるでしょう。
(vor,delはボロノイ図の計算というCPU boundベンチマークなので
メモリ管理の面からは無視してください。)
そもそも実は上のベンチマークは、VW3でも落ちない程度に相当に
「手加減」してあるのです。速度差を見たいために、測定可能な範囲の
易しいテストに限ったのでした。
このベンチマークを設計する際には数々の極限状況を作り出しましたが、
VW3以前では以下のような障害にでくわしました。
・深く再帰したり大きくstackを消費すると、あるところを境に急に遅くなる
ことがある。(再帰に関するscalabilityの欠如?)
・短期間に特別に大量にオブジェクトを生成することで、再現性を持って
停止や異常終了に持ち込むことができる。
・GCが多く走る状況で、効率よく空間を回収(あるいはcompaction)
できない(?)ことがあって、仕事がGCばかりになってしまう。
これがVW5以降だと、ぱったり安定(性能も向上)していました。
>>418 メモリ管理の基本戦略上の変更というより進化を一つ思い出しました。
かつてはSmalltalk(のイメージ)はその世界だけでほぼ閉じていました。
つまり、VMはSmalltalkのオブジェクトだけを扱い、逆にSmalltalkの
オブジェクトだけでアプリケーション(イメージ世界)を作っていました。
しかしVisualWorksでは、他の言語や他のプロセスや下位OSの
オブジェクトと協調して動くよう、方向性が転回されました。
これは汚れたととることもopenになったととることもできるでしょう。
とにかく、この傾向はVWのバージョンが上がるにつれ強まる一方です。
このため、メモリレイアウト上も、VisualWorks以外のオブジェクトを
置く空間に関する工夫が強化されました。GCはあまり関係ないかな?
具体的にはすっかり忘れました。ゴメソ。どなたか補足お願いします。
ホー。 (わかっていない)
Smalltalk とか Common Lisp とか、イメージファイルを使う利点が 良く分からないな。各種ライブラリのファイルと、現在の環境を記録 したファイルに細かく分割しても何の問題も無さそうだけど。そして そっちの方が、取り回しや効率の点でメリットが大きいと思う。 何でかな。
>>429 各種ライブラリにも手を入れるのが前提だから
うーん、それも考えたんだけど、例えば同名のクラスを作って上書きする とかでも良いような気がして。クラス名の辞書を各実行環境で持っていれば 問題無いでしょ?
>>431 オブジェクト(ファーストクラスオブジェクトを含む)指向か、クラス(ファーストクラスなら単なる定義)指向
かの違いでは? 定義大事なら、定義テキストがファイルで整理、管理されていれば安心だけど、
オブジェクト大事だとイメージにダンプして永続化しておくほうが便利だからでは、と。オブジェクトには
名前があるとは限らないから名前で管理はしにくいし、Smalltalk 環境で定義は、極端なことを言えば
「あれば便利」程度の扱い(イメージさえあればとりあえず運用可能)。
あるいはもっと単純に、言語処理系ととらえるか、個人向けのコンピューティング環境ととらえるか。
処理系なら実行環境ごとの個性は極力排除したい。環境なら副作用ごと継続して使いたい。
433 :
デフォルトの名無しさん :04/01/12 14:56
>>429 つーか、実際Smalltalkではソースファイルとイメージファイルとチェンジファイルは
別々のファイルとして分かれてますが?
VisualWorksでうっかり無限ループさせちゃった場合、VisualWorks自体を終了させるしかないんでしょうか? ・WindowsならタスクマネージャでVisualWorksを強制終了 ・EmergencyEvaluaterを起動させてObjectMemory quitを評価 無限ループだけを終わらせる方法はないんでしょうか?
>434 正直、あるかもしれんし、ないかもしれん。 自作クラスが自作メソッドを呼び続けているような 場合には、ブラウザでそのメソッド定義を書き換え るとそれが呼ばれて止まる可能性も高い。 無限ループがオブジェクトの状態依存なら、 インスタンスを束縛できているならそれをつかまえる ことは容易だし、個数が少なければクラスにallInstancesを かけてつかまえることもできるかもしれん。 その後で状態を書き換えて止めることができるかもしれん。 しかしメソッドも含めてコンテクストがclosure内で 完結させた中でループさせていると、まずもって困難 かもしれんね。 まあ、何にせよ実行直前まで組んでいたコードは復旧できる わけなので、さっさと終了させて今後は止め方も含めて コーディングするように心掛けるのが正解だと思いますが。
うん、復旧できるのはわかってるよ。 VisualWorksとめたり復旧させたりがめんどいから聞いてみたんよー。 初心者なんでやさしくしてね。
Squeakって自己拡張のみでここまできたんだよね? 最初ってどんなんだ
>>437 Apple 版の Squeak は 68k のアセンブラだらけって聞いたような。
>>437 最初はAppleのAPDA版のSmalltalk-80のサブセット(っていうか実装段階の1だか2だか
だっけ?)。
こいつをCへのトランスレータを使ってSmalltalkに書き換えてってなループで作ってったって
話がBackToTheFuturあたりに書いてなかったっけ?
Squeak抜いちゃったんで判らん(w
>>437 「Squeak 入門」にそのへん詳しく書いてあったような。
>>440 今、まさにそれを読んでます。面白いです。
>>437 AppleのSmalltalk-80上で、SmalltalkによってVMを書き、デバッグ。
同時にSmalltalkからCへのトランスレータを、やっぱりSmalltalkで書く、
というやり方だったらしいっす。
おー、すげえ Squeak 入門 買おうかな。あの濃い青紫みたいな表紙のアレだよね?
>>442 そだよ。キミなら買って絶対損はないよ。
よし、買ってみよう。そしてSmallTalkの世界に入ってみよう。 Prologl -> C -> Lisp と来た僕のノーミソ,果たして再度柔らかくなれるのでしょうかっ
445 :
デフォルトの名無しさん :04/01/17 11:14
>437 Small"t"alk
売り切れてた(ノ_;)誰だよ買ったの
>>445 へい
なんでProcessクラスがLinkクラスのサブクラスなんでしょうか? ProcessとかProcessorSchedulerあたりの振る舞いを解説したHPってないですかぁ?
449 :
デフォルトの名無しさん :04/01/17 19:28
>434 winならCtrl+C(Ver2*),Ctrl+Y(Ver7) でプログラムを止められる.
>448 実装継承なのは知ってるよProcessが何でリンクみたいな構造になってるのかしりたい。 >434 それはエマージェンシーエヴァリュエータが起動するだけでは。。。
>>450 Semaphoreの要素として使うから。
>>450 起動するのはデバッガかノーティファイヤ。
ちなみにSqueakではalt/cmd-ピリオド。
>451 ctrl+y(小文字)のこと?
453 :
デフォルトの名無しさん :04/01/20 21:36
age
単純な質問良いですか? メソッドとメッセージの違いを教えて下さい。同じ物のように思えますが、 もし実装上の区別とかありましたらご教授ください。
Smalltalk実行環境(VM)作りたいんだが 参考になるリソースを急いでageてくれたまえよチミたち
457 :
デフォルトの名無しさん :04/01/21 00:13
squeakはデカすぎねえけ
LittleSmalltalk、v3よりv4のディス鳥ってのの方が圧倒的にcのソース少ないけど、 イメージに移しまくった結果だと思っていいのかな?
>>454 たとえば、3 + 4 で、
「3」はレシーバ
「+ 4」がメッセージ
「+」がセレクタ
「4」がパラメータ。
このメッセージ送信により起動される「Integer >> #+」本体(場合によってはそのソース)がメソッド。
正直、そこでまた「3+4」を出すから、初心者には なおさら分かりにくくなってるんじゃないのかなあ。 ブラウザでIntegerの「+」を見ても「ハァ?」だしさあ。 とりあえず、 メッセージ=オブジェクトに送る「命令」自体のこと。 メソッド=オブジェクトが命令を受けて、実行する「中身」のこと。 ブラウザでコードを見た際の、コメントより後の部分に相当する。 とでもしておけば入り口としては十分だと思うけどな。 まずこれを説明してから、ポリモルフィズムの話だのコンパイルと 実行コードとメソッドサーチの話にでもつなげればいいでしょ。
>>459-460 レスどうもありがとうございます。
メッセージは手続きを呼び出す式で、メソッドは手続きその物であるオブジェクト
という事ですよね。メッセージ送信 --> メソッド検索 --> メソッド起動という流れ
であり、メッセージはメソッド自体とは別の物。
そもそもの疑問は、このメッセージ送信と、メソッド呼び出しを同じ物と考えて
良いのかという点です。違いが良く分からないのですが、何か異なる点があるの
でしょうか。
もしかしてJava出身なのかな。 メッセージ送信→メソッドサーチ→メソッド起動という流れはそれでいい。 違いはたとえば同名のメソッドをもつ異なるオブジェクトがある場合、 呼び出されるメソッドはレシーバが何のオブジェクトかわからないと メッセージ送信する側では特定できない。 またメッセージはセレクタを利用してそれ単体で保存して後で送信したりできるってのもある。
>>463 レスありがとうございます。
Java 出身という訳ではありませんが、念頭に置いていたのは Java 等で言う
メソッド呼び出しです。
>違いはたとえば同名のメソッドをもつ異なるオブジェクトがある場合、
>呼び出されるメソッドはレシーバが何のオブジェクトかわからないと
>メッセージ送信する側では特定できない。
これはプログラム実行時にメソッドが決定されると言う事ですよね。
>またメッセージはセレクタを利用してそれ単体で保存して後で送信したり
>できるってのもある。
こちらは Lisp の lambda みたいな感じですよね。
メソッド検索のタイミングの違いかなぁ。コンパイル時に行われるか、 実行時に行われるかの。
ところで VisualWorks の 2.X に附属していた チュートリアルを探しています。 Checkbook(小切手帳)をつくるやつです。 VisualWorks Tutorial Rev.2.1 だと思います。 日本語・英語 両方のpdfを持っていたのですが、 うっかり消してしまいました。 ググッたのですが...。・゚・(ノД`)・゚・。 ありかを教えてくださ~い
467 :
デフォルトの名無しさん :04/02/02 22:48
vw7.2nc(macosx 10.3.2で)使ってるんだけど。。 不安定すぎてとてもつかえません、Windowsのマシンでばかりつかってます。 せっかくマクかったのに! 起動してすぐキーボード入力しようとすると vwmacxgui[1981] *** -[NSConcreteAttributedString characterAtIndex:]: selector not recognized なんてメッセージがでちゃいます。 ImageやRectangleのfromUserなんて実行すると vwmacxgui[1981] Invalid message sent to event "NSEvent: type=AppDefined loc=(0,0) time=0.0 flags=0 win=0 winNum=0 ctxt=0xe633 subtype=0 data1=0 data2=0" こんなのがでて固まります。 これじゃつかえねーヨ!。どなたか救いの手をー
470 :
untitled :04/03/02 19:24
age
SMLって死んじゃったの?
>>471 リマインダーは届いてるから単純に流れてないだけじゃ?
ネイティブコンパイル可能な Smalltalk 処理系って存在するのでしょうか。 同じように動的な言語である Lisp はメジャーな処理系の殆どがコンパイラを 備えていますよね。
>473 Smalltalk/Xとか、青木さんが作られたCへのトランスレータとか。 でもハイブリッドなものは (Javaで言うHotSpot) 他にもありそうですが。
>>474-475 どうもありがとうございます。ネイティブコンパイルするのに何か問題があるのかな
と思っていたのですが、そういう訳でも無いのですね。
つってもコンパイルできるのはSmalltalkのサブセットだろ。
478 :
デフォルトの名無しさん :04/03/11 05:37
>>477 LispやSmalltalkにはevalやevaluate:みたいなものがあるのだから、
コンパイルできるのがサブセットなのは当たり前。
>>478 つまりネイティブコンパイルするのに何か問題あるってことでFA?
ところでさ、Smalltalkのevaluate:はコンパイラ動かしてバイトコード生成してるんだから、
ネイティブコード生成して動的リンクすれば実現可能な気もするが、どうよ?
>>479 477が静的コンパイルとネイティブ・コンパイルをごっちゃにしているようなので
こうなった次第。ごっちゃにしてんの俺かも。
> ところでさ、Smalltalkのevaluate:はコンパイラ動かしてバイトコード生成してるんだから、
> ネイティブコード生成して動的リンクすれば実現可能な気もするが、どうよ?
evaluate:の引数の中にevaluate:やらユーザー入力やらがなければね。
結論:
静的コンパイルは、できないコードはできない。でも、それは「問題」
ではなくて、言語がリッチであることの証。
ネイティブコンパイルは、JITだったりする処理系であればevaluate:も含めて
もうやっている。
>>480 > evaluate:の引数の中にevaluate:やらユーザー入力やらがなければね。
いや、だから、実行中にその文字列をネイティブコンパイルして
tmpname.soなりtmpname.dllなりを作って動的リンクすれば?って話なんだが。
>>481 つまり作られたtmpname.soからネイティブコンパイラが呼べれば、という
ことだよな。そしてさらに作ったtmpname2.soをtmpname.soから呼ぶと。
...がんばってくれ。
ユーザー入力をウィンドウで受けとってそれを文字列に変換して、
というようなコードがevaluate:の引数の中にある場合も考えてね。
もう一度書くけど、JIT的ににやることもネイティブコンパイルと言うなら別に
別にそれはもうやっている。
>>482 > ...がんばってくれ。
がんばるも何も、問題あるなら具体的に出せばいいのに。
> もう一度書くけど、JIT的ににやることもネイティブコンパイルと言うなら別に
> 別にそれはもうやっている。
つーかJITの話をしてるのは君だけでは?
そもそも「JIT的」ってどういう意味のJIT的よ?
484 :
デフォルトの名無しさん :04/03/11 16:36
さすがにA木センセエは衒学趣味過ぎ。 「高級」なこと言っている自分に酔っているのかしらん
>>483 Compiler evaluate: '3 + (Compiler evaluate: ''4'')'
のような式をワークスペースから評価したとき、外側のevaluate:をコンパイ
ルして動的リンクして呼ぶ「処理系1(UIトップレベル)」があるわけでしょ。
その「処理系1」は内側のevaluate: をコンパイルして動的リンクして呼ぶ
「処理系2(.so内のコンパイルされたコード)」とは「違う」んだよね、きっと。
その場合、例えば'4' の代わりにもっと複雑な式が来て、'3 + 'の代わりの複
雑な式のところで変更されたメソッドを呼んでいたりしたら、内側のやつが使
うべき(例えば)メソッドルックアップのロジックはどの処理系のものになるの
か、と言うような話。
で、JIT的というのは中間コードのセマンティクスを保って動くVMがあるけ
ど、実際にCPUが実行しているコードはVMが動的に変換したコードであるよう
なもののつもり。この場合、(例えば)メソッドルックアップが必要になったら、
いつも同じVMが持っているロジックを使う。.soとかじゃないから、動的に変
わっているかもしれない.soの外へのコールバックをどうするか、と言う問題
を考えなくて良くなる。
最初の例のように.soを作るとしても、理屈の上では細切れな.soを作っ
て、動的ディスパッチの飛び先とかもちゃんと管理して、「常にどれかの.so
の中で動いているけど、Smalltalkのセマンティクスを保って動く」という処
理系も作れるかもしれない。でも、それをあなたは「ネイティブコンパイルし
たものが動いている」と呼ぶのかな、と言う疑問は残るけどね。
>>485 そのケースなら処理系は1っこだけでしょ。
処理系自身を拡張するならともかく、
ただのeval程度で処理系ごと複製するような
無駄な事はしなくていい。
>>485 Compiler やオブジェクトファイルを特別視しすぎなんじゃないかな。
動的な部分に関しては、実行時にコンパイルが行われてもネイティブコード
コンパイルに違いは無いと思うけど(だってそういうコードだから)。
構文木を作るメソッドやアセンブラに翻訳するメソッド、アセンブラを機械語
に翻訳するメソッド、機械語の羅列をメモリにマップするメソッド、メモリに
マップされた機械語を管理して適切に呼び出すメソッド等々が動いているだけ
じゃない?
488 :
デフォルトの名無しさん :04/03/12 23:48
PNG形式で画像が保存できるぷろぐらむ書いたよlibpngつかってだけど マクosXとWinでImageのRGBの並びが違うのか、どっちかがなんかバイトずれるのか コードがちがくなったよ。なんでかな? DLL&C コネクトのプログラムの参考になったよJunが。 あとマクosxのVW7.2ncでWebToolkitのWebサーバ(かつてTinyWebServerとかいわれてた?)がなんかうごかないんすけど みなさんどう?
sageわすー
↑馬鹿発見!!
エンディアンて吸収出来ないの?
エンディアン吸収できない
ANSI Smalltalk に関するドキュメントって無いのかな。
>>494 俺も一時探したんだけど、どうも「買え」って話らしいよ。
やっぱSmalltalkは気持ちがいいな なぜ普及せんのだろう・・・
ライブラリが独自だからかな。 仕事でも使ってるところはあるよ。
しあわせになりたい
アメリカ行けば、一定量は普及しているから仕事も結構あるよ。
日本にもSmalltalkスキルを要求する会社があったよ。 外資系だけど。 んで500
502 :
デフォルトの名無しさん :04/03/14 01:07
> 496 どんなジャンルでも、10年~20年先を予見したような物は、 は普通売れない。その後、数年経って、安っぽいフォロワー が売れたりするが.... まあ、仕事で直接関係なくても、smalltalkはやって おいて決して損はしないと思うけど。
デザパタや XP など Smalltalk 方面から来た技術もあるしね。 Java やら .NET の VM 環境もそうといえるのかな。
ANSI Smalltalk って block が closure である事が保証されているんだね。
VisualWorks-NC 3.x 用のコード補完Goodiesキボンヌ
507 :
デフォルトの名無しさん :04/04/07 11:48
>>506 ありがとう。でもvwnc31all.zip のイメージ
"visualnc.im created at May 8, 1998 5:25:00 pm"
にfile inしてみましたが。動かないです。
エンジンはバージョン 3.0, 3.0a, 3.1b, 3.1c の四種類で試してみました。
OSはWindows 2000pro です。
操作はWorkspace等でコントロールを押しながら
. (ピリオド) , (カンマ) 0 (ゼロ) 9
ですよね。
ParagraphEditor>>processKeyboard から StringCompletion class>>checkUp: が呼ばれていることは確認したんですが、C-. などを押しても真を返さないみたいです。
WindowSensor>>primCtrlDown -> InputState>>ctrDown
という流れは調べることができたのですが、なぜ真にならないのか、
どうすればテスト・修正できるか分からず困っています。
>>507 Ctrlを押下したときに、InputSensor>>keyboardPeekが返す値として、Ctrlシフト
していない文字を期待しているのですが、実際はシフトした文字が返っています。
Ctrlを使うとちょっと面倒なので、Altに変えるのが手っ取り早いと思います。
StringCompletion.stのctrlDownをaltDownに全置換してファイルインしてみてく
ださい。
Sqeuakってブラウザからversionsで メソッドの変更履歴を見ることができるけど、 VisualWorksではできないの?
「サクサクSmalltalk」って東京電機大学出版局? 電大の生協に行けば買えるのかな。 半年前にラオックスBook館で見かけていつか買おうと思っていたのに 昨日欲しくなって見に行ったらBook館自体がなくなってた…
>>511 amazonやbk1なんかがお手軽では。
>>510 ChangeListでリカバーして同じセレクタを絞り込むとか。
>>512 > amazonやbk1気づかなかった…。 orkut < 椅子から転げ落ちるほどの失意
>>511 書泉ブックタワーで売られてましたよ。
代わりに買っておきました。
>>511 三省堂神田本店や書泉グランデでも売られてましたよ。
>>511 のために買わずにおきました。
Smalltalk はもう終わりなんだろうか・・・
「Squeak プログラミング入門」はどうですか?
520 :
デフォルトの名無しさん :04/04/11 01:21
>518 なんでそう思う? 仕事ないから?
青木さんとか段々離れて行っている感じがしたんだよ・・・
>521 青木さんは現役でしょ。 でも他の人は段々離れてるのかも。
VisalWorksでMVCを学んでいます。DependancyTransformerとAspectAdaptorの役割について教えてください。
>523 私も学んでいるところです. dependencyやaspectadaptorを使うことでModelが変化しても Modelはself changedを依存物に送るだけでViewについて特に知る必要がなくなる. と理解しています. そのおかげで再利用性が高まったりいろんなViewを持てるようになるようです. サクサクや青木さんのWEBをみて勉強してるのですが 誤解も多いと思いますので詳しい方補足や訂正をお願いします. 便乗質問で申し訳ないです. ApplicationModelにキャンパスツールでインストールしたWindowをオープンしたものは GUIでModelを操作できたりしますが,ViewやControllerといえる(同列にみなせる)のでしょうか? WindowにはViewHolderは無く,action buttonとラジオスイッチなどが主体のものです.
訂正です self changedはModelが自分に送るメッセージで 依存物たちはupdateを受け取るのでした
>>515 無事手元にサクサク本が届いたぞよ。大儀であった。まだ前半しか読んでないが、この本最高!重要なカテゴリとクラスの概要がコンパクトにまとめられている!知りたかったことが書いてある!
お褒めに預かり恐悦至極に存じ奉ります。 いい本ですね、サクサク本。
>>519 「Squeak プログラミング入門」は対話形式です。
私はその手の本とは相性が悪いらしく、見送りました。
(最後の2つの章以外はもう知ってることだし)
>>524 ありがとうございます。お返しに。
GUIビルダで生成したApplicationModelのサブクラスをopenしたときですよね。
マウスをウィンドウの上に載せて Ctrl-y してデバッガを開けば、
コントローラを捕まえることができます。
C ApplicationStandardSystemController
V ApplicationWindow
M ApplicationModelのサブクラス
だそうです。(VWNC3.1の場合)
viewをインスペクトすれば各コンポーネントにどんどんdiveしていけます。
531 :
デフォルトの名無しさん :04/04/16 23:55
青木御大(声甲高いのね)のPFUの講演のムービー落とせるようになったけども 970MBってあ~た(wでけ~。 ちまちま見てますが。時々基本に帰れる気がする(気がしてるだけで終わると駄目だな漏れ
すいません。キーワードメッセージ式について質問です。 あるクラスに foo: bar: baz: foobar: というメソッドと、foo: bar: と いうメソッド、baz: foobar: というメソッドの3種類があったとして、 この文は A, B どちらで解釈されるのでしょうか。 obj foo: a bar: b baz: c foobar: d. A: (foo: a bar: b baz: c foobar: d) B: ((foo: a bar: b) (baz: c foobar: d))
>>533 AとBのいずれでもありません。レシーバのないメッセージ式は存在しません。
メッセージだけを括弧で括ることはできません。
C: obj foo: a bar: b baz: c foobar: d
D: obj foo: a bar: b; baz: c foobar: d
という意味だとすると、Cです。
>>534-535 どうもありがとうございます。
これって一番長い候補にマッチする規則なのでしょうか?
>>535 B はカスケードではなく、foo: bar: の戻り値に baz: foobar: を
適用する↓イメージでした。分かり辛くて済みません。
E: ((obj foo: a bar: b) baz: c foobar: d)
経緯としては、Io の FAQ に Smalltalk の syntax について書かれていて
疑問を持ちました。"Why not use an infix message syntax like Smalltalk?"
という項です。
http://www.iolanguage.com/FAQ.html 調べていて、unary msg > binary msg > keyword msg という優先順位
があるのは分かりましたが、keyword msg が折り重なった時にどういう
規則で解釈されるのかの説明が見つかりませんでした。
>>536 > これって一番長い候補にマッチする規則なのでしょうか?
全然違う。動的束縛でそんなことができるわけがない。
>>538 使うメッセージセレクタが決定するのは静的なコンパイル時では。
そのセレクタに対応するメソッドが動的に決まるのが実行時でしょう。
なのでこのケースでは動的束縛は関係ないような。
>>537 >((obj foo: a Bar: b) baz: c Foobar: d)
良く読んだらこうでした。
(obj foo: a Bar: (b baz: c Foobar: d))
上の E みたいに keyword message 式で式の戻り値を使いたい場合は、
常に元の式を括弧で括る必要があるのかな。
>536 Squeakの場合ですが、コンパイル時にParser>>messagePart:repeatで やってますね。 トークンのタイプが#keywordである限りセレクタ候補が伸びて行くので、 結果として最長のセレクタ名が選ばれます。
>>539 > 使うメッセージセレクタが決定するのは静的なコンパイル時では。
そうだよ。で、コンパイル時にはレシーバの型(つまり受け付けられるセレクタ)が
決まらないから、動的束縛しているかぎりはレシーバの持つメソッドに応じて
キーワードメッセージのキーワード数を「コンパイル時に増減」させることは
不可能でしょ?
> なのでこのケースでは動的束縛は関係ないような。
というわけで関係ありってことで。
>>541 成る程。無意識のうちに、「存在するメソッドから最適な物を探索して
来てくれる」と考えていました。確かにそんな訳無いですね。
キーワードメッセージ式の戻り値にメッセージを送信したい場合は、
括弧で括る必要があるで宜しいでしょうか。
# 偶然且つ勘違いでしたが、Self のらくだこぶ型で先頭セレクタか後続
# セレクタか区別するというのは面白いですね。
544 :
デフォルトの名無しさん :04/04/21 00:45
Squeakプログラミング入門届いたよage
Jun for Smalltalkでは Number>>, が Jun2dPoint へのConverterMethodになってるんだね。さらに 0,0,0 で Jun3dPoint。でも 0@0,0 とも書ける。:-PSqueakは 0@0@0 だっけ?
546 :
デフォルトの名無しさん :04/04/21 21:50
>545 3.6までなら B3DVector3。 3.7からは Balloon3D がデフォで入ってないので doesNotUnderStand:。
ブラウザを二枚立ち上げて、同じメソッドを開き、 片方から変更してacceptしてももう片方はupdate されませんが、これはMVCの原則に沿っていない ということでしょうか。 changed -> update で通知されれば、新しい定義を 再読み込みできると思うのですが。
へー、Balloon3D って外れたのか。
GNU Smalltalk ってチャンクフォーマットしか受け付けないんですか。 チュートリアルをざーっと読んでみたけど、既にあるメソッド定義を 印字する方法とかは書いてなかった。どうするんだろう。
正直すまんかった。 st> Point sourceCodeAt: #x ! 'x "Answer the x coordinate" ^x '
>>547 へぇ~、なるほど変な感じもする。
ブラウザに限らず大抵のアプリケーションは、開くごとにMが1個できる。
あるMから、それにつながってるVはupdateできる。
でもMから、他のMとかそのVとかにはupdateは伝わらない。
とかゆう感じ?
Ambrai Smalltalk 1.0 Beta1 がダウンロード可能になってますね。 うちのパンサータンでは普通にさくさく動きました。日本語もオケみたい。 dmg を展開して中身をコピーするだけで実行可能です。実行バイナリ は 79KB で Image ファイルが 2MB ほど。バンドルになってるので、 アプリの配布が楽そうですね。
と思ったら、本体の配布はライセンス違反でした。
>>553 漏れもSMLで見てあわてて落としてインスコして試してまつ。
なかなか軽快な感じでええでつね。
do itじゃなくてEvaluate itなので面食らった漏れは逝ってよしでつなorz
Squeak とかで、実行中の環境をそのままイメージファイルに保存出来ますよね。 保存→再開した時に、外部環境に依存するリソース(開いているファイルとか ソケットとか)の整合性が問題になったりしないのでしょうか?
>>557 どうもです。
前スレ >499-502 辺りに GC との絡みについての議論があったんですが、
外部リソースの扱いは面倒そうですね。
実行環境のスナップショットを取らない Java みたいな仕様なら、実装も
楽なんだろうけど、そういう処理系って無いのかな。
実行環境のスナップショットが理由となって何かの実装が大変になるんですか? 開発中は別として、 アプリケーションの実運用に入ったら、開発環境を外して(または隠して) データの保存はファイルシステムやDBに行い、イメージの保存は一切しない、 させない。というのが定跡なんだと思ってました。
文字列の連結に , を使わず stream nextPutAll: を使うように とどこかで読んだのですが、 Perl でスクリプトを書くときとか、何も考えずに . で 文字列を連結していく人って多い気がします。 タイトなループでゴミオブジェクトが量産されてGC行き… とかいうことを心配しないでいいケースでは、安直に , を使っても バチは当たらないのかなと思うのですがどうでしょうか。
>>560 ゴミオブジェクトのGCだけじゃなくて、生成するコストも考えてみ?
ブロッククロージャを渡して任意のメソッドを定義する事って出来るのでしょうか (↓こんな感じのメソッドを実装するイメージで)。 Behavior>>addSelector: selector withBlock: aBlock メソッドとブロックは双子みたいな感じがするので、可能なのではないかなと思う のですが(Too Lispy だなんて嫌がられそうですけど)。
できます。クラス変数などにそのブロックを保存しておいて、 selectorメソッドが呼ばれたら、保存されたブロックをvalue:で 評価すればいいです。 でも、処理内容を一旦ブロッククロージャにするよりは、 文字列データのままにしておいて、その文字列で動的に メソッドを定義した方が使いやすいと思います。 (addSelector:withBlock:でもどうせ動的メソッド定義をするのだから)
564 :
デフォルトの名無しさん :04/05/08 15:19
Smalltalk/X ってWindows版もあるんだね ダウンロードしてみたけど見た目もゴージャスで中身もいじりがいありそう 日本語の情報源キボンヌ age
>>563 どうもありがとうございます。
どちらかというと、aBlock --> aMethod にコンバートする方向を考えて
いました。文字列のままコードを渡す方法だと、ソースが見辛くなる(気が
する)というだけの理由なのですが。。。
ブロックとメソッドの内部的な仕組みについてもう少し調べてみます。
Gnu Smalltalk って JIT コンパイル付きでビルドすると滅茶速いね。 Gnu Lithtning って結構凄いのかしらん。
おいおい、VAIO typeUでsqueak動かしてーよなぁ!
が、VisualWorksで質問です。 マウスポインタの座標をView上に表示したいんですが、ControllerのmoveMouseEvent の中でViewに書き込んでいると、座標表示がどんどん上書きされてしまいます。 GraphicsContextをいちいちクリアしないでViewをリフレッシュするのには どうしたらいいのでしょうか?
もしかして view って例の activeWindow := ScheduledControllers activeController view. のこと? 普通に考えるとViewを書き換えるには 消す→書く を繰り返すしかない気がする。 ダブルバッファみたいなことって Pixmap とか使うのかな。
>>569 ダブルバッファみたいなことも出来ればしたいですし、無理なら
部分的に更新する方法があるとうれしいです。
この辺りの話が系統的に書かれている参考書ってありますでしょうか?
(一応パープルブックは現在読み進めているんですが。)
どの程度のプログラムを作ってるのかが分からない UI Painter で画面を作りこんでいるのか、 Workspace からdo itするだけの例題プログラミングなのか それによって答えも変わってくる。
Blue Book VM Implementationを読んだ。 プリミティブなVMの世界とユーザーが読み書きする言語上の世界が なめらかにつながっていて感動した。 反面、パフォーマンスとメモリ効率を稼ぐために 1ワードたりとも無駄にしたくないというケチケチな切り詰め方に 時代の哀しみをおぼえた。
>>571 UI Painterを使って作っています。やりたいことは、マウスポインタの
座標値をViewにリアルタイムに表示することです。
MVC的に、Modelに座標値を持たせてViewに見に行かせるのが
筋なのかもしれませんが、ViewとControllerで閉じている話なので
以下のようにControllerからViewに直接書かせてみたんです。
すると座標値が上書きされてしまうようになってしまいました。
そこでこのような状況でViewを更新するための定石があれば、と
質問した次第です。
XXController>>mouseMovedEvent: event
super mouseMovedEvent: event.
self view displayCursorPosition: self sensor cursorPoint.
XXView>>displayCursorPosition: aPoint
| oldColor corner textLoc posText |
posText := aPoint x printString, ',', aPoint y printString.
corner := self bounds corner.
textLoc := (corner x - 160) asInteger @ (corner y - 20) asInteger.
oldColor := self graphicsContext paint.
self graphicsContext paint: ColorValue black.
self graphicsContext displayString: posText at: textLoc.
self graphicsContext paint: oldColor.
>>572 > 反面、パフォーマンスとメモリ効率を稼ぐために
> 1ワードたりとも無駄にしたくないというケチケチな切り詰め方に
> 時代の哀しみをおぼえた。
今でもVM屋の主流の意識はかわってないよ。
575 :
デフォルトの名無しさん :04/05/14 03:00
smalltalk 微妙な初心者・・。 文字列の結合の仕方が分らずに小一時間考える・・・。 Cとかならこんなの3秒なのに smalltalkだと解説本とか少ないから分らず。。。。
>>575 ぐぐれ。
'smalltalk は一行も書いたことなかった', 'が、1分で調べられた。'.
>>560 でも
>>575 でもないけど、printf(), scanf() みたいな書式文字列は
無くても平気ですか? , で繋ぐので十分なのか、適宜自作しているのかって
事ですけど。
>>578 カンマで繋ぐのは、本当に単純で、そして遅くていい所だけの方がいいよ。
俺はCからプログラミングに入った人だから、最初こそprintfが欲しいと
思った。でも今は、要素ごとに適当に整形して、それをストリームに
nextPutAll:するやり方で全然困ってないな。
printfがあったらどうなるか考えてみたけど、何か楽になるかな?
別にオブジェクトの種類別にprintStringその他の外部表現メソッドがあって、
そしてそれをまとめるやつ(nextPut:類みたいなの)がストリームクラスに
凝集モジュール化されてる現状でいい気がする。
でも整数のゼロパディングくらい欲しくね?
>>580 そんなのはInteger>>ぜろぱでぅんぐ:とかで実装しろよ。
>>579 >printfがあったらどうなるか考えてみたけど、何か楽になるかな?
ソースコードが簡潔になるのを期待してます。要素毎に分割してメソッドに
渡してあげる必要がないので、出力したい文字列が一目瞭然だと思うのですが。
>>582 printfだと、どの要素がどのフォーマットに適用されるのかが解りづらいと思うのだが
printfの利点は、フォーマット変換だろ
>>583 >どの要素がどのフォーマットに適用されるのかが解りづらい
それもあって
>>578 が微妙な書き方になってしまったのですけど、
文字列中に変数を挿入する事を意識していたので(↓こんなの)。
stdout print: '今日は 'D 年 'D 月 'D 日 'S 曜日です。'N'
format: #(#year #month #day #week).
>>584 Smalltalk-80(Squeak)にはDate>>printOn:format:がありますね。
VisualWorksにはより汎用的なPrintConverterがあります。
>>586 ちゃんとポリモーフィックに作っておけば下手なprintfもどきよりもずっと
Smalltalkらしい使い勝手のものになると思われ。
588 :
デフォルトの名無しさん :04/05/19 00:31
誰かdataSetの使い方教えてちょんまげ
>>573 > すると座標値が上書きされてしまうようになってしまいました。
消さずに書いているから文字が重なってしまうということ?
座標値を書くための小窓を ViewHolder で貼り付けて、そこだけ clear すれ
ばいいんじゃないのかな
独学でSmalltalkの勉強をはじめて足掛け3年になります。 いままで耳にたこができるほど「ソースから学べ」「Smalltalk自体がSmalltalkの最高の教材だ」などと言われて反発を感じてきましたが、やっと最近なるほどそうだなあと分かり始めました。 最近分かった具体的なことは、 * ブラウザのimplementersとsendersの使い方 * プロトコル(メソッドカテゴリ)の代表的なグループの意味 * デバッガの使い方 なんとも基本的なことばかりです。(恥 知識としては知っていたつもりでしたが、「こういうときにこういう目的で使う」というのが理解できてませんでした。 どうやって理解したかというと、「サクサクSmalltalk」「Smalltalkベストプラクティスパターン」を読んだからです。 Smalltalkはアートとサイエンスで出来ていて、ネットに転がっている入門者向けの情報はたいていサイエンスで終始しています。 入門者にも、アートに踏み込んだ情報が必要です。
あと、Squeakはだめです。 文法とツールの使い方を覚えたら、いろいろかじっていくことはできます。 でも全体を貫くアートがありません。興味のある部分のスキルには習熟できますが、 木から始めて林くらいまではいけても森を見れません。 MVCが放置されてMorphicが上に覆い被さっているところなど、 GNOMEやKDEに覆われている今のPC-Unixとそっくりです。
592 :
デフォルトの名無しさん :04/05/20 18:32
木から林にいけりゃーいいじゃん。
3年やってその程度の理解度で Squeak を否定するのか もうね(ry
SqueakってCPANみたいなRPMみたいなパッケージシステムがあるそうですが どんな仕組みになってるんでしょうか? ZipファイルにFileInチャンクと初期化スクリプト、依存パッケージのリスト とかそんな感じ?
Squeakは密林。蔓は絡まってくるし、猛獣もいる。 それもまた楽し。 1.xならシンプルで扱いやすいと思います。
>>590 “転がっている”とか“Squeakはだめ”とかいうネガティブな言い回しだと、
結局反感買って、伝わるものも伝わらなくなるよ…。 orz
アートですか・・・
>>589 サンクスでした。
>>590 漏れはVisualWorksでSmalltalkをはじめて半年だけど、確かに青木さんなんかが
初心者が安直にSqueakに行くことを戒めてるよね。
でもSqueakのワクワクする感じってきっとなんかあると思うよ。そうそう簡単に
切り捨てるのはもったいないかも(と予想)。
(見たことないから無責任発言ですが)ソースコードを見て勉強するって対象では
ないのかも知れないけど、自由に操れて自分の環境にできたらきっとたのしいだろうなぁ
と憧れてます。
質問させてください。 DLL and C Connectのテスト セットのためのダイナミック リンクライブラリーの構築方法について についてです。 WindowsでVisualWorks2.5 にてこのテストを行っています。 readmeの記載されているようにしてやっているんですが どうしてもmakefileが実行できません。 わかる方本当にお願いします。教えてください。
コンパイル中のログを出したほうがはやそうな気が vwnc30のサンプル(vector)をVC++6でビルドしようとしたら makefileの書き換えが少々必要だった
>>599 > 漏れはVisualWorksでSmalltalkをはじめて半年だけど、確かに青木さんなんかが
> 初心者が安直にSqueakに行くことを戒めてるよね。
俺は別に青木さんの体験に追従する必要なんてサラサラないと思うし、
同じ初心者でも、そう言われただけでSqueakを無視するような奴よりも
自分で実際に動かしてソース読んだ上でそれ以上ツッコむかどうかを
判断する奴のほうがずっと見込みあると思うけどね。
>>602 まぁ、ね。
ただこれだけ巷で『ソースが汚い』だのなんだの言われてると
初心者としては手順を踏んで(VisualWorksとかから)勉強しようと考えてしまう
のは致し方ないかと。暇人なら何でもかんでも試せるけどねー。
Smalltalkの場合、他と比べても模倣が重要な言語だと思います。 その際にプロトコルは'as yet unclassified'でいいじゃんとか、 変数名はやっぱt1だよねとか、うまく動かないときは、とりあえ ず既存のメソッドに条件分岐を足しちゃえとか、Objectに書いて おけばどこでも使えて便利ということになるのは、ちょっと悲し いかなと思わなくも無いわけです。 もちろん、Smalltalk-80からObjectWorks、VisualWorksの流れに もこういうことはあったわけですが、良くも悪くもParcPlaceに閉 じていたので限度がありました。 オープンソースのSqueakの場合、これが爆発している感が強いで す。そのようにして作られたコードを、さらに模倣するので。な にがなにやらという段階まで来てしまったと思います。 Squeakコミュニティでは、ステイブルする動きが、ないがしろにさ れがちということもありますね(みんな楽しくて面白いことが大好 き)。
Alan自体がStabilityに全く興味がないからねえ。
smallTalkが簡単にインストールできて動作も安定してる、お勧め のlinuxのディス鳥は何いいのか教えてくださいませ。 できればSqueakとそれ以外の場合と2種類知りたいです。
昔RedHat LinuxにVisualWorks3.0NCが付属してなかったっけ? (Linuxよく知らないので、この「付属」ってのが正確に何を意味するか 自分でもわかんないで書いてます。)
>>607-608 どうもです。
Squeakがknoppixにはいってるらしいです。
けど、どんなもんなんでしょうね…
>>609 KNOPPIX_20030924-20031015に入っていたのは古いバージョンです。
Nihongo6.1は、Knoppix 3.3, 3.4で日本語入力も含め問題なく動きました。
つーか、Knoppixなら環境変えなくても試せるからやってみればいいじゃん。
>>610 >>611 ありがと。
knoppixはやたら重くて2度と使うかっ、て感じでした。
きっとHDに入れて使えばいいんでしょうがこの辺りの質問は
スレ違いにつき控えさせていただきます。
BlockContextを追いかけて whileTrue:の中身をみたけどさっぱりわからん。 なぜこれでループが組めるんだ?
>>614 過去ログみた、実行可能にする仕掛けはコンパイラにあった事もわかった。
でも納得いかないのはコンパイラレベルで
condition := [ ほげ~ ].
condition whileTrue: [もげ~].
と
[ ほげ~ ] whileTrue: [もげ~].
を異なる解釈させないとBlockContextの実装ってできないものなの?ってこと。
最初からこの形で処理させる事にしてたの?
それとも昔のSmalltalkではBlockContextのwhileTrue:はプリミティブ実装だったのかってことが知りたいの。
どうしてこんな事聞くかって言うとループ構造自体が言語には規定されていないのどうしてこの形にたどり着いたかを知りたいからなんだけど.
>>615 過去ログ読んだんなら、それはあくまで高速化のための実装に過ぎないことぐらい
わかりそうなものだと思うのだが?
>>616-617 サンクス、
ブルーブックが手に入らないのがSmalltalkの足跡たどるのに一番つらいよ!
5年くらい前に青木さんの本(イディオム)買ったときにも探したんだけどなぁ。
ブルーブックは各大学の図書館やら大井町の富士通図書館(名前忘れた)やらで
借りるヨロシ。借りるの面倒なら
>>619 。
中の本は結局どこへいったの?
この一連の流れが気になったので地元の公共図書館へ行ってみた。
オレンジとパープルの和訳は置いてあった。が古い本ですね~とか言われて予想通り書庫だった。
コンピュータ物は新しいのを置いておかないと駄目なんじゃないかと勘違いしてる司書タン萌え。
いや、萎え。
やっぱ判らないんだろうなぁ、こういう基本文献とかの価値って。orz
>>620 の中の本はどこ逝ったか気になるね。
廃棄とかされてなきゃいいが(つーか閉鎖に伴って除籍になる蔵書はご自由にお持ちくださいとか
で誰かのコレクションになってるとまだ救いがあるな)。
624 :
デフォルトの名無しさん :04/06/16 14:09
確かに、ボブとかの恐竜が飛び出てくると萎えるね
625 :
デフォルトの名無しさん :04/06/20 03:39
Smalltalkの良さとはどこにあるのでしょうか? 現在の主流のOOPLであるJavaに対してのアドバンテージなど聞かせて頂ければ幸いです。
>625 備え付けのツールがいい Browser、Inspector、Debugger、Workspace、etc 書いたコードがどこでもすぐに評価できるのもいい
629 :
デフォルトの名無しさん :04/06/21 00:22
630 :
デフォルトの名無しさん :04/06/21 01:34
純粋OOPLの凄さを聞きたかったんですが聞き方が悪かったみたいです
すみません
>>627 Squeakってヤツを入れてみましたけどまだ教えて頂いた物がよく解りませんw
ただ、入れた時にちょっと感動しました
IDEってよりもう既にOSみたいな感じで何か新鮮
プログラム開発環境なのに無意味に楽しげなところもステキw
こういうノリは大好きです
なんか凄く独特な世界でひと味違いますね
と言いつつまだプログラミングはしてなかったりしますw
メチャ難しそうだし'`,、('∀`)'`,、
>>630 最初はクラスライブラリの多さにビックリしますが、そのうちにクラスもメソッドも
データも所詮はオブジェクトじゃんみたいな気持ちになってくるのが凄いと思います。
Lisp で言えば、お前も所詮マクロの皮を被ったラムちゃんだろみたいな感じかな。
初めてLinux環境にVisualWorks+Jun for Smalltalkを入れてみたんですが、Junがうまく動きません。 Example->Cubeを実行すると Unhandled exception: exception occured #(11 1090521070) JunMesaInterface(ExternalInterface)>>externalAccessFailedWith: JunMesaInterface>>glColor4f:with:with:with: optimized [] in JunOpenGLRenderingContext>>paint:alpha: [] in JunOpenGLRenderingContext>>activate: BlockClosure>>ensure: などといわれて怒られます。Mesaライブラリはインストールできていそうです。 (Mesaに付属するデモも動きました。)/usr/lib/libMesaGL, libMesaGLUのシンボリックリンクも 張ってあります。どなたか対策、手がかりなど心当たりがありましたら 教えてください。よろしくお願い致します。
ちなみにそれぞれのバージョンはそれぞれ最新のものを使っています。 Jun : 581, Mesa: 6.1 特定の組合せで使わなければならないなどという決まりはあるのでしょうか?
634 :
デフォルトの名無しさん :04/07/20 00:08
せっかくWin環境を完全に捨ててLinux入れたんですが、VisualWorks(w/ Jun)も squeakもちゃんと動かない(動かせない)とだとかなしひです。 できればWinに後戻りしたくないので、どなたかお知恵を貸してください。 とあえてageてみるテスツ
>>632 JunMesaInterfaceが見に行くライブラリはlibGL.soとlibGLU.so。
/usr/lib /usr/local/lib /usr/X11R6/libのどこかにあれば大丈夫。
#うちは/compat/linux/usr/X11R6/libだけれどね。
DRIなlibGLじゃダメとかの罠もあった気がするが、エラーからすると
ライブラリが見つかってないだけだわ。
>>637 アドバイスありがとうございます。
Mesaは/usr/libに以下のようにインストールしてあります。
lrwxrwxrwx 1 hoge users 10 7月 20日 01:15 libGL.so -> libGL.so.1*
lrwxrwxrwx 1 hoge users 19 7月 20日 01:15 libGL.so.1 -> libGL.so.1.5.060001*
-rwxr-xr-x 1 hoge users 2330511 7月 18日 15:01 libGL.so.1.5.060001*
lrwxrwxrwx 1 hoge users 11 7月 20日 01:15 libGLU.so -> libGLU.so.1*
lrwxrwxrwx 1 hoge users 20 7月 20日 01:15 libGLU.so.1 -> libGLU.so.1.3.060001*
-rwxr-xr-x 1 hoge users 517969 7月 18日 15:02 libGLU.so.1.3.060001*
lrwxrwxrwx 1 hoge users 11 7月 20日 01:15 libGLw.so -> libGLw.so.1*
lrwxrwxrwx 1 hoge users 15 7月 20日 01:15 libGLw.so.1 -> libGLw.so.1.0.0*
-rwxr-xr-x 1 hoge users 13456 7月 18日 15:02 libGLw.so.1.0.0*
/etc/ld.so.confに/usr/libを足して/sbin/ldconfigも実行しました。
Junの起動スクリプトにも
LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/X11R6/lib; export LD_LIBRARY_PATH
という記述をしてみました。
が、ダメです。。。何とか動かせるといいなぁ。
>>638 勇気を出してSMLにポストすれば御大が答えてくれると思います。
640 :
デフォルトの名無しさん :04/07/22 18:05
Squeakから始めるよりVisualWorksとかからやり始めた方がいいんですかね・・・? Smalltalkを使ってオブジェクト指向を勉強したいと思っているんですが・・・
>>641 レスありがとうございます。
早速「じゅんオールインワン」というのをダウンロードしてみたいと思います。
また、リンク先のページにはSmalltalkに関するページが色々あるみたいなので、
今後の参考にもしたいと思います。
Smalltalk コンパイラの最適化に関するドキュメントとかありませんか? メソッドのインライン化とかプログラム変換的な事とかはやりずらそうな言語に 思えます。型の支援とかも受けにくいし。思いつくのはメソッドキャッシュくらい です。
とりあえずEfficient Implementation of the Smalltalk-80 system[Deutsch, Schiffman 1984]を呼んでみるヨロシ。
646 :
デフォルトの名無しさん :04/07/28 17:37
VisualWorks 7.2.1出てるよage。
>>647 まさかVisual Squeak.NETなんて出すつもりはないよなぁ(w
Visual SM.NET
>>650 てことはCroquetでちょっと下地を作っておいてCincom買収?
652 :
デフォルトの名無しさん :04/08/17 13:23
>>653 おお、ブラウザ+workspaceもどきでメソッドの追加や
評価が画面から出来る。
>>424 -427
お言葉を返すようですが、これは私が学んできたSmalltalkのレベルを遥かに超えています。
そこまで渡邊さんをSmalltalkに惹きつけるものは何ですか?
てかSMLの引取先とスムーズな移行はうまく運ぶんかね?
>>655 > お言葉を返すようですが、~(中略)~ 遥かに超えています。
「お言葉を返すようですが」は相手の発言に反対するときの言葉。
冒頭にこれが置かれているために文章全体の意味が不明瞭。
655は 424-427 のカキコに感動したのか、反発したのか、疑問を覚えたのか
はたまた全く違う何かなのか、さっぱり分からない。
リア小だと思う
質問です。 VisualWorks使ってGUIベースのゲーム作る時って GUIで動かす時って画像のパーツ(カードゲームならカードとか)って 自分でなんかのペイントツール使って描いてそれをVisualWorksで取り込んで 使うんですか?それともVisualWorksにそういったツール入ってるんですか? いじったんですがサパーリだったんで教えてもらえないでしょうか? 参考サイトとかあるならお願いします_| ̄|○
>>659 メニューにTools→ImageEditorっていうのがあった。
これを使うと良いんじゃないか?
>>656 てかSML廃止は'HAL'collect:[:c|(c asInteger+1)asCharacter]の圧力ってほんと?
>>660 ありがとうございます、これでなんとかなる・・・かな?
ついでに何らかの画像形式をImageオブジェクトに
する方法ってないものですかね?
>>662 素人っぽくて恐縮ですが、
1) 画像をなにかのアプリで画面に表示させた状態で
2) 'Image fromUser' を inspect
3) カーソルが十字になるので画面上の取り込みたい矩形をドラッグ
4) インスペクタが開く
5) インスペクタの中では self が取り込まれた Image オブジェクト自身を指す
という状態に持っていくことができます。
# 多分 Jun の中にはファイルから直接開くユーティリティとかあるんでしょうけど。
その名もズバリImageReaderなんてのがあるんだが。 使い方は簡単だからソース読んでね。
>>663-664 ありがとうございます!
早速試してみますね。この板の住人は皆優しい(つД`)
>画面上のオブジェクト(モノ)を動かすのにPARCでは、「クリックする-マウスを移動
>する-クリックする」という手順を採用していた。しかし、それだとミスが多くなるという
>ことで「クリック&ドラッグ」が編み出されたのである。
http://www.ricoh.co.jp/appliance/fujita/fujita_20.html この「ミスが多くなる」理由は何?
PARC方式(?)の方が楽で良いような気もするけど。ドラッグ中、マウスボタンを押し続けるのって、
指が疲れるんですよね。GUIのデザインは女性か病弱な人かお年寄りにしてもらいたかった。
でもなめらかUIという考えからしたら、今の方式のほうが離散的でないから自然なのかな。
それと、StarとMac(OSX)/Win(XP)の違いって何?
Starと比較したら、Mac-Win間の相違って無いようなものなのかな?
StarのDWIM(Do What I Mean)に基づくオブジェクト指向UIというのもよくわかりません。
>>666 「モード」 の切り替えが発生するため。
どちらの場合でも、クリックすると非選択モードから選択モードに切り替わる。
十分なフィードバックによって、今どちらのモードなのかが
認識できないとミスが多くなる。
ドラッグであれば 「クリックし続ける」 という
身体感覚に基づくフィードバックがあるため
選択モードであることが考えなくても意識される。
一方、PARC 方式?だと現在のモードを頭で覚えるか、
画面上に描画されたオブジェクトからフィードバック
(例えば点滅するとか枠が付くとか) を得なくてはいけない。
当時のグラフィックでは視覚だけで十分なフィードバックを与えるのが
無理だったのかもね。
あとは単純に、オブジェクトがたくさんあると前者の方式では、
どれが操作対象か分り辛くなるってのも。
>>666 ってか、Starはそもそも3ボタンじゃない。この文脈でStarを連想するのはよくやる
勘違い。引用元は引用元で「クリック&ドラッグ」を「プレス&ドラッグ」の意味で使って
いるし、「プレス&ドラッグ」なんて別に発明ってほどのものでもでもないし。
いえ、別にStarを連想したわけではないので、上の話とは切り離してください。 PARC方式?ではマウスポインタに追随してDnDSourceが移動して表示されていなかった?
>>669 まず、「PARC方式?」って具体的に何を指しているのかが分からないと…。純粋に、
「クリック(ピックアップ)→ムーブ→クリック(プレイス)」と「プレス→ドラッグ→リリース」との
ミス発生度合いの違いなら、667の通りだし。
ラスキンらがおおいに参考にした、当時のSmalltalkシステムがって話なら、ウインドウやメニュー、
テキスト操作は両者が混在、アイコンみたいのはないからドラドロはそもそもなかったかと。
アイコンのほうはStarからのパクリだけど、StarはPARCじゃないしなぁ…。
ソースをざっと見た感じでは著者は、たんにMac好きで、でもMacのGUIの成り立ちなどは
Mac系の書物(往々にして嘘か、その一歩手前の誇張の多い)から得た程度の知識しか
なくて、だからラスキンの学習の結果の変心について行けてないだけのような気も。
参考までに、Starにおけるアイコンの移動は、 1. アイコンをマウスの左ボタンクリックで選択 2. キーボードの「MOVE」キー(JStarでは「移動」)を押下 3. 移動先でマウスの左ボタンクリック で実現していました。ウィンドウや文字列の移動なども同様です。 Select first, Action secondですね。選択でレシーバを特定、キーでメッセージ を送信します。この様に主要なメッセージセレクタについてはメニューでなくキー ボードに独立したキーが用意されていました。 また、Starの物理的なマウスボタンは2つですが、同時押し(コード)を多用する ので、事実上3つボタンとして機能していました。 DWIM(Do What I Mean)は、身近なところではbashやemacsなどの補完機能や 可能性のある候補の提示を意味します。そもそもINTERLISPで開発されたもの なのでオブジェクト指向に固有の機能ではありません。 # WDIMは無理だよね、というジョークがあります。
672 :
デフォルトの名無しさん :04/09/27 10:10:22
VisualWorks7 でビット演算をやるにはどうすればいいですか
VisualWorks7 で画像表示をやるにはどうすればいいですか
クラスメソッド、インスタンスメソッドをリストしたいのですが、どうすればできますか? selectors というのはインスタンスメソッドのリストでいいんでしょうか? ついでに、この selectors というメソッドがどのクラスで定義されているのか smalltalk のコードで調べられますか? 「smalltalk クラスメソッド インスタンスメソッド」で検索してもクラスメソッドとは。のような内容の文章しか見つからないのです。 どなたかお願いします。
まず、selectorsは、あるクラスに定義されているメソッドだけを返すよ。 継承を遡って、応答できるメソッドを全て調べられるallSelectorsの方が ふさわしい場合もあるから気をつけてね。 次に、一般に、xxxという名前のメソッドの定義を調べたければ、 "Implementors Of"という機能を使えばいいです。これがどこにあるかは 処理系依存ですが、メニューのどこかに必ずあります。 VWだったらラウンチャーのBrowseメニューあたりかな。 で、selectorsやallSelectorをあるクラスCに送ると、返ってくるのは Cのインスタンスメソッドです。で、Cのクラスメソッドがほしければ、 Cのクラスメソッド = 『C class』のインスタンスメソッド なので、C class allSelectorsなどとやればいいというわけ。
>>678 クラスに selectors を使えばクラスメソッドになるんですか!
なるほど。そういうことだったんですね。
助かりました。ありがとうございました。
>>679 世の中にはインスタンスメソッドしかないという考え方もできますね。
つまり、クラスの持っているメソッドはそのインスタンスが解釈できるメソッドで、
メタクラスの持っているメソッドもそのインスタンス(つまりクラス)が解釈できる
メソッドです。後者を便宜上クラスメソッドと呼んでいるだけで。
anArray asSortedCollection のようにソートをすると遅いらしいのですが、 ではどうすればいいのでしょうか?メソッド用意されてますよね? メソッド名 sort で探してみたのですがどうにも・・・ よろしくお願いします。
>>681 > anArray asSortedCollection のようにソートをすると遅いらしいのですが、
どのくらい遅かったの?
遅くない
想像だけどさ。 Arrayのつもりで操作してたのが、いつのまにか (anArray asSortedCollectionで返ってきた)SortedCollectionへの 操作にすり替わってたのを遅いと勘違いしたとか? SortedCollectionはOrderedCollectionの一種だから、 追加削除なしに普通の参照だけだとArrayより遅いでしょ。 ソート自体が遅かったんじゃなくて、SortedCollectionに 置き換わったためにその後の操作が遅くなったって話は ありそうじゃないかな。
> 遅い ら し い のですが がすべてを物語っているな。 Perlとかのスレでも、「変数への代入は減らしたほうがいいですか」とか 「local より my の方が早いらしいのですが」とか、聞きかじりを鵜呑みに する人が多い。
Object クラスが new メソッドを持っていないにもかかわらず Object new ができてしまうのですが、これは一体どうなっているのでしょうか? Object クラスなのでもちろん継承しているメソッドをすべて表示してもやはり new メソッドはないです。 ご存知の方お願いします。
>>680 にもありますが、Objectクラスはクラスであると同時に、Object classとい
うメタクラスのインスタンスでもあるわけです。
そこで、Object class allSuperclassesを評価してスーパークラス階層を調べる
と、 Behaviorクラスが見つかり、その「インスタンスメソッド」にnewがあります。
お手軽には、ブラウザでObjectクラスを選び、class側に切り替えて、クラスペイ
ンの黄ボタンメニューから「show hierarchy」してみてください。
このあたりは、Smalltalkをある側面から見たときに一番面白いところなので、が
んばってください。
普通は、例えば Integer superclass = Number Integer class superclass = Number class であるところが、トップである Object の場合は Object superclass = nil Object class superclass = Class のようになるんですね。で辿っていくと Object > Behavior > ClassDescription > Class > Object class で、Object は Object class のインスタンス・・・ 親クラスが子クラスのインスタンス・・・・ なんのことだかよくわかりません。どなたか助けてください orz
とりあえず、クラスは単にインスタンスのメソッドホルダー…程度に 考えるよう頭を切り換えるとよいかもしれません。そうすると、 親クラスのメソッドを子クラスが持っていても(たまたまそういった 役回りになっただけで)不思議はないかな、と。 さらに混乱させるようでいけないのですが、クラスとインスタンスの関係を 産み、産まれの関係で捉えてしまうと、Metaclass と Metaclass class の関係はもっとシュールです。w
つーか、本来メタ世界はオブジェクト世界を超越したところにあるべきなのに なぜかオブジェクト世界の一部に間借りしちゃってるところが混乱の元だよね。
>>692 そのエッセイ、かなり同感できますね。
俺的には、「すべてをオブジェクトとしたのは独善的」といったところか。
A<-B<-C (superclass<-subclass) A >> write Transcript cr; show:'A'. B >> write Transcript cr; show:'B' B >> message1 super write B >> message2 self write C >> write Transcript cr; show: 'C' ということで、次の式を実行するとどうなる? C new message1 C new message2
selectors をひとつもそのクラスの中で定義してないクラスってのはなんのために作られたのでしょうか? たくさんあって理由もそれぞれ異なるんでしょうけど、どういうことなのかよくわからないです。 よろしくお願いします。
>>698 それぞれ異なるかも知れないなら、実例を挙げてみては。
えーとでは、OSErrorHandler、 InformationSignal あたりでお願いします。 環境が VisualWorks なので Squeak にもあるのかわかりません。
分類ですか?でも OSErrorHandler はサブクラスもないですよね? 例えば Collection から Sequenceable なのとそうでないものに分類するというのとは意味が違うのでしょうか?
>>698 止まってるので、詳しくないながらもコメント。
一般的にエラーとか例外処理の場合、エラーの種類と内容を表現するオブジェ
クトを定義して、それをパラメータとして発信するという手法がとられます。
システムにもよりますが、エラーの情報だけを伝えるという役割から振舞いを
まったく持たないこともあります。
InformationSignalはクラスコメントに "backward compatibility" とある
ように、Exception subclass: #Notification が現役のクラスです。
Application Developer's Guide (= vwadg.pdf)の Exception and Error
Handling のあたりを読んでみると分かりますが、VW3.0の時点で、それまでの
VW2.xまでのSignalという方式からANSI Smalltalkの規格に準拠したException
方式に切り替わっています。
OSErrorHandlerのほうは自分もよく分っていません。各OS固有のエラーに関わっ
ているようなので、かなり下層の部分なのでしょうね。
例外処理はプログラムの制御構造にも関わってくる特別な機構なので、普通の
オブジェクトとは扱いが違うのだと思います。まずはExceptionの使い方を先
に理解することにして、中の仕組みの追及はその後ということにしてはどうで
しょうか。
vwadg.pdfを見付けられない人への補足: Application Developer's Guide (= vwadg.pdf)は、VWNC30-c.ZIPに含まれています。 かなりのボリュームで、VisualWorks上でできることのひととおりが記述されています。
Croquetでたね。
(Set withAll: #(3 1 4 1 5 9)) = (Set withAll: #(3 1 4 5 9)) が false になるのはなぜですか?
>>706 Set>>#= を調べると、Object>>#== で判断していることが分かります。
このメソッドはオブジェクトのobject pointerが等しいかどうか、
つまり同一オブジェクトかどうかを判定します。
また、(Set withAll: #(3 1 4 1 5 9)) と (Set withAll: #(3 1 4 5 9))
の両方をinspectしてみると、内部の状態も微妙に異っています。
これは Set class>>withAll:を調べてみると理由がなんとなく分かります。
elementsEqual:
>>707 なるほど。内部の状態が違うから = 演算子が作れなかったんですね。
Array みたいに簡単にはいかない。と。
ありがとうございました。
protocol ってやつはなんのためにあるんでしょうか? method を作るときに適当(でたらめ)に protocol を作ってはだめなんでしょうか? あと smalltalk には continue または next のような method はないですよね? do: ブロックの先頭に戻るような。
protocolはただの飾り。でも、コード読む人(自分も含む)のため、 既存のクラスを参考にして、しっかりと憑けておこう。 Squeakではアホが多いから、as yet unclassifiedが異様に多いが。
VW7.2.1 110450.2d - 110351 --> 99.199999999997d ???
精度落ち
private な class method しかないクラスがあるんですが、 Object withAllSubclasses select: [:each | each selectors isEmpty and: [each class organization categories = #(#private)] ]. → OrderedCollection (TextInsertionPoint DefaultLookInsertionPoint MotifInsertionPoint) これらのクラスってどのように使われることを想定しているんでしょうか?上は VW7.2.1 です。
それでいて、でもやっぱり ないんだよねぇ
>>717 continueが必要になるような長ったらしいメソッドはSmalltalk的じゃない、
ということもあると思われ。
>>718 next/continueは構造を単純化すれば if-then-else の else の枝が
空っぽになってる形だから、then の枝を composed method pattern(*) で
十分に小さくすれば、ifTrue: に数行のブロックという感じのコードに落着きますね。
* 「Smalltalkベストプラクティス・パターン」参照
>>715 あるクラスを見つけて、これは何に、どんな風につかうんだろう、と思ったら
そのクラスの References (ブラウザからクラス名を右クリックしてメニューの二番目)
で他のソースコードからクラス名で呼んでいる個所が分かる。
TextInsertionPoint の場合は WidgetPolicy>>nativeInsertionPointmanager という
メソッド。
そしてメソッドの使われかたも、メソッドの Senders (ブラウザのメソッド名を
右クリックしてメニューの一番目)で、メソッドを呼んでいる個所を検索。
というわけで、○○InsertionPointは、ComposedTextViewやTextEditorViewの中で
表示されるキャレットの見た目の違いを表現しているような希ガス。
>>720 なんか結局 private プロトコルなのに普通にクラスメソッド的に使っているみたいですね。
なんのために private プロトコルにメソッドを書いたのか意味がわかりません。
ありがとうございました。
722 :
デフォルトの名無しさん :04/10/24 23:12:20
ambraiはどうなった?
VisualWorks7.2にStoreがついているようなんですが、 cincomくらいしか接続先が出てきませんよね。 Storeのサーバーって自前で建てられないんでしょうか。
StoreサーバってただのDBサーバなんじゃないの?
>>724 SourceCodeMgmtGuide.pdf読んだ?
"Store is a source code management and versioning system that is
integrated into the VisualWorks environment."
って書いてあるよ。
>>724 ごめん。サーバー側はRDBMSが動いていればいい、っていう意味だったのね
今分かった。
728 :
デフォルトの名無しさん :04/11/21 16:58:12
age
729 :
デフォルトの名無しさん :04/11/22 09:40:07
730 :
デフォルトの名無しさん :04/11/22 16:01:30
プログラムとかほとんど解らないんですが、 SqueakのScamperってブラウザで日本語扱うのは遠い道のりですか?
Smalltalkの処理系って出来るたんびにいっつもフルスクラッチされてるみたいだけど よくあんな体力あるよね 関心するわ
うん
人が来ないくせに不親切なスレだな
>>735 何も情報出さないくせにキチガイなレスだな。
737 :
デフォルトの名無しさん :04/11/28 19:48:10
AmbraiのBeta2Unicode対応でTranscript show: '日本語'とか普通に通りますな。
>>738 おお。beta2、でたんですか。すばらしい。
2ちゃんねるのみなさん明けましておめでとうございます。
返事に1年もかかってすみません。
>>655 ちょっと説明が冗長で読みにくかったりしたらごめんなさい。
メモリ管理の話は元々複雑だし、あと覚えていることを忘れないうちに
ここにメモして誰かに渡しておこうと思ったんです。
> Smalltalkに惹きつけるものは何ですか?
Smalltalkはちょっと置いておいて、メモリ管理には確かに強く惹かれます。
メモリ管理の振る舞いって、技術者の直観や常識や見通しを裏切ることが
多くないですかね。Smalltalkに限らずGC一般にそうで、UNIXでいう
mallocなどもそんな気がします。
実際私は、何度も何度も何度も間違って、本当に痛い目を見ました。
だから、メモリ管理にはいつか大きな仕返しをしてコテンパンに伸してやろう、
という劣等感があるんです。
>>710 ,716,717
VW限定の話として:
Signalをraiseして適当にExceptionをhandleするだけでbreakは簡単にできます。
表現も、「break」の一言では済まないものの簡潔に収まり、
コード上の見通しは悪くならないというのが私の実感です。
ループのnextやcontinueも、Signalの応用で可能だと思います。
だって、Smalltalkではブロック(ループ1回分)は1st class objectで、
しかもブロック途中からの退出(break)が上で述べたように可能なんですから。
もしかしたら、exceptionに対してredoとかすれば済む場合もあるかも。
ただ、Signal回りはVW3,VW5,VW7の間で「正式な」コーディング方法が
変化したはずです。互換性は保つようにはなっていますが。
(この変化はANSI標準の動向などの影響を受けたからだった気がします。)
いまVWを使ってる方、実例コードをよろしく...
742 :
デフォルトの名無しさん :05/01/15 03:22:57
すみません質問です。 画面を右クリックでWorKSpaceかexcelで一覧枠の内容を表示させる事が出来ますが、 画面上の項目のラベルの日付が1/15に対してexcelに吐き出される内容が2005/01/15と出力されてしまいます。 どちらも同じにしたいですがどうすれば良いのでしょうか・・・。 そもそもexcelに吐き出される処理の部分が分からなく、excelに吐き出される所の処理を理解しなくてはいけないですが どうすれば良いのでしょうか・・・
先週「自由自在SQUEAKプログラミング」って本買いました。 よさそうな本ですね。
VW7.3NCでIMEをonにしてIMEパッドを開くとCPUが100%になってしまう。 これは仕様ですかぁ?
>>745 最近のvwはイベント処理回りがへんな気が酢
Pollock移行に向けて、UIまわりがいい加減になってる印象も… いや、UIがダメなのは昔からか。
748 :
デフォルトの名無しさん :2005/04/03(日) 00:16:22
あるクラスへのnewメッセージをエラーにしたいのですけど、 どうすればエラーを起こせるのでしたっけ?
>>748 そのマンマのことを書くのじゃだめなの?
つまり、newクラスメソッドにエラー(適当な
シグナル)を起こすコード書けばいいんでは?
このクラスにこのメッセージは使えません、 みたいなダイアログを出したいのですけど、 自分で新しいシグナルを定義してエラーその 旨表示されるダイアログを出す、という コードを書かねばならない、ということですか。 self に errorSignal を送るだけだと、 一般的なメッセージなので、ユーザ(自分だけど) に何がいけないのか注意を喚起できないです。
751 :
デフォルトの名無しさん :2005/04/03(日) 12:36:45
Squeak をプロトタイプ作成に利用しようかなと考えて いるのですが、VBみたいに、初心者でもサクッと ウィンドウを使ったアプリがつくれますか。
>>750 そのためにObjectにshouldNotImplementがあるんじゃないの?
つか使うべきじゃないぞ~って意思表示じゃないのか?
753 :
750 :2005/04/03(日) 14:39:45
self error:'Messagetext' でダイアログのタイトル
を変えられることを発見。Objectの shoudNotImplement
メッセージをみたら書いてあった。
>>752 ありがとね。
755 :
デフォルトの名無しさん :2005/04/04(月) 21:55:08
>>751 英文、というより英単語の語彙が豊富であれば、あなたの問いの答えは真です。
そうでない場合はjavaやC#とあんまり変わらないと思うのです。
(コードとコメントから得る知識 VS ネットや書籍から得る知識の違いなだけ)
757 :
751 :2005/04/05(火) 01:38:32
>>756 サクッと作れるのは、モーフで作る、ということですか。
つまり、英文が読めればモーフの資料が読める。モーフは
VBなみに簡単だ。だから、初心者でも(英文が読めれば)
サクッとモーフでウィンドウアプリがつくれるよ、という
解釈でよろしいですか?
758 :
751 :2005/04/05(火) 01:55:31
あ、資料というか、コードを読め、ということですか。
>>756 読めばわかるから読んでみなさいな、メソッドの分類なんかでexampleとかもあるから
あとsmalltalkの特徴でメソッド呼び出しが英文の読みに近いので、よくできたクラスほど
きれいに読み下しができたりします。
習うよりなれろを体感できる珍しい言語環境の一つだと思う。
760 :
オサン :2005/04/06(水) 01:32:34
>744 これから読むところ。 MAC,DOS/V,98でSmalltalk/VちょこっとやったけどSQUEAKもいいですね。 SQUEAKもMACV,WIN,ザウルスでやってみました。 ザウルス版は固まってしょうがなかったです。 やったといっても動作環境を作った程度のことですけどね。 ちなみに素人です。 OOPSやSmalltalkの概念程度はわかってますが。 98でSmalltalk/Vやった16年ほど前はオブジェクトにメソッドを送るとかってのが 身に付くまでに1,2週間かかりました。
>>751 そういう用途ならVisualWorksでキャンバスツールを使ったほうが良いです。
762 :
751 :2005/04/06(水) 18:36:51
763 :
デフォルトの名無しさん :2005/04/07(木) 10:31:52
VisualWorksでSystemFontを変えるにはどうしたらいいですか。 デフォルトだと小さいです。英語だし。
NamedFontSelector open
いつのまにやらAmbrai 1.0.6 Beta3あげ。
しかし、漏れは日付が日付だったんで、ネタだと思い込んでますたORZ
768 :
デフォルトの名無しさん :2005/04/14(木) 01:41:59
Squeak で、 SystemWindowのボーダーカラーを変えるには どうしたらいいのですか。borderColorが #raisedとかなっていて メニューから色を変えても、この変数にはシンボルが設定されたまま なので、コード中からどこを変えればいいかわからないです。
769 :
デフォルトの名無しさん :2005/04/14(木) 19:30:33
Squeakでソケット通信したり、DLL叩いたりしたいんですが、 どっかに資料ないですか?
>>769 You can browse your system.
771 :
デフォルトの名無しさん :2005/04/14(木) 19:38:38
すんません、英語よめまさん
Webブラウザから何から全部ソースついてるから読めばええやんか~。 exampleとかに分類されているメソッドがあればクラスの使い方までかいてあるやんか~。 #やらねばならない状態であればやれ、 #そうでないなら楽しんでやれ。
773 :
デフォルトの名無しさん :2005/04/14(木) 20:43:12
応える気がないならレスすんなよ
つまり日本語で書いてあるコピペするだけで動くコードの断片がほしいって事かYo!
775 :
デフォルトの名無しさん :2005/04/14(木) 21:02:31
ソース読めっていうなら、どこを読むのかまで面倒みろよ
Squeakで教材作ろうとしているのですが、 タイルプログラミングくらいを中心に書いた ドキュメントってありませんでしょうか。 「Squeakで遊ぼう」は面白くてためになりましたが、 もう少し複雑なことをやってみたいのです。 「プログラミング自由自在」みたいに 自分でクラスを書く程でもないんですよ。 SqueakLandのキッズプレイじゃ、物足りないし… Classic Gamesは、どこにコードが書いてあるか分からないし・・・
777 (*^ー゚)b
779 :
デフォルトの名無しさん :2005/04/27(水) 13:39:23
ワークスペースでsuperをprint itするとnilを返すのに、 super isNilをprint itするとfalseを返すのはおかしい orz
>>779 どうしておかしい?
superはスーパークラスを指す(疑似)変数じゃないよ。
ワークスペース上のsuperって、何者ですか?
superはメソッド・セレクター。 (new Object) super を eval it 汁
・・・な~んちゃって(汗 nil、true、false、super、thisContext は、 メソッド内でのみ有効な擬似変数っすね。
784 :
776 :2005/04/27(水) 15:14:15
>>778 ありがとうございました。
お礼が遅くなってすみませんです。
superは、(isNilメッセージをfalseと返す特殊な)nilを返す メソッドというワケですか (?_?)
>>785 文法の問題。
superが nil だから isNil が true になるだろう、という予測を検証するなら、
(super) isNil とするべき。
なるほど。でも、(super) isNilもSqueakではfalseを返しますよ(?_?) そもそもワークスペースのdo itとかどういう仕組みなのですか? selfがnilだからといって、nilのメソッドとして実行しているわけでも なさそうだし。
super isNilはself (super isNil) つまり、nil (super isNil)というわけですね。 わかりました。
簡単な super の説明 super は self と同じオブジェクトを指すが、メソッド探索の際には self class にあるメソッドは検索対象にならない を素直に適用すると、 ・isNil は nil class で true と定義されているため、printIt が式を評価する 際にはsuper isNil は true にならない。 ・printIt が評価結果を表示する際には、評価したときとは異なるコンテキストで asString が実行されるため、super を printIt すると nil になる。 ということのような気がする。 nil super asString を printIt すれば解りやすいような。。。
790 :
デフォルトの名無しさん :2005/04/27(水) 20:29:52
SqueakNihongo7でUMLが使えるようになったがWorkspaceが 使えない。Squeak3.7-5989-full.imageはWorkspaceは使えるが UMLはない。
まさか、ソフトの入れ方知らないのか?
>>785 以下の3つをprint itしてみな。
self == super
self isNil
super isNil
self == super "true" self isNil "true" super isNil "false" やっぱり、おかしい orz
>>793 おかしくないと思うけど・・・
3行目の isNil は nil の isNil じゃなくて、
nilのスーパークラスのisNilが呼ばれる、
って解ってますよね?
実にSmalltalkらしい、「わかりやすい」挙動だよ。 これがわからないということは、Smalltalkを理解 出来ていないということだ。
うるせーヴォケ
797 :
デフォルトの名無しさん :2005/04/28(木) 21:54:05
10年位寝かせた、ビンテージネタですな。 さいきんSmalltalk触ってないから、FAQネタとは気づかなかったよw
798 :
デフォルトの名無しさん :2005/05/04(水) 04:22:21
Squeak3.7-5989-full.imageではFreeCellのボードがおかしな 動きをします。どこをどう直したらいいか誰か教えて下さい。
MessageNotUnderstoodEasily: Smalltalkers(UndefinedObject)
>>798 2ちゃんねるのデバッガはなかなか開かないので
気長に待つしかないでしょう。
ちなみに FreeCell のルールを知らない私が
そのトランプを一枚一枚 haloをつかって
ゴミ箱へ飛ばして楽しんでいたのは公然の秘密です。
そんな私には、システムブラウザをつかって FreeCell クラス
(FreeCellBoard、FreeCellStatistics もかな?)
を探ってみたら、くらいのことしかアドバイスできません。
ごめんなさい。
800 :
798 :2005/05/05(木) 04:43:39
>>799 >トランプを一枚一枚 haloをつかってゴミ箱へ飛ばして
やってみましたが判りませんでした。
>システムブラウザをつかって FreeCell クラス
>(FreeCellBoard、FreeCellStatistics もかな?)
>を探ってみたら
ざっと見てみましたがどうも判りません。メソッド名からだけでは
判らないものなのでしょうか。
注) デバッグには、メソッドのコードを読む能力が必要です。
スクイークには、ワープロソフトはないのですか?
803 :
デフォルトの名無しさん :2005/05/11(水) 13:09:06
Smalltalkはメッセージさえもオブジェクトなのに、 変数はオブジェクトではないというのはおかしい orz
804 :
デフォルトの名無しさん :2005/05/11(水) 13:12:49
はぁ?
>>803 メッセージは(#doesNotUnderstand: 起動時とか例外を除いて)原則として
エンティティではなかったような。でも変数がオブジェクトだと便利なことも
あるよね。variable++ の実装とか。
806 :
デフォルトの名無しさん :2005/05/11(水) 19:19:47
メッセージ (ってメソッド・セレクターの事か)は、 メッセージ・ディクショナリーとかいう名前の辞書 (hashtable)のキー(識別子)じゃなかったっけ? Smalltalk/Vの記憶しかないけどw すると、変数がオブジェクトじゃないつうのは、 辞書のエントリ (key, value)ペアは、明示的にはオブジェクトとして扱えない (VMコードレベルのプリミティブ) つう話かな。
↑修正。 変数名は識別子・・・非オブジェクト 変数値はオブジェクト コード中の変数実体 (辞書のエントリー)は、 バイトコード・レベルのプリミティブ or オブジェクト
>>806 よく勘違いしている教科書もあるけど、セレクタはメッセージじゃないよ。
(単項の場合、字面のうえではたまたま一致してまぎらわしいけど)
アラン・ケイの定義では、メッセージはセレクタとパラメータの組、とか。
どうやらSmalltalkはアランケー没とともに消滅
>>807 変数も構文ノードとしてオブジェクトになってる。
構文的にはCで言う「++」みたいのは、「←」(または:=)と同じレベルにあるから
コンパイラに手を入れて、必要なコードを吐くようにすれば?
例えば「a += b + c++」みたいのは(a ← a + (b + (c ←c + 1)))として
コードを生成すればいいでしょ。
>>808 VisualWorksではレシーバ、メッセージセレクタ、パラメータの組だね。
>>810 お詳しそうなので、もうちょっと詳しく聞かせて下さい。
構文ノードとしてのオブジェクトというのは、
常に常駐している類のものなのでしょうか?
コンパイル時には当然なんらかの構文データ構造(オブジェクト)は必要として、
それ以外の時も、常駐 あるいは byte codeから再生される、って感じでしょうか?
812 :
デフォルトの名無しさん :2005/05/11(水) 20:28:33
後者なら、リフレクション的意味合いで、 byte codeをオブジェクトで表現したものかなぁ、と理解したいのですがw
LISP))))))))))))))))Smalltalk
814 :
デフォルトの名無しさん :2005/05/11(水) 20:52:01
じゃあ実行時の変数は、オブジェクトとして取り出し可能なバイトコード って解釈でおっけっすね。
>>811 まずはCompiledMethodまわりでも眺めとけ。
バイトコードから構文ノードは取り出せないでしょ。 不可逆変換だから。 > 実行時の変数は、オブジェクトとして取り出し可能なバイトコード って意味不明だけど。 バイトコード上ローカル変数へのアクセスは store local 0 とか push local 0 ; pop とかになってる。ローカル変数が参照するオブジェクトならともかくローカル変数 *そのもの* をオブジェクトとして取り出すことはできない。 MethodContextあたりを調べればこのへんの仕組みは分るはず。
じゃ、変数としてのオブジェクトというのは、 コンパイルの構文解析時限定じゃないすか。 俺は reflectionでbytecode調べる(HORBが使ってた方法、ただしローカル変数はできない)かとオモタよ
>>817 > じゃ、変数としてのオブジェクトというのは、
> コンパイルの構文解析時限定じゃないすか。
だから
>>810 には「コンパイラに手を入れて」と書いてあるじゃん。。。
>>811 は最終的に何をやりたいかを具体的に書いてくれ。
そこがはっきりしないから、本人の質問も周囲の回答も
的を外しっぱなしのような希ガス。
821 :
デフォルトの名無しさん :2005/05/13(金) 12:14:10
たとえば、関数呼び出しで複数の戻り値が必要な場合、参照渡しで変数の ポインタを渡せるように関数定義しますが、スマートにこれをSmalltalkで どのように書きますか?スマートに。
>>821 普通にanArray返せばいいだけじゃん。
ダメだってんなら、君の言う「スマートに」を定義せよ。
>>821 複数の戻り値が欲しいなら、
・呼ばれた側がコンテナオブジェクトを返す。
・呼ぶ側がコンテナ自体を引数として渡す。
のいずれかでよいでしょう。
私(a Smalltalker)の感覚ではこれで十分スマートなんですが、
>>821 さんの基準から観てこれらはスマートでしょうか?
調べてみたら、VariableBindingとか変数クラスがありますね。 これから動的に変数オブジェクトを生成して、渡せばOKと。 でも、これに「:=」は使えませんよね。メッセージじゃないし。 変数には、オブジェクトとしての変数と非オブジェクトとしての変数の 2種類ある、という統一性のなさは、Smalltalkがオブジェクト指向言語と してはB級品であると orz
>>824 > 変数には、オブジェクトとしての変数と非オブジェクトとしての変数の
> 2種類ある、
は君の誤解。
>>821 参照渡しで変数を書き換えさせるのって全然スマートじゃないじゃん。Cに毒されすぎ。
複数の戻り値が必要な場合に一番スマートな方法は多値(multiple value)を返すこと。
CallとReturnのセマンティクスが対称になるからね。
本当の多値を使える言語は少ないけど、配列やリストやタプルを返すことでシミュレート
できる言語は多い。
>>824 Smalltalkのあらゆる変数(*)は、何でもbindできて常に中身を参照できる普通の変数だよ。
一方で、中身となるもの(言語理論でいうfirst class object)は常にオブジェクト(a Object)。
常に、あらゆる場面でそうでしょ?どうして2種類??
(*)もちろんインスタンス変数、とりわけコレクション(indexable object)の各スロットも。
つーか、Smalltalkの各種変数はそれぞれ「環境」が違うから
その「環境」の実装が違っているのは当然のことだよな。
>>824 はまず、変数と環境の違いと、言語仕様と処理系の実装の違いについて
じっくり考えてみたり文献を調べてみたりしたらどうだろう?
その話は、問題定義が不充分なので、続けても意味が無いとおもふ。
831 :
名無し募集中。。。 :2005/05/15(日) 18:36:50
WindowsXPで使えるフリーの処理系ありますか?
832 :
デフォルトの名無しさん :2005/05/15(日) 23:39:41
>831 5のリンク先をたどりたまへ
833 :
名無し募集中。。。 :2005/05/17(火) 02:02:33
>>832 ありがとうございます!
いっぱいあるんですね
わたくし回線がナローなのでついついネットサーフするのがおっくうになってまして失礼いたしまひた
昔MacでSmallTalk/Vとか買ってLogoもどきつくったり絵を描かせたりして遊んだものです
思い余って肌色に紫色の英文の本かったりして
今はVBは仕事で、javaは遊びで触ったりするんですが、
昔遊んだSmallTalkの感覚はいまだに独特な雰囲気があって
またいじり倒したくなったのです
普通の演算子までがオブジェクトになってるなんて、ソース見ながら感動したもんでした
そのころのMacも非力なもので絵とか描かすと(マンデルブロとかフラクタルとかあのへんが好きだったのです)
すっごい時間がかかって、、
さぞや今なら、、、なんて思ってます
ログ読んで
じゅんオールインワン
http://www.sra.co.jp/people/aoki/Jun/JunAllInOne/ とかいいのかなと思ったり
あと、これはここがいい!見たいなまとめサイトがないかなと思ったり
おっと、もうこんな時間だ
834 :
798 :2005/05/17(火) 04:14:45
>>833 >MacでSmallTalk/V
縦スクロールバーをクリックした時の動きが少しおかしかった
でしょう。直しましたか。
835 :
名無し募集中。。。 :2005/05/17(火) 23:30:26
>>834 たぶん、、、もう10年以上前なのであまり覚えてない
すいません
マニュアルもなにもかも英語だったけどSmallTalkの面白さは十分感じた
ただし、MacのLC改だったのですんごく遅かった
でも、そのへんソース自分でいじれたのもある意味すごいですよね
とりあえず、じゅんオールインワン 落としてみました
いじって遊ぶのは休みの日かな
× DigiTalk SmallTalk ○ Digitalk Smalltalk
↑典型的なSmalltalk脳
↑おまえ周りから嫌われまくってるだろう
Smalltalk 脳は褒め言葉じゃないか
↑典型的なスレ潰し
841 :
798 :2005/05/20(金) 02:06:21
>>834 ,835
>縦スクロールバーをクリックした時の動きが少しおかしかった
VerticalScrollBarPaneクラスのnewTopCorner:メソッドで、
丸めの計算でおかしなことをしていたのを、1/2を足して切り捨てに
直しました。Squeakでは実数で計算していました。
>>798 の件でも
修正箇所はすぐ判ると思ったのですがまだ判りません。
SmalltalkerはSmalltalkで何をしているのですか?
Smalltalkers smalltalk with Smalltalk.
UIのセンスないよな
>>844 絵的なセンスについてなら同意する。
"自分もUIのセンス無いけどさ
>>844 SqueakもVisualWorksもUI周りの設計が発酵しているという指摘なら、
全くその通りだと思う。単にウィジットの絵の話なら、勝手に自分で作れ。
847 :
デフォルトの名無しさん :2005/05/21(土) 19:12:49
morphic UIは一時代築くと思ったんだけど、 ・OS方面は、LightWeight widget、XMLベースのUIに、Xerox Palcパクリの3DGUI ・Web方面は、まさかのMVC type2と、XMLベースのUI、そして今更感のあるthin client という流れだったなぁ。>>ここ10年 ・・・morphicってSqueak以外に適用した例ないの?
MVCは聞こえはいいけど概念的にはまったくの役立たずだったな
頭おかしいのがここにも来るのか。
tweakってどうよ?
>>847 Morphicは元々Selfのもんだが…
ああそうだね。それで?
つか、ここSmalltalkスレだし、UIに関する話題の流れだから、 プロトタイプ・ベース言語 Selfの話はあえてはしょったんだけど
Squeak以外に、なんて聞いたらSelfの事出されて当然だと思うが。
どうでもいいよ。誰でも知ってる話題だから
>>847 Newton OS も Morphic っぽかったけど、あれは SELF の流れだからなぁ…。
もし、ウィジェットがいちいちオブジェクトっていう括りでいいんなら、
Mac OS X/Cocoa も、Longhone もそうだから、これからじゃない?
>これからじゃない? たとえばリストビューの各項目やスタティックコントロール上のテキストを クリップボードかなんかに取り出したい時は、コントロールがオブジェクトに なってれば便利かもしれない でもそういうのはセキュリティ考えてなさそうで怖い
858 :
デフォルトの名無しさん :2005/05/26(木) 18:08:58
VisualWorks7 で MyDocument フォルダのパスを得るにはどうすればいいですか?
859 :
訂正 :2005/05/26(木) 18:10:29
×MyDocument ○My Documents
>>856 > ウィジェットがいちいちオブジェクトっていう括りでいいんなら
?
Smalltalkerってみな同じ。 Smalltalkerって、いつもあれをしろ、これをしろって、うるさくてしようがないんですもの。
?
863 :
デフォルトの名無しさん :2005/06/04(土) 19:39:16
VisualWorks7 ですが、Image(visual.im) の保存をコーディングする方法はありますか
864 :
デフォルトの名無しさん :2005/06/04(土) 19:50:47
>863 ObjectMemory class を探るとよいでしょう
>>863 それらしいのを見つけることができました。ありがとう。
866 :
デフォルトの名無しさん :2005/06/05(日) 00:31:54
Smalltalkの特徴を生かした、この言語だからできた、というようなアプリって何かありますか?
>>866 Smalltalkシステムそれ自体。べただけど、これを越えたものはまだないと思うので。
868 :
デフォルトの名無しさん :2005/06/05(日) 10:49:59
Smalltalk意外では? ないのかな? やっぱお遊び、少し研究用言語ですかね・・・。
NetCommand。 まあ企業向けだから学生は触る機会ないけどね
870 :
デフォルトの名無しさん :2005/06/07(火) 00:33:34
,,,,,,, ノ ヽ,,,,, '''"""'' ''"""'' -=・=‐, =・=- "''''" | "''''" ヽ ^-^ ‐-===- "'''''''"
正直、Swikiは大好きだが。
872 :
デフォルトの名無しさん :2005/06/09(木) 21:35:44
僕は嫌いです。 口ばっかりで、実行力に欠ける人。
なんだ、お前はお前自身の事をよく理解してるじゃないか
>>871 Smalltalk Wikiね。
漏れが初めて見たWikiは、Squeakに入ってるWikiだたーよ
>>875 Swiki = Squeak + Wiki
877 :
デフォルトの名無しさん :2005/06/11(土) 22:17:28
>>874 > 北区にある派遣会社社員か。悲惨だなぁ
これどこ? というかローカルすぎてわからんよ。
squeakってsmalltalkなんだ
880 :
デフォルトの名無しさん :2005/06/19(日) 22:37:50
キーキー言っている奴ってことでしょ。 このスレににもいっぱいいそうだが。
881 :
デフォルトの名無しさん :2005/06/20(月) 20:15:45
スレも伸びないし、人気ないよね。
スレの伸びと人気は全く関係ないんだけど(w
883 :
デフォルトの名無しさん :2005/06/21(火) 03:05:21
「にんき」と「ひとけ」とどっちで読めばいいんだか。
885 :
デフォルトの名無しさん :2005/06/22(水) 00:59:03
抽象度が高い分、子供とメッセージパッシングは相性良いと思うな。 PARC を訪ねた Jobs みたいに、何かを発見できる子が居ると良いね。
887 :
子供 :2005/06/22(水) 03:04:25
「あーあ、PSPで遊んでる方が面白れえよなあ・・・」
子供にロリナンパスペシャルや天使大便は難しいと思うぞ。
Squeakのメッセージは「コンピュータに使われるのではなくて、自分の思い 通りにコンピュータを使う」であって、オブジェクト指向とかは手段に すぎないんです。そして、それはPSPで遊ぶ行為とはベクトルが違うのです。 ということを、アラン・ケイは子供たちに教えたいんだと思う。
教師の側はそう思ってるんだろうね。ある意味不純な考えだ。 子供の側からしたら、どうでも良い話だが。
891 :
デフォルトの名無しさん :2005/06/25(土) 18:34:50
ケイが笛吹けど、踊らず、かな。>最近
PSPでSqueakできればいいのに
893 :
デフォルトの名無しさん :2005/06/28(火) 21:58:39
ナムコミュージアムでもやっているほうが楽しい。
ナムコミュージアムをやっても、別に下克上は起こらない、というか。
smalltalkせっかく良い言語なのに言語名が長過ぎるんだね。 せめてstalkとかにすれば良かったのにね。
stalker 徘徊者カコイイ
H-talk
899 :
デフォルトの名無しさん :2005/07/09(土) 21:56:54
コンピュータそのものが珍しいときだったら、LOGOだのこれだのは新奇性があって 子供も喜んで取り組むだろうが、いまどきのガキにはなんかめんどくせえ課題を 押し付けられたぐらいにしか感じられないだろうな。
もう3DのFPSとかじゃないと体が受け付けない
むしろ真っ黒な背景に >_ とかプロンプトが表示されてるだけだったりする方が 知的好奇心を煽っていいと思うね
Blizzardプロジェクトってどんな方法論でどんなプロダクトを 開発してたんですか。 Webを探しても断片的な記述しか見かけなくて。
904 :
デフォルトの名無しさん :2005/07/16(土) 16:58:38
ガチガチのウォーターフォールモデル
905 :
デフォルトの名無しさん :2005/07/16(土) 19:21:32
>905 "add item..." は今の "new category..."
SqueakToys(Win2000 Squeak3.8英語版)の質問です。 親モーフが回転している間、サブモーフの座標(値)を取得する方法はないかという質問です。 あるモーフ(モルフ)に別のモーフを埋め込んでサブモーフにして使っています。 細々とした部品郡(20個未満)を、スライダで設定した値に従って動かすのですが、 サブモーフにしておくと、一つ動かせば残りも勝手について来るので便利だからです。 プレイフィールドに埋め込んだモーフは、ワールド内の座標とは別に、 プレイフィールド内に原点をとる相対(?)座標系を持ちます。 しかし、スケッチなどに埋め込んだサブモーフは、親モーフと同じ座標系です。 さて、この親モーフを並行移動する場合はサブモーフの座標も親モーフに追従するのですが、 親モーフを回転をさせると、途端にまったく別の座標系に飛んでしまいます。 表示は問題ないのですが、座標の値を調べると、y座標はワールドのlength、 x座標は親モーフの重心(デフォで回転の中心がある位置)からみたサブモーフのx座標です。 この値は親モーフが回転している間(heading<>0の間)、 サブモーフの位置が動いても一切変化しません。 親モーフのheadingがちょうど0になると、元の座標(値)が復活します。 そんなわけで、親モーフが回転中はサブモーフの座標を取得することが困難になっています。 親モーフが回転中にサブモーフの座標を取得するにはどうしたら良いでしょうか。 ちなみに、親モーフがアロー、ラインの時はまた違った挙動をします。 (親モーフとの相対位置が予測困難ですが、正常に座標値は取得できます)。
>>907 position を使わずに referencePositionInWorld を使ってみては?
>>908 ありがとうございます。
referencePositionInWorld ですか。
名前からして確実に取得できそうですね。
そういうのがあることも知りませんでしたが、
少し勉強して試してみることにします。
910 :
907 :2005/08/05(金) 23:05:59
>>909 インスペクタで見ると、座標系が違うので戸惑いましたが、
referencePositionInWorldで、安定した座標値を得ることができました。
インスペクタを見ていて気が付いたのですが、
モーフを回転すると、サブモーフのオーナーが
a SketchMorph<Sketch>(1696) から a SketchMorph(1696) へと変化しました。
この辺がキーかなと思ってみてみたら、親モーフのオーナーが
TransformationMorph となっていました。これは親モーフを回転したときだけ、そうなります。
Arrow、Lineを回転させてもこのモーフは現れないので、
挙動の違いはこれだと考えています。
普段はタイルプログラミングしかしていないので、
それがどういう意味なのか、まだ理解できていませんが。
SimpleButtonMorphのtargetってGUIでセットすること出来ないの? ちょうどMacOSXのInterfacebuilderみたいなやつ
SmalltalkのJITって、どんなことをしているのですか? 変数に型がないから、JITと相性がよくないような気がするのですが。
実行時コンパイルの技術のほとんどはSmalltalkで発展してるんだが… だいたい、Javaだって強い型を用いるのはコンパイルまでで、VM内では 弱い型しか持っていないぞ。
>>913 たぶん型特定とJITの関係をどうしているのかが知りたいのだと思う。
正直そのシグネチャのメソッドが実装されているかどうかすら怪しい呼び出しがある場合と
確実にその呼び出しが対象となるインスタンスに固有であると言うのを知り得る手段って難し問題だと思う。
インタプリタとコンパイルされたコードによる混在実行 単一原始命令によるビジーウェイトしないロック コード書き換えによるメソッド呼出の非仮想化 制御フロー変形による異なるクラス情報の合流の最小化 メモリ保護機能を考慮した冗長NULLポインタチェックの除去 2種類のプロファイラを使った最適化の動的制御 例外の実行時履歴を使った例外処理最適化 データフロー解析 冗長なテストコードの除去 スタック計算方式をレジスタ計算方式に変換 パイプライン性能を発揮させるコードスケジューリング レジスタ割付によるメモリアクセスの低減 メソッドインライニング デッドコードエリミネーション 共通部分式の削除 ループバージョニング 仮想関数呼出のバージョニング 定数伝搬 Javaでは↑をしているようですが、Smalltalkではどうなのでしょうか?
>>916 JIT固有の問題と最適化一般の話と実行環境一般の話が混じってるね。
918 :
デフォルトの名無しさん :2005/08/25(木) 14:56:46
漏れの記憶では、
>>916 の1/3~1/2くらいはそもそも
SmalltalkのJIT技術として発表されていたような気がする。
・2種類のプロファイラを使った最適化の動的制御
・パイプライン性能を発揮させるコードスケジューリング
この辺はJavaになってから出てきた技術かな。
どっちにせよかなり枯れた分野だから・・・
919 :
デフォルトの名無しさん :2005/08/26(金) 02:23:20
JITがじっとしている。
残りはLisp界隈かね? 大体この手の技術はSmalltalkかLispあたりを探すとオリジンが見つかるパターン多いやね
lispは名前がない技術が沢山あったからね。 Javaでそういうのが名付けされて有名になってきたのって、 やっぱComonLispやSchemeで有名なGUY L Jr Steeleの功績が大きいのかな。
やっぱ天才Steeleは大きいよね。スタック管理とか感動したよ。
ガイはマジ天才だから。 つーか君ら論文読め、自分の未熟を知るには非常によろしいよ、Guyの論文
ナイスガイの論文のURLを教えてください
926 :
デフォルトの名無しさん :2005/09/08(木) 12:53:53
Lispに何を足し算 引き算すると、Smalltalkになるのですか?
>>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用のクラスってないの?