X



Smalltalk総合 Squeak Pharo
0005デフォルトの名無しさん垢版2013/02/16(土) 22:43:27.68
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0008デフォルトの名無しさん垢版2013/02/16(土) 23:48:41.78
個人的にはDolphin Smalltalkの完成度が好き。Win限定だけど。
http://www.object-arts.com/

Amber Smalltalkは面白いけれど、まだいろいろと荒削りっぽい。
http://amber-lang.net/

名前から正統派と誤解されがちだけど実はかなり変わり種のGNU Smalltalkも
リニューアル後、頑張っている。
http://smalltalk.gnu.org/

変わり種と言えば、もはやSmalltak処理系と呼んでいいのか分からないGemStone/Sも
MagLevとか永続化で知名度を上げてきている。実はかなり古くからある処理系のひとつ。
http://www.gemstone.com/products/gemstone
http://seaside.gemstone.com/
0010デフォルトの名無しさん垢版2013/02/17(日) 20:34:48.78
オブジェクト指向を鍛えるにはひたすら便利だと思う。実行しているアプリをインスペクトして
オブジェクトグラフを書いて、各クラスの役割を考えるのはかなり役に立ったし。
0012デフォルトの名無しさん垢版2013/02/18(月) 00:07:01.38
結局、よくわからんかった。Squeakの本とか読んで試してみたけど

何でも出来るのかもしれないけど、「作法」?みたいなのがまったくわからんかった
0015デフォルトの名無しさん垢版2013/02/19(火) 23:05:27.09
>>12
良いサンプルプログラムがあると良いんだけどね

Smalltalk、「クラスライブラリ」のサンプルとしてはとても良いと思うけど
「アプリケーション」を書こうと思うと「なんか違う」感が強いね
「隅から隅まで知ってないとダメ」見たいなノリも嫌い
0018デフォルトの名無しさん垢版2013/02/20(水) 08:54:35.03
>>15
具体的にはどういうところが「なんか違う」と思った?
Smalltalkはオブジェクトの協働というそのコンセプトから、アプリケーションソフトという概念が希薄で
環境内でアプリに見えるものも、使いやすいようにそう見せているだけだったりするのだけれども
そういうことについてだろうか。あるいはイメージベースによって処理系ごと永続化されていて、
アプリケーション配布のときに余計なものを含めないといけないことに不自由さを感じた?
0019デフォルトの名無しさん垢版2013/02/20(水) 08:57:51.54
>>17
「箱庭」というのは言い得て妙かも。
そもそものスタートがアラン・ケイの「ぼくのかんがえるさいきょうのOS」の
試作環境だから。
0020デフォルトの名無しさん垢版2013/02/20(水) 21:24:14.37
MessageCaptureってなんでわざわざnewせなあかんの?
MessageCaptureに直接Message送られるようにしとけばよかったんちゃうん?
ProtoClassをMetaClass objectが直接継承してないから?
0022デフォルトの名無しさん垢版2013/02/21(木) 14:36:48.59
ネット調べると、どう書くorgでも一人頑張ってたid:suminしかいないイメージ

いにしえの日本語化関連の人たちとかは脱Smalltalkしたのか
まあどのソフトでも日本語化関わる人たちってだいたいいなくなるよね
ユーザーとは違うんだろうな
0025デフォルトの名無しさん垢版2013/02/21(木) 16:03:58.90
>>23
Rubyよりはイントロスペクションが強力で、デバッグ時の静的・動的トレースが楽ちん。
あと目的によってはユーザーが気ままに処理系をいじれるってイメージがあるけど
0026デフォルトの名無しさん垢版2013/02/21(木) 16:07:27.28
>>23
> ライブラリがしょぼくなったRubyだよね?
このたとえがわからん。Rubyってそんなにすごいの?
0027デフォルトの名無しさん垢版2013/02/21(木) 19:36:24.37
ユーザが多い分使えるライブラリは多いんじゃなかろうか
そんな事言ったら fortran 最強だけど
0030デフォルトの名無しさん垢版2013/02/22(金) 00:36:01.88
>>18
>アプリケーション配布のときに余計なものを含めないといけないことに不自由さを感じた?

そんな感じ
「2チャンネルの専用ブラウザ使おうとしたらVisualStudioが付いてきた」
みたいな感じになるでしょ

昔のQKS Smalltalkだったかな?開発環境とか不要なクラスを除外したイメージが書き出せますってんで買ったけど
イメージファイルが1.44MBのフロッピーに収まらなかったんでガッカリ来た
0036デフォルトの名無しさん垢版2013/02/23(土) 00:32:53.14
まず大前提として、Smalltalk環境なんてゴミは
求められてないって理解しようね

要らないもの作るためのライブラリが揃ってないのは
誰も必要無いものは作らないってだけの話
0038デフォルトの名無しさん垢版2013/02/23(土) 00:52:34.33
正規表現ライブラリーが100個あったりとか、
fcgiをラップするライブラリーが100個あっても仕方ないんだけどね。
1000ライブラリーがあるならせめて700通りの問題に対応できなきゃ
ゴミじゃね?50個ライブラリーを集めたら10000行掛かった
プログラムが20行程度、むしろコードは一切書かず数回の
クリック操作で完成するとかじゃないと嬉しくはないなぁ。
0039デフォルトの名無しさん垢版2013/02/23(土) 03:19:08.02
>>36
つまり、君の大好きなRubyには、Smalltalkのそのゴミがごとき環境を
経ずとも必要とされる機能が通過不足なく用意されているんだよね。
それはよかったじゃん。で、ここにはいったい何しに来たんだい?
0041デフォルトの名無しさん垢版2013/02/23(土) 07:40:15.84
Smalltalk環境ってOSの上にOSモドキ作ってるだけだからなぁ
普通にOSの機能使ってれば要らないよね
0042デフォルトの名無しさん垢版2013/02/23(土) 07:44:23.49
 Ruby信者ってキモイな。こんなSmalltalk使いのマッタリスレにまで来て、
自言語の優位性を誇示しにくるのか?
0043デフォルトの名無しさん垢版2013/02/23(土) 07:57:26.11
どんな言語/環境でもOSへのI/F持ってるよね。
OSへのI/Fをその言語/環境のパラダイムでモデル化してるよね。
結局、どんな言語/環境でも内部にOSモデルを持ってるよね。

そのOSモデルがその言語/環境とシームレスに繋がる言語/環境は優秀だね。
普通にOSの機能を使ってるだけに見える言語/環境はモデル化がクソだね。

で、>>41さんが大好きなRubyはどっちなんだい?
0045デフォルトの名無しさん垢版2013/02/23(土) 12:11:18.09
http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm
>他の言語(LispとSmalltalkは中でも特筆に値する)はみんなオペレーティングシステムが存在しない振りをしようとして、
>リストがすべてだとか(Lisp)、オブジェクトがすべてだ(Smalltalk)と言っているのに対し、Perlはまさにその逆のことをしている。
>ラリーが言っている。「Unixと文字列処理が、物事をやり遂げるために必要なすべてだ」
>そして多くのタスクに対し、これはまったくもって正しいのだ。
>だからPerlはUnixとの統合と文字列処理においてこの惑星上の(1つを除く)どの言語よりも優れている。
>そしてその例外となる1つが舞台に登場したのはごく最近のことで、それはゴジラの国でのことだ。

>おおよそのところ、 RubyはPerlの文字列処理とUnix統合をそのまま取り入れた。
>つまりシンタックスまで含めて同じなのだ。
>だから他の何かを待つまでもなく、すでにPerlの最良の部分を手にしているのだ。
0046デフォルトの名無しさん垢版2013/02/23(土) 13:51:10.85
C#が見ているOS .Net Framework
Javaが見ているOS JRE
どっちもSmalltalkの真似事じゃあるけど十分普及してるわな

てか、GUIが気に入らんだけならDolphinみたいに自分で表示させるようにした
GUIかつ、OSネィティブデザインのGUIしか表示させないようにする手もある。
0049デフォルトの名無しさん垢版2013/02/24(日) 10:41:15.44
興味あるから試してみたいんだけど、
既にあるコード資産を活かしつつ、徐々にSmalltalkに移行できるかな?

例えば、以下のようなシェルスクリプトの処理があったとき、
mapperだけをSmalltalk製に置き換えられたりする?

cat data/* | mapper | sort -k1 | reducer > result.txt


一応GNU Smalltalkなら可能らしい所までは分かったんだけど、
何かニセモノ扱いっぽいので、ちょっと躊躇してしまう……
0053デフォルトの名無しさん垢版2013/03/03(日) 11:45:49.86
シェル端末みたいなSmalltalk環境って無いんですかね。
bashやzshみたいに日常作業をこなしやすいやつ。
0057デフォルトの名無しさん垢版2013/03/03(日) 16:05:59.40
>>55 個人にどうこう言うつもりはないけれど、こういうのよく見かけるので書くけど、
(すでに好きで制約があっても使いたいととかではなく、そもそも使ったこともないのに)
シェル端末だけで使えるならSmalltalkしたいけどって人は、例えば (3/4) inspect とかが
どんな風に出力されればいいと思うのだろう… ちょっと理解に苦しむ。
denominatorやnumeratorとかのインスタンス変数の値を表示するところまでは
いいとして、その書き換えは(普通はもちろんそんなことしないけど、インスペクト
しているのが開発中の自作オブジェクトだったりで仮に必要なら)インスペクターは
介さずに直接 instVerNameAt:put: とかでやりたいということ? さらに、
インスペクターはある種アプリケーション様の振る舞いをするから別ウインドウに
保持しておきたいよね。そういうのはEmacsやvimみたいなエディタを介在させて
インスペクターの起動毎にペインやバッファを切るということだろうか。
もちろん、そういうニーズがあるのなら作るし作るべきなのがSmalltalkのスタンスだけど
そんな不完全なものでSmalltalkを学んだり使ったりして何が嬉しいのか、誰か説明して!w
0058デフォルトの名無しさん垢版2013/03/03(日) 17:02:30.98
シェルとして使いたいならinspetの出力とかはgstの形式で満足だよ
用途は (File path:'/home') list display.とかでbashを置き換えたいだけ
で。できれば自分でシェルオブジェクトを書換えて
タブ補完とかしたい。
そんでシェルスクリプトをSmalltalkで書いてしまいたい。
さらに出来るならDBusの呼出をメッセージ式にしてしまいたい。
0059デフォルトの名無しさん垢版2013/03/03(日) 21:12:44.30
後でわかることだが
これがあの有名なシェルを作ってしまうプロジェクトの始まりであった
0063デフォルトの名無しさん垢版2013/03/06(水) 00:27:26.06
実行環境入れるのも面倒だから
まずは日常会話に取り入れていけばいい
例えば嫁さんとのメールとか

かおり 買った?: おかず.
俺 後で買うよ: 夕方頃.
0065デフォルトの名無しさん垢版2013/03/09(土) 13:00:35.34
SqueakでもPharoでもVisualWorksでもいいから、好きなSmalltalk処理系をビジュアルシェルとして使えばいいじゃん?
0066デフォルトの名無しさん垢版2013/03/09(土) 19:32:27.88
起動が重い上他との親和性が低いからなぁ
sshで使った時、他のshellと交換できるぐらいの
可搬性は欲しいな
0068デフォルトの名無しさん垢版2013/03/10(日) 09:19:14.10
はあ?Squeakが重いか?

よくいるよね、20年前のイメージで重いとか遅いとか高いとか言っちゃう人。
0070デフォルトの名無しさん垢版2013/03/10(日) 10:04:06.71
>>68
端末としてつかうにゃ起動終了が重いよ。
gnome-terminalやKonsoleの10倍以上遅い。
ちょっとした作業のためにこれだけ待たされるのは辛い。
0071デフォルトの名無しさん垢版2013/03/10(日) 10:13:43.04
>>70
え?
ウィンドウマネージャとしてX.orgを起動してからずっとSqueakを使うんじゃないの?
どうしてgnomeとかKDEなんて必要なの?
0072デフォルトの名無しさん垢版2013/03/10(日) 13:37:07.11
面白い言語で案件があるのなら使いたいけど、いろんな技術トレンドの元ネタ的存在にも
関わらず商業的に失敗したな。後続の言語に美味しい所を持って行かれたというか。音楽
でいう既に廃盤済みの知る人ぞ知る名盤という感じ。
0073デフォルトの名無しさん垢版2013/03/10(日) 13:42:41.96
むしろ最初は商業ベースがメインだったんだよ
ただ使い物にならず他言語に流れた
いまは一部の物好きの玩具
0076デフォルトの名無しさん垢版2013/03/10(日) 21:28:05.79
>>71
vlcやらvimやらOperaがSqueak上にあればええけど
現実はそうじゃ無いじゃん。
Squeak上にLinux移植できたなら話は変わるだろうね。
0077デフォルトの名無しさん垢版2013/03/14(木) 15:15:23.05
Athena Smalltalk
http://bergel.eu/athena/
Little Smalltalk の作者自身による Java 拡張移植 SmallWorld から派生
シェルで使うには
java -cp athena-0.1.jar athena.engine.AthenaShell -i
ちなみに Java なためか日本語も大丈夫っぽい
0078デフォルトの名無しさん垢版2013/04/01(月) 00:03:25.79
2.7のときに大学でsqueakでHTTPサーバを作って遊んでたのだが、そのときのソースを流用できたらいいなぁ
0079デフォルトの名無しさん垢版2013/04/01(月) 02:04:54.84
squeakは環境全部が一体だからサーバ系は致命的なバグを混入させてしまったときに、次にそのsqueakそのものを起動できなくなるようで怖い
0080デフォルトの名無しさん垢版2013/04/02(火) 01:25:56.27
All in one をダウンロードしたらexeファイルがあるフォルダにimageファイルがなかったからあせった
0081デフォルトの名無しさん垢版2013/04/09(火) 02:29:30.92
Squeakって、もしかして Windows7 は対応してなかったりします?
起動した直後にエラーが出るんですけど
0083デフォルトの名無しさん垢版2013/04/09(火) 23:06:41.76
よく見たらzipファイルの解凍に失敗してた
解凍ソフト変えて解凍したらとりあえずエラーなしで起動できた
0087デフォルトの名無しさん垢版2013/05/15(水) 00:06:22.07
入門書でお勧めってある?

「Smalltalkで学ぶオブジェクト指向プログラミングの本質」は、
若干宗教臭いのと、このコード入力して実行してみてで説明が終わってる部分が多くて、
今一だった
0089デフォルトの名無しさん垢版2013/05/15(水) 20:26:42.75
>>87

サクサクSmalltalk―オブジェクト指向のアートとサイエンス
実際の所、smalltalkはコードからしか学べない。
0090デフォルトの名無しさん垢版2013/05/15(水) 20:45:29.52
「Smalltalkベストプラクティス・パターン - シンプル・デザインへの宝石集」が良かったが
入門書ではないかもしれん
0091デフォルトの名無しさん垢版2013/05/16(木) 02:13:59.81
>>88
これは読み易そう
無理してVisualWorksやPharo使うより、素直にSqueakからはじめたほうが、楽かもしれませんね

>>89
考え方が身につきそうな内容っぽいですね
中古価格も手頃だし…

>>90
長く使えそうだったので以前、購入しました
斜め読みした後、積読中ですが…
0092デフォルトの名無しさん垢版2013/06/03(月) 08:37:35.34
ExterenalStream系にbinary送って
StreamEncoderにbigEndian:false

とかおくってもほぼ全部のEncoderがこれ無視しててBigEndianしか考慮してないのな。
結局ちまちまとバイト単位で読んでbig<->littleの変換を手動でしなければいけないという

もうちょっとこの辺直してくれよ・・
0093デフォルトの名無しさん垢版2013/06/14(金) 03:36:25.67
パソコン初心者向けの本か、専門家向けだけど古くてタイプライターで文字打ったような本のどちらかしかない印象
0097デフォルトの名無しさん垢版2013/07/23(火) NY:AN:NY.AN
Pharo1.4ではダイアログって標準的にはどうやって作るものなのでしょう?

まずはOKボタンだけがあるダイアログを出そうとして、workspaceで以下をdo itしてみました。

| theme dialog |
theme := UIManager default theme.
dialog := theme builder newPluggableDialogWindow: 'OK?'.
dialog useDefaultOKButton.
dialog open

でもOKボタンのない空のpaneのダイアログが出てしまいます。
OKボタンつきのmodalなダイアログを出すにはどうしたらいいのでしょうか?
0098デフォルトの名無しさん垢版2013/07/24(水) NY:AN:NY.AN
>>97
Pharoは使っていないので、はずしていたらごめんなさい。
(ふだん使っているSqueakも、かなりあやしいんで言い訳にはならないんですが^^;)

#useDefaultOKButton の senders から #exampleBasicControls というメソッドを見つけて
この中身を削りながらためしてみたんですが、
どうやら何かしらコンテントを追加した状態で改めていったん #model: をコールしとかないと
OK ボタンは出てこないみたいですね。

| dialog builder |
builder := UIManager default theme builder.
dialog := (builder newPluggableDialogWindow: 'OK?') useDefaultOKButton.
dialog contentMorph: dialog newRow.
dialog model: nil.
dialog open
009997垢版2013/07/25(木) NY:AN:NY.AN
なんだそうでしたか。>98
コンテントはあるのが普通なので、それなら問題ないですね。
ありがと。
0100デフォルトの名無しさん垢版2013/08/12(月) NY:AN:NY.AN
aTextMorph中で、改行部位は単語の区切りの空白に限るようにすることはできますか?
transcriptやworkspaceがやってるように、行末で英単語が分断されないようにしたいんです。

例えば下のようにダイアログの中に英語を書くと、単語の区切りとは関係なく改行されます。
つまり、行末でaaaaaaaaという単語が、aとかaaとか、途中で分断されてしまいます。

| string |
string := ''.
100 timesRepeat: [string := string, ' aaaaaaaa'].
LongMessageDialogWindow new
textFont: UIManager default theme textFont;
title: 'example';
text: string asText;
open

これを、workspaceやtranscriptみたいに、空白部分だけで改行するようにしたいんです。
どうすればいいのでしょうか?

Pharo1.4を使っています。'UIManager default theme textFont'はMS UI Gothicの10pointです。
0101デフォルトの名無しさん垢版2013/08/13(火) NY:AN:NY.AN
>>100
例によってPharoは使っていないのでハズしていたらごめんなさい。

ちょっと調べてみたのですが、どうもPharo 1.4ではSqueakと違い、Workspaceや
Transcriptであっても単語の区切りで行を改めるようにはなっていないように見受けられます。

これは Paragraph>>#composeAll が常にマルチバイト文字列用の改行位置決めの機構を
使っているせいのようです。したがって、この部分をシングルバイト文字列用の当該機構を
使うように書き換えてやれば、ご呈示のスクリプトは変更無しに単語の区切りで改行される
ようになるはずです。

具体的には Paragraph の composeAll メソッドを探し、multiComposeLinesFrom: という
キーワード部分を composeLinesFrom: に書き換えて、黄ボタンメニューから Accespt (s) します。
0102デフォルトの名無しさん垢版2013/08/18(日) NY:AN:NY.AN
ありがとうございます。>>101
TranscriptやWorkspaceを実際に開くと、単語区切りで行を改めてくれているんです。

英単語だけのダイアログの例を出しましたが、
もちろん日本語のダイアログを出したいこともあるので、
Paragraph>>composeAllを書き換えるべきかも、もう少し考えてみます。
0103デフォルトの名無しさん垢版2013/08/18(日) NY:AN:NY.AN
お役に立てずすみません。Pharo 1.4 ですよね?

http://www.pharo-project.org/pharo-download/release-1-4

を念のため落として調べてみたのですが、
やっぱり手元の環境ではWorkspaceは単語で折り返さないようです。

いずれにせよ、単語区切りで折り返すか否かは Paragraph が
何か挙動を代えている可能性が高いので、そこを意識して
折り返さない LongMessageDialogWindow と折り返す StringHolder など
とでコードや設定の違いを調べてみると、答えが見つかるかもしれません。
0104100垢版2013/08/20(火) NY:AN:NY.AN
Paragraphは単語区切り作業をScannerに委譲しているはずですが、
委譲先を選ぶ際にどうも筋の悪いことをやっているように見えて、あきらめました。
実のところ、Pharo2.0を試したら、>>100のダイアログは簡単に単語区切りになったので、
移行しようと思ってます。
ありがとうございました。


なお、再度Pharo1.4を取り直して試しましたのですが、
私のところだとWorkspaceやTranscriptは何もせず単語で区切ってくれます。
MacでもWindowsでも。
Settings等を何もいじらない、取ってきたそのままの状態で試しました。
0105デフォルトの名無しさん垢版2013/11/08(金) 08:11:09.53
Smalltalkで書かれたnative用のCompilerと
Smalltalkで書かれたvmのSourceて無いの?

Pharo当たりで、Nativeで動くVMを生成して、
そのVMでPharoを動かしたい。
0106デフォルトの名無しさん垢版2013/11/08(金) 08:17:37.26
>>79
本番稼働前にimageのバックアップとっとけばいいだろう。
0107デフォルトの名無しさん垢版2013/11/08(金) 08:35:32.64
VMMakerでVM作れるんだな
0108デフォルトの名無しさん垢版2013/11/19(火) 23:08:13.53
>>105
自分で何を言ってんのかわかってんのか?
0111デフォルトの名無しさん垢版2013/11/29(金) 12:24:59.77
Pharoってデフォだとwindowsで、FileStreamのstdoutなんかから
取得した標準入出力がまともに動かんね。
そろそろなおらねぇかなぁ。
0112デフォルトの名無しさん垢版2013/12/08(日) 10:27:33.97
7.10pulのOSX版、各種描画や日本語表示入力関連がやっと直ってきたね
今までストレスマッハだっただけにこれはとてもありがたい
しかしVMが64bitじゃないのは今後に期待か・・
roadmap見ると一応いつかはやるらしいが
0114デフォルトの名無しさん垢版2013/12/19(木) 13:19:32.62
MatriXが面白すぎてブロック投げまくってる
Polycephaly1がpipe動作だったのに対してMatrix(Polycephaly2)がsocket動作になったようだ

異なるマシン間でVisualWorks専用のプロトコル流すって話題があったと思って
store見たらPolycephaly-Networkなんてのがあるんだね
0116デフォルトの名無しさん垢版2014/04/29(火) 20:33:59.74ID:K0C+/bQ4
全画面表示のソフト作るのはこんだけ。

| os layout |

layout :=
'<?xml
version="1.0"
encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android";
android:id = "@+id/BackGround"
android:orientation = "vertical"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background= "#ff000000">

<Button
android:id = "@+id/Hello"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "Hello"
>
</Button>

</LinearLayout>
'.

PackageLoader fileInPackage: 'Android'.

os := Android new.
os fullShow: layout.
0120デフォルトの名無しさん垢版2014/05/05(月) 15:43:39.05ID:s/emtMHD
VisualWorksいいっちゃいいけど、
Linux Unix 環境じゃ
全角文字の表示がダメダメ。
あと、OSのapi呼び出すときに使うthapiが遅すぎ。
job queue 方式にするなり何とかしてほしい。
0122デフォルトの名無しさん垢版2014/05/06(火) 00:36:20.51ID:lmYR+WVl
>>121
殆どドラッグ&ドロップでWebサイト作れたりする。
しかも、サーバーと区別がいらない。率直にいって比較にならん。

具体例:
 Seaside

難点は、OOが解らない人には使えないとこか。
多態やセレクターの指定で切り替えれば済む事を、
bool値とifで凌ごうとするヤツや、引数や戻り値は
色んなオブジェクトを使えばいいのに、数値や文字、
日付ぐらいしかつかわないみたいなヤツは使えないだろ。
オブジェクトの入れ替えで動作を切り替えていくからな。
0126デフォルトの名無しさん垢版2014/05/06(火) 23:19:21.81ID:4OvGFEoo
小規模社内システムとかSeasideで十分だよな。
あんなんにJavaとPHPとかオーバースペックで効率悪すぎるわ。
0127デフォルトの名無しさん垢版2014/05/07(水) 22:43:21.01ID:4Qw1Q+lJ
そういやPharo 3.0が出たな。
そろそろVisualWorksやGSTみたいに名前空間搭載すればいいのに。
0129デフォルトの名無しさん垢版2014/05/09(金) 21:30:16.60ID:gPiH2iVe
そらやっぱ接頭辞と違って空間名の変更が楽だもの。
それにSmalltalk環境がClass名とちゃんと別扱いしてくれるし。
0130デフォルトの名無しさん垢版2014/05/28(水) 08:00:49.57ID:LnZUrzDK
GNU SmalltalkでImageに保存したClassの削除方法がわかんねー

removeFromSystemとか無いんかい
0131デフォルトの名無しさん垢版2014/06/01(日) 07:14:55.11ID:Q3FUAo9P
Seasideの新しいバージョンでてるな
パフォーマンスも向上したとかなんとか
あれの使い方分かってないんでまだ手出してないが
0132デフォルトの名無しさん垢版2014/06/13(金) 03:19:29.47ID:pu2H4m/c
どうにも詰まって進みようがなくなったので質問です

やりたいことはHTMLをparseしてタグ単位にnode化しtree状にばらして
rootから各nodeを辿れるようにしてelementを適当に参照したいわけです

XML.XMLParserに読ませるとまず通らないというか
HTML ≠ XML なので当然なのかも知れないですが
XMLMarshaler(これと連動しているXPath) , SIXX これらも見てみましたが
HTMLを読ませることはできないような気がします。

いい加減に書かれているHTMLをこれまた適当にparseしてくれるようなクラスはないんでしょうか。
自力で書くことも出来ないわけじゃないと思いますが、WebServiceのドキュメントを見る限りはHTMLを読めるようにも見えるので情報不足過ぎて困ってます。

これを使えとか何かヒントがあったらお願いします!
0133デフォルトの名無しさん垢版2014/06/13(金) 20:19:37.10ID:NLaaux3h
>>132
古いWebBrowserの実装がコントリビュートかPublic Repositoryにあったはず。
それとは別に、埋め込みのWebBrowserコンポーネントが使えるから、パースはそちらに任せることができるかもしれない。
0136132垢版2014/06/18(水) 05:38:46.87ID:RDasuJfa
うまくいかないのと追加したい機能があるんで
イチから作ることにしました
助言ありがとうでした
0137デフォルトの名無しさん垢版2014/06/22(日) 19:01:35.83ID:LtMDfcfl
>>132
本当にしたい事は何なの?
昔Web巡回ソフトつくったけど、その時は必要な情報以外は正規表現で消したよ。
この方法だと汎用性は無いけど結果はすぐ出せる。
0138132垢版2014/06/24(火) 03:53:12.30ID:XA65lbe0
>>137
特定キーワードの後に来ているtableを特定して要素抜き出したりとか
iframe分割するとかそんなとこです
csv入出力に加えてタグの値をセルから拾って再加工してhtmlに吐いたりとかそのへんも必要です
parseして再帰構造作るところまでは終わったので
/html/body/table/3@4
とかのString pathからelementを取得できるところを書いてます
0139デフォルトの名無しさん垢版2014/07/27(日) 18:29:02.03ID:JHUQ8wq7
VistaScript(VistaSmalltalk)使ったことあるヤツ居る?
0140デフォルトの名無しさん垢版2014/09/14(日) 01:26:41.03ID:kCUGk4im
VistaScriptには思い出もなにもあったもんじゃないらしい
やっぱりSmalltalkは言語だけを切り離せないんじゃないの
0144デフォルトの名無しさん垢版2014/11/03(月) 11:33:07.14ID:1HqxpQO9
青木導師の「Smalltalkイディオム」買いましたが、やっぱこれ、逝ちゃって
ませんか?
さまざまな文献からの綺羅星のごとき引用も、変化自在な例え話も、「ために
する」感じがして読み手のこと考えているのかなと。
例えば城砦都市の話とかでセキュリティの話をしているかとおもうと、それが
Smalltalkのオブジェクト間の通信の自由さと比較されたり。
それってぜんぜん別の話じゃあ・・・?
引用も多すぎて、なんか引用が多すぎる文章をからかった、パロディみたいだ
と思いました。本気ならコワイ。
でも内容は高度で、Smalltalk関連情報に飢えている心の隙間を埋めてくれる
良書であるとは思います。
結論:自意識過剰
0145デフォルトの名無しさん垢版2014/11/05(水) 09:21:18.62ID:DTvjdF5c
あの人の本は読んでも役に立たないから
MLでもそうだったけどわざわざ理解が遠くなるような投稿ばかりしてたり
本質そらすような誘導してたり
0147デフォルトの名無しさん垢版2014/11/05(水) 19:09:55.76ID:DTvjdF5c
読み物として買うならいいけどあの人の本は入門させる気がないって内容が多すぎる
どうでもいいことばかり書いてあるだけで何かできるようになるわけじゃないからね・・

一応それなりのポジション扱いされてるから表立って批判されることはないけど
MLでも登場すると他の人がいちいちフォローしなきゃいけなかったりとなかなか困った存在ではあったと思う
VWに関しては公式pdf読んだりExampleやったほうが早いしね
0148デフォルトの名無しさん垢版2014/11/08(土) 20:32:56.18ID:PCfU+KcI
Cincomに連絡すれば日本語版を送ってくれる。うれしいことにドキュメントも
日本語。
0151デフォルトの名無しさん垢版2014/11/09(日) 18:51:55.85ID:EfnQMxIS
 Cincomは、オブジェクト脳育成ツールとか、分析技術育成ツールと
して割り切って使うようにプロモートすればいいのにな。

 
0152デフォルトの名無しさん垢版2014/11/09(日) 20:41:10.43ID:TyKSlevg
それよりいい加減ネイティブなGUIを使うようにしてほしい
7.10からUISkinningとか入って来てるけど
0154130垢版2014/12/04(木) 00:22:48.12ID:iyLFTAd9
GNU Smalltalkを使ってるとき
ObjectMemory snapshotで保存したClassを
削除できなかった件自己解決しました。

ClassだけじゃなくMetaClassの削除と
Namespaceからの削除が必要らしい。

Classを削除する手続の例:
! ClassManager methodsFor: ''!
deleteClass: aClass
 | superClass nameSpace |

 superClass := aClass superclass.
 nameSpace := aClass environment.

 nameSpace removeKey: aClass name.
 superClass removeSubclass: aClass.
 superClass class removeSubclass: aClass class.
!!
0158デフォルトの名無しさん垢版2014/12/10(水) 21:19:55.43ID:p5128+HO
Pharoいいな
Squeakが子供向けっぽくなったから敬遠してたけどまたSmalltalk系を
触ってみたくなった
0159デフォルトの名無しさん垢版2014/12/11(木) 00:09:29.09ID:mbz3wuYK
rasberry pi に scratch が入ってるらしいから、これから買ってポータブルの squeak 専用マシンにしようと思う
0160デフォルトの名無しさん垢版2014/12/17(水) 22:33:40.79ID:HhMJUnCz
Seaside を動かすサーバってログインしてSmalltalk動かしっぱなしにしとかなきゃ駄目なんか?
それとWebサーバ落ちたらどうやって再起動するの?
0161デフォルトの名無しさん垢版2014/12/17(水) 23:05:41.24ID:GPjgNjwM
>>160
Webアプリケーションサーバとはそういうものだ。

Webサーバが落ちたら、先に起動したときと同じ手順を踏むだけだと思うが、何がわからないのかがわからん。
0163デフォルトの名無しさん垢版2014/12/18(木) 07:03:50.12ID:r0K9Q3c7
>>161
普通のWebサーバならデーモンやサービスで動いているんでログオンしてる必要は無いし
死活監視があるので落ちても自動でサーバ立ち上がるし
サーバがバックグランドで動かいななんてあるんかと思っただけ

>>162
Smalltalkをデーモン化するようなものか?
0167デフォルトの名無しさん垢版2014/12/18(木) 20:38:12.20ID:r0K9Q3c7
>>165
有難う御座います〜♪

Squeak見て、何じゃこりゃ〜分けわからんになって
Pharo見てこれなら使えるかと思ってるところです。
0170デフォルトの名無しさん垢版2014/12/19(金) 09:22:17.06ID:5b1jdacN
>>160
Smalltalk にはいわゆる方言がたくさんあって、それぞれに事情が異なります。
さらに Seaside は人気で、処理系の差異も乗り越えて比較的多くの処理系に移植されているという
特殊な事情があるので、質問するときは特にどの処理系を想定しているか限定したほうがいいですよ。

Smalltalk を学び始めるタイミングでは、すでに他の言語にかなり精通している人が多いので
めんどくさい手続きかもしれませんが…
0172デフォルトの名無しさん垢版2014/12/28(日) 23:14:19.55ID:R3dzA+5K
squeak eToysでキーボード入力を取得するにはどうしたらいいの?
0174デフォルトの名無しさん垢版2014/12/29(月) 20:09:43.03ID:Gybf5FK3
ありがとう
けれどそれeToys 5.0じゃダメみたい
でもそのページのワールドのキーストロークを使えるみたいな説明があったので
部分的には使えるかな
そこのページに書かれているけどモディファイやキーや複数キーの同時押しなんかには対応できないらしいのが残念
右と上の矢印キーの同時押しで右上に動くとかやりたいけど無理みたいね
0175デフォルトの名無しさん垢版2014/12/31(水) 15:15:04.47ID:eZK8RP2d
今年を振り返って一行プログラムでもやろうかと思ったけど
特に何も思いつかなかった
0177デフォルトの名無しさん垢版2015/02/01(日) 21:47:48.16ID:oqChC4NJ
>>4
超重要なのは君の頭の中だけで
誰も必要としてないからだよ

というツッコミがないのが凄いスレ
0178デフォルトの名無しさん垢版2015/02/01(日) 22:14:37.31ID:QJWUHP7z
Smalltalkより
キミがどうしてそんな書き込みを
今、わざわざしたくなったのかの方に興味がわく
0180デフォルトの名無しさん垢版2015/02/05(木) 01:14:54.06ID:Eev1wDUX
>>178
オブジェクト指向の元祖はSimulaだしSmalltalkなどは完全に無視できる派
ストラウストラップがSmalltalkを重要視してないので
かつてはC++ユーザーにもそういう人がいたのだという。
0181デフォルトの名無しさん垢版2015/02/05(木) 08:44:08.12ID:h79vg6iD
うん。
世の中にはそういう主張をする派があって、キミがその派に属することはわかった。

で、ならばその完全に無視していいはずの Smalltalk のスレを
今、ここにきてどうして無視できなくなったのかに興味がわく
0182デフォルトの名無しさん垢版2015/02/05(木) 11:22:44.97ID:I9l1mGeI
そんなことより
WindowsのVMはIMEのインライン化がいまだにできないことと
OSXのVMはネイティブのMenuBar(NSMenu)を使えるようにならないことが不満ではある
Windowにメニューが張り付くのはあんまりいい気がしない・・
0183デフォルトの名無しさん垢版2015/02/05(木) 21:34:10.11ID:axWRz5yo
これ最近さわりはじめて
発想がすごく面白いと思ったけど
やっぱ実用的な面で欲しい機能もある

たとえば作ったアプリは実行ファイル
(Windowsでいう .exeファイル)で配布したい

実行形式じゃないと絶対ダメってほど頭固くないけど
(速度が)早い・(容量が)小さい・(コードを)隠せる
ってメリットがあるから便利だと思う

それ(に近いこと)ができる処理系もあるようだけど
もともと少数派のSmalltalkの中で分家筋を使うと
さらに日本語ドキュメント少なくなって使いにくいし
(というわけでとりあえずSqueakさわってる)

Webアプリならサーバの部分はクライアントから見えないけど
今度はレンサバに入ってないからPHPのほうが早いってなる

そういうCファミリーのメジャー言語のいろんな恩恵に
どっぷり漬かっちゃってるから参入障壁になってる

自分ひとり用の環境としては面白いけど……

Smalltalkは初心者だから
なにか初歩的な誤解があるかもしれないが
あったらツッコミしてくれ
0184デフォルトの名無しさん垢版2015/02/05(木) 22:37:03.73ID:gaBdO10c
>>183
俺はずっと初心者だけど
やはり最初は.exe作りたいと思ってた
できることが面白くなってからは、そういうこだわりは無くなったかな
まぁ配布したいものもないんだけど

Scratchもそうだけどpr、sar、imageで配布だし、そういうプラットフォームなんだと割り切ってる
他の人に使ってもらうにはインストールから説明しないといけないから、
確かに寂しいと思うけどね
SqueakだとWindowsの.exe作る方法もあったと思うけど...

そうね 自分ひとり用の環境としては面白いからSqueakでArduinoと通信するものとか
自宅LAN用のComSwikiのプラグインたまに作るくらいだけど
0185183垢版2015/02/06(金) 00:21:36.08ID:gqKhZAaO
>>184
>そういうこだわりは無くなった
>自分ひとり用の環境としては面白い
オレもひとり用で完結した環境でいいかなとも思ってるんだけど
やっぱ最終的にはアウトプットを外に出したいって気持ちもある

それでプログラムの開発環境(言語)としてこれを使いたい
とりあえず動くプロトタイプ作るなら早そうだから

もし配布までになんかしら難があるようなら
本格的に開発するときは他言語に移植してもいい
二度手間だけど設計ツールとして割り切って使う

>他の人に使ってもらうには
>インストールから説明しないといけない
独自形式の配布は一般ユーザにとって障壁になるよな

>SqueakだとWindowsの.exe作る方法もあった
サンクス
それは知らなかった
探してみる
0186デフォルトの名無しさん垢版2015/02/06(金) 02:31:41.92ID:uSk5yObJ
>>184
VisualWorksもexeやappで配布することはできる
やり方が大変面倒だがApplication Deliveryの項目を一通り見ればわかると思う
0187デフォルトの名無しさん垢版2015/02/07(土) 02:31:03.91ID:zaVZWxk9
Smalltalkはどんな分野に向いてるの?

なんでもいいんだけど、昔Perlが流行ってた頃
文字列処理が得意って言われてたみたいなの
0188デフォルトの名無しさん垢版2015/02/07(土) 10:14:31.87ID:ZhhiW774
>>187
sc187 :デフォルトの名無しさん:2015/02/07(土) 08:56:47.57 ID:794JOOqUX[1/2]
Smalltalkに詳しいわけじゃないけど、走ってるシステムを簡単に変更できてすぐに結果がわかる言語って他に余り無いんじゃない。
common lispでも走ってるシステムを変更しながら開発をするような言語仕様になってるけどSmalltalkほど徹底してないと思う。

sc188 :デフォルトの名無しさん:2015/02/07(土) 08:59:03.24 ID:794JOOqUX[2/2]
erlangも動的なソフトの入れ替えの仕組みがあるか
0189デフォルトの名無しさん垢版2015/02/07(土) 15:09:27.85ID:zaVZWxk9
>>188
> 走ってるシステムを簡単に変更できてすぐに結果がわかる言語
そうだね

開発環境の部分はすごくとっつきやすく感じた
逆に他言語だと今まで動作確認のたびに
いちいちビルドしてたのがめんどうくさく感じてくる

でもいざ実用的なソフトを開発しようとなると
巨大なクラスライブラリを覚える必要がある
しかもそれはロクに説明なくて
ソース(か英語ドキュメント)を読まないといけない

GUIの部分はやさしいし
言語仕様もシンプルだけど
ライブラリを使うのが難しい
0190デフォルトの名無しさん垢版2015/02/07(土) 15:55:49.77ID:O0c7oskK
>>189
「お勧めなのは、エキスパートによって作られた、広大なライブラリの類に頼らないことです。それは安易な解決策になってくれるように思えるだけです。代わりに、何もないところから、素早くプログラミングです。Squeakはそうした目的のために作られています。」
特別寄稿 ー Alan Kayからのメッセージ『ダイナミック・オブジェクト』(『自由自在Squeakプログラミング』梅澤真史著)
まぁそうは言っても...だけどね
VWを業務で使ってる人達はどう思うのかしら?
でもライブラリの機能や使用例もソースから調べやすいし、テストしやすいとは思うけど、
最近何も作ってないや
0191デフォルトの名無しさん垢版2015/02/07(土) 21:15:51.86ID:zaVZWxk9
>>190
それ読んだとき半分くらいは共感したんだけど
(C++とWin32APIがめんどくさすぎるから)

できる範囲で車輪の再発明するとしても
入出力とか、画像処理、通信みたいな低レイヤーは
ほんとに何もないとこからは作れない

どんな言語でもライブラリ覚える必要はあるんだけど
これは日本語リファレンスがすごい欲しくなる

まあアウトプットが文字列みたいな
小物アプリをぼちぼち作りつつライブラリを
少しずつ覚えていこうみたいな感じなのかな
0192デフォルトの名無しさん垢版2015/02/07(土) 21:57:43.31ID:O0c7oskK
>>191
そうだね そう思う
ググれば日本語でも参考になる例はあるから、なんとかなるけど、
ライブラリ覚える気はないけど、知らなければ発想できないこともあるしね。
『自由自在〜』読み返したり、Pharocast見たりしてできること、アイデアを学ぼうとするけど、
それより何か作ろうとしなくちゃダメかな、と思ってる
0194デフォルトの名無しさん垢版2015/02/08(日) 10:37:51.19ID:c8TnjZ8K
Smalltalk ほど単純なルールで構成されてる言語・環境を
どうしてだか理解できない人がいるのはしょうがないとしても
逆恨みして粘着アンチ化するのをどうにか避けられないものか。
0195デフォルトの名無しさん垢版2015/02/08(日) 12:16:09.65ID:lYLvg9qm
Squeakでプロトタイプ作って来られるとか経験すれば、逆恨みする人の気持ちも分かると思う
0197デフォルトの名無しさん垢版2015/02/08(日) 20:51:02.21ID:CyqMlARA
Smalltalkはメッセージングみたいなルールが
全体で一貫してるから理解しやすいと思うけど
なぜかキラーアプリがないよな

代表的なキラーアプリがあれば
もっと広まってたと思うんだけど
0199デフォルトの名無しさん垢版2015/02/08(日) 21:57:44.05ID:c8TnjZ8K
てなことをいうと反感かってアンチが増えるわけか… 失敬、失敬^^;

たしかに Ruby におけるとっついやすい Rails みたいなキラーアプリがあるといいのかも。
0200デフォルトの名無しさん垢版2015/02/08(日) 22:19:38.46ID:p8em6OkY
そういえば単なる言語ではないんだったな
言ってることのカッコ良さに当時はしびれた(死語)ものだけど
まあ先を読むのって難しいってことで
0201デフォルトの名無しさん垢版2015/02/09(月) 04:53:09.54ID:f40HLejb
利用者が全体を俯瞰して
際限なくカスタマイズできるのは
良いコンセプトだと思う

でもイメージが肥大化してきたときに
収拾をどうつけるのか

クラスを足すのはかんたんでも削るのは難しい
使い始めちゃうと依存関係ができるから
それとガベージコレクションをすりぬけた
メモリのゴミがたまっていきそうなもんだけど

毎日手を入れ続けてる
秘伝のタレ状態でいいのか

それともOSの再インストや
新OSへの乗り換えみたいに
ファイルでバックアップとっといて
定期的にリセットするのか

長く使ってる人はソース管理どうやってんの?
0203デフォルトの名無しさん垢版2015/02/09(月) 06:01:28.91ID:f40HLejb
>>202
いや使い方調べてて気になったんだけど
ネットの記事は1年前でも20年前でも
同じように並んで表示されてるし
問題ある場合のほうが記事多いから

じゃ今はもうそういう問題
起こらないように進化してるんだ?
0204デフォルトの名無しさん垢版2015/02/09(月) 06:09:40.75ID:UYOrkYUA
PharoやSqueakならコードはmonticelloで管理するのが普通だし、
filetreeでgitでコード管理する人もいるしで、
イメージの中でこねくり回し続ける人はそう多くないと思うよ。

自分もイメージなんて1週間も経たないうちに捨てる。
新しいイメージに必要なパッケージ群を一通り入れるのは
metacello使えば1行のコードで各パッケージをそれぞれの
レポジトリから最新版をダウンロードしてきて初期化まで
自動的にやってくれる。
0206デフォルトの名無しさん垢版2015/02/09(月) 08:33:43.52ID:Sty7eEqu
つまりSmalltalkerが他言語との差異のひとつとして挙げる事が多い
イメージ方式は問題だらけのオワコンで
結局は普通の言語と同じ方式に落ち着いたわけだ
0207デフォルトの名無しさん垢版2015/02/09(月) 09:08:37.00ID:u8pz/p6G
>>206
そう。だからキミは Smalltalk のことなんか気にせず
先進の他言語ライフをエンジョイしてください。おしあわせに。
0208デフォルトの名無しさん垢版2015/02/09(月) 09:35:59.91ID:u8pz/p6G
ただ口が悪いだけで悪意は無かったという可能性もあるから
念のためマジレスしておくと(でもなきゃ煽って情報を得ようとする方略を助長するようで残念なんだけど)
イメージベースのメリットはソース管理だけじゃなくて
たとえば再現困難なデバッグの状態を保存できるとか
(いうまでもなく保存できるかは状況にもよるけど、同等機能をいっさい欠いているよりはマシというレベルで)
オブジェクトメモリ内のオブジェクトの状態保持が主なので
ソース管理の方法が他言語に倣ったからっていちがいにオワコンということはないと思う。
0209デフォルトの名無しさん垢版2015/02/09(月) 17:36:40.61ID:UYOrkYUA
>>206
外部ストレージにパッケージを保存できることとイメージベースは全く矛盾しないどころか
むしろ長所を伸ばしあう関係にあるわけだけど、まあ君には関係ない話だね。さよなら。
0210デフォルトの名無しさん垢版2015/02/10(火) 07:31:44.72ID:Ojr93FaP
これからはスマホの時代だけど
Smalltalkでスマホ開発ってどしたらいいの?
やっぱWebアプリにするのかな
0214デフォルトの名無しさん垢版2015/02/10(火) 10:37:51.08ID:SrGhIMrb
Smalltalkの最大の欠点はOSの上にOSモドキを乗っけるナンセンスさと
マイナーな独自UIを強制するところにあるから、

一からスマホOSをSmalltalkで作って
UIをiPhoneに似せれば天下取れるかもよ
0215デフォルトの名無しさん垢版2015/02/10(火) 13:36:11.97ID:TIteOp3H
まだいたのか、キミ… ^^;
ナンセンスということなら、キミがここにいること自体がナンセンスだよ。

とりあえず、これ↓を10ぺんくらい読んでみることをお薦めすることしか今はできない。

「Smalltalkの底を流れる設計思想」
http://web.archive.org/web/20041016084842/http://marimpod.homeip.net/chomswiki/24#
0216デフォルトの名無しさん垢版2015/02/10(火) 17:42:43.44ID:f6VLwhXv
>>214
UIが気になるんなら、下みたいに簡単にOSの関数呼べるんだから関数のUI使えばいいじゃん。

俺はGNU Smalltalkを使うときAndroidのUI使ってるぞ。

Object subclass: #Bridge.

DLD addLibrary: 'libc'.

! Bridge class methodsFor: 'cross language' !
abs: anInteger

 <
  cCall: 'abs'
  returning: #int
  args: #( #int )
 >.
!!

Bridge abs: 0.
0220デフォルトの名無しさん垢版2015/02/11(水) 02:48:11.00ID:kCQdnFWd
クラスライブラリの実装見ると
たいてい使える機能から予想するよりも
短い記述になってる印象なんだけど
なんで?

文法が簡潔で記述量が少なく書けるから?
書き手がOOマスターしてるから?

それとも継承しまくってるから
(継承を追って見るくらいはしてる)
総量は多くても個々が少なく感じるだけ?

じつはシステムブラウザから見えない部分
(インライン)で下処理を済ましてるから?
0221デフォルトの名無しさん垢版2015/02/11(水) 06:47:42.77ID:Ids2Eeke
>>220
本当に実装量程度の機能かもしれないし、
からくりがある場合もある。
具体的には、どのクラス?(できれば処理系も)
0222デフォルトの名無しさん垢版2015/02/11(水) 09:08:37.73ID:WHehhV2d
>>217
基本的にGNU SmalltalkにAndroid用の追加Packageがちょこっと乗ってるだけ。
GNU Smalltalkの部分はLinuxやWindows上と使い勝手は変わんないよ。

因みにGNU Smalltalkは方言が激しすぎると思うかもしれないけど、
他の環境と同じような書き方もできるよ。

"Smalltalk User Exampleといい名前空間を作る。"
Smalltalk addSubspace: #User.
Smalltalk User addSubspace: #Example.

"Smalltalk User Example に移動する"
! Namespace current: Smalltalk User Example !

Object
 subclass: #Someoen
 instanceVariableNames: 'name'
 classVariableNames: ''
 poolDirectory: ''.

"ClassのInstance変数の登録(省略可)"
Someone class instanceVariableNames: ''.

"name変数の読み書き用Method登録。defaultは初期値"
Someone
 createSetMethod: 'name';
 createGetMethod: 'name' default: ''.
0223デフォルトの名無しさん垢版2015/02/11(水) 09:09:08.40ID:WHehhV2d
"Instance用のMethod登録"
! Someone methodsFor: 'example' !
something

^ '何か処理を書く'.
!!

"Class用のMethod登録"
! Someone
class methodsFor: 'instance creation' !
withName: aString

^ self
 basicNew
  name: aString.
!!

"現在の名前空間を変更して保存すると、名前空間が変更しっぱなしになるので戻す。"
! Namespace current: Smalltalk !

"
Imageに保存。引数を指定しなければ/mnt/sdcard/ls4a/gst.imに保存される。
元のgst.imはどこかに保存しとくこと。
"
ObjectMemory snapshot.
0224デフォルトの名無しさん垢版2015/02/11(水) 09:36:26.45ID:WHehhV2d
GNU Smalltalkの注意点

1. 親の名前空間が持っている名前空間を子の名前空間は作れない

ダメな例
 Smalltalk Test Something Test.

大丈夫な例
 Smalltalk SomethingA Test.
 Smalltalk SomethingB Test.

代わりに子の名前空間から親の名前空間を参照するとき
参照する親より上の名前空間を省略できる。

Smalltalk Test Something ExampleAという構成の時ExampleAから
TestのClassをExampleBを参照するとき
下記のいづれでも参照できる。

ExampleB
Test ExampleB
Smalltalk Test ExampleB

2. 大文字で始める変数、または大域は宣言してないとnilになる。
つづりを間違えた時に結構ハマる。
Method内で書いた小文字の変数は宣言が無いと翻訳失敗になる。
また、名前空間をSmalltalk.Something.と「.」で区切れば、
親の名前空間が存在しない時翻訳失敗にしてくれる。
ただし、最後の名前空間名やClass名まで存在するか見てくれない。
0225デフォルトの名無しさん垢版2015/02/11(水) 09:53:20.80ID:WHehhV2d
3. 例外を捕まえるClassの種類ににExceptionから派生した
 Class以外を指定すると訳の分からない例外になる。

[
]
 on: NotFound "NotFoundが存在しない場合nilになっており例外処理が暴走する。"
 do:
 [ :exception |
 ].

4. nilを継承できる。nilを継承するとMessageに
 存在しないMethodを指定されてもErrorにしない。

"SuperSomethingは実はnilだが継承できてしまう。"
SuperSomething subclass: #Something.

"helloは無視される。"
Something new hello.

ただし、nilを継承すればあらゆるMessageを
doesNotUnderstaedで受け取ることができるいう利点もある。
Objectを継承しているとObjectが実装しているMessageは受け取れない。
0226デフォルトの名無しさん垢版2015/02/11(水) 10:04:46.87ID:WHehhV2d
sl4aでGNU Smalltalkを使う時のヒント。
GUI は下記のような感じで作ることができる。

PackageLoader fileInPackage: 'Android'.

| os event |
os := Android.

"UI表示"
os fullShow:
'<?xml
version = "1.0"
encoding = "utf-8"
?>
<LinearLayout
xmlns:os = "http://schemas.android.com/apk/res/android";
os:layout_width = "match_parent"
os:layout_height = "match_parent"
os:orientation = "vertical"
>
<EditText
os:layout_width = "match_parent"
os:layout_height = "wrap_content"
/>
</LinearLayout>
'

"Event待ち"
event := os eventWait.
0227デフォルトの名無しさん垢版2015/02/11(水) 19:11:13.96ID:kCQdnFWd
>>221
処理系はSqueak
クラスは「Kernel-」系のクラス

こんなコアな部分でもこれだけで済むの?
ってのが素朴な疑問だった

(とくに昔の)C++とかのソースだと
1ファイルに何千行もドバッと書かれてるから
小分けで錯覚してるだけかもしれないけど

自力で分かったのは
Kernel-Objects BooleanのifTrueが
インライン展開されてるから書かれてないってこと
0228デフォルトの名無しさん垢版2015/02/11(水) 20:49:58.18ID:Ids2Eeke
>>227
> Kernel-Objects BooleanのifTrueが
> インライン展開されてるから書かれてない

もし Boolean >> ifTrue: のことなら、処理が書かれていないのではなくて、
self subclassResponsibility 、つまりサブクラスでオーバーライドせよというコードで指示がされているだけで、
実際にそれに従い、True >> ifTrue: 、False >> ifTrue: の方に(普段はインライン展開されてしまうので
無視されますが、明示的にコールしてやりさえすれば)動くコードが書かれています。

たとえば True >> ifTrue: メソッドは、こんな風に明示的にコールできます。
true perform: #ifTrue: with: [3] "=> 3 "
True >> #ifTrue: valueWithReceiver: true arguments: {[4]} "=> 4 "

他のインラインされるメソッド群は MessageNode class >> initialize で確認できますが、
(Kernel-Objects MessageNode の class 側に切り替えてでてくる initialize メソッド定義内)
whileTrue: を除いては、前述の ifTrue: 同様、明示的にコールしても
動くコードで書かれているので短い記述になっていることにはあまり寄与していないように思います。

そういう意味では Float >> + のように <primitive: 41> などといった記述があるメソッドは
実処理が仮想マシンやプラグインにあるので、具体的なソースは書かれていないことになります。
これはちょっとコード量の削減に寄与しているかもしれません。

余談ですが、<primitive: 41> などの後に書かれているのは、仮想マシンなどに記述された関数のコールが
失敗した場合に実行されるフォールバックコードで、これは Smalltak で記述されています。

個人的には Smalltalk のコードが短く感じるのは、出来ることの印象に反して
実質的にはコード量なりの機能しか実装されていないからだと思います。
C++ などで書かれたものと厳密に(たとえば数理学的に)同等の機能を記述しようと思ったら
それなりのコード量になるのではないでしょうか。
0229デフォルトの名無しさん垢版2015/02/11(水) 22:16:32.83ID:kCQdnFWd
>>228
うわー詳しい!
触ったばかりとはいえ雑な理解で恥ずかしいです^^;

>実質的にはコード量なりの機能しか実装されていない
パッと見で気づかれないていどに
うまく手を抜いてるってことですかね

たしかにC++みたいな巨大な仕様の言語と
細部の挙動が違うのは想像できます

もしそれが気に入らなければ
Smalltalkは仕様自体をカスタマイズできるんだし
YAGNI的にも開発リソース的にも
それが現実解の気がします

なぜそこが気になったかというと
少ないコード量で実現してるというのは
設計の参考になるからです
0230デフォルトの名無しさん垢版2015/02/11(水) 22:52:16.50ID:Ids2Eeke
正直、どうしてこんないい加減なものが動くのか、私もかねてから不思議に思っています。^^;
まあそこが興味の対象であり、数理学的に論じると味わいのなくなる面白いところでもあるわけですが。
手抜きのことも含めて、もちろん他にも短く書くための工夫らしきことはあるので
もう少し、システムの中身を覗いてみてください。

設計の参考ということでは、しばらくいじってみて興味をひかれた機能を
その動作から実装を予想し、実際にそう実装されているか確認してみると
「その手があったか!」というような発見もあって楽しみながら学べると思います。
(あるいは時間の無駄で終わるかもしれませんが…)

個人的によくお薦めするところでは、print it(式を選択して右クリックメニューなどから
print it すると返値が挿入される機構)がどのように実装されているか、コンパイラの
実装やその動作などと併せて予想・確認してみるのは比較的よい題材かと思います。
0231デフォルトの名無しさん垢版2015/02/11(水) 23:29:09.42ID:kCQdnFWd
>>230
>どうしてこんないい加減なものが動くのか
不思議ですよねー
古くからあるから職人芸なのかな

記述が短いから拡張や改造が楽で
助かる面はあります

>実装やその動作などと併せて
>予想・確認してみるのは比較的よい題材
それは良さそうですね
じっくり取り組んでみます
0232デフォルトの名無しさん垢版2015/02/12(木) 00:10:33.54ID:EWCUv8cS
>>228

value := 1 < 2 ifTrue: 3 asValue ifFalse: 4 asValue.

こんな場合もInline展開されないでしょ。
VisualWorksだと最適化しないって警告がでる。
0233デフォルトの名無しさん垢版2015/02/12(木) 01:13:27.37ID:DTXdCLax
>>222-226
> 基本的にGNU SmalltalkにAndroid用の追加Packageがちょこっと乗ってるだけ。
> GNU Smalltalkの部分はLinuxやWindows上と使い勝手は変わんないよ。
それならSmalltalk使う意味あるね
ほかの処理系でももっと出てきて欲しい

WindowsPC全盛期はマルチプラットフォームに
あんま魅力感じなかったけど
今みたいにPCもスマホもでOS乱立してると
同じように書けることって大きいと思う

PCはC++かC#で
WebアプリはPerlとかPHPで
AndroidはJavaで
iPhoneはObjective-Cでとか
覚えることがあまりにも多すぎる

PCもWebもスマホも
同じ言語で書けたら楽だなと思う
まあその本命は一昔前ならJavaだったし
今ならJavaScriptなんだろうけど
0235デフォルトの名無しさん垢版2015/02/12(木) 09:00:56.49ID:FbfONYzU
>>232 あ、ほんとだ。ブロックリテラルで書かないと、インライン展開されないんですね。…とのことです。>>229

true ifTrue: [3] ifFalse: [4]. thisContext method symbolic "=> '33 <71> pushConstant: true
34 <99> jumpFalse: 37
35 <21> pushConstant: 3
36 <90> jumpTo: 38
37 <20> pushConstant: 4
38 <87> pop
39 <89> pushThisContext:
40 <D3> send: method
41 <D2> send: symbolic
42 <7C> returnTop' "

true ifTrue: 3 ifFalse: 4. thisContext method symbolic "=> '33 <71> pushConstant: true
34 <21> pushConstant: 3
35 <22> pushConstant: 4
36 <F0> send: ifTrue:ifFalse:
37 <87> pop
38 <89> pushThisContext:
39 <D4> send: method
40 <D3> send: symbolic
41 <7C> returnTop' "

| block | block := [3]. true ifTrue: block. thisContext method symbolic
"=> '<略> 36 <71> pushConstant: true
37 <10> pushTemp: 0
38 <E1> send: ifTrue:
39 <87> pop
40 <89> pushThisContext:
41 <D3> send: method
42 <D2> send: symbolic
43 <7C> returnTop' "
0236デフォルトの名無しさん垢版2015/02/12(木) 09:26:20.70ID:FbfONYzU
>>232
調べてみました。なるほど。
引数がブロックかどうかをチェックしてインライン化を判断しているのですね。
(以下は Squeak の場合ですが、VisualWorks でも似たようなことをしていました。)

MessageNode >> transformIfTrue: encoder
 (self transformBoolean: encoder)
  ifTrue:
   [arguments :=
    Array
     with: ((arguments at: 1) noteOptimizedIn: self)
     with: ((BlockNode withJust: NodeNil) noteOptimizedIn: self).
   ^true]
  ifFalse:
   [^false]

MessageNode >> transformBoolean: encoder
 ^self
  checkBlock: (arguments at: 1)
  as: 'argument'
  from: encoder
0237デフォルトの名無しさん垢版2015/02/12(木) 15:47:56.01ID:1WRWm2Rj
>>235
自作ClassのObjectに対してはMessage送信省略しないお陰で、
数値計算に自作ClassのObjectをツッコむことができるんだよね。
以下はGNU Smalltalkの例。

nil
subclass: #NumberDelegator
instanceVariableNames: 'delegate'
classVariableNames: ''
poolDictionaries: ''
category: 'Example'.
! NumberDelegator methodsFor: 'accessing' !
delegate: aNumber
delegate := aNumber
!
generality
"primitive扱いされると例外を吐くことになるので、primitive扱いできないようにする。"
^ 0.
!!
! NumberDelegator methodsFor: 'forwarding' !
doesNotUnderstand: aMessage
^ aMessage sendTo: delegate.
!!
! NumberDelegator class methodsFor: 'instance creation' !
forwardTo: aNumber
^ self basicNew delegate: aNumber.
!!
| result |
result := 1 + ( NumberDelegator forwardTo: 10 ).
0238デフォルトの名無しさん垢版2015/02/12(木) 17:47:15.72ID:FbfONYzU
>>237
言いたいことがよく分かりません。
それはコンパイル時の ifTrue: 、whileTrue: などのインライン展開とどういう関係があるのでしょうか?

そもそも 1 + 10 と 1 + MyClass new とではコンパイル結果は変わらないですよね?
そのコードも SmallInteger >> + のプリミティブが失敗して普通にフォールバックしているだけだと思うんですが…
0239デフォルトの名無しさん垢版2015/02/13(金) 03:23:10.58ID:ftS8kcXE
>>234
Smalltalkならではの伝統ですね
新しい言語だと何十年もリファクタリングした
コードを見る機会はないし

>>235-236
>引数がブロックかどうかをチェックして
>インライン化を判断している

インライン化とそうでない処理に分けることについて
なぜそうするか、思いついたメリットとしては

インライン化のほうが早いだろうけど
もしインライン化しかないと
ifTrue系の命令を自分で改造するのが大変だからかな
0241デフォルトの名無しさん垢版2015/02/14(土) 09:31:23.95ID:+jQ5RdmI
他言語でも同様のものを作れなくはないと思うのですが
Smalltalk環境の機能自体があまり多くの人に知られていないのと
他言語では同様のものを(Smalltalkほどには)簡単には
作りにくいのかもしれませんね。

Clojure 向けですが、最近ではこんなIDEが話題になっていました。
http://cloxp.github.io/cloxp-intro.html
0243デフォルトの名無しさん垢版2015/02/14(土) 10:10:59.12ID:KJLqYxlY
補完とか名前変更とかSmalltalkのIDEはウンコすぎるじゃん
本当に開発してると一番差が出るところなのに
本当にJavaやC++のIDE使った事あんのかよ
0247デフォルトの名無しさん垢版2015/02/14(土) 10:54:34.66ID:+jQ5RdmI
粘着アンチ君、まだいたのか。
他言語で幸せになれなかったのかな…。かわいそうに。
0248デフォルトの名無しさん垢版2015/02/14(土) 11:01:59.33ID:+jQ5RdmI
>>244
この人は補完の精度のことを言っているんですよ。
動的型言語である以上、どうやったって精度はだせない。
よって、補完がないとコード書けないユーザーにはウンコで使えない、と。
0249デフォルトの名無しさん垢版2015/02/14(土) 11:34:10.14ID:Z9ZmRxLI
>>241
> 他言語では同様のものを(Smalltalkほどには)簡単には作りにくい
Smalltalkは最初からGUIのことまで考えて言語が設計されてるからかな

>>242
まだ一般人が使えるようにはなってないのかな

>>245
ちなみにおれが言ってるほうのIDEはSqueakね
0250デフォルトの名無しさん垢版2015/02/14(土) 12:11:34.81ID:Z9ZmRxLI
まあ静的型付けほどの精度はないし
多機能さとか総合力でスコアつけたら
VSとかメジャーなIDEのほうが上だろうよ

でも主観的な使い心地はすごい良く感じる
純粋OOPLとか動的とかイメージベースとか
いろんな仕様がかみ合ってるから使いやすい

逆にVSっつーかC++は
かみ合ってないから疲れる

そもそもIDEよりエディタで気軽に書くほうが
好きだったりするんだけど
Smalltalkに関してはIDEじゃないと魅力半減
0251デフォルトの名無しさん垢版2015/02/14(土) 12:46:41.71ID:+jQ5RdmI
>>249
> Smalltalkは最初からGUIのことまで考えて言語が設計されてるからか

たしかに GUI の扱いやすいさもひとつにありそうですが、個人的にはそれに加えて
Smalltalk(というかアラン・ケイが)重要視して、他言語では良くない余計なものとされる
オブジェクトの全能性(というと語弊があるので「訊けば答えてくれる感」?)も重要だと思っています。

たとえば、ブラウザ機能を実現するのに必要なクラスに定義されたメソッドの一覧や
メソッドのソースは、それぞれクラスやメソッド自身に尋ねればこんなふうにして
簡単に得られます。(後者は Squeak の場合)

Integer selectors
(Integer >> #factorial) getSource

リフレクションの API が充実しているだけと言われればそれまでですが、
(先だってのコードの短さともからめて)そういう切り口ではない、環境内のオブジェクト間の連携を
しやすくする工夫の結果としての IDE の使い勝手であるような気がします。
0252デフォルトの名無しさん垢版2015/02/14(土) 15:51:07.10ID:0dco6ark
「無関係」の定義もなく「変更されてしまうじゃん」とか断言する人って、技術的な議論には全く向かないよね。
0253デフォルトの名無しさん垢版2015/02/14(土) 17:50:52.21ID:pFrYpbo4
彼はSmalltalkをコケにすることができれば満足で
そういう次元の議論は1ミリも望んでいないでしょう。

それはさておき本気を出せばSmalltalkでも
補完くらいなら、そこそこの精度は出せるでしょうね。
0255デフォルトの名無しさん垢版2015/02/14(土) 19:18:06.07ID:Hs1Wk7so
Smalltalkを覚えたいのだが本業のドカタ仕事に忙殺されてなかなか出来ぬ。
人生は短すぎる。

で、Smalltalkerさん達の本業は何よ?
0260デフォルトの名無しさん垢版2015/02/14(土) 21:20:15.48ID:Z9ZmRxLI
>>251
> オブジェクトの全能性
たしかにC++のクラスが抽象データ型の延長なのに対して
Smalltalkではより能動性とか主体性を持たせようとしてますね

C++だとメモリ管理とかとあわせてクラスの管理をいろいろ
プログラマが抱え込まないといけないからストレスになる

Smalltalkはブラウザ関係もふくめて
メッセージングに任せられる部分が多いので
ストレスが軽減されていると感じます

C++(とVS)は多機能で高性能なんだけど
それだけプログラマの負担も大きくて
Smalltalkはそれよりさらに高性能というよりかは
使用者が使いやすい方向を目指してる感じ
0263デフォルトの名無しさん垢版2015/02/15(日) 15:56:50.97ID:6aDKSPw5
>>255
マイケルジャクソンの物真似
0264デフォルトの名無しさん垢版2015/02/16(月) 01:03:07.94ID:HauqtKo6
>>238
GNU Smalltalkだと定数の演算とかは糞真面目に計算せずに、
翻訳時にすませてるっぽいよ。
この辺も最適化の過程でMessage送信が必要かどうか判断してるんじゃない?

>>239
原則Message送信であってif文の構文糖じゃないからね。
最適化はあくまでもオマケ。
最適化し辛い構文があってもMessage送信の原則は守る必要があるんでしょ。
0265デフォルトの名無しさん垢版2015/02/16(月) 01:10:51.90ID:HauqtKo6
>>251
Squeak以外は使わないの?
VisualWorksとかPharoとかは、補完するSelectorを結構絞り込んでくれるから便利よ。
VisualWorksはCincom本社の海外サイトで個人情報入れなきゃなんないのが面倒だけど。
0267デフォルトの名無しさん垢版2015/02/16(月) 11:16:01.67ID:XP4TAyIw
>>264
> GNU Smalltalkだと定数の演算とかは糞真面目に計算せずに、
> 翻訳時にすませてるっぽいよ。

それは分かりましたが、それを踏まえてもなお

>> 237
> 自作ClassのObjectに対してはMessage送信省略しないお陰で、
> 数値計算に自作ClassのObjectをツッコむことができるんだよね。

が出てきた理由がまだよくわかりません。

なぜあえてこの例が必要だったのか(Squeak の話をしているときになぜあえて GNU Smalltalk か?
非リテラルオブジェクトではなくなぜあえて自作クラスなのか? さらになぜあえて nil を継承したのか?)、
それぞれによって、どんな理解が進むのかについて少々かみ砕いての解説をお願いできますか?
0269デフォルトの名無しさん垢版2015/02/17(火) 22:00:01.91ID:qlRtFPhT
>>267

1. SqueakではなくGNU Smalltalkを例に出した理由
 Squeak限定じゃなくSmalltalk一般の話かと思いまして
 処理系について意識してませんでした。すみません。

2. 数値計算の最適化を上げた理由
 Message送信が最適化で省略されない場合の利点を
 説明するつもりで書きました。
 #ifTrue:ifFalse:で有用な例を示さなかったのは
 すぐ有用な用途が浮かばなかったからです。

3. なぜ既存のClassではなく自作Classを例に使ったか
 最適化が適用されない既存のClassが
 思いつかなかったからです。
 SqueakやPharo基準で考えれば、
 自作じゃなくてもCollection系で良かったですね。
 レスを書いた時は思いつきませんでした。

4. なぜnilを継承したか
 Objectを継承すると、ObjectがMethodを実装しているMessageを
 #doesNotUnderstand:で委譲できなくなるためです。
 SqueakではProtoObjectを使いますが、
 GNU SmalltalkやVisualWorksではnilを使います。

5. 何について理解が深まるか
 最適化はオマケなので、最適化されるMessageだからと言って
 必ず最適化される訳ではないし、
 最適化によって自作ClassのObjectを渡すと
 動かなかったりするわけではない
 という事が理解いただければと考えています。
 
0270デフォルトの名無しさん垢版2015/02/17(火) 23:17:58.58ID:1fkLZx/i
>>269
なるほど、よくわかりました。
丁寧な説明をありがとうございます。

1. の早合点はさておき、
はじめから 5. のような簡易な説明を添えていただけていたなら
私ども読み手も視野を広げやすくなるので、今後もご助言を
いただけるのでしたら、ご一考いただければさいわいです。
0273デフォルトの名無しさん垢版2015/02/18(水) 00:28:25.04ID:UZdA10Ut
fileURLは使ったことあるけどまさかのhttpもstreamで取れるとは思わなかった
読み込めなかった時のSignalの扱いはわからんがちょっと考えてみるか・・

| aURL aStream aList aLine |

aURL := URL fromString:'http://anago.2ch.net/moeplus/'.
aStream := aURL readStream lineEndAuto. "withEncoding:#shiftjisは通らない"
aList := OrderedCollection new.

[ aStream atEnd] whileFalse:[ aLine := aStream upTo:(Character cr ).
aList add:( aLine asByteArray asStringEncoding:#shiftjis ) ].

aList inspect.
0274デフォルトの名無しさん垢版2015/02/18(水) 01:47:28.06ID:QTgMdBtY
GNU SmalltalkにSmalltalkのVM上で
Javaを動かすPackage、その名もJavaがあった。
.jarを読み込んでくれず.classを取り出さないとダメだったり、
Java7には対応してなかったりと微妙な出来だけど、
JavaのClassが完全にSmalltalkのClassとして取り込まれてる所が面白い。
他にも誰が使ったことある人いる?
0276デフォルトの名無しさん垢版2015/02/18(水) 09:22:33.83ID:wdCl3CCW
>>264
興味があって調べてみたのですが、GNU Smalltalk で定数同士演算(たとえば + 演算)で
メッセージ送信が省略されているのかが ideone.com の処理系では確認できませんでした。
「翻訳時」を「コンパイル時」、つまり「バイトコード変換時」と読み取ったのですが
バイトコードレベルで省略されているという話ではないのでしょうか?
メッセージ送信が省略されていることの確認の方法を教えていただければさいわいです。

UndefinedObject extend [
 plusLit [^3+4]
 plusNonLit [^3 + OrderedCollection new]
]

(UndefinedObject >> #plusLit) inspect printNl
"=>
[1] source code line number 2
[3] push 3
[5] push 4
send 1 args message #+
[7] return stack top "

(UndefinedObject >> #plusNonLit) inspect printNl
"=>
[1] source code line number 3
[3] push 3
[5] push Global Variable {Smalltalk.OrderedCollection}
[7] send 0 args message #new
[9] send 1 args message #+
[11] return stack top "

http://ideone.com/zWMggc
0278デフォルトの名無しさん垢版2015/02/18(水) 12:57:09.98ID:wdCl3CCW
>>277
ありがとうございます。

>>264 の「翻訳時にすませてる」を、3+4 を 7 にする!? と勘違いしていました。
#+ などは特殊なバイトコードを使用し、そうした特殊なバイトコードでは引数の組み合わせ次第で
レシーバー(この場合 3)へのメッセージ送信は行なわない、ということですね。

別件ですが、メソッドにコードされたプリミティブが #perfom: 等でコールされたときのためとは
知りませんでした。

そうすると、3 + 4 時は VM 内の + 関数で処理され、
3 + OrderedCollection new 時は + 〜 (バイトコード的には + )が 3 に送られて
そこでプリミティブ記述により改めて VM 内の + 関数がコールされ
それが失敗してフォールバックコード(たとえば ^super + aNumber)が実行される、
という理解で合っていますか?
0279デフォルトの名無しさん垢版2015/02/18(水) 18:55:49.75ID:wdCl3CCW
>>278
> 3 + 4 時は…

自己レスです。(Squeak で、かつ旧 VM でですが)どうなっているか調べてみたら、
VM 内でプリミティブとしてコールされる + 関数(Squeak の場合 primitiveAdd )と
バイトコード実行時にコールされる + 関数(同、bytecodePrimAdd )は別物なんですね。

通常は bytecodePrimAdd がコールされ、整数/整数とかでなければメッセージを送信、
#perform: などで呼んだ場合は primitiveAdd がコールされ、それが失敗すると
プリミティブに続いて記述してあるフォールバックコードが実行されるというカラクリでした。
0280デフォルトの名無しさん垢版2015/02/19(木) 11:17:57.25ID:H2Raaanq
似たようなことに興味を持つ人もいるかもしれないので参考まで。

http://askoh.com/mwiki/images/b/be/InterpreterSimulator.zip

>>279 を調べるときに使った Squeak の処理系です。
インタープリターシミュレーターが同梱されているので解凍、Squeak 3.9 仮想イメージ向けの VM を
用意して起動(Simulator.image の方)後、ワークスペースの式を評価することで動かせてお手軽です。

http://vm-dev.squeakfoundation.narkive.com/vxckeGXt/simulate-3-4-with-interpretersimulator

にもありますが、bytecodePrimAdd ではなく primitiveAdd のほうに self halt を仕掛けるのが
ミソのようです。(bytecodePrimAdd は当然ですがしょっちゅう呼ばれるので…)
0282デフォルトの名無しさん垢版2015/03/21(土) 21:33:43.04ID:UWDIX5zE
>>184
>SqueakだとWindowsの.exe作る方法もあったと思うけど
ちょっと前の話だけど
これをずっと探してて見つけられなかった

Visual Worksならできるっていうのは分かったけど
SqueakでWindowsの実行ファイル作る方法は見つけられなかった

いや実際にSqueakでexeを吐いてるけどって人いる?
Think different? by 2ch.net/bbspink.com
0283デフォルトの名無しさん垢版2015/03/21(土) 22:21:51.58ID:Xtizjndc
今Windowsの環境ないから確認できないけど
http://d.hatena.ne.jp/propella/20050925/p1
こことか、リンクのとことか。やったのだいぶ前だけど。
0284デフォルトの名無しさん垢版2015/03/21(土) 22:32:55.41ID:UWDIX5zE
>>283
できた! サンクス!

エントリ自体は前に見たことあるけど
ウゴモーフとか興味なかったから
流し読みしてしまって見落としてた
0285デフォルトの名無しさん垢版2015/03/21(土) 23:32:01.16ID:UWDIX5zE
exe化はできたけど
もうひとつやりたいことがあるんだ

リリースしたアプリをユーザがいじっておかしくしないように
ハローとか開発環境の部分を隠蔽することってできる?
0286283=184垢版2015/03/22(日) 01:37:55.28ID:VhQjMmyl
http://wiki.squeak.org/squeak/518
ここのcs.gzをDLして、解凍してできたcsをinstall。
Workspaceで
Preferences disableProgrammerFacilities
をdo it したら、警告ウィンドウ出るのでYes、保存する新しいimage名を指定。
保存したimageを起動すると、望みの動作になってるはず。
0287デフォルトの名無しさん垢版2015/03/22(日) 02:18:58.81ID:G0/vVT9E
>>286
おおすばらしい! ありがとう!

まだメニューが残ってたりするけど
これでだいぶ普通のアプリっぽくなった


できないと勝手に思いこんでたけど
同じところでつまづいた人多そう

Smalltalkそのものは大変すばらしいので
日本語情報さえあればもっと広まるのに
0288デフォルトの名無しさん垢版2015/03/22(日) 02:57:43.39ID:G0/vVT9E
ああ試してたらメニューバーも消せたわ
ワールドメニューがちょっと残るけど
ほとんど普通のアプリと変わらない
0289286垢版2015/03/22(日) 07:07:35.62ID:VhQjMmyl
>288
>ワールドメニューがちょっと残るけど
中ボタンで出るyellowButtonMenuのことかなぁ
PreferenceのSearch preferences forでgeneralizedYellowButtonMenuを検索して表示して
enableをオフにしたら出なくなるけど
0290デフォルトの名無しさん垢版2015/03/22(日) 08:47:01.02ID:G0/vVT9E
>>289
できた! 何度も世話を焼かせてしまってすまない

これでタイトルバーにねずみのアイコンがある以外は
普通のWinアプリと同じ何もないところまで来たんだけど……

だけどメニューバーも黄ボタンメニューも
ほかのワークスペースとかもなくした状態で
どうやってイメージ保存してexe書き出しすればいいんだろう?

なんか一休さんのびょうぶから虎を追い出せ
みたいなとんち状態になってきた
0291286垢版2015/03/22(日) 11:20:56.62ID:VhQjMmyl
>>290
>>これでタイトルバーにねずみのアイコンがある以外は
>>普通のWinアプリと同じ何もないところまで来たんだけど……
Preferenceの Show world main docking bar のenable のオフでバーごと非表示にならない?
Windows持ってないから状態わからないけど

最後のとんち状態は そうだね...解決策はありそうだけど
0292デフォルトの名無しさん垢版2015/03/22(日) 18:17:51.03ID:G0/vVT9E
>>291
>オフでバーごと非表示にならない?
ねずみアイコンが2つあって
メニューバーのほうはまるごと消せるけど
タイトルバーのほうは残る

それでデバッグ項目みたいのが残る
Winしか持ってないから
他OSとの違いは分からないが

でもライセンス的にMITだから
Squeakを使ってること自体は
どこかで教えないといけないので
これでもいいよ
0293183,282垢版2015/03/22(日) 18:21:50.40ID:G0/vVT9E
>>291
exe書き出しのとんちのほうは
アイディアが色々あるので試してみる

超初心者だから時間かかるだろうけど
他言語の経験はあるから
少しずつ調べながらやってみる

最後は自分で何とかしたいと思う
長々と付き合わせてしまって申し訳なかった
0294286垢版2015/03/22(日) 19:25:44.81ID:VhQjMmyl
>>293
こちらこそ久々にいろいろやってみて、いろんな機能を知って面白かった
0295デフォルトの名無しさん垢版2015/03/23(月) 05:44:59.29ID:9+S6Qh9p
>>256
>SqueakのCトランスレータが結構使える
一行レスだから見逃してしまってたけど
今スレ見返してたらすごい面白そう

VMの埋め込みとかで触れないのかと思ってた
普通にワークスペースから使えるものなの?

クラス名とか検索するための単語なにか教えて
0296デフォルトの名無しさん垢版2015/03/23(月) 22:16:08.94ID:9+S6Qh9p
>>295
レスが付かないから自分でザッと調べてみたけど

>>256
で言うCトランスレータというのは
Slangで書くVMプラグイン機構のことかな?
(それとも別の何かがあるなら誰か教えて欲しい)

プラグインはしばしば他言語でそうするように
DLLみたいなC/C++で書くものという先入観があったから
逆方向でトランスレータとしても使えるのは面白いと思った

ただCのソース単体で取り出して
他でコンパイルできるのかとか
まだ詳しく調べてないけど
0297デフォルトの名無しさん垢版2015/03/24(火) 20:05:29.21ID:cN0vYmrU
>>296
現実的にはslangは単純な整数とか整数の配列の計算くらいにしか使えない
行列とかベクトルの計算とか、その程度が限界

プラグインは普通にcで書くという先入観で正しいと思う
0298デフォルトの名無しさん垢版2015/03/24(火) 21:14:29.75ID:ZdrU8eOQ
>>297
あーそうなんだ、thx

Cと自由に行き来できたら便利だと思ったけど
計算で速度稼ぐとか、実用に耐える範囲は限定的か

まあ制約が多くても
使えるだけでありがたいけど
0299デフォルトの名無しさん垢版2015/07/02(木) 08:23:13.10ID:37HIrXjo
下記サイトにオブジェクトの定義が書かれています。

オブジェクト指向プログラミングとは何か?
http://eed3si9n.com/node/145

オブジェクトとは何か?

他のオブジェクトへの参照を保持し、事前にリストアップされたメッセージを受信することができ、
他のオブジェクトや自分自身にメッセージを送信することができるアトムで、他には何もしない。
メッセージは名前とオブジェクトへの参照のリストから構成される。

アトムの意味がよくわからないのですが、すみませんがご教示お願いします。
0300デフォルトの名無しさん垢版2015/07/02(木) 11:31:18.87ID:AO3svzPO
>>299
メッセージを事前にリストアップしないといけないとか、オブジェクトがアトムであるとかは
この人の思い込みや勝手な言い換えなので原文(をもう少しマシに訳したサイト)を
当たられることをお薦めします。

http://d.hatena.ne.jp/katzchang/20080807/p2

私が考えるOOPはメッセージング、状態処理のローカルでの保有・保護・隠蔽、
そして全ての物に対する強力な遅延束縛、これだけだ。これはSmalltalkとLISP
だけが実現できている。他のシステムでも可能かもしれないが、私は知らない。
0301デフォルトの名無しさん垢版2015/07/02(木) 14:19:08.77ID:gyn5Kcjz
>>299
たぶんアトムはLispの用語から取ってるんじゃないかな?

でも定義してる中で(一般には)未知の新用語を出すって
筋の良い定義じゃないよね

>>300の原文でも言ってないし

事前にリストアップってのも静的型付けの発想で
遅延束縛を重視するSmalltalkの発想から離れてる

アランケイのアイディアと混ぜないで
自分で一から言い直したほうが良い気はする
0302デフォルトの名無しさん垢版2015/07/03(金) 08:40:10.68ID:W3KOnD9Z
>>300-301
レス、ありがとうございます。

アラン・ケイによる正確なオブジェクト定義の提示ありがとうございます。
Lispのアトムを検索して、これ以上分解できない基本データだと理解しました。
0303デフォルトの名無しさん垢版2015/10/02(金) 11:30:24.22ID:njwjZuA3
>>302
そこで言ってるアトムは分解出来る機能の集合体なのだから
これ以上分解できない基本データではないな
単に個体とかでいいんじゃね
0304デフォルトの名無しさん垢版2015/10/02(金) 19:47:13.01ID:ADth776D
ぜんぜん関係ないけどおれアラン・ケイが来日したときサインもらった
いいだろう
0305デフォルトの名無しさん垢版2015/10/02(金) 22:04:37.04ID:q16UoAhR
ひさしぶりにスレが動いたから
オレもついでに言うけど

Smalltalkやってる人がもともと少ないんだけど
とくに日本でPharoやってる人ぜんぜんいないな

言語(処理系)は良さそうなんだけど
日本語情報が少なすぎてどうしようもない
0306デフォルトの名無しさん垢版2016/04/10(日) 02:03:06.43ID:WTOWAaLY
age
0308デフォルトの名無しさん垢版2016/04/20(水) 16:32:04.67ID:a8lJ1Bzf
>>240
Code Browser じゃあダメなん?
ttp://tibleiz.net/code-browser/
0309デフォルトの名無しさん垢版2016/04/20(水) 18:21:54.24ID:UfNx2Znx
>>308
おお〜サンクス! こういうのがあるんだ
代替になるか分からないけど触ってみる
0310デフォルトの名無しさん垢版2016/08/18(木) 11:53:48.53ID:E7RCG0CR
スタートアップ界の異端児!産業機器 x IT x SmalltalkのSORABITO株式会社
…人材採用のプロ・高野秀敏氏が厳選「いま最も旬なベンチャー」
https://news.thepedia.co/article/1068/

日本でクックパッドがRubyを広めたように、日本も海外も含めて「SmalltalkといえばSORABITO」となるとおもしろい
0311デフォルトの名無しさん垢版2016/08/19(金) 08:00:44.26ID:aUETciWG
>>310
>Smalltalkの場合は最も覚えることが少ない言語
言語仕様だけならそうだけど
ライブラリまで含めたら
最も覚えることが多い言語になりそうだけどなー

まあプロトタイプはSmalltalkで
ライブラリ必要な部分はRuby
って分担ならわりと妥当だと思うけど
0313デフォルトの名無しさん垢版2016/08/21(日) 08:33:13.32ID:itlBfDe6
Sakuraエディタでコード書いてPharoのファイルブラウザから読み込ませてたんだけど、直接書けるって教えてくれよ
0314デフォルトの名無しさん垢版2016/08/21(日) 10:15:04.20ID:ggpv6L0L
>>313
ああ、そうですよね。すみません。
とりあえず、Pharo by Example でも読んで考え方に慣れてください。
https://ci.inria.fr/pharo-contribution/view/Books/job/UpdatedPharoByExample/lastSuccessfulBuild/artifact/book-result/UpdatedPharoByExample.pdf

英語がちょっと苦手という向きには古いPharo1.1向けですが有志による日本語版もあります。
http://www.smalltalk-users.jp/Home/docs

対応する処理系はこちらから入手可能です。
http://pharobyexample.org/image/PBE-OneClick-1.1.app.zip

展開するだけでインストール可能なはずです(pharo.exeで起動)。

でも慣れたエディタがあるなら、まずはそこからコピペというのもそう悪くないやり方だと個人的には思います。
Smalltalkの組み込みのエディタ機能はおいおい学んで、気に入ればカスタマイズも含めて使えばよいので。
0317デフォルトの名無しさん垢版2016/08/28(日) 02:31:34.26ID:PB1bnZje
MacでSqueak5.1の右上にある検索使うとvmが落ちてしまう
0318デフォルトの名無しさん垢版2016/08/28(日) 20:33:20.07ID:zcu6Rkdc
Squeak5.1、日本語フォントの設定ができん!
0319デフォルトの名無しさん垢版2016/08/28(日) 21:59:54.11ID:wqvuI2DW
>>318
Apps → Font Importer → 日本語フォントを右クリック → Link Font → Close
これでリンクしたフォントが appearance... → system fonts... 等のフォント選択の一覧に現われない?
0321318垢版2016/09/01(木) 17:17:29.87ID:u9gr6W2c
>>320
MacでOsakaフォントをLinkしようとしたら、
クリックした瞬間にいくつかMorphが壊れて
Emergency Evaluatorが出てきたよ…
0324デフォルトの名無しさん垢版2016/09/03(土) 14:57:33.27ID:/kP4iCQF
舌足らずか、自由自在のPDF落としたんですが、Squeak最新のバージョンで
本の内容を同じように試すことは出来ますか?だいぶ違ってます?
0327デフォルトの名無しさん垢版2016/09/03(土) 18:32:59.01ID:87bD/C1F
Smalltalkは変わったツールや習慣、考え方がよく出てくるのですが
無理に通常の言語での習慣や考え方に翻訳して咀嚼しようとすると
(やればできなくもないですが、いろいろ無理を生じますし)
学習コストが無駄にかかるわりに、誤った結論に達しがちなので
疑問なことは自力解決にこだわらずにどんどん訊いてください。
0329デフォルトの名無しさん垢版2016/09/18(日) 11:22:38.12ID:LHERV0LA
第92回Smalltalk勉強会
http://www.smalltalk-users.jp/Home/gao-zhi/dai92kaismalltalkbenkyoukai

9月のSmalltalk勉強会の日程が決まりました。下記の要領で行います。

日時: 2016/9/23(金) 19:00-21:00 (2時間程度)

場所: SORABITO株式会社 東京都中央区日本橋茅場町1丁目9番2号 第一稲村ビル8階

今回は8/22-26にかけてチェコで行われたESUG 2016の報告会です。

ViennaTalkを引き連れ日本から参加されたSRAの小田(@tomooda)さんによるお話です。

Smalltalkのカンファレンスの中では最も歴史があり、かつ盛り上がるのがESUGです。
最新のSmalltalk動向に触れる良い機会でしょう。
0333デフォルトの名無しさん垢版2016/09/21(水) 14:38:41.20ID:7yARBfoR
Squeak/Pharo系のアプリは全滅か?
0336デフォルトの名無しさん垢版2016/09/23(金) 18:09:02.45ID:cQNYWAur
64bitのイメージと最新vmでならsierraで動いた
32bitのやつは動いたけどすぐ落ちて使えなかった
0340デフォルトの名無しさん垢版2016/10/28(金) 10:05:37.68ID:zLimfAXR
Simulating a Xerox Alto with the ContrAlto simulator: games and Smalltalk
http://www.righto.com/2016/10/simulating-xerox-alto-with-contralto.html

To start up Smalltalk,
download st80.dsk. Load the disk image into ContrAlto, reset, and then run "resume small.boot".
(A second Smalltalk disk is xmsmall.zip; "resume xmsmall.boot" starts Smalltalk from this disk.)

https://github.com/livingcomputermuseum/ContrAlto/tree/master/Contralto
ContrAlto will run on any Windows PC running Windows Vista or later, with version
4.5.3 or later of the .NET Framework installed.
0344デフォルトの名無しさん垢版2017/03/09(木) 12:58:33.85ID:3bYiHHP6
pharo5でprintItを調べたくてRubSmalltalkEditorとSmalltalkEditorのprintItにself haltを書き込んで
書き込んで、ワークスペースでprintItしてもデバッガーが起動しないんだけどなんでだろ?
そもそもhalt書き込んでる場所が間違ってるんかな
0345デフォルトの名無しさん垢版2017/03/09(木) 14:10:36.65ID:BFR+GBdm
手元のイメージではWorkspaceのprintItはRubSmalltalkEditorのprintItにhaltで止まるが。
実はPlayground?
034729垢版2017/03/12(日) 00:43:54.04ID:AHF9JHq9
lisp系言語の「純lisp」に相当するような、
チューリング等価な最小のsmalltalk命令セットって
どのようなものなのでしょうか?
0348デフォルトの名無しさん垢版2017/03/12(日) 07:17:32.17ID:vU9+ZemV
そういうときってバイトコードインタープリターではなく
本当に純粋にSmalltalk式の評価系を考えるのでしょうか?
034929垢版2017/03/12(日) 14:27:30.98ID:pYc0weDt
あ、そっちの線は考えていませんでした。
smalltalkが実際にどう実装されてるかは抜きにして、
最小限、どの命令(?)があれば、
チューリング等価な計算力を持つかという、意味でした。
0350デフォルトの名無しさん垢版2017/03/12(日) 15:40:58.27ID:eGKUfyZ5
クラスで言えばIntegerとBooleanとBlockClosureがあれば、
逐次、繰り返し、条件分岐ができるけど、
全くSmalltalkらしくない悪寒
0351デフォルトの名無しさん垢版2017/03/19(日) 08:53:42.65ID:SqiEvO7U
今時なウェブ開発をSmalltalkでやってみる | 第98回Smalltalk勉強会
https://smalltalk.connpass.com/event/53492/

「Smalltalkってまだ生きているの?」とそんな悲しいことを
質問されたりするので、Pharo Smalltalkで今時なウェブ開発をする
方法について話します。 ESUG 2015で入賞したPharoJSや
Enterprise Pharo本に掲載されているライブラリなどPharo Smalltalk
でウェブ開発をする方法を話したいと思います。
時間があればSeaside等の伝統的な開発方法も紹介します。

日時
2017/3/31(金) 19:00-21:00

場所
SORABITO株式会社 東京都中央区日本橋茅場町1丁目9番2号 第一稲村ビル8階
0352デフォルトの名無しさん垢版2017/04/01(土) 10:32:11.46ID:T6xyxJc4
開発者に嫌われているプログラミング言語トップ25 | マイナビニュース
http://news.mynavi.jp/news/2017/03/30/133/

fossBytesに3月28日(米国時間)に掲載された記事
「Which Are The Most Loved and Most Hated Programming Languages|2017」が、
Stack Overflow Developer Survey 2017の調査結果を引き合いに出し、
開発者に愛されているプログラミング言語と嫌われているプログラミング言語の
トップ25を伝えた。愛されているプログラミング言語1位はRustで、
これにSmalltalkとTypescript、Swift、Goが続いている。
0353デフォルトの名無しさん垢版2017/04/01(土) 16:51:02.24ID:eZPxn7hQ
>>352
そこで挙がっている言語は普及しているから
無理やり使わされる(から嫌い)という要因が大きそう

一方Smalltalkは好きな奴しか残っていないイメージ
0355デフォルトの名無しさん垢版2017/04/02(日) 12:04:02.82ID:j7pqXAos
嫌いと公言できるほど使いこなせないからかな

もっともちょっと使えるようになったからって
知ったかでこういうFUDはやめてほしい
https://medium.com/@zerobase/プログラミング言語の選択とソフトウェア企業の競争優位性に関する本当のところ-smalltalk-clojure-lisp-7378602ac468
Smalltalker の給料が一見高く見えますが、そうではなくて、
このグラフが示してるのはSmalltalkerの高齢化です。
いっときSmalltalkをやっていた、ぼくの実感にも合います。

だいたいコイツ「やっていた」とか言ってても、あれがないこれがないって文句ばっかりで
何かを生み出す気ゼロ。調査だけで終わってろくすっぽ使えてないだろ…
おめーなんかより若い人のほうがよっぽどパワーを引き出しているよ
0356デフォルトの名無しさん垢版2017/04/02(日) 17:42:09.19ID:U8kt+FV8
Lispは嫌いだけどやってる
最近関数型が偉いみたいな風潮あるから
それ自体も嘘だと思ってるけど
0357デフォルトの名無しさん垢版2017/04/02(日) 17:45:00.93ID:U8kt+FV8
Smalltalkのユーザが高齢化してるのはあるだろうな
今はもうRubyやPythonやった方が絶対楽だし
0358デフォルトの名無しさん垢版2017/04/02(日) 20:06:27.08ID:Z4FPulUz
RubyやPythonのコミュニティーを見てるとSmalltalkerが踏んだ地雷を次々と踏みなおして爆発させているのを見るのがつらくて
0361デフォルトの名無しさん垢版2017/04/08(土) 23:20:46.77ID:nDDYstno
>>355
> このグラフが示してるのはSmalltalkerの高齢化です。
断言する理由が書かれていない
あとは延々「意識高い僕は選ばれた人間!」と言ってるだけ
典型的なバカ
0364デフォルトの名無しさん垢版2017/04/29(土) 22:13:44.34ID:EU04cbvt
GWだし、Mac の Pharo5.0 で Smalltalk 体験中なんだけど、
日本語IM(IME)で文字は入れられるけど、変換中の表示が
ないから、アプリ作っても使ってもらうことは出来ないなぁ。

オープンソース系はずっと有志が頑張ってたイメージなんだけど、
成果がバージョンアップで流れちゃう感じなんでしょうか。
0366デフォルトの名無しさん垢版2017/04/30(日) 00:40:52.57ID:SbBDypWI
昔から英語圏の言語は日本語に厳しいのよ。。。
オープンソースだと対応する義務も無いから特に。
0367364垢版2017/04/30(日) 01:58:36.51ID:Bxv2Awhp
他はなかなか良い感じなんですけどねぇ。アジア圏の他の国の人も困ると
思うけど。

Tekka 入れられたんでありがたく使ってますけど、本当は他所で書いて
コピペした方が実用的ではある…
0371364垢版2017/05/01(月) 09:35:17.60ID:qKmHB6Zh
Windows7 と 95 にも入れてみました。

95では変換表示が pharo のウインドウの左上端に出るので、まぁ自分的にはOKかな。
Windows7では、変換表示はウインドウとして出て動かせるので、更にまし。

以前ダウンロードして積ん読状態だった Mac 版 Pharo1.0 では変換ウインドウが出
ますね。5 で同じようになれば良いんだけどなぁ。


> ほらやっぱRubyやPythonの方が楽じゃん
全部できれば良いだけでは?
0372デフォルトの名無しさん垢版2017/05/05(金) 20:15:03.44ID:TOnHpg4g
Sirenに興味を持っていじってみようと悪戦苦闘しているのですが
使ってたって人いますかね?
現状だともうメンテナンスもされてないみたいだけどSqueak3.0か
VW7.5で動くようなんですけど。
インストールの仕方も良く判らない
ttp://fastlabinc.com/Siren/
0374デフォルトの名無しさん垢版2017/05/06(土) 12:39:15.39ID:FrvZMHcY
>>373
VWは今インストールディスクを送ってもらっているところなので
Siren7.5はダウンロードして待機中です。
Squeakは2.7で動くらしいのですが、Windowsは専用のimageがある
ようで探したのですがもうダウンロードできないようでした。
0377デフォルトの名無しさん垢版2017/09/24(日) 11:07:47.66ID:ByZ250WW
その昔、Smalltalkは言語でありOSだった。
SmalltalkというOSがアプリそのものでもあった。
SmalltalkというOSで動いている唯一のアプリにワード、
エクセル、ゲームの機能を追加していくそういう世界であった。
アプリの終了はOSの終了、世界の終了を意味していた。
世界を終わらせること無く機能を追加していくために
Smalltalkは生まれたのである
0378デフォルトの名無しさん垢版2017/09/24(日) 12:50:44.01ID:dIaNhcU3
元ネタはこれかな
http://mevius.2ch.net/test/read.cgi/tech/1502182334/864

864 名前:デフォルトの名無しさん[sage] 投稿日:2017/09/23(土) 23:15:33.02 ID:OVoD4rc5 [3/3]
>>861
SmalltalkはOSと言語が合体している独自の世界だから

Smalltalk実行環境(=OS=開発環境)のみがコンピュータ上で動いており
Smalltalk実行環境は電源を消すまで動作しているという前提の話をするから
言語だけの話にならない。

例えば開発した新しいプログラムをOS上で起動するというのは
Smalltalkの世界では、Smalltalk実行環境上で新しいクラスを作って呼び出すということで
プログラムを一旦終了してバグを修正して再起動するということは
Smalltalkの世界では、ではクラスを動的に変更するということになる。

このように一般的なOSでは、プログラムの作成や修正という当たり前にできることが
Smalltakでは「オブジェクトは遅延結合が必要で動的に変更できなければならない」という
根拠になってしまっているから、お前らの世界では遅延結合や動的が必須なのだろうけど、
そのマイナーな世界を押し付けるな。そんなものはなくてもできる。という感じで荒れる
0380デフォルトの名無しさん垢版2017/09/24(日) 17:52:45.02ID:ZoycLPfe
Windowsの規模でイメージベースとかの
仕組みが上手くいってたかというと疑問だな

現状のSmalltalkでもイメージベースだけじゃなく
ファイルベースでも管理するのが普通だし
そうしないと少し不安なところがある

小規模なプロトタイピングを作るときに
いちいちファイルに分けない
イメージベースは快適ではあるんだけど
そのまま大規模なソフトを作れる
スケーラブルな方式だとはとても思えない
0383デフォルトの名無しさん垢版2017/11/12(日) 01:42:29.27ID:5d1CvKEj
Pharoに興味持って、MacのVer.6.1-64を動かしてみたんだが、
https://qiita.com/sumim/items/c2a38a42c3ccd70c18b2
の通りにやっていて、ハングアップしてしまう・・・
上のurlは5.0用みたいだから挙動が違うとかメニューが違うのはいいとして、ハングアップってどうなのよ?という感じ。
0385デフォルトの名無しさん垢版2017/11/12(日) 10:14:24.34ID:jp8y5cxG
どこでハングするかぐらい書かないと
どこまで優秀なエスパーを期待しているのやら
0386282垢版2017/11/12(日) 12:02:23.91ID:5d1CvKEj
http://pharo.org/web/download の32、64ビット版何れでも、self shouldBeImplemented」というスタブメソッドの内容を変更、保存した瞬間にハングアップ。
環境は、macOS High Sierra(10.13.1)
Pharo5.0で試してみるか・・・正直、チョットと動かしてみようと思ってただけなので、萎える。
0387デフォルトの名無しさん垢版2017/11/12(日) 14:55:49.34ID:z3rtvJrk
手元でその環境(High Sierra, Pharo6.1-64)を作って試してみましたが
件のスタブの書き換え(変更してコンパイル)を含め、問題はないみたいです
確か、6.0ではそういう障害が報告されていたようですが
6.1でもまだ完全に解決していないか、環境依存でたまたま起きた可能性がありそうですね

ちょっと試すだけなら5.0で良さそうに思いますので面倒かもしれませんがリトライしてみてくだい

あと今回の件とは関係なさそうなのであくまで一般論&余計な事かもですが
Smalltalkのチュートリアルを試す際は、処理系を同じにするのはいうまでもない事ですが
バージョンについてもそのチュートリアルが対象にしているのと極力同じバージョンを選ぶ
(もちろん可能な範囲でですが…)のが萎える要素を少なくできて良いと思います

Smalltalkの学習の初期の段階では他言語の習熟者ほどストレスフルに感じる疑問が多く発生しがちなので…
0388382垢版2017/11/12(日) 18:53:31.00ID:5d1CvKEj
>>387
おかげさまでPharo5.0で試すことが出来ました。
テストをサクッと書ける(しかも作成中のクラスへの表示も)のが良いですね。
(Java、RubyだとWebアプリ作る際にテストライブラリを別導入したりするので、人に勧めたり説明するのがチョット手間)
まだアプリの作り方とか全く分かりませんが、もうチョット遊んでみようかと思います。
0389382垢版2017/11/12(日) 19:58:08.24ID:5d1CvKEj
最初に試したiMacとPharo6との相性が悪かったようです。(多分、iMacの環境のせい)
別のMacBookPro(El Capitan 10.11.6)では
Pharo5.0、6.1、6.1-64bit ともに正常に操作出来ました。
0395デフォルトの名無しさん垢版2018/01/13(土) 02:40:12.95ID:Cv24YujM
Pharoで標準入出力ってどう扱うの?
シンプルなコマンド作ってbashで他のコマンドとパイプでつないで使うところから始めたいです
0397デフォルトの名無しさん垢版2018/01/13(土) 04:23:40.51ID:WpIPvjD2
あえてPharoでやるならこんなのはどうでしょう?

Scale aims to take Pharo into the shell.
That is, to write shell scripts in Pharo, use its power,
and have a better syntax instead of the ugly bash one :).

DISCLAIMER: Scale is tested only in Linux.

https://github.com/guillep/Scale
0398デフォルトの名無しさん垢版2018/01/13(土) 05:11:07.78ID:WpIPvjD2
GNU SmalltalkはAPIやライブラリーの充実度でPharoには遠く及びませんが
今回のようにshellとの連携からの入門には十分でむしろ優れていると思います

参考までGNU Smalltalkでの対話的なコーディングに欠ける機能を補う試みとしてこんなのもあります

CUIなSmalltalkでメソッド調べる小技
https://qiita.com/tetha/items/1833cff9f4024595be78
0400デフォルトの名無しさん垢版2018/01/14(日) 00:48:50.85ID:Ef+VW+Yv
Pharo使って見始めたが、これ全てがメッセージ、というのが興味深い。
ただ、チーム数人で、Smalltalk使って開発するときって、ソース管理(メンバー間での同期、マージ)はどうしてるんだろう?
JavaやRubyでは基本的にはテキストファイルだから、Gitが定番だと思うが。
0402デフォルトの名無しさん垢版2018/01/14(日) 08:23:10.42ID:hv8hpGAp
>>400
Pharo には iceberg というツール(Pharo6.1 からリリース時にインストール済み)があって Git も使えます
https://github.com/pharo-vcs/iceberg

Git 以前はチーム開発には Monticello(や、その拡張)が使われました
これは、Smalltalkで古くから「カテゴリー」という
クラスをグループ分けして整理するための属性を「パッケージ」とみなして
差分等の情報を zip で固めてレポジトリーに置き共有するツールです
http://squeak.qp.land.to/wiki/index.php?Tools%2FMonticello

iceberg にはこの Monticello の機構もいろいろ利用されています
0403デフォルトの名無しさん垢版2018/01/14(日) 09:12:16.66ID:M9z7wx70
>>400
古典的にはSmalltalkではソースを環境内でメソッド単位で管理することになっていますが
それぞれを、ディレクトリー(パッケージ名とクラス名、インスタンスメソッドかクラスメソッドか)と
ファイル名(プロトコルとメソッド名)を使って個々のファイルにマッピングすることで Git で管理できるようになります

前述の iceberg がその方式で、それ以前にも Filetree といったそうしたマッピング専用のツールがありました
念のため
0404デフォルトの名無しさん垢版2018/01/14(日) 10:32:07.95ID:Ef+VW+Yv
>>402,403
おおっ、そういうのが有るのですね。
早速見てみます。
(iceburgってのがメニューのトップに有ったけど、何だろう・・・あとで調べるか、と思ってましたw)
0405デフォルトの名無しさん垢版2018/02/01(木) 00:06:38.87ID:4kb1aa3G
富士ゼロックス、米ゼロックスと経営統合へ
1/31(水) 17:37配信

富士フイルムホールディングス(HD)は31日、子会社の富士ゼロックスと米事務機器大手ゼロックスを経営統合させたうえで買収すると発表した。
富士フイルムHDは最終的に統合会社株の50・1%を保有する。
富士ゼロックスは1962年に設立され、現在は富士フイルムHDが75%、米ゼロックスが25%をそれぞれ出資している。複写機市場がペーパー
レス化などで低迷する中、経営規模を拡大する一方で、1万人の人員削減などによるコスト削減を図り、合理化を進める。

https://headlines.yahoo.co.jp/hl?a=20180131-00050116-yom-bus_all
https://www.fujixerox.co.jp/company/profile/identity/images/index-fig-01.jpg
0406デフォルトの名無しさん垢版2018/02/09(金) 10:12:22.15ID:dUg6ANh3
シンコムさんからメディアが届いた
週末は久しぶりにSmalltalk三昧できそうです
もう忘れかけてるから頭リセットしなきゃ
0407デフォルトの名無しさん垢版2018/02/16(金) 06:44:16.01ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0414デフォルトの名無しさん垢版2018/04/13(金) 22:36:21.27ID:mZ0Pl0ro
マイナーなこと自体は仕様がないけど
普及を阻む使いにくいところは
もっと早く変えた方が良かった
0415デフォルトの名無しさん垢版2018/04/13(金) 23:19:15.33ID:bso+BPDq
あの時代遅れなIDEを積極的に使わせようとするの謎
IntelliJ使ってるユーザが乗り換えるわけないじゃん
そら普及しないわ
0416デフォルトの名無しさん垢版2018/04/14(土) 05:21:09.94ID:uQLblPcP
IDEは良いけどイメージベースでEXE作らないとかの独自仕様が
アイディアとしてはともかく実用的には使いづらかった
0425デフォルトの名無しさん垢版2018/04/17(火) 10:09:39.24ID:GKRJ1eqH
スモールトーク自身ウンコなので、それ自体がキラーアプリってなのは成立しない
そもそも成立してたら普及してるって
0428デフォルトの名無しさん垢版2018/04/20(金) 11:20:23.52ID:bkJaUb8N
これか

ストロングゼロの氷結のストロングゼロのウォッカ入ってるんだけど、この氷結のチューハイ毎日ではないけどかなりのペースで飲むと2本
今も例えば月曜日とかだと氷結でストロングゼロ飲んでって感じで飲んでるから人気になるんだと思う
楽でいろんな味だしね


おそらくはこういう意味?

ストロングゼロや氷結ストロング等の“ストロング”系チューハイにはウォッカが入っていて
口当たりがたいへん良いので毎日というわけではないけどペースが乗ると日に2本とか普通に飲めてしまう
実際、まだ週が始まったばかりだけど氷結ストロングでも飲むかってつい飲んでしまったよ
こんな感じで皆が気軽に飲めるから人気がでるんだと思う
いろいろな味があって楽しめるしね
0431デフォルトの名無しさん垢版2018/05/13(日) 01:58:02.20ID:VwqkeNW/
windows10で
http://files.squeak.org/1.1/Squeak1.1.zip
を使おうとしてるんだけど、このzipファイル内のVMで実行してると、
firefoxとかで調べ物をしたあとで戻ってくると、かなりの頻度でnot respondingになってしまう。
じゃあ、と思ってsqueak5.1のVMでSqueak1.1.imageを読ませようとしてもCould not openといわれる。
どこかの時点でイメージファイルのフォーマットが変わった?
現時点でSqueak1.1.imageのような昔のイメージを実行するならどのVMを使えばいい?
0432デフォルトの名無しさん垢版2018/05/13(日) 08:48:35.81ID:faxTAPZS
手元の環境では特に問題ない感じなので何かの相性の問題かもしれません
あと、仮想イメージは同時期に提供されたVMでしか開けないと思った方がよいでしょう

目的にもよりますが、どうしてもSqueak1.1をちゃんと動かしたいということでしたら
VMwareなどで仮想環境を用意してやるのもひとつの手かもしれません
その場合、可能であればSqueak1.1が提供された当時のOSである方がベターでしょう

軽く動かしてみるだけでよいなら、SqueakJSという選択肢もあります
https://squeak.js.org/run/

Drop Squeak images and other files here. に件の.zipから
.image、.changes、.sourcesをドロップインするとFirefox内(あるいはその他のブラウザ内)で起動できます
お試しあれかし
0433デフォルトの名無しさん垢版2018/05/13(日) 12:25:36.62ID:VwqkeNW/
>>432
レスありがとうございます。
squeak1.1を動かそうとしていたのは、このサイズならsmalltalkの全貌が把握できるかなと思ったからでした。
squeakjs.imageは590KBとさらにサイズが小さいのでこっちに乗り換えようと思います。
ですが、ブラウザで動かしてるとテキストをコピーしてもwindows側のクリップボードに入ってくれないのが痛いですね。
デバッガやブラウザで動きを追いかけながら、気になったコードをコピーしてメモをつけてブログに記録していきたいので。
でも、以下のURLでは、the interaction with JavaScript for clipboard access.って書いてありますね。本当はコピペできるのかな。
https://www.freudenbergs.de/bert/publications/Freudenberg-2014-SqueakJS.pdf
0434デフォルトの名無しさん垢版2018/05/13(日) 17:38:01.18ID:faxTAPZS
試してみたところ、こちらの実装では(alt + c ではなく) ctrl + c でクリップボードにコピーできるみたいです。

https://lively-web.org/users/bert/squeak.html

まず(ページ読み込み完了後)左下の Load image から fetch mini image from server して(Squeak 起動後)
適当な文字列を選択→ ctrl + c → メモ帳などにペーストを試してみてください。

もしうまく選択文字列の持ち出しができないようでしたら、右側の説明文を同様に試すなどすることで
まずページ内で(LivelyWeb 経由の) ctrl + c によるコピー操作が機能しているか確認してください。
Filefox でうまくいかないようならブラウザを Chrome に変えてみるのもよいかもしれません。

mini からの ctrl + c による文字列の持ち出しが確認できたら、Load image の並びにある Import: 右脇のボタンで
すでにダウンロードしてある Squeak1.1.image、同 .changes、SqueakV1.sources を選択してインポートします。
うくゆくと Load image に Squeak1.1.image が現れるのでこれを起動して学習に用いてください。
(.changes 、.sources が揃っていないイメージだとソースがデコンパイルで生成されるので何かと不便なので)

最悪、ctrl + c がどうしてもうまくいかない場合でも、こちらのバージョンでは Export File.. 経由で
ファイルの持ち出しができるので、

| file | file _ FileStream newFileNamed: 'hoge.txt'. file nextPutAll: Smalltalk clipboardText; close.

などで明示的に書き出せば(ちょっと面倒ですが)件の Export file.. からダウンロードできます。
こちらも参考まで。
0435デフォルトの名無しさん垢版2018/05/13(日) 21:49:05.91ID:VwqkeNW/
>>434
ctrl+cでコピーできました!ありがとうございます
https://squeak.js.org/demo/simple.html
↑の方でもctrl+cでいけますね。

私は力技でvw.jsの
primitiveClipboardText: function(argCount) {
の中で
this.display.clipboardString
から値を取り出すことを考えてましたが、
もうその必要がなくなってよかったです。
あと、この経緯でついでに<primitive: 141>まわりの実装が勉強になった。
0437デフォルトの名無しさん垢版2018/05/14(月) 19:34:42.78ID:lPclUDfn
昔のsqueakにはメニューにdebug itがなかったんですね
仕方がないので、例えばBrowser openBrowerの処理を追いかけたいときは、ワークスペースを開いて
self halt.
Browser openBrowser.
の2行を書いて、それをマウスで選択してdo itで実行させてるんですが、
当時の人たちはこういうときはどうやってデバッガを起動してたんでしょう?
0439デフォルトの名無しさん垢版2018/05/14(月) 22:34:27.48ID:EYH3vlbi
>>437
halt は何にでも送れるので Browser halt; openBrowser でいけます

古いっていうだけでもう相手にされないか、そこを突破できても
実際に古臭い点も多々あるんで本当におもしろいところまで行き着けないんでしょうね

あと今の人は学ぶことが多すぎて、余計な事を学ぶ気持ちや時間の余裕が持てないのが大きそう
0441デフォルトの名無しさん垢版2018/05/15(火) 21:41:26.28ID:PalvXpXe
>>439
「halt;」を書き足すだけでいいので便利ですね。
そのアイデアいただきます!
0442デフォルトの名無しさん垢版2018/05/19(土) 11:55:39.59ID:WnkT4MGt
scratchって、Small talkクローン?
0443デフォルトの名無しさん垢版2018/05/19(土) 12:37:47.71ID:H78Ay5zU
Scratch は、古いバージョン(バージョン 1.4 まで)が
Smalltalk(MIT版 Squeak)で実装されたというだけで
Smalltalk とは別の独立した言語処理系です。
0444デフォルトの名無しさん垢版2018/05/19(土) 16:02:38.18ID:h32pPDAO
>>443
なるほど、ありがとう。
LOGO、Smalltalk、scratchを触ってみて言語のバックグラウンドが似てるように見えたのはそういう事だと腑に落ちました。
ブロックを自分で定義出来ると色々遊べそう(センサーのエミュレーションとか)。
まだまだ勉強中です。
0445デフォルトの名無しさん垢版2018/05/19(土) 16:58:11.77ID:MhrkVOUh
>>444
Scratch の開発リーダー、ミッチェル・レズニックはシーモア・パパートの弟子で
LOGOの並列化版 StarLogo の開発者でもあるので、Scratch は Smalltalk よりは LOGO の影響の方が色濃いのかもしれません。
0447デフォルトの名無しさん垢版2018/05/23(水) 19:11:50.57ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

2EWEB
0449446垢版2018/05/24(木) 03:23:54.45ID:CzEEKu6Z
>>448
たとえばイメージベース(EXE出力しない)とかね
0454デフォルトの名無しさん垢版2018/05/28(月) 19:28:09.07ID:r5GUJbyu
以前質問させていただいたhttps://squeak.js.org/demo/simple.htmlで学習中の者です。
現在、どのメソッド内のコードがマウスカーソルの表示処理をしているのか探してますが、うまく見つけられません。
squeak2.2ベースでMorphicではなくMVCで恐縮ですが、どこを見ればいいかご存知でしたら教えてください。

調べたこと&わかったこと。
Cursor normal displayでマウスカーソルの単発表示ができることを発見。
Cursor normal halt displayをデバッガで追っていき、表示直前に以下のメソッドが実行されることを発見。
DisplayScreen>>copyBits:from:at:clippingBox:rule:fillColor:map:
上記メソッド内の冒頭に以下のデバッグコードを挿入。
sf = Cursor normal ifTrue: [self halt].
Cursor normal displayを再度doitしてhaltで止まることを確認。
この状態でウインドウのないDisplayScreen上でマウスを動かしてみる。
が、haltで止まらないことからこのメソッドは表示処理に使われていないと予想。
他は何を調べればいいでしょう?
0455デフォルトの名無しさん垢版2018/05/28(月) 19:31:54.25ID:yucnVNXj
そろそろmaximumtalkが出てきてもよい。
0457デフォルトの名無しさん垢版2018/05/29(火) 13:21:37.74ID:KXlYVobD
>>454
カーソルの表示処理を知りたいのであれば、Cursor nomal halt; show を追っかけた方がいいですね。
display はご自身でお調べになった結果からも分かるように
レシーバーである画像オブジェクト(カーソルもこれに属します)を画面左上(0@0)に表示するだけの処理になります。
たとえば From fromUser display とすると、選択した矩形領域を切り取って左上に表示するコードになります。

あと、showの方もおっかけると分かりますが、最後はプリミティブ(VMの関数呼び出し)に行き当たるので
どんな処理をしているかは該当するVM内関数のコードを見てあげる必要があります。
0458デフォルトの名無しさん垢版2018/05/29(火) 19:03:44.38ID:xdaZSLqM
>>456,457
いいヒントになりました。感謝!

現時点での自分の理解
Cursor>>beCursorが<primitive: 101>を呼び出す。
vm.jsのprimitiveBeCursorがカーソル形状データをcursorCanvasにセットする。
squeak.jsのupdateMousePosがcursorCanvasの座標をマウス移動に応じて変更する。
というわけで、SqueakJSの場合は、マウスカーソル専用のcanvasを別に用意して、画面用のcanvasの上に重ねて表示していると理解。

確かにこれでは、メソッド内でマウスカーソルとウインドウの重ね合わせ処理を探しても見つからないはずだ。
ちなみに、Interpreter>>primitiveBeCursorのコメントに
"Set the cursor to the given shape. The Mac only supports 16x16 pixel cursors."
とあったので、Mac版ではOS自体のカーソルの形状を変更して利用してるみたいですね(未確認)
マウスカーソルが画面外に出たときの挙動を比べると、
SqueakJSではcanvas製のマウスカーソルが画面端においていかれるのに対して、
Squeak.exeではマウスカーソルが画面端に残らないのがそのせいかな、と思ったり。
0459デフォルトの名無しさん垢版2018/06/06(水) 18:48:46.42ID:CR/iRC+P
この言語しばらく使ってるとゴミさが身に染みてくるんだよな
うっかり間違って採用しちゃった企業も途中で捨てるから、いつまでも利用者が増えない
0461デフォルトの名無しさん垢版2018/06/07(木) 23:43:33.75ID:UtcVrbmV
そういや一時期Smalltalk使ってるのをアピールしてる日本の会社あったよね
昔じゃないよ去年とか一昨年くらいの話
あそこってどうなったの?まだSmalltalk使ってる?
0469デフォルトの名無しさん垢版2018/06/13(水) 23:27:17.55ID:I7rQAugb
ちゃんとSmalltalkを理解した上でクソって言ってる人って
今まで2人しか見たことないわ
他はろくすっぽ使ったこともない雑魚ばっかだった
0470デフォルトの名無しさん垢版2018/06/14(木) 07:57:02.26ID:p7mhm0Dw
6月のSmalltalk勉強会は26日(火)SORABITOさんにて。
小田さんによる「Pharoで3D」のお話です。#st_study
https://t.co/wMiwwytiyq

SORABITO、Smalltalkと縁を切ったわけじゃないみたいだな 👀
Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01)
0474デフォルトの名無しさん垢版2018/06/16(土) 23:47:04.64ID:VzCdEHqb
>>472
smalltalkのlovedが67%だけど、これ使ってるって回答したのが3人でそのうち2人が好きって言ってるだけの可能性が十分にある
それがマイナー言語smalltalkの現実
0476デフォルトの名無しさん垢版2018/07/04(水) 22:26:52.02ID:gFgZc5FG
7BK
0478デフォルトの名無しさん垢版2018/07/09(月) 02:22:15.36ID:XV3nMjDz
Smalltalkは文化的にタイピング量が多くなってしまうのが面倒い
あとPharoがころころ仕様が変わるのでついていくの面倒い
好きな言語なんだけどね
0479デフォルトの名無しさん垢版2018/07/09(月) 08:00:36.48ID:lKdQESUF
文化的なことを言っていいなら、Smalltalkにはかなり以前からIDEからの支援が提供されていたので
タイプ数もスペル等の記述の正確性への心理的負担も他の言語よりずっと少なくて済む印象が強いなぁ…

仕様の変遷の激しさは同感。でも、まぁそれはSmalltalkの宿命っぽいところもあり半分あきらめている^^;
どうしても耐えられなければ、比較的変化の穏やかなVisualWorks等の商用Smalltalkという選択肢もあるし
0480デフォルトの名無しさん垢版2018/07/09(月) 20:27:32.77ID:t2m7hyzb
>タイプ数もスペル等の記述の正確性への心理的負担も他の言語よりずっと少なくて済む印象が強いなぁ…

懐古じじいは昔の知識だけで書いてるんだろうけど
いまどきの言語とIDEの組み合わせからみたら
Smalltalkの補完はゴミだよ。
型推論すれば必要ないって分かるものも補完の候補で出てきやがる。
0481デフォルトの名無しさん垢版2018/07/09(月) 22:16:42.56ID:lKdQESUF
いまどきの言語とIDEの組み合わせで事足りるならそれでええやん
なんでSmalltalkなんか使うの?
0482デフォルトの名無しさん垢版2018/07/11(水) 10:25:06.22ID:Di9toeeY
事足りるとか意味わからんw
Smalltalkが下なの!他の言語では可能でもSmalltalkでは出来ないことばかりなの!
0489デフォルトの名無しさん垢版2018/07/24(火) 20:11:42.88ID:uE6euhjZ
滅んだと信じ込んでる無知がうるさいから
わざわざSmalltalk除く細工しこんでるしね
0493デフォルトの名無しさん垢版2018/07/25(水) 10:52:57.76ID:e+MDyKb9
Smalltalkを狙って抜いたというよりは
当初適当な比率で順位決めたらSmalltalkが二位なんかに入っちゃったもんだから
もうちょっとましな結果になるように評価法を適正なものに変えたといったところだろう
0494デフォルトの名無しさん垢版2018/07/28(土) 16:55:03.15ID:/B+yPR+/
普通に考えて外れ値の扱いになるのは仕方ないよ
一部の狂信者以外は誰も使ってないんだから
0496デフォルトの名無しさん垢版2018/07/28(土) 18:57:47.26ID:K993nwvZ
Scratchのこと?あれは良いものだね。
でも最早Smalltalk関係ないじゃん。捨てられてんじゃん。
わざわざ別言語に乗り換えられてるなんてゴミ言語の証拠じゃん。
0498デフォルトの名無しさん垢版2018/07/29(日) 02:00:27.18ID:wDMxHmyD
教育用言語として普及しているのは
スクラッチであってスモールトーク自体じゃないから
やっぱりスモールトークは使いづらいってことじゃん
0499デフォルトの名無しさん垢版2018/07/29(日) 07:43:43.93ID:uE0dE1bw
子供であってもSmalltalk-72のころから常にSmalltalkは人を選んで来たよね
ドローイング/ペインティングツール、回路設計支援ツールとかまで作れたのは一握りの優れた子供だけ
Personal Dynamic Media (1977) にもブルース・ホーン(後にAppleでFinder等の開発に寄与)を含む
5人の子供の名前しかクレジットされていない
0500デフォルトの名無しさん垢版2018/07/29(日) 10:26:22.75ID:tB0h0B46
Scratch2.0の方が便利なのに、何も知らない子供にScratch1.4(Smalltalkで実装されてる)を使うように推薦するSmalltalkerって
マジで害悪だよねw
0501デフォルトの名無しさん垢版2018/07/29(日) 10:45:57.62ID:a6Ijj6Cq
オフラインならScratch1.4の方が断然便利だろ
タブ向けもPyonkeeしか提供されてないし
なんだかんだいったところで結局Smalltalk以外選択肢がないんじゃしかたない
0502デフォルトの名無しさん垢版2018/07/29(日) 11:40:52.07ID:mgWFd1me
Scratch3.0(もうプレビュー版が出てる。タブレットにも対応してるし、スマホでもプレイ可能)が正式リリースされても
SmalltalkerはPyonkeeを無垢な子供に推薦するんだろうなぁ
マジで害悪だよね
0504デフォルトの名無しさん垢版2018/07/29(日) 19:09:40.65ID:KYxUUPyu
そりゃSmalltalkを布教したいという邪な欲望丸出しで
新バージョンへの移行を妨げる分断工作してんだから
疎まれて当然でしょ
子供の教育を考えたら百害あって一利なし
0505デフォルトの名無しさん垢版2018/07/29(日) 22:33:15.18ID:IP0PCozx
>>503
いや単に他の板から逃げて来た知ったかが居るだけだから。(実装の件とか思い込みで言ってるのバレバレだし)
0506デフォルトの名無しさん垢版2018/07/29(日) 23:26:10.09ID:ukosYdvV
反論出来なくなると、こうやって相手にSmalltalkを知らないヤツってレッテル貼るところまでがテンプレだよねw
(まあ死滅したクソマイナー言語を知らなくても不思議は無いし、成功率は高そうw)
0510デフォルトの名無しさん垢版2018/07/31(火) 08:07:44.98ID:hpcufxDD
所詮VBにすら負ける言語だからね
Scratchを別言語でゼロから再実装されても仕方ないよ
0511デフォルトの名無しさん垢版2018/07/31(火) 09:56:14.34ID:KsiqHYAS
>>510
VBに負けているというのは具体的には何について?
よく引き合いにだされるTIOBEインデックス等の話題に上る頻度のこと?
VB以下の言語がすべてVBに劣るわけではないと思うけど…
0513デフォルトの名無しさん垢版2018/08/01(水) 10:19:33.52ID:pTJ8Mj+u
SmalltalkとVBといえば九大病院
Scratchの件と合わせて他言語に完敗した歴史として語り継いでいくべき
0514デフォルトの名無しさん垢版2018/08/01(水) 12:12:18.19ID:SPXi67Wg
>>513
これのこと?

九大病院“つまずき”の真相 「要件定義の甘さ」が尾を引く
http://web.archive.org/web/19990910201442/http://www3.nikkeibp.co.jp:80/WAT2/971212/971212trein01.html

単に日本IBMの思惑とマネージメントに問題があっただけのような気がするんだけど
513はこの件で具体的にはSmalltalkの何が悪かったと語り継ぎたいの?
0515デフォルトの名無しさん垢版2018/08/01(水) 16:36:59.93ID:YzenuR1L
へー、九大病院だけじゃなくて長野オリンピックのシステムもSmalltalkじゃ上手くいかなかったけどVBでは開発出来たんだね

Smalltalkでは開発失敗したけど、VBなら成功したんだね
0516デフォルトの名無しさん垢版2018/08/01(水) 17:10:10.76ID:BTEYoqnj
一方、米IBMは96年開催のアトランタ・オリンピックのシステム開発で
同社のSmalltalk開発ツールであるVisualAgeを使用しなんら支障なかったので
結局、日本IBMの技術力とマネージメントだけが問題なんだよね
0518デフォルトの名無しさん垢版2018/08/01(水) 23:50:04.05ID:De3zxK3m
ていうか、Smalltalkから他言語に乗り換えた話ばかりじゃん
逆に他言語からSmalltalkに乗り換えた例はないわけ?
一件くらいあるだろゴミクソ言語でも
0520デフォルトの名無しさん垢版2018/08/02(木) 07:14:28.33ID:CFrO6zQZ
キミみたいな筋金入りのアンチならケント・ベックがその名をはせた
クライスラー総合報酬(Chrysler Comprehensive Compensation, 通称C3)プロジェクトの失敗
も大好物なんじゃない?http://bliki-ja.github.io/C3/

やれエクストリーム・プログラミングだのやれテスト駆動開発だのと偉そうなことを言ったところで
COBOLで書かれたレガシーシステムのひとつもリプレースできないヘタレ言語
これもぜひレパートリーに入れといてくれw
0521デフォルトの名無しさん垢版2018/08/03(金) 01:18:16.58ID:uU9OaLXG
失敗と言いつつ、実は成功したと思ってる例を出してくるあたりセコイねー
Smalltalkerってホントしょーもねーなw

はるか昔にCOBOLのリプレースに一時的に成功したのが
Smalltalkの数少ない(唯一の?)輝かしい成果ってことは分かったよ
その後またCOBOLに戻っちゃったみたいだけど、オマケで
VB > Smalltalk >= COBOL
って事にしてあげるねw
0527デフォルトの名無しさん垢版2018/08/04(土) 19:27:10.66ID:b5WC5Mv1
この人の主張は

- Smalltalkは個人や小さな規模では楽しいかもしれないが大規模には使えない
- Smalltalkが大規模でも快適であるような嘘の宣伝はやめろ
- うっかり真に受けてCincomに入りいくつかの大規模案件に従事したが時間の無駄になった

と(思い込みによる誤認はあるものの)アンチな理由がはっきりしていて見ていてすごく胸が痛むが

ここに居着いているアンチはSmalltalkを使ったことはおろか恐らくは関わりすらなかったろうに
今はただひたすらSmalltalkが死んだことにしたいだけのために日々戦っていてそれもそれで気の毒だ
0528デフォルトの名無しさん垢版2018/08/04(土) 20:25:36.59ID:FQScXhqI
Smalltalkは分かりやすく底が浅いから
直ぐに大規模開発には使い物にならないって分かりそうなもんだけどな
0533デフォルトの名無しさん垢版2018/08/11(土) 20:05:55.95ID:45fzZyx2
Smalltalkは大規模開発に使えないのは分かった。
だったら小規模開発には使えるの?
0538デフォルトの名無しさん垢版2018/08/12(日) 17:42:54.53ID:LIc9zCtF
具体的な数値を言ったら「あれ?そんなクソザコ小規模を中規模呼ばわりしてるの?Smalltalkerってクソザコだねw」
って言われてしまいそうで怖いです
勘弁してください
0539デフォルトの名無しさん垢版2018/08/13(月) 10:38:28.57ID:9A3JP9yQ
モデルベース開発は「動く仕様書」が必須だから、あとは使い所を決める人のセンスの問題だな。
0540デフォルトの名無しさん垢版2018/08/13(月) 13:38:17.74ID:WcnOdzdd
使い所を決めるセンスがある人が死んだ言語を選ぶわけがないから
Smalltalkによる開発は必ず失敗するってことだね
0541デフォルトの名無しさん垢版2018/08/13(月) 15:31:58.13ID:sJwTnUZU
自己定義してて、コードに全部実装書いてあるSmalltalkやっぱ偉大だな… 哲学的な問にも応えてくれる
0542デフォルトの名無しさん垢版2018/08/13(月) 19:38:04.63ID:MscllZ9T
>>541
まあ元々、設計と実装の分離ってのは、初期の頃の「やり直しのコストが高い」時代のバッドノウハウだからねえ。
今でもSI時代のウオーターフォール方式を引き摺ってる所は多い。
0543デフォルトの名無しさん垢版2018/08/13(月) 20:08:23.74ID:H69VLQ/w
ここんところSmalltalk-72で遊んでいるんだけど
https://lively-web.org/users/Dan/ALTO-Smalltalk-72.html

Smalltalk-72の実装がブートストラップくらいしか自身で記述されていないのが辛い
http://www.fit.vutbr.cz/study/courses/OMP/public/software/sqcdrom2/Packages/Languages/Smalltalk72/ALLDEFS

Squeak Smalltalkで書かれたのもいちおうあるけど細かいところは端折っているっぽい
http://wiki.squeak.org/squeak/989

すべての言語処理系がSqueakみたいにセルフホスティングされていると学習がすこぶる捗るんだけどなぁ…
0547デフォルトの名無しさん垢版2018/08/17(金) 07:11:53.61ID:lJ8Jpbwn
Windows1.0を起動できたって喜ぶのと同じレベルだけど、そういう非生産的なのも趣味としては良いよね
0548デフォルトの名無しさん垢版2018/08/17(金) 10:14:46.01ID:QKG2yL7s
PolyMathOrg の libtensorflow-pharo-bindings を macOS と Windows とで試してて気になったんだけど
GitHub からのクローン後のコンパイルが macOS版 Pharo だと一瞬なのに
Windows版だとかなり時間がかかるのはそういうもの?
0556デフォルトの名無しさん垢版2018/10/23(火) 03:44:46.09ID:vPALKJYy
未だ開発続いてたんかっ
0559デフォルトの名無しさん垢版2018/11/21(水) 02:12:31.81ID:MQCFdf+c
http://mevius.5ch.net/test/read.cgi/tech/1538096947/385
>このスレは不特定言語スレだけど
>高速性ならC/C++/Rast
>コンパクト性の追求ならSmallTalkとかRubyとか
>RADならJavaとかPythonとか定番固定化。
>既にもうある程度少数特定言語スレになりつつあ
>る希ガス

ほぼ一人の活躍のおかげでSmalltalkの評価がむっちゃ高い
0560デフォルトの名無しさん垢版2018/11/27(火) 03:49:49.78ID:p7xk4LUx
Advent Calendarの季節だよもん
0561デフォルトの名無しさん垢版2018/12/13(木) 03:03:42.22ID:1+4HnLeF
オブジェクト指向のネタスレでSmalltalkの話でてたな
ここでももっと話せよ
0562デフォルトの名無しさん垢版2018/12/13(木) 06:54:33.26ID:ilwXN+sT
他言語の人たちが珍しがる話でもSmalltalkだと語るまでもない事だったりするし…

どんな話がしたいの?
0566デフォルトの名無しさん垢版2019/01/03(木) 17:05:25.37ID:kOy6SfSN
Visualworks 8.3でずっと止まってると思ったら
次期バージョンのV9を準備中なのな
Objectworksと合体するとかスライドショーに書いてたがどうなることやら
0570デフォルトの名無しさん垢版2019/03/30(土) 07:49:05.09ID:ZNjuEFZZ
Design patterns Smalltalk companion の電子書籍って出てますか?それと同じような本でお勧めを教えてください
0572デフォルトの名無しさん垢版2019/05/15(水) 03:00:15.00ID:+0s9mSlG
VisualWorksはPUL版の提供にさらに制限くわえてきたね
8.3.2のlatest欲しかったらREVライセンス買えってさ年間500ドル
そもそもセキュリティライブラリもずっと同梱しないままだからWEB関連開発できないし
一体この先どうするつもりなんだろうね

ライブ変換の入力はバグって使い物にならないしまったく・・
もういいかなって気がしてくるってもんよ
いいけどさ、払ってもでも年間500ドルはさすがにないわ
せめて100ドルにしてよ
0575デフォルトの名無しさん垢版2019/05/27(月) 22:49:18.44ID:ouh7y0e1
いや、高くて誰も使ってくれないからいったん無料にして ←Mathematicaイマココ
それだとやっぱ駄目だから制限つける ←VisualWorksイマココ
って一連の流れの通りかと
0576デフォルトの名無しさん垢版2019/05/28(火) 01:46:38.96ID:i/IgkCty
学生用のライセンスも作ったからPULは単なるお試し版扱いにしたんだろうね
ただこのライセンスも制限あって北米の学生じゃないと受けられないとかありそう
0577デフォルトの名無しさん垢版2019/06/06(木) 23:36:58.34ID:9FotMbAJ
無料にしたって新規ユーザなんて絶対に増えないんだから
いま居る物好きが年老いて死滅するまで
高値で売りつける以外の道はなかろう
0578デフォルトの名無しさん垢版2019/06/07(金) 00:59:26.10ID:fLOoWLFE
 Unityみたいなライセンス形態にした方が良かったと思うけど。
商用利用の場合、儲かっているユーザーから金を取る。
 
せっかくいいプロダクトなのにもったいないな。
0581デフォルトの名無しさん垢版2019/07/02(火) 19:11:06.42ID:kPbWmywt
なんか、バックテストで言語どれがいいか調べててRとPyとexcelつかってるんたけど、なんかおもしろいのがないかquoraみてたらsmalltalkってのを一時間前に知りました。
pharoをいれればいいの?
0583デフォルトの名無しさん垢版2019/07/02(火) 20:55:44.45ID:3pKxjF9d
英語が苦にならないのなら、Pharo 7がおすすめ。

PharoLauncher をダウンロードしたら、
左側のリストで
WindowsならPharo 7.0 - 32bit、
それ以外なら Pharo 7.0 - 64bitをダブルクリック。
OKしたら右側に同じ名前のアイテムが落ちてくるから、
それをダブルクリック。
これでPharo 7が開く。
Welcomeと書いてあるウィンドウの左側のリストで
Learn Pharo を選んで、右側の ProfStef go をクリック。
するとチュートリアルが始まる。
これに従っていけば、言語の基本やIDEの基本操作がわかるようになっている。
0586デフォルトの名無しさん垢版2019/07/03(水) 18:15:46.20ID:tz/1dhKN
チュートリアル全部終えたよ!

Pharo、R-guiっぽい感じ(マウスで選択してctrl+○で実行)もあるけどね。

言語は独特やなぁ。

pdfのマニュアルもダウンロードして流し読み。

Slideshareもみてる。世界的な建設車両の個人売買サービスがこれで動いてるらしいけど、ブロトタイプはsmalltalkでさくっと作ってプロダクションはJavaScriptに書き換える、そういう使い方が便利なの?
0592デフォルトの名無しさん垢版2019/07/14(日) 16:52:43.74ID:9TcOEn5q
おお!SKK使ってるから試してみる
ありがとう!

PharoのVMは裏でSDL使ってるのかな
頑張ったらいけそうな気もする
0594デフォルトの名無しさん垢版2019/07/16(火) 12:06:15.35ID:GVq3IzjH
以前、Squeakで変換ウインドウの位置を適切にするとかやっているブログを見たことがある
はずなんだけど、いま探したけど、見つけられなかった。
最近はもうSqueakもPharoも追っかけていないんでわかんないんだけど、まだSqueakでも
インライン入力はできないですか?
0596デフォルトの名無しさん垢版2019/07/17(水) 20:47:07.22ID:usqjQCfW
VMのソース見たけどWindows版はIMEのことは丸無視ですな...
Squeakも同じOpenSmalltalk-vmみたいだから挙動は同じでは
0600デフォルトの名無しさん垢版2019/07/19(金) 03:18:57.97ID:7p9FEnw0
>>597
VisualWorksは今回のPUL版制限で自らとどめかと
Pharoに流れるってことも考えにくいからSTコミュはさらに縮小という結果に
0602デフォルトの名無しさん垢版2019/07/19(金) 05:31:21.99ID:7p9FEnw0
そもそもあれだな
PUL版からセキュリティライブラリ抜くようになって随分経つから
とっくに終わってたのかもしれないな・・
0603デフォルトの名無しさん垢版2019/07/19(金) 06:55:00.67ID:R0f6c1Ha
>>601
これそうなの!?サイズがあまりに小さかったんでスルーしてた。
サイトの説明だとVisualStudio入れてソースからビルドしろって書いてあるし。
0610デフォルトの名無しさん垢版2019/07/24(水) 21:25:52.68ID:hcO8HWw6
あるクラスの定義全体をソースファイル形式でざっと見るような機能はないのかしら。
エクスポートしたらソース形式になるのは分かるんだけど。
ちょっと他のクラスを参考にしながら書くみたいな時にBrowserだと見える範囲が狭くてマウス操作が多くなるなぁと思うのですよ。
0615デフォルトの名無しさん垢版2019/08/04(日) 08:54:01.85ID:MLWItttP
Pharoに限らないかもしれないけど、プロトコルって実行時には何か意味あるの?
メソッドの整理みたいなコーディング上の機能だけ?
例えばprivateにすると赤い印がついて意味ありげになるけど、普通に呼べるし。
0617デフォルトの名無しさん垢版2019/08/04(日) 20:10:53.99ID:xdRifs7c
>>615
Monticello(SCM)的にはパッケージに含まれないクラス以外に定義されたメソッドを
パッケージに含める目印に流用している(つまり意味はある)けど実行時ではないからノーカン?
あと、メタプロ的には実行時に利用可能な情報であるとか
まあともあれ>>614の言うとおり通常は単なる分類
あるいは「メソッド」というオブジェクトの属性の一つ
みたいな感じ
0619デフォルトの名無しさん垢版2019/08/05(月) 06:37:26.58ID:UQQZLxjX
>>616
>>617
ありがとう。

>>617が言うパッケージに含まれないクラスを...ってのがよく分からないけどMonticello自体よく分かってないので勉強してきます。
0620デフォルトの名無しさん垢版2019/08/05(月) 07:03:30.02ID:VCxFmZj5
Dolphin Smalltalk 7.1、Windows 10日本語版で起動しないな
VirtualBoxにインストールしたWindows 10英語版だとあっさり起動した
7.1から追加されてるコードページの処理とかがおかしいのかねぇ
0624デフォルトの名無しさん垢版2019/09/10(火) 21:52:30.97ID:7ljGocjI
>>622
教わる側もバカじゃないし、いまは少しググれば
「あれ?なんでこんなオワコン教わってんの?意味なくね?」
って気づいちゃうからね
0631デフォルトの名無しさん垢版2020/03/05(木) 20:12:49.08ID:h922Dn8C
>>586
>ブロトタイプはsmalltalkでさくっと作って
>プロダクションはJavaScriptに書き換える

まあそういうやり方が現実的だろうな?
ライブラリやドキュメントや書籍とか
情報の充実度がぜんぜん違うからな!
0633デフォルトの名無しさん垢版2020/03/08(日) 06:40:28.40ID:DSxgKaCu
VisualWorks 9.0がやっと出た
予定通りObjectStudioと統合したバージョンになったようだが
いつものようにPUL版は使えないんだろうな

一つだけいいことがあるとすれば8.x系でmacOSの3〜4世代前くらいまでしか対応できてなかったのが
ようやくCatalina対応したってことくらいかな・・
ライセンスやセキュリティライブラリの問題が厳しいのは相変わらずだろう

まあ今更ではある
0635デフォルトの名無しさん垢版2020/03/09(月) 00:53:15.95ID:cG6nKxlp
どうもV9から日本語版というのがなくなるっぽいねえ
大丈夫なのかね8.3とかライブ変換ON/OFFどっちでもデバッガに落ちるくらい
日本語扱えたもんじゃなかったが

UTF8/16も問答無用でCJK互換漢字が正規化される関係でファイル名をそのまま扱えないこともたまにあるが
これV7くらいからずっと引きずってる問題でリポートはしてあるけどファイル名をそのまま扱おうとすれば手を入れるしかなかった

CatalinaからはCJKをファイル名に使うことはそもそもできないようになったので
自動的に解決ってことにはなるんだけど
0638デフォルトの名無しさん垢版2020/05/06(水) 21:44:34.44ID:RV+vYD2y
 本来はSmalltalk / Prolog / Haskell / Lispみたいなパラダイムを具現化した言語は大学でちゃんとやった方が良いかもね。
 マーケティングを考えるとPythonとかになるんだろうけど。
0647デフォルトの名無しさん垢版2020/10/19(月) 18:41:20.01ID:DMLND2co
スレチかもしれないけど
、Python でクラスブラウザ風に使えるプログラムないかな?
0655デフォルトの名無しさん垢版2021/07/29(木) 01:21:26.01ID:AhDGNIk/
PharoはUIがどうしようもないから触る気になれない
native UIになるって話は前あったけど進んでるのかね
0662デフォルトの名無しさん垢版2021/08/28(土) 08:04:48.39ID:DDhgSsMa
VisualWorks9.1に年1000ドル払ってる人いますか?
0663デフォルトの名無しさん垢版2022/05/09(月) 14:32:26.87ID:uczkeUBf
Gemstone/SをDevKit_homeでインストール試したけど失敗しちゃう
0664デフォルトの名無しさん垢版2022/05/09(月) 17:47:07.10ID:Et2mVjIH
あれは古すぎるからな
mojaveで動かなくてVMでsnow leopard環境でやったらインストールできたときは笑うしかなかった
0666デフォルトの名無しさん垢版2022/06/10(金) 23:36:39.48ID:qJzp6dNt
>>663
>Gemstone/SをDevKit_homeでインストール試したけど失敗しちゃう
これhostsに書いたら解決しました。
0667デフォルトの名無しさん垢版2022/07/25(月) 20:06:59.26ID:RliBxsdw
『Smalltalkでは、オブジェクト同士はメッセージでやり取りを~』
というのはよく見聞きするけど、オブジェクトを「互いにメッセージを送信するもの」と考えると、
どのようなメリットがあるのか良くわからん・・・

結局は、『メッセージ送信=メソッド呼び出し』じゃないのん・・?
0668デフォルトの名無しさん垢版2022/07/25(月) 20:46:56.32ID:ScH/nWNp
メッセージ送信をメソッド呼び出しとして処理系つくったんだから
そりゃそうというか結局の意味がわからん(わかるが系譜をかんがえてみ)
0670デフォルトの名無しさん垢版2022/09/30(金) 02:05:46.45ID:WaKWt514
一番安いstandard supportで$2295/年 だけど・・
trialバージョンがフルバージョンならともかく何にも書いてない
win/linux版しかないみたいね
0671デフォルトの名無しさん垢版2024/01/14(日) 23:02:09.20ID:e1PHIfVQ
squeakから家庭内ネットワークのサーバにtelnet(またはssh)接続して
オートパイロットしたいのですが、どこかにログインして適当なコマンドを
入力して出力を取り込むサンプル無いもんでしょうか。linuxでいうexpectみたいな。
レスを投稿する


ニューススポーツなんでも実況