Smalltalk総合 Squeak Pharo

1デフォルトの名無しさん2013/02/16(土) 14:10:29.12

2デフォルトの名無しさん2013/02/16(土) 14:11:50.11
人気ないみたいだけど
Smalltalkは現役だし
スレがないとまずいっしょ

3デフォルトの名無しさん2013/02/16(土) 14:13:04.51
http://smalltalk.smalltalk-users.jp/

こんなサイトが・・・
エイプリルフールの残骸らしい
ちゃんと掃除しとけよw

4デフォルトの名無しさん2013/02/16(土) 14:13:44.81
しかし超重要言語なのに極端に人気ないよな
D言語より書き込みないってどうなの

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

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

                  京都大学霊長類研究所

6デフォルトの名無しさん2013/02/16(土) 23:29:10.97


日本語Squeak
http://sourceforge.jp/projects/squeak-ja/

自由自在 Squeakプログラミング PDF版
http://swikis.ddo.jp/squeak/13

Seaside へ GO!! ― 楽々サーバサイド Web プログラミング ―
http://www.ogis-ri.co.jp/otc/hiroba/technical/seaside/

umejavaさん、様様ですわ。

7デフォルトの名無しさん2013/02/16(土) 23:42:56.84
>>1

8デフォルトの名無しさん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/

9デフォルトの名無しさん2013/02/17(日) 14:11:15.22
Smalltalkは興味はあったけど仕事にならんかった
つか、廻りの誰も知らんかった

10デフォルトの名無しさん2013/02/17(日) 20:34:48.78
オブジェクト指向を鍛えるにはひたすら便利だと思う。実行しているアプリをインスペクトして
オブジェクトグラフを書いて、各クラスの役割を考えるのはかなり役に立ったし。

11デフォルトの名無しさん2013/02/17(日) 21:37:39.66
こういう使い方もあるね

分析・設計ツールとしてのSmalltalk
http://www.sra.co.jp/public/doc/GSletter/vol.26/smalltalk/smalltalk.pdf

12デフォルトの名無しさん2013/02/18(月) 00:07:01.38
結局、よくわからんかった。Squeakの本とか読んで試してみたけど

何でも出来るのかもしれないけど、「作法」?みたいなのがまったくわからんかった

13デフォルトの名無しさん2013/02/18(月) 00:56:02.60
よく分かっている人と1回ペアプロしたら、独学のときのいろんな疑問が氷解した(ステマ)

https://twitter.com/umejava/status/302392947759013888

14デフォルトの名無しさん2013/02/18(月) 01:18:06.80
>>12
具体的にSmalltalkでどんなことを試してみたかったかを
書いてくれればなにか手助けできるかも

15デフォルトの名無しさん2013/02/19(火) 23:05:27.09
>>12
良いサンプルプログラムがあると良いんだけどね

Smalltalk、「クラスライブラリ」のサンプルとしてはとても良いと思うけど
「アプリケーション」を書こうと思うと「なんか違う」感が強いね
「隅から隅まで知ってないとダメ」見たいなノリも嫌い

16デフォルトの名無しさん2013/02/20(水) 01:15:12.85
ノリとか以前に、そもそもそういうコンセプトで作られた環境だから仕方がない。

Smalltalkの底を流れる設計思想
http://web.archive.org/web/20041016084842/http://marimpod.homeip.net/chomswiki/24#

17デフォルトの名無しさん2013/02/20(水) 07:44:12.73
箱庭

18デフォルトの名無しさん2013/02/20(水) 08:54:35.03
>>15
具体的にはどういうところが「なんか違う」と思った?
Smalltalkはオブジェクトの協働というそのコンセプトから、アプリケーションソフトという概念が希薄で
環境内でアプリに見えるものも、使いやすいようにそう見せているだけだったりするのだけれども
そういうことについてだろうか。あるいはイメージベースによって処理系ごと永続化されていて、
アプリケーション配布のときに余計なものを含めないといけないことに不自由さを感じた?

19デフォルトの名無しさん2013/02/20(水) 08:57:51.54
>>17
「箱庭」というのは言い得て妙かも。
そもそものスタートがアラン・ケイの「ぼくのかんがえるさいきょうのOS」の
試作環境だから。

20デフォルトの名無しさん2013/02/20(水) 21:24:14.37
MessageCaptureってなんでわざわざnewせなあかんの?
MessageCaptureに直接Message送られるようにしとけばよかったんちゃうん?
ProtoClassをMetaClass objectが直接継承してないから?

21デフォルトの名無しさん2013/02/20(水) 22:51:24.85
>>15
開発環境自体がサンプルやからね。

22デフォルトの名無しさん2013/02/21(木) 14:36:48.59
ネット調べると、どう書くorgでも一人頑張ってたid:suminしかいないイメージ

いにしえの日本語化関連の人たちとかは脱Smalltalkしたのか
まあどのソフトでも日本語化関わる人たちってだいたいいなくなるよね
ユーザーとは違うんだろうな

23デフォルトの名無しさん2013/02/21(木) 15:40:12.10
Smalltalkって何がすごいの?
ライブラリがしょぼくなったRubyだよね?

24デフォルトの名無しさん2013/02/21(木) 15:53:09.31
Smalltalk入門 (全16回) - プログラミングならドットインストール
http://dotinstall.com/lessons/basic_smalltalk

25デフォルトの名無しさん2013/02/21(木) 16:03:58.90
>>23
Rubyよりはイントロスペクションが強力で、デバッグ時の静的・動的トレースが楽ちん。
あと目的によってはユーザーが気ままに処理系をいじれるってイメージがあるけど

26デフォルトの名無しさん2013/02/21(木) 16:07:27.28
>>23
> ライブラリがしょぼくなったRubyだよね?
このたとえがわからん。Rubyってそんなにすごいの?

27デフォルトの名無しさん2013/02/21(木) 19:36:24.37
ユーザが多い分使えるライブラリは多いんじゃなかろうか
そんな事言ったら fortran 最強だけど

28デフォルトの名無しさん2013/02/21(木) 20:38:14.94
>>25
それってRubyの潤沢なライブラリを捨ててまで使いたくなるものなんでしょうか??

29デフォルトの名無しさん2013/02/21(木) 21:06:46.77
Rubyってそんなにライブラリーあるのか?
総量からするとSqueakの半分も無いんじゃないか?

30デフォルトの名無しさん2013/02/22(金) 00:36:01.88
>>18
>アプリケーション配布のときに余計なものを含めないといけないことに不自由さを感じた?

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

昔のQKS Smalltalkだったかな?開発環境とか不要なクラスを除外したイメージが書き出せますってんで買ったけど
イメージファイルが1.44MBのフロッピーに収まらなかったんでガッカリ来た

31デフォルトの名無しさん2013/02/22(金) 17:16:01.63

32デフォルトの名無しさん2013/02/22(金) 17:24:27.69
またこうしてRuby使いがいらぬ恨みを買うのであった
自重してくだしあ

33デフォルトの名無しさん2013/02/22(金) 21:28:37.84

34デフォルトの名無しさん2013/02/22(金) 21:29:29.57
rubyって、REPLに先祖帰りしたSmalltalkでしょ?

35デフォルトの名無しさん2013/02/22(金) 21:40:06.99
>>31
そのライブラリーだけじゃSmalltalk環境一つ作るだけでも
相当追加でコード書かなきゃならんだろう

36デフォルトの名無しさん2013/02/23(土) 00:32:53.14
まず大前提として、Smalltalk環境なんてゴミは
求められてないって理解しようね

要らないもの作るためのライブラリが揃ってないのは
誰も必要無いものは作らないってだけの話

37デフォルトの名無しさん2013/02/23(土) 00:44:46.28
使う人がいるからいっぱいSmalltalk環境があるんだろ

38デフォルトの名無しさん2013/02/23(土) 00:52:34.33
正規表現ライブラリーが100個あったりとか、
fcgiをラップするライブラリーが100個あっても仕方ないんだけどね。
1000ライブラリーがあるならせめて700通りの問題に対応できなきゃ
ゴミじゃね?50個ライブラリーを集めたら10000行掛かった
プログラムが20行程度、むしろコードは一切書かず数回の
クリック操作で完成するとかじゃないと嬉しくはないなぁ。

39デフォルトの名無しさん2013/02/23(土) 03:19:08.02
>>36
つまり、君の大好きなRubyには、Smalltalkのそのゴミがごとき環境を
経ずとも必要とされる機能が通過不足なく用意されているんだよね。
それはよかったじゃん。で、ここにはいったい何しに来たんだい?

40デフォルトの名無しさん2013/02/23(土) 07:26:20.15
>>36
で?そのゴミからの返答を求めているお前の存在価値はどこにある?

41デフォルトの名無しさん2013/02/23(土) 07:40:15.84
Smalltalk環境ってOSの上にOSモドキ作ってるだけだからなぁ
普通にOSの機能使ってれば要らないよね

42デフォルトの名無しさん2013/02/23(土) 07:44:23.49
 Ruby信者ってキモイな。こんなSmalltalk使いのマッタリスレにまで来て、
自言語の優位性を誇示しにくるのか?

43デフォルトの名無しさん2013/02/23(土) 07:57:26.11
どんな言語/環境でもOSへのI/F持ってるよね。
OSへのI/Fをその言語/環境のパラダイムでモデル化してるよね。
結局、どんな言語/環境でも内部にOSモデルを持ってるよね。

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

で、>>41さんが大好きなRubyはどっちなんだい?

44デフォルトの名無しさん2013/02/23(土) 08:00:55.03
ウンコを踏んで歩くヤツもまた迷惑

45デフォルトの名無しさん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の最良の部分を手にしているのだ。

46デフォルトの名無しさん2013/02/23(土) 13:51:10.85
C#が見ているOS .Net Framework
Javaが見ているOS JRE
どっちもSmalltalkの真似事じゃあるけど十分普及してるわな

てか、GUIが気に入らんだけならDolphinみたいに自分で表示させるようにした
GUIかつ、OSネィティブデザインのGUIしか表示させないようにする手もある。

47デフォルトの名無しさん2013/02/23(土) 14:48:09.78
>>43
ダン=インガルスがそんな感じのこと言ってたな。
OSの機能は言語に内包されるべきだとか何とか。

48デフォルトの名無しさん2013/02/23(土) 21:11:46.87
.net も JVM も複数言語で使えるのが人気の秘訣
引きこもりSmalltalk環境とは違いますから

49デフォルトの名無しさん2013/02/24(日) 10:41:15.44
興味あるから試してみたいんだけど、
既にあるコード資産を活かしつつ、徐々にSmalltalkに移行できるかな?

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

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


一応GNU Smalltalkなら可能らしい所までは分かったんだけど、
何かニセモノ扱いっぽいので、ちょっと躊躇してしまう……

50デフォルトの名無しさん2013/02/24(日) 15:14:50.34
その手の用途ならheadlessとかOSProcessとかで調べたら
色々出てくると思う

51デフォルトの名無しさん2013/02/24(日) 19:55:32.31
ありがとう。その単語で検索したら
知りたい内容のStackoverflowのページが見つかった

52デフォルトの名無しさん2013/03/02(土) 06:03:54.07
新スレ立ってる!と思ったら喧嘩売られててワロタ

53デフォルトの名無しさん2013/03/03(日) 11:45:49.86
シェル端末みたいなSmalltalk環境って無いんですかね。
bashやzshみたいに日常作業をこなしやすいやつ。

54デフォルトの名無しさん2013/03/03(日) 12:31:45.86
GNU SmallTalk

55デフォルトの名無しさん2013/03/03(日) 13:39:52.00
せめてself inspect.できたり
self help.できたり
ファイル名補間できるものが欲しいです。

56デフォルトの名無しさん2013/03/03(日) 14:34:44.13
ゴメンhelpはcommentの間違い

57デフォルトの名無しさん2013/03/03(日) 16:05:59.40
>>55 個人にどうこう言うつもりはないけれど、こういうのよく見かけるので書くけど、
(すでに好きで制約があっても使いたいととかではなく、そもそも使ったこともないのに)
シェル端末だけで使えるならSmalltalkしたいけどって人は、例えば (3/4) inspect とかが
どんな風に出力されればいいと思うのだろう… ちょっと理解に苦しむ。
denominatorやnumeratorとかのインスタンス変数の値を表示するところまでは
いいとして、その書き換えは(普通はもちろんそんなことしないけど、インスペクト
しているのが開発中の自作オブジェクトだったりで仮に必要なら)インスペクターは
介さずに直接 instVerNameAt:put: とかでやりたいということ? さらに、
インスペクターはある種アプリケーション様の振る舞いをするから別ウインドウに
保持しておきたいよね。そういうのはEmacsやvimみたいなエディタを介在させて
インスペクターの起動毎にペインやバッファを切るということだろうか。
もちろん、そういうニーズがあるのなら作るし作るべきなのがSmalltalkのスタンスだけど
そんな不完全なものでSmalltalkを学んだり使ったりして何が嬉しいのか、誰か説明して!w

58デフォルトの名無しさん2013/03/03(日) 17:02:30.98
シェルとして使いたいならinspetの出力とかはgstの形式で満足だよ
用途は (File path:'/home') list display.とかでbashを置き換えたいだけ
で。できれば自分でシェルオブジェクトを書換えて
タブ補完とかしたい。
そんでシェルスクリプトをSmalltalkで書いてしまいたい。
さらに出来るならDBusの呼出をメッセージ式にしてしまいたい。

59デフォルトの名無しさん2013/03/03(日) 21:12:44.30
後でわかることだが
これがあの有名なシェルを作ってしまうプロジェクトの始まりであった

60デフォルトの名無しさん2013/03/03(日) 21:13:26.93
smashですね。わかります

61デフォルトの名無しさん2013/03/03(日) 21:37:26.47
>>58
それはもうすでに好きで、制約があっても使いたいパターンですよね?

62デフォルトの名無しさん2013/03/04(月) 18:34:05.93
UNIXも飽きたからSmalltalk的環境が普及して欲しい。
その時の言語がRubyでも構わんよ。

63デフォルトの名無しさん2013/03/06(水) 00:27:26.06
実行環境入れるのも面倒だから
まずは日常会話に取り入れていけばいい
例えば嫁さんとのメールとか

かおり 買った?: おかず.
俺 後で買うよ: 夕方頃.

64デフォルトの名無しさん2013/03/06(水) 23:25:00.67
嫁がいない

65デフォルトの名無しさん2013/03/09(土) 13:00:35.34
SqueakでもPharoでもVisualWorksでもいいから、好きなSmalltalk処理系をビジュアルシェルとして使えばいいじゃん?

66デフォルトの名無しさん2013/03/09(土) 19:32:27.88
起動が重い上他との親和性が低いからなぁ
sshで使った時、他のshellと交換できるぐらいの
可搬性は欲しいな

67デフォルトの名無しさん2013/03/09(土) 20:12:40.50
うんこOSモドキに望み過ぎだろ

68デフォルトの名無しさん2013/03/10(日) 09:19:14.10
はあ?Squeakが重いか?

よくいるよね、20年前のイメージで重いとか遅いとか高いとか言っちゃう人。

69デフォルトの名無しさん2013/03/10(日) 09:20:37.55

70デフォルトの名無しさん2013/03/10(日) 10:04:06.71
>>68
端末としてつかうにゃ起動終了が重いよ。
gnome-terminalやKonsoleの10倍以上遅い。
ちょっとした作業のためにこれだけ待たされるのは辛い。

71デフォルトの名無しさん2013/03/10(日) 10:13:43.04
>>70
え?
ウィンドウマネージャとしてX.orgを起動してからずっとSqueakを使うんじゃないの?
どうしてgnomeとかKDEなんて必要なの?

72デフォルトの名無しさん2013/03/10(日) 13:37:07.11
面白い言語で案件があるのなら使いたいけど、いろんな技術トレンドの元ネタ的存在にも
関わらず商業的に失敗したな。後続の言語に美味しい所を持って行かれたというか。音楽
でいう既に廃盤済みの知る人ぞ知る名盤という感じ。

73デフォルトの名無しさん2013/03/10(日) 13:42:41.96
むしろ最初は商業ベースがメインだったんだよ
ただ使い物にならず他言語に流れた
いまは一部の物好きの玩具

74デフォルトの名無しさん2013/03/10(日) 15:34:55.91
一部の物好きのリストがこれ
ttp://smalltalk.cincom.jp/main/successes/

75デフォルトの名無しさん2013/03/10(日) 18:56:31.95
>>74
さすがに、そのリストは少なすぎる
普通に使われてる言語はそんなもんじゃない

76デフォルトの名無しさん2013/03/10(日) 21:28:05.79
>>71
vlcやらvimやらOperaがSqueak上にあればええけど
現実はそうじゃ無いじゃん。
Squeak上にLinux移植できたなら話は変わるだろうね。

77デフォルトの名無しさん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 なためか日本語も大丈夫っぽい

78デフォルトの名無しさん2013/04/01(月) 00:03:25.79
2.7のときに大学でsqueakでHTTPサーバを作って遊んでたのだが、そのときのソースを流用できたらいいなぁ

79デフォルトの名無しさん2013/04/01(月) 02:04:54.84
squeakは環境全部が一体だからサーバ系は致命的なバグを混入させてしまったときに、次にそのsqueakそのものを起動できなくなるようで怖い

80デフォルトの名無しさん2013/04/02(火) 01:25:56.27
All in one をダウンロードしたらexeファイルがあるフォルダにimageファイルがなかったからあせった

81デフォルトの名無しさん2013/04/09(火) 02:29:30.92
Squeakって、もしかして Windows7 は対応してなかったりします?
起動した直後にエラーが出るんですけど

82デフォルトの名無しさん2013/04/09(火) 02:34:00.37
>>81
普通に使えている。
エラーメッセージはちゃんと読んだのか?

83デフォルトの名無しさん2013/04/09(火) 23:06:41.76
よく見たらzipファイルの解凍に失敗してた
解凍ソフト変えて解凍したらとりあえずエラーなしで起動できた

84デフォルトの名無しさん2013/04/10(水) 01:13:18.08
たしかに all in one + 解凍レンジだと警告が出る

85デフォルトの名無しさん2013/04/12(金) 23:23:12.08
ためしたいけど、SqueakとPharoの違いが分からないです

86デフォルトの名無しさん2013/04/13(土) 12:55:58.53
>>85
分からないうちは、日本語化されたSqueakを使っとけ

87デフォルトの名無しさん2013/05/15(水) 00:06:22.07
入門書でお勧めってある?

「Smalltalkで学ぶオブジェクト指向プログラミングの本質」は、
若干宗教臭いのと、このコード入力して実行してみてで説明が終わってる部分が多くて、
今一だった

88デフォルトの名無しさん2013/05/15(水) 04:49:42.73

89デフォルトの名無しさん2013/05/15(水) 20:26:42.75
>>87

サクサクSmalltalk―オブジェクト指向のアートとサイエンス
実際の所、smalltalkはコードからしか学べない。

90デフォルトの名無しさん2013/05/15(水) 20:45:29.52
「Smalltalkベストプラクティス・パターン - シンプル・デザインへの宝石集」が良かったが
入門書ではないかもしれん

91デフォルトの名無しさん2013/05/16(木) 02:13:59.81
>>88
これは読み易そう
無理してVisualWorksやPharo使うより、素直にSqueakからはじめたほうが、楽かもしれませんね

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

>>90
長く使えそうだったので以前、購入しました
斜め読みした後、積読中ですが…

92デフォルトの名無しさん2013/06/03(月) 08:37:35.34
ExterenalStream系にbinary送って
StreamEncoderにbigEndian:false

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

もうちょっとこの辺直してくれよ・・

93デフォルトの名無しさん2013/06/14(金) 03:36:25.67
パソコン初心者向けの本か、専門家向けだけど古くてタイプライターで文字打ったような本のどちらかしかない印象

94デフォルトの名無しさん2013/06/16(日) 02:21:25.37
PbEがある

95デフォルトの名無しさん2013/06/16(日) 22:22:11.21
念のため
http://pharobyexample.org
http://forum.world.st/Squeak-ja-4663-quot-Pharo-by-Example-quot-td4661717.html

最新版を使うより、
チュートリアルと同じバージョンで試すことを強くおすすめ
http://pharobyexample.org/image/PBE-OneClick-1.1.app.zip

96デフォルトの名無しさん2013/06/21(金) 03:40:55.90
本屋で売ってるなら買いたいのだが

97デフォルトの名無しさん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なダイアログを出すにはどうしたらいいのでしょうか?

98デフォルトの名無しさん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

99972013/07/25(木) NY:AN:NY.AN
なんだそうでしたか。>98
コンテントはあるのが普通なので、それなら問題ないですね。
ありがと。

100デフォルトの名無しさん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です。

101デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>100
例によってPharoは使っていないのでハズしていたらごめんなさい。

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

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

具体的には Paragraph の composeAll メソッドを探し、multiComposeLinesFrom: という
キーワード部分を composeLinesFrom: に書き換えて、黄ボタンメニューから Accespt (s) します。

102デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
ありがとうございます。>>101
TranscriptやWorkspaceを実際に開くと、単語区切りで行を改めてくれているんです。

英単語だけのダイアログの例を出しましたが、
もちろん日本語のダイアログを出したいこともあるので、
Paragraph>>composeAllを書き換えるべきかも、もう少し考えてみます。

103デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
お役に立てずすみません。Pharo 1.4 ですよね?

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

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

いずれにせよ、単語区切りで折り返すか否かは Paragraph が
何か挙動を代えている可能性が高いので、そこを意識して
折り返さない LongMessageDialogWindow と折り返す StringHolder など
とでコードや設定の違いを調べてみると、答えが見つかるかもしれません。

1041002013/08/20(火) NY:AN:NY.AN
Paragraphは単語区切り作業をScannerに委譲しているはずですが、
委譲先を選ぶ際にどうも筋の悪いことをやっているように見えて、あきらめました。
実のところ、Pharo2.0を試したら、>>100のダイアログは簡単に単語区切りになったので、
移行しようと思ってます。
ありがとうございました。


なお、再度Pharo1.4を取り直して試しましたのですが、
私のところだとWorkspaceやTranscriptは何もせず単語で区切ってくれます。
MacでもWindowsでも。
Settings等を何もいじらない、取ってきたそのままの状態で試しました。

105デフォルトの名無しさん2013/11/08(金) 08:11:09.53
Smalltalkで書かれたnative用のCompilerと
Smalltalkで書かれたvmのSourceて無いの?

Pharo当たりで、Nativeで動くVMを生成して、
そのVMでPharoを動かしたい。

106デフォルトの名無しさん2013/11/08(金) 08:17:37.26
>>79
本番稼働前にimageのバックアップとっとけばいいだろう。

107デフォルトの名無しさん2013/11/08(金) 08:35:32.64
VMMakerでVM作れるんだな

108デフォルトの名無しさん2013/11/19(火) 23:08:13.53
>>105
自分で何を言ってんのかわかってんのか?

109デフォルトの名無しさん2013/11/20(水) 06:41:00.61
>>108
VMMakerで作れるcog vmみたいなもんはないかって話です

110デフォルトの名無しさん2013/11/20(水) 08:58:02.68
CogVM って VMMaker でビルドするんじゃないの?
http://www.mirandabanda.org/cogblog/build-image/

111デフォルトの名無しさん2013/11/29(金) 12:24:59.77
Pharoってデフォだとwindowsで、FileStreamのstdoutなんかから
取得した標準入出力がまともに動かんね。
そろそろなおらねぇかなぁ。

112デフォルトの名無しさん2013/12/08(日) 10:27:33.97
7.10pulのOSX版、各種描画や日本語表示入力関連がやっと直ってきたね
今までストレスマッハだっただけにこれはとてもありがたい
しかしVMが64bitじゃないのは今後に期待か・・
roadmap見ると一応いつかはやるらしいが

113デフォルトの名無しさん2013/12/14(土) 12:17:15.89
linux版は未だInput Methodがマトモに動かねえ

114デフォルトの名無しさん2013/12/19(木) 13:19:32.62
MatriXが面白すぎてブロック投げまくってる
Polycephaly1がpipe動作だったのに対してMatrix(Polycephaly2)がsocket動作になったようだ

異なるマシン間でVisualWorks専用のプロトコル流すって話題があったと思って
store見たらPolycephaly-Networkなんてのがあるんだね

115デフォルトの名無しさん2014/04/29(火) 20:05:42.31ID:hhNxJRFH
SL4A + GNU Smalltalk使ってAndroid上でAndroid開発おもろいわ。
おまえらもやってみ。

(1)SL4Aの配布場所
https://code.google.com/p/android-scripting/downloads/detail?name=sl4a_r6.apk

(2)Android版 GNU Smalltalkの配布場所
http://krecher.com/2012/06/android-binding-for-gnu-smalltalk-ready.html?m=1

初期設定は(1)と(2)からapk落として実行するだけで簡単。

116デフォルトの名無しさん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.

117デフォルトの名無しさん2014/05/01(木) 12:21:18.29ID:GNekxPqX
>>116
これいいね!

118デフォルトの名無しさん2014/05/01(木) 21:33:12.56ID:lq2q/fJ2
>>117
でしょ。
電車の中の暇つぶしにゲームやらずにこれでプログラム書いてるわ。

119デフォルトの名無しさん2014/05/05(月) 01:35:25.99ID:4JocqGrP
VisualWorks以外はゴミ

120デフォルトの名無しさん2014/05/05(月) 15:43:39.05ID:s/emtMHD
VisualWorksいいっちゃいいけど、
Linux Unix 環境じゃ
全角文字の表示がダメダメ。
あと、OSのapi呼び出すときに使うthapiが遅すぎ。
job queue 方式にするなり何とかしてほしい。

121デフォルトの名無しさん2014/05/05(月) 18:48:39.73ID:X+SWFRhD
Smalltalkって、html5+javascriptと比べて、どの辺りにアドバンテージあるの?

122デフォルトの名無しさん2014/05/06(火) 00:36:20.51ID:lmYR+WVl
>>121
殆どドラッグ&ドロップでWebサイト作れたりする。
しかも、サーバーと区別がいらない。率直にいって比較にならん。

具体例:
 Seaside

難点は、OOが解らない人には使えないとこか。
多態やセレクターの指定で切り替えれば済む事を、
bool値とifで凌ごうとするヤツや、引数や戻り値は
色んなオブジェクトを使えばいいのに、数値や文字、
日付ぐらいしかつかわないみたいなヤツは使えないだろ。
オブジェクトの入れ替えで動作を切り替えていくからな。

123デフォルトの名無しさん2014/05/06(火) 00:54:28.37ID:jLlWJyza
どうでもいいけどHTML5なんて規格は存在しないから
正確にはDOM4規格だよね。

124デフォルトの名無しさん2014/05/06(火) 11:11:37.19ID:t6gEhEsD
ほとんどリクエストの無いしょぼいサイトなら
Seasideが向いてる

125デフォルトの名無しさん2014/05/06(火) 11:59:07.81ID:07rd5qp2
つまり、ほとんどのサイトならSeasideが向いている。

126デフォルトの名無しさん2014/05/06(火) 23:19:21.81ID:4OvGFEoo
小規模社内システムとかSeasideで十分だよな。
あんなんにJavaとPHPとかオーバースペックで効率悪すぎるわ。

127デフォルトの名無しさん2014/05/07(水) 22:43:21.01ID:4Qw1Q+lJ
そういやPharo 3.0が出たな。
そろそろVisualWorksやGSTみたいに名前空間搭載すればいいのに。

128デフォルトの名無しさん2014/05/08(木) 05:21:34.65ID:/w4sAsq6
ラルフ先生はVWが名前空間導入した時大喜びしてたなー

129デフォルトの名無しさん2014/05/09(金) 21:30:16.60ID:gPiH2iVe
そらやっぱ接頭辞と違って空間名の変更が楽だもの。
それにSmalltalk環境がClass名とちゃんと別扱いしてくれるし。

130デフォルトの名無しさん2014/05/28(水) 08:00:49.57ID:LnZUrzDK
GNU SmalltalkでImageに保存したClassの削除方法がわかんねー

removeFromSystemとか無いんかい

131デフォルトの名無しさん2014/06/01(日) 07:14:55.11ID:Q3FUAo9P
Seasideの新しいバージョンでてるな
パフォーマンスも向上したとかなんとか
あれの使い方分かってないんでまだ手出してないが

132デフォルトの名無しさん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を読めるようにも見えるので情報不足過ぎて困ってます。

これを使えとか何かヒントがあったらお願いします!

133デフォルトの名無しさん2014/06/13(金) 20:19:37.10ID:NLaaux3h
>>132
古いWebBrowserの実装がコントリビュートかPublic Repositoryにあったはず。
それとは別に、埋め込みのWebBrowserコンポーネントが使えるから、パースはそちらに任せることができるかもしれない。

134デフォルトの名無しさん2014/06/13(金) 21:24:23.03ID:92n3YvIq

1351322014/06/14(土) 04:06:56.16ID:ITyiT+1l
>>133
探してみます

>>134
^true

1361322014/06/18(水) 05:38:46.87ID:RDasuJfa
うまくいかないのと追加したい機能があるんで
イチから作ることにしました
助言ありがとうでした

137デフォルトの名無しさん2014/06/22(日) 19:01:35.83ID:LtMDfcfl
>>132
本当にしたい事は何なの?
昔Web巡回ソフトつくったけど、その時は必要な情報以外は正規表現で消したよ。
この方法だと汎用性は無いけど結果はすぐ出せる。

1381322014/06/24(火) 03:53:12.30ID:XA65lbe0
>>137
特定キーワードの後に来ているtableを特定して要素抜き出したりとか
iframe分割するとかそんなとこです
csv入出力に加えてタグの値をセルから拾って再加工してhtmlに吐いたりとかそのへんも必要です
parseして再帰構造作るところまでは終わったので
/html/body/table/3@4
とかのString pathからelementを取得できるところを書いてます

139デフォルトの名無しさん2014/07/27(日) 18:29:02.03ID:JHUQ8wq7
VistaScript(VistaSmalltalk)使ったことあるヤツ居る?

140デフォルトの名無しさん2014/09/14(日) 01:26:41.03ID:kCUGk4im
VistaScriptには思い出もなにもあったもんじゃないらしい
やっぱりSmalltalkは言語だけを切り離せないんじゃないの

141デフォルトの名無しさん2014/09/16(火) 02:38:28.82ID:mnt6aMSR
そりゃね
フレームワークなしじゃ何の役にも立たないし

142デフォルトの名無しさん2014/09/19(金) 21:05:53.28ID:ZWHyR95u
Frameworkって嫌な響き。
Class Libraryでええやん。

143デフォルトの名無しさん2014/09/22(月) 23:08:42.78ID:vh/Af1aB
Frameworkの場合は、あらかじめ必要なクラスがあるわけじゃないし…

144デフォルトの名無しさん2014/11/03(月) 11:33:07.14ID:1HqxpQO9
青木導師の「Smalltalkイディオム」買いましたが、やっぱこれ、逝ちゃって
ませんか?
さまざまな文献からの綺羅星のごとき引用も、変化自在な例え話も、「ために
する」感じがして読み手のこと考えているのかなと。
例えば城砦都市の話とかでセキュリティの話をしているかとおもうと、それが
Smalltalkのオブジェクト間の通信の自由さと比較されたり。
それってぜんぜん別の話じゃあ・・・?
引用も多すぎて、なんか引用が多すぎる文章をからかった、パロディみたいだ
と思いました。本気ならコワイ。
でも内容は高度で、Smalltalk関連情報に飢えている心の隙間を埋めてくれる
良書であるとは思います。
結論:自意識過剰

145デフォルトの名無しさん2014/11/05(水) 09:21:18.62ID:DTvjdF5c
あの人の本は読んでも役に立たないから
MLでもそうだったけどわざわざ理解が遠くなるような投稿ばかりしてたり
本質そらすような誘導してたり

146デフォルトの名無しさん2014/11/05(水) 17:51:18.70ID:6GFXxFbP
あなたにはわからなかったのですねw

147デフォルトの名無しさん2014/11/05(水) 19:09:55.76ID:DTvjdF5c
読み物として買うならいいけどあの人の本は入門させる気がないって内容が多すぎる
どうでもいいことばかり書いてあるだけで何かできるようになるわけじゃないからね・・

一応それなりのポジション扱いされてるから表立って批判されることはないけど
MLでも登場すると他の人がいちいちフォローしなきゃいけなかったりとなかなか困った存在ではあったと思う
VWに関しては公式pdf読んだりExampleやったほうが早いしね

148デフォルトの名無しさん2014/11/08(土) 20:32:56.18ID:PCfU+KcI
Cincomに連絡すれば日本語版を送ってくれる。うれしいことにドキュメントも
日本語。

149デフォルトの名無しさん2014/11/09(日) 18:24:39.92ID:9lUKKrj+
まじすか?

150デフォルトの名無しさん2014/11/09(日) 18:49:12.32ID:EfnQMxIS

151デフォルトの名無しさん2014/11/09(日) 18:51:55.85ID:EfnQMxIS
 Cincomは、オブジェクト脳育成ツールとか、分析技術育成ツールと
して割り切って使うようにプロモートすればいいのにな。

 

152デフォルトの名無しさん2014/11/09(日) 20:41:10.43ID:TyKSlevg
それよりいい加減ネイティブなGUIを使うようにしてほしい
7.10からUISkinningとか入って来てるけど

153デフォルトの名無しさん2014/11/09(日) 20:45:09.29ID:ynWG2Vzt
smalltalk OSを作れば全部解決する

1541302014/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.
!!

155デフォルトの名無しさん2014/12/04(木) 08:42:10.35ID:TqunBxc9
>>154
それはひどい…

156デフォルトの名無しさん2014/12/04(木) 10:07:55.55ID:2ZRM6z5g
8.0出たけどNC版まだ?

157デフォルトの名無しさん2014/12/10(水) 01:19:33.75ID:qqm0TT3x
64bit化されてなかった
そろそろ10.5以下切ってもいいのに

158デフォルトの名無しさん2014/12/10(水) 21:19:55.43ID:p5128+HO
Pharoいいな
Squeakが子供向けっぽくなったから敬遠してたけどまたSmalltalk系を
触ってみたくなった

159デフォルトの名無しさん2014/12/11(木) 00:09:29.09ID:mbz3wuYK
rasberry pi に scratch が入ってるらしいから、これから買ってポータブルの squeak 専用マシンにしようと思う

160デフォルトの名無しさん2014/12/17(水) 22:33:40.79ID:HhMJUnCz
Seaside を動かすサーバってログインしてSmalltalk動かしっぱなしにしとかなきゃ駄目なんか?
それとWebサーバ落ちたらどうやって再起動するの?

161デフォルトの名無しさん2014/12/17(水) 23:05:41.24ID:GPjgNjwM
>>160
Webアプリケーションサーバとはそういうものだ。

Webサーバが落ちたら、先に起動したときと同じ手順を踏むだけだと思うが、何がわからないのかがわからん。

162デフォルトの名無しさん2014/12/17(水) 23:45:39.59ID:GPjgNjwM
>>160
画面が邪魔ならheadlessで起動すれ

163デフォルトの名無しさん2014/12/18(木) 07:03:50.12ID:r0K9Q3c7
>>161
普通のWebサーバならデーモンやサービスで動いているんでログオンしてる必要は無いし
死活監視があるので落ちても自動でサーバ立ち上がるし
サーバがバックグランドで動かいななんてあるんかと思っただけ

>>162
Smalltalkをデーモン化するようなものか?

164デフォルトの名無しさん2014/12/18(木) 07:05:42.31ID:r0K9Q3c7
Smalltalkのオススメの本かサイト教えてください。
正月休みに遊んでみたいんで。

165デフォルトの名無しさん2014/12/18(木) 14:56:48.01ID:Rd12tJlC
>>164
ここらへんからよさげなのを選んでみてはどうでしょう。↓

Smalltalkをちょっとかじってみたい人のための、チュートリアルまとめ
http://qiita.com/sumim/items/6bed17961bd57daf88a3

166デフォルトの名無しさん2014/12/18(木) 17:11:18.79ID:2R4zikfv
>>163
deployすれば一つのアプリケーションになるよ
運用がうまくいくかは不明

167デフォルトの名無しさん2014/12/18(木) 20:38:12.20ID:r0K9Q3c7
>>165
有難う御座います〜♪

Squeak見て、何じゃこりゃ〜分けわからんになって
Pharo見てこれなら使えるかと思ってるところです。

168デフォルトの名無しさん2014/12/18(木) 20:39:28.82ID:r0K9Q3c7
>>166
deploy? なんかわからんが調べてみます

169デフォルトの名無しさん2014/12/18(木) 23:13:56.99ID:2R4zikfv
>>168
VisualWorksだけね
SqueakやPharoは知らない

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

Smalltalk を学び始めるタイミングでは、すでに他の言語にかなり精通している人が多いので
めんどくさい手続きかもしれませんが…

171デフォルトの名無しさん2014/12/20(土) 08:59:38.29ID:1etDexZj
もっと青木尊師にハードは帰依したい

172デフォルトの名無しさん2014/12/28(日) 23:14:19.55ID:R3dzA+5K
squeak eToysでキーボード入力を取得するにはどうしたらいいの?

173デフォルトの名無しさん2014/12/29(月) 19:19:35.25ID:b80nJbK+
>>172
http://wiki.squeak.org/squeak/488
ここ見た?このページにある、
http://bike-nomad.com/squeak/DriveUsingKeyboard.002.pr
このプロジェクトをSqueakland 2005Jで読み込んだら矢印キーで操作できた。
worldのkeyWatcherスクリプトに書いてある。詳しくはわかんない。

174デフォルトの名無しさん2014/12/29(月) 20:09:43.03ID:Gybf5FK3
ありがとう
けれどそれeToys 5.0じゃダメみたい
でもそのページのワールドのキーストロークを使えるみたいな説明があったので
部分的には使えるかな
そこのページに書かれているけどモディファイやキーや複数キーの同時押しなんかには対応できないらしいのが残念
右と上の矢印キーの同時押しで右上に動くとかやりたいけど無理みたいね

175デフォルトの名無しさん2014/12/31(水) 15:15:04.47ID:eZK8RP2d
今年を振り返って一行プログラムでもやろうかと思ったけど
特に何も思いつかなかった

176デフォルトの名無しさん2015/02/01(日) 10:27:33.83ID:9dLdzSOD
大使館に姉妹スレ立てといた
誰もこん

Smalltalk [転載禁止]?2ch.net
http://maguro.2ch.net/test/read.cgi/prog8/1421048181/

177デフォルトの名無しさん2015/02/01(日) 21:47:48.16ID:oqChC4NJ
>>4
超重要なのは君の頭の中だけで
誰も必要としてないからだよ

というツッコミがないのが凄いスレ

178デフォルトの名無しさん2015/02/01(日) 22:14:37.31ID:QJWUHP7z
Smalltalkより
キミがどうしてそんな書き込みを
今、わざわざしたくなったのかの方に興味がわく

179デフォルトの名無しさん2015/02/02(月) 02:00:32.21ID:P3dUQVzv
そういや昔アラン・ケイが来日したときサインして貰った本がでてきた

180デフォルトの名無しさん2015/02/05(木) 01:14:54.06ID:Eev1wDUX
>>178
オブジェクト指向の元祖はSimulaだしSmalltalkなどは完全に無視できる派
ストラウストラップがSmalltalkを重要視してないので
かつてはC++ユーザーにもそういう人がいたのだという。

181デフォルトの名無しさん2015/02/05(木) 08:44:08.12ID:h79vg6iD
うん。
世の中にはそういう主張をする派があって、キミがその派に属することはわかった。

で、ならばその完全に無視していいはずの Smalltalk のスレを
今、ここにきてどうして無視できなくなったのかに興味がわく

182デフォルトの名無しさん2015/02/05(木) 11:22:44.97ID:I9l1mGeI
そんなことより
WindowsのVMはIMEのインライン化がいまだにできないことと
OSXのVMはネイティブのMenuBar(NSMenu)を使えるようにならないことが不満ではある
Windowにメニューが張り付くのはあんまりいい気がしない・・

183デフォルトの名無しさん2015/02/05(木) 21:34:10.11ID:axWRz5yo
これ最近さわりはじめて
発想がすごく面白いと思ったけど
やっぱ実用的な面で欲しい機能もある

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

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

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

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

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

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

Smalltalkは初心者だから
なにか初歩的な誤解があるかもしれないが
あったらツッコミしてくれ

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

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

そうね 自分ひとり用の環境としては面白いからSqueakでArduinoと通信するものとか
自宅LAN用のComSwikiのプラグインたまに作るくらいだけど

1851832015/02/06(金) 00:21:36.08ID:gqKhZAaO
>>184
>そういうこだわりは無くなった
>自分ひとり用の環境としては面白い
オレもひとり用で完結した環境でいいかなとも思ってるんだけど
やっぱ最終的にはアウトプットを外に出したいって気持ちもある

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

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

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

>SqueakだとWindowsの.exe作る方法もあった
サンクス
それは知らなかった
探してみる

186デフォルトの名無しさん2015/02/06(金) 02:31:41.92ID:uSk5yObJ
>>184
VisualWorksもexeやappで配布することはできる
やり方が大変面倒だがApplication Deliveryの項目を一通り見ればわかると思う

187デフォルトの名無しさん2015/02/07(土) 02:31:03.91ID:zaVZWxk9
Smalltalkはどんな分野に向いてるの?

なんでもいいんだけど、昔Perlが流行ってた頃
文字列処理が得意って言われてたみたいなの

188デフォルトの名無しさん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も動的なソフトの入れ替えの仕組みがあるか

189デフォルトの名無しさん2015/02/07(土) 15:09:27.85ID:zaVZWxk9
>>188
> 走ってるシステムを簡単に変更できてすぐに結果がわかる言語
そうだね

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

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

GUIの部分はやさしいし
言語仕様もシンプルだけど
ライブラリを使うのが難しい

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

191デフォルトの名無しさん2015/02/07(土) 21:15:51.86ID:zaVZWxk9
>>190
それ読んだとき半分くらいは共感したんだけど
(C++とWin32APIがめんどくさすぎるから)

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

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

まあアウトプットが文字列みたいな
小物アプリをぼちぼち作りつつライブラリを
少しずつ覚えていこうみたいな感じなのかな

192デフォルトの名無しさん2015/02/07(土) 21:57:43.31ID:O0c7oskK
>>191
そうだね そう思う
ググれば日本語でも参考になる例はあるから、なんとかなるけど、
ライブラリ覚える気はないけど、知らなければ発想できないこともあるしね。
『自由自在〜』読み返したり、Pharocast見たりしてできること、アイデアを学ぼうとするけど、
それより何か作ろうとしなくちゃダメかな、と思ってる

193デフォルトの名無しさん2015/02/08(日) 09:17:41.26ID:1GzhtbkP
一生思ってろ

194デフォルトの名無しさん2015/02/08(日) 10:37:51.19ID:c8TnjZ8K
Smalltalk ほど単純なルールで構成されてる言語・環境を
どうしてだか理解できない人がいるのはしょうがないとしても
逆恨みして粘着アンチ化するのをどうにか避けられないものか。

195デフォルトの名無しさん2015/02/08(日) 12:16:09.65ID:lYLvg9qm
Squeakでプロトタイプ作って来られるとか経験すれば、逆恨みする人の気持ちも分かると思う

196デフォルトの名無しさん2015/02/08(日) 13:49:06.94ID:zJSS0tq2
Smalltalkで受託開発してるけど逆恨みする人の気持ちは全くわからない。

197デフォルトの名無しさん2015/02/08(日) 20:51:02.21ID:CyqMlARA
Smalltalkはメッセージングみたいなルールが
全体で一貫してるから理解しやすいと思うけど
なぜかキラーアプリがないよな

代表的なキラーアプリがあれば
もっと広まってたと思うんだけど

198デフォルトの名無しさん2015/02/08(日) 21:49:39.42ID:c8TnjZ8K
それは「計算機の言語を狭い意味でとらえる人」がいかにも言いそうな Smalltalk評かと
http://web.archive.org/web/20041016084842/http://marimpod.homeip.net/chomswiki/24#

199デフォルトの名無しさん2015/02/08(日) 21:57:44.05ID:c8TnjZ8K
てなことをいうと反感かってアンチが増えるわけか… 失敬、失敬^^;

たしかに Ruby におけるとっついやすい Rails みたいなキラーアプリがあるといいのかも。

200デフォルトの名無しさん2015/02/08(日) 22:19:38.46ID:p8em6OkY
そういえば単なる言語ではないんだったな
言ってることのカッコ良さに当時はしびれた(死語)ものだけど
まあ先を読むのって難しいってことで

201デフォルトの名無しさん2015/02/09(月) 04:53:09.54ID:f40HLejb
利用者が全体を俯瞰して
際限なくカスタマイズできるのは
良いコンセプトだと思う

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

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

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

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

長く使ってる人はソース管理どうやってんの?

202デフォルトの名無しさん2015/02/09(月) 05:47:32.02ID:UYOrkYUA
>>201
20年ぐらい昔のSmalltalkの話をしていないか?

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

じゃ今はもうそういう問題
起こらないように進化してるんだ?

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

自分もイメージなんて1週間も経たないうちに捨てる。
新しいイメージに必要なパッケージ群を一通り入れるのは
metacello使えば1行のコードで各パッケージをそれぞれの
レポジトリから最新版をダウンロードしてきて初期化まで
自動的にやってくれる。

205デフォルトの名無しさん2015/02/09(月) 06:38:17.09ID:f40HLejb
>>204
サンクスなるほど
今はそうやって管理するのか

206デフォルトの名無しさん2015/02/09(月) 08:33:43.52ID:Sty7eEqu
つまりSmalltalkerが他言語との差異のひとつとして挙げる事が多い
イメージ方式は問題だらけのオワコンで
結局は普通の言語と同じ方式に落ち着いたわけだ

207デフォルトの名無しさん2015/02/09(月) 09:08:37.00ID:u8pz/p6G
>>206
そう。だからキミは Smalltalk のことなんか気にせず
先進の他言語ライフをエンジョイしてください。おしあわせに。

208デフォルトの名無しさん2015/02/09(月) 09:35:59.91ID:u8pz/p6G
ただ口が悪いだけで悪意は無かったという可能性もあるから
念のためマジレスしておくと(でもなきゃ煽って情報を得ようとする方略を助長するようで残念なんだけど)
イメージベースのメリットはソース管理だけじゃなくて
たとえば再現困難なデバッグの状態を保存できるとか
(いうまでもなく保存できるかは状況にもよるけど、同等機能をいっさい欠いているよりはマシというレベルで)
オブジェクトメモリ内のオブジェクトの状態保持が主なので
ソース管理の方法が他言語に倣ったからっていちがいにオワコンということはないと思う。

209デフォルトの名無しさん2015/02/09(月) 17:36:40.61ID:UYOrkYUA
>>206
外部ストレージにパッケージを保存できることとイメージベースは全く矛盾しないどころか
むしろ長所を伸ばしあう関係にあるわけだけど、まあ君には関係ない話だね。さよなら。

210デフォルトの名無しさん2015/02/10(火) 07:31:44.72ID:Ojr93FaP
これからはスマホの時代だけど
Smalltalkでスマホ開発ってどしたらいいの?
やっぱWebアプリにするのかな

211デフォルトの名無しさん2015/02/10(火) 09:28:09.28ID:sCqZIsHm
>>183
VisualWorksならexe作れるよ

212デフォルトの名無しさん2015/02/10(火) 09:34:05.05ID:sCqZIsHm

213デフォルトの名無しさん2015/02/10(火) 10:17:11.93ID:TIteOp3H
>>210
Pyonkee とか Dr. Geo とか調べてみそ。

214デフォルトの名無しさん2015/02/10(火) 10:37:51.08ID:SrGhIMrb
Smalltalkの最大の欠点はOSの上にOSモドキを乗っけるナンセンスさと
マイナーな独自UIを強制するところにあるから、

一からスマホOSをSmalltalkで作って
UIをiPhoneに似せれば天下取れるかもよ

215デフォルトの名無しさん2015/02/10(火) 13:36:11.97ID:TIteOp3H
まだいたのか、キミ… ^^;
ナンセンスということなら、キミがここにいること自体がナンセンスだよ。

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

「Smalltalkの底を流れる設計思想」
http://web.archive.org/web/20041016084842/http://marimpod.homeip.net/chomswiki/24#

216デフォルトの名無しさん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.

217デフォルトの名無しさん2015/02/10(火) 18:42:43.24ID:Ojr93FaP
>>212-213
あんがと
しかし情報すくなすぎる

218デフォルトの名無しさん2015/02/10(火) 20:05:21.93ID:yCYSfpHb
>>215
「Smalltalkの底が知れた設計思想」だね。10回読んでみるわ

219デフォルトの名無しさん2015/02/10(火) 20:38:10.59ID:R+rkRsMj
誰うまw

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

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

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

じつはシステムブラウザから見えない部分
(インライン)で下処理を済ましてるから?

221デフォルトの名無しさん2015/02/11(水) 06:47:42.77ID:Ids2Eeke
>>220
本当に実装量程度の機能かもしれないし、
からくりがある場合もある。
具体的には、どのクラス?(できれば処理系も)

222デフォルトの名無しさん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: ''.

223デフォルトの名無しさん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.

224デフォルトの名無しさん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名まで存在するか見てくれない。

225デフォルトの名無しさん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は受け取れない。

226デフォルトの名無しさん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.

227デフォルトの名無しさん2015/02/11(水) 19:11:13.96ID:kCQdnFWd
>>221
処理系はSqueak
クラスは「Kernel-」系のクラス

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

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

自力で分かったのは
Kernel-Objects BooleanのifTrueが
インライン展開されてるから書かれてないってこと

228デフォルトの名無しさん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++ などで書かれたものと厳密に(たとえば数理学的に)同等の機能を記述しようと思ったら
それなりのコード量になるのではないでしょうか。

229デフォルトの名無しさん2015/02/11(水) 22:16:32.83ID:kCQdnFWd
>>228
うわー詳しい!
触ったばかりとはいえ雑な理解で恥ずかしいです^^;

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

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

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

なぜそこが気になったかというと
少ないコード量で実現してるというのは
設計の参考になるからです

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

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

個人的によくお薦めするところでは、print it(式を選択して右クリックメニューなどから
print it すると返値が挿入される機構)がどのように実装されているか、コンパイラの
実装やその動作などと併せて予想・確認してみるのは比較的よい題材かと思います。

231デフォルトの名無しさん2015/02/11(水) 23:29:09.42ID:kCQdnFWd
>>230
>どうしてこんないい加減なものが動くのか
不思議ですよねー
古くからあるから職人芸なのかな

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

>実装やその動作などと併せて
>予想・確認してみるのは比較的よい題材
それは良さそうですね
じっくり取り組んでみます

232デフォルトの名無しさん2015/02/12(木) 00:10:33.54ID:EWCUv8cS
>>228

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

こんな場合もInline展開されないでしょ。
VisualWorksだと最適化しないって警告がでる。

233デフォルトの名無しさん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なんだろうけど

234デフォルトの名無しさん2015/02/12(木) 05:57:58.02ID:0kpAIZ2u
>>231 長い時間をかけたリファクタリングの結果です。

235デフォルトの名無しさん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' "

236デフォルトの名無しさん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

237デフォルトの名無しさん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 ).

238デフォルトの名無しさん2015/02/12(木) 17:47:15.72ID:FbfONYzU
>>237
言いたいことがよく分かりません。
それはコンパイル時の ifTrue: 、whileTrue: などのインライン展開とどういう関係があるのでしょうか?

そもそも 1 + 10 と 1 + MyClass new とではコンパイル結果は変わらないですよね?
そのコードも SmallInteger >> + のプリミティブが失敗して普通にフォールバックしているだけだと思うんですが…

239デフォルトの名無しさん2015/02/13(金) 03:23:10.58ID:ftS8kcXE
>>234
Smalltalkならではの伝統ですね
新しい言語だと何十年もリファクタリングした
コードを見る機会はないし

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

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

インライン化のほうが早いだろうけど
もしインライン化しかないと
ifTrue系の命令を自分で改造するのが大変だからかな

240デフォルトの名無しさん2015/02/14(土) 06:34:15.77ID:Z9ZmRxLI
IDEが使いやすいので
C++やJavaでも
こういうIDEないかな?

241デフォルトの名無しさん2015/02/14(土) 09:31:23.95ID:+jQ5RdmI
他言語でも同様のものを作れなくはないと思うのですが
Smalltalk環境の機能自体があまり多くの人に知られていないのと
他言語では同様のものを(Smalltalkほどには)簡単には
作りにくいのかもしれませんね。

Clojure 向けですが、最近ではこんなIDEが話題になっていました。
http://cloxp.github.io/cloxp-intro.html

242デフォルトの名無しさん2015/02/14(土) 09:46:15.37ID:0dco6ark
>>240
ちょっと昔の研究プロトタイプでは、こういうものもある。http://www.andrewbragdon.com/codebubbles_site.asp

243デフォルトの名無しさん2015/02/14(土) 10:10:59.12ID:KJLqYxlY
補完とか名前変更とかSmalltalkのIDEはウンコすぎるじゃん
本当に開発してると一番差が出るところなのに
本当にJavaやC++のIDE使った事あんのかよ

244デフォルトの名無しさん2015/02/14(土) 10:34:04.63ID:0dco6ark
(…補完も名前変更も一発なのにこの人は一体何を言っているのだろう…)

245デフォルトの名無しさん2015/02/14(土) 10:34:59.29ID:0dco6ark
(…そもそもこの人が言うSmalltalkのIDEとは何を指しているのだろう…)

246デフォルトの名無しさん2015/02/14(土) 10:38:06.59ID:KJLqYxlY
無関係な候補が補完されたり、無関係な名前まで変更されてしまうゴミじゃん

247デフォルトの名無しさん2015/02/14(土) 10:54:34.66ID:+jQ5RdmI
粘着アンチ君、まだいたのか。
他言語で幸せになれなかったのかな…。かわいそうに。

248デフォルトの名無しさん2015/02/14(土) 11:01:59.33ID:+jQ5RdmI
>>244
この人は補完の精度のことを言っているんですよ。
動的型言語である以上、どうやったって精度はだせない。
よって、補完がないとコード書けないユーザーにはウンコで使えない、と。

249デフォルトの名無しさん2015/02/14(土) 11:34:10.14ID:Z9ZmRxLI
>>241
> 他言語では同様のものを(Smalltalkほどには)簡単には作りにくい
Smalltalkは最初からGUIのことまで考えて言語が設計されてるからかな

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

>>245
ちなみにおれが言ってるほうのIDEはSqueakね

250デフォルトの名無しさん2015/02/14(土) 12:11:34.81ID:Z9ZmRxLI
まあ静的型付けほどの精度はないし
多機能さとか総合力でスコアつけたら
VSとかメジャーなIDEのほうが上だろうよ

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

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

そもそもIDEよりエディタで気軽に書くほうが
好きだったりするんだけど
Smalltalkに関してはIDEじゃないと魅力半減

251デフォルトの名無しさん2015/02/14(土) 12:46:41.71ID:+jQ5RdmI
>>249
> Smalltalkは最初からGUIのことまで考えて言語が設計されてるからか

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

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

Integer selectors
(Integer >> #factorial) getSource

リフレクションの API が充実しているだけと言われればそれまでですが、
(先だってのコードの短さともからめて)そういう切り口ではない、環境内のオブジェクト間の連携を
しやすくする工夫の結果としての IDE の使い勝手であるような気がします。

252デフォルトの名無しさん2015/02/14(土) 15:51:07.10ID:0dco6ark
「無関係」の定義もなく「変更されてしまうじゃん」とか断言する人って、技術的な議論には全く向かないよね。

253デフォルトの名無しさん2015/02/14(土) 17:50:52.21ID:pFrYpbo4
彼はSmalltalkをコケにすることができれば満足で
そういう次元の議論は1ミリも望んでいないでしょう。

それはさておき本気を出せばSmalltalkでも
補完くらいなら、そこそこの精度は出せるでしょうね。

254デフォルトの名無しさん2015/02/14(土) 19:17:17.93ID:KJLqYxlY
明日から本気出すw

255デフォルトの名無しさん2015/02/14(土) 19:18:06.07ID:Hs1Wk7so
Smalltalkを覚えたいのだが本業のドカタ仕事に忙殺されてなかなか出来ぬ。
人生は短すぎる。

で、Smalltalkerさん達の本業は何よ?

256デフォルトの名無しさん2015/02/14(土) 19:27:03.92ID:RVo+uu2J
SqueakのCトランスレータが結構使える

257デフォルトの名無しさん2015/02/14(土) 20:45:36.71ID:+jQ5RdmI
>>253
ID:KJLqYxlY の心の平安のために精度は今のままの方がよさそう。w

258デフォルトの名無しさん2015/02/14(土) 20:58:37.42ID:lMIjbsUk
>>255
C with Smalltalk

259デフォルトの名無しさん2015/02/14(土) 21:01:50.07ID:0dco6ark
>>255
受託開発サラリーマン

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

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

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

C++(とVS)は多機能で高性能なんだけど
それだけプログラマの負担も大きくて
Smalltalkはそれよりさらに高性能というよりかは
使用者が使いやすい方向を目指してる感じ

261デフォルトの名無しさん2015/02/15(日) 08:22:59.86ID:n2M7TY52
>>259
土方のお仲間じゃないですか。
Smalltalkの受託やってるの?

262デフォルトの名無しさん2015/02/15(日) 13:19:29.87ID:Qwk5nQv8
>>255
ビル管理業

263デフォルトの名無しさん2015/02/15(日) 15:56:50.97ID:6aDKSPw5
>>255
マイケルジャクソンの物真似

264デフォルトの名無しさん2015/02/16(月) 01:03:07.94ID:HauqtKo6
>>238
GNU Smalltalkだと定数の演算とかは糞真面目に計算せずに、
翻訳時にすませてるっぽいよ。
この辺も最適化の過程でMessage送信が必要かどうか判断してるんじゃない?

>>239
原則Message送信であってif文の構文糖じゃないからね。
最適化はあくまでもオマケ。
最適化し辛い構文があってもMessage送信の原則は守る必要があるんでしょ。

265デフォルトの名無しさん2015/02/16(月) 01:10:51.90ID:HauqtKo6
>>251
Squeak以外は使わないの?
VisualWorksとかPharoとかは、補完するSelectorを結構絞り込んでくれるから便利よ。
VisualWorksはCincom本社の海外サイトで個人情報入れなきゃなんないのが面倒だけど。

266デフォルトの名無しさん2015/02/16(月) 03:14:31.37ID:5Z6+mH61

267デフォルトの名無しさん2015/02/16(月) 11:16:01.67ID:XP4TAyIw
>>264
> GNU Smalltalkだと定数の演算とかは糞真面目に計算せずに、
> 翻訳時にすませてるっぽいよ。

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

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

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

なぜあえてこの例が必要だったのか(Squeak の話をしているときになぜあえて GNU Smalltalk か?
非リテラルオブジェクトではなくなぜあえて自作クラスなのか? さらになぜあえて nil を継承したのか?)、
それぞれによって、どんな理解が進むのかについて少々かみ砕いての解説をお願いできますか?

268デフォルトの名無しさん2015/02/17(火) 13:36:20.64ID:+V2W9A9L
64bit VMがlinux版しかないのはどういうわけ

269デフォルトの名無しさん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を渡すと
 動かなかったりするわけではない
 という事が理解いただければと考えています。
 

270デフォルトの名無しさん2015/02/17(火) 23:17:58.58ID:1fkLZx/i
>>269
なるほど、よくわかりました。
丁寧な説明をありがとうございます。

1. の早合点はさておき、
はじめから 5. のような簡易な説明を添えていただけていたなら
私ども読み手も視野を広げやすくなるので、今後もご助言を
いただけるのでしたら、ご一考いただければさいわいです。

271デフォルトの名無しさん2015/02/17(火) 23:46:16.16ID:28IwrLId
Smalltalkの新しい書籍
出る予定ないのかな

272デフォルトの名無しさん2015/02/17(火) 23:53:37.06ID:WE2OvojJ
一般人が触れる実装がSqueakしかないしな…

273デフォルトの名無しさん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.

274デフォルトの名無しさん2015/02/18(水) 01:47:28.06ID:QTgMdBtY
GNU SmalltalkにSmalltalkのVM上で
Javaを動かすPackage、その名もJavaがあった。
.jarを読み込んでくれず.classを取り出さないとダメだったり、
Java7には対応してなかったりと微妙な出来だけど、
JavaのClassが完全にSmalltalkのClassとして取り込まれてる所が面白い。
他にも誰が使ったことある人いる?

275デフォルトの名無しさん2015/02/18(水) 05:10:09.93ID:IoP2n0dH
>>270
端からは、あなたがもうちょっと謙虚に聞けばよかった、と見えますよ。

276デフォルトの名無しさん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

277デフォルトの名無しさん2015/02/18(水) 12:10:47.30ID:IoP2n0dH
>>276
For some pairs of receiver classes and special selectors, the interpreter never looks up the method in the class; instead it swiftly executes the same code which is tied to a particular primitive.
https://www.gnu.org/software/smalltalk/manual/html_node/Performance.html

278デフォルトの名無しさん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)が実行される、
という理解で合っていますか?

279デフォルトの名無しさん2015/02/18(水) 18:55:49.75ID:wdCl3CCW
>>278
> 3 + 4 時は…

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

通常は bytecodePrimAdd がコールされ、整数/整数とかでなければメッセージを送信、
#perform: などで呼んだ場合は primitiveAdd がコールされ、それが失敗すると
プリミティブに続いて記述してあるフォールバックコードが実行されるというカラクリでした。

280デフォルトの名無しさん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 は当然ですがしょっちゅう呼ばれるので…)

281デフォルトの名無しさん2015/03/05(木) 15:38:55.74ID:8pGleBPt
お題スレの人お疲れ様です

282デフォルトの名無しさん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

283デフォルトの名無しさん2015/03/21(土) 22:21:51.58ID:Xtizjndc
今Windowsの環境ないから確認できないけど
http://d.hatena.ne.jp/propella/20050925/p1
こことか、リンクのとことか。やったのだいぶ前だけど。

284デフォルトの名無しさん2015/03/21(土) 22:32:55.41ID:UWDIX5zE
>>283
できた! サンクス!

エントリ自体は前に見たことあるけど
ウゴモーフとか興味なかったから
流し読みしてしまって見落としてた

285デフォルトの名無しさん2015/03/21(土) 23:32:01.16ID:UWDIX5zE
exe化はできたけど
もうひとつやりたいことがあるんだ

リリースしたアプリをユーザがいじっておかしくしないように
ハローとか開発環境の部分を隠蔽することってできる?

286283=1842015/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を起動すると、望みの動作になってるはず。

287デフォルトの名無しさん2015/03/22(日) 02:18:58.81ID:G0/vVT9E
>>286
おおすばらしい! ありがとう!

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


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

Smalltalkそのものは大変すばらしいので
日本語情報さえあればもっと広まるのに

288デフォルトの名無しさん2015/03/22(日) 02:57:43.39ID:G0/vVT9E
ああ試してたらメニューバーも消せたわ
ワールドメニューがちょっと残るけど
ほとんど普通のアプリと変わらない

2892862015/03/22(日) 07:07:35.62ID:VhQjMmyl
>288
>ワールドメニューがちょっと残るけど
中ボタンで出るyellowButtonMenuのことかなぁ
PreferenceのSearch preferences forでgeneralizedYellowButtonMenuを検索して表示して
enableをオフにしたら出なくなるけど

290デフォルトの名無しさん2015/03/22(日) 08:47:01.02ID:G0/vVT9E
>>289
できた! 何度も世話を焼かせてしまってすまない

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

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

なんか一休さんのびょうぶから虎を追い出せ
みたいなとんち状態になってきた

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

最後のとんち状態は そうだね...解決策はありそうだけど

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

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

でもライセンス的にMITだから
Squeakを使ってること自体は
どこかで教えないといけないので
これでもいいよ

293183,2822015/03/22(日) 18:21:50.40ID:G0/vVT9E
>>291
exe書き出しのとんちのほうは
アイディアが色々あるので試してみる

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

最後は自分で何とかしたいと思う
長々と付き合わせてしまって申し訳なかった

2942862015/03/22(日) 19:25:44.81ID:VhQjMmyl
>>293
こちらこそ久々にいろいろやってみて、いろんな機能を知って面白かった

295デフォルトの名無しさん2015/03/23(月) 05:44:59.29ID:9+S6Qh9p
>>256
>SqueakのCトランスレータが結構使える
一行レスだから見逃してしまってたけど
今スレ見返してたらすごい面白そう

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

クラス名とか検索するための単語なにか教えて

296デフォルトの名無しさん2015/03/23(月) 22:16:08.94ID:9+S6Qh9p
>>295
レスが付かないから自分でザッと調べてみたけど

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

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

ただCのソース単体で取り出して
他でコンパイルできるのかとか
まだ詳しく調べてないけど

297デフォルトの名無しさん2015/03/24(火) 20:05:29.21ID:cN0vYmrU
>>296
現実的にはslangは単純な整数とか整数の配列の計算くらいにしか使えない
行列とかベクトルの計算とか、その程度が限界

プラグインは普通にcで書くという先入観で正しいと思う

298デフォルトの名無しさん2015/03/24(火) 21:14:29.75ID:ZdrU8eOQ
>>297
あーそうなんだ、thx

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

まあ制約が多くても
使えるだけでありがたいけど

299デフォルトの名無しさん2015/07/02(木) 08:23:13.10ID:37HIrXjo
下記サイトにオブジェクトの定義が書かれています。

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

オブジェクトとは何か?

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

アトムの意味がよくわからないのですが、すみませんがご教示お願いします。

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

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

私が考えるOOPはメッセージング、状態処理のローカルでの保有・保護・隠蔽、
そして全ての物に対する強力な遅延束縛、これだけだ。これはSmalltalkとLISP
だけが実現できている。他のシステムでも可能かもしれないが、私は知らない。

301デフォルトの名無しさん2015/07/02(木) 14:19:08.77ID:gyn5Kcjz
>>299
たぶんアトムはLispの用語から取ってるんじゃないかな?

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

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

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

アランケイのアイディアと混ぜないで
自分で一から言い直したほうが良い気はする

302デフォルトの名無しさん2015/07/03(金) 08:40:10.68ID:W3KOnD9Z
>>300-301
レス、ありがとうございます。

アラン・ケイによる正確なオブジェクト定義の提示ありがとうございます。
Lispのアトムを検索して、これ以上分解できない基本データだと理解しました。

303デフォルトの名無しさん2015/10/02(金) 11:30:24.22ID:njwjZuA3
>>302
そこで言ってるアトムは分解出来る機能の集合体なのだから
これ以上分解できない基本データではないな
単に個体とかでいいんじゃね

304デフォルトの名無しさん2015/10/02(金) 19:47:13.01ID:ADth776D
ぜんぜん関係ないけどおれアラン・ケイが来日したときサインもらった
いいだろう

305デフォルトの名無しさん2015/10/02(金) 22:04:37.04ID:q16UoAhR
ひさしぶりにスレが動いたから
オレもついでに言うけど

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

言語(処理系)は良さそうなんだけど
日本語情報が少なすぎてどうしようもない

306デフォルトの名無しさん2016/04/10(日) 02:03:06.43ID:WTOWAaLY
age

307デフォルトの名無しさん2016/04/12(火) 23:20:09.84ID:2ZLQQVkl

308デフォルトの名無しさん2016/04/20(水) 16:32:04.67ID:a8lJ1Bzf
>>240
Code Browser じゃあダメなん?
ttp://tibleiz.net/code-browser/

309デフォルトの名無しさん2016/04/20(水) 18:21:54.24ID:UfNx2Znx
>>308
おお〜サンクス! こういうのがあるんだ
代替になるか分からないけど触ってみる

310デフォルトの名無しさん2016/08/18(木) 11:53:48.53ID:E7RCG0CR
スタートアップ界の異端児!産業機器 x IT x SmalltalkのSORABITO株式会社
…人材採用のプロ・高野秀敏氏が厳選「いま最も旬なベンチャー」
https://news.thepedia.co/article/1068/

日本でクックパッドがRubyを広めたように、日本も海外も含めて「SmalltalkといえばSORABITO」となるとおもしろい

311デフォルトの名無しさん2016/08/19(金) 08:00:44.26ID:aUETciWG
>>310
>Smalltalkの場合は最も覚えることが少ない言語
言語仕様だけならそうだけど
ライブラリまで含めたら
最も覚えることが多い言語になりそうだけどなー

まあプロトタイプはSmalltalkで
ライブラリ必要な部分はRuby
って分担ならわりと妥当だと思うけど

312デフォルトの名無しさん2016/08/19(金) 20:16:08.06ID:Eduih45+
Smalltalk の代わりに Ruby とか、よう使わんわ

313デフォルトの名無しさん2016/08/21(日) 08:33:13.32ID:itlBfDe6
Sakuraエディタでコード書いてPharoのファイルブラウザから読み込ませてたんだけど、直接書けるって教えてくれよ

314デフォルトの名無しさん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の組み込みのエディタ機能はおいおい学んで、気に入ればカスタマイズも含めて使えばよいので。

315デフォルトの名無しさん2016/08/21(日) 15:45:59.81ID:qQjUy1hV
Smalltalk使うなら
ワークスペース使うのが一番

316デフォルトの名無しさん2016/08/25(木) 22:20:45.53ID:UnrcY5fF
Happy birthday Squeak! It has been 20 years! Squeak 5.1 is now available for download.
http://squeak.org/

317デフォルトの名無しさん2016/08/28(日) 02:31:34.26ID:PB1bnZje
MacでSqueak5.1の右上にある検索使うとvmが落ちてしまう

318デフォルトの名無しさん2016/08/28(日) 20:33:20.07ID:zcu6Rkdc
Squeak5.1、日本語フォントの設定ができん!

319デフォルトの名無しさん2016/08/28(日) 21:59:54.11ID:wqvuI2DW
>>318
Apps → Font Importer → 日本語フォントを右クリック → Link Font → Close
これでリンクしたフォントが appearance... → system fonts... 等のフォント選択の一覧に現われない?

320デフォルトの名無しさん2016/09/01(木) 02:31:32.06ID:nKkrd38l
>>316
久しぶりに公式を見に行ったらそれが出てた

3213182016/09/01(木) 17:17:29.87ID:u9gr6W2c
>>320
MacでOsakaフォントをLinkしようとしたら、
クリックした瞬間にいくつかMorphが壊れて
Emergency Evaluatorが出てきたよ…

322デフォルトの名無しさん2016/09/02(金) 07:00:43.29ID:ifMmGuDP
macOS版VMは安定していないんですかね。

323デフォルトの名無しさん2016/09/03(土) 14:56:19.41ID:/kP4iCQF
自由自在っていう本が良いみたいだけど、最新のSqueakで勉強できる?

324デフォルトの名無しさん2016/09/03(土) 14:57:33.27ID:/kP4iCQF
舌足らずか、自由自在のPDF落としたんですが、Squeak最新のバージョンで
本の内容を同じように試すことは出来ますか?だいぶ違ってます?

325デフォルトの名無しさん2016/09/03(土) 15:56:21.00ID:vCC0oq7q
本のバージョンに合わせた方が学習しやすい

326デフォルトの名無しさん2016/09/03(土) 16:32:01.88ID:FCCtMljZ
どもです、そうします

327デフォルトの名無しさん2016/09/03(土) 18:32:59.01ID:87bD/C1F
Smalltalkは変わったツールや習慣、考え方がよく出てくるのですが
無理に通常の言語での習慣や考え方に翻訳して咀嚼しようとすると
(やればできなくもないですが、いろいろ無理を生じますし)
学習コストが無駄にかかるわりに、誤った結論に達しがちなので
疑問なことは自力解決にこだわらずにどんどん訊いてください。

328デフォルトの名無しさん2016/09/12(月) 23:21:39.54ID:ff9i3q/K
ContrAltoJS Xerox Alto Emulator
http://www.loomcom.com/jsalto/

Running Smalltalk 76

To run Smalltalk 76, boot the xmsmall.dsk image, and type:
>resume xmsmall.boot

329デフォルトの名無しさん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動向に触れる良い機会でしょう。

330デフォルトの名無しさん2016/09/18(日) 15:09:01.20ID:yxvzYeJB
動画うpよろ

331デフォルトの名無しさん2016/09/21(水) 13:10:05.22ID:GpzxBfpM
macOS sierraにしたらPharoもSqueakも動かなくなった

332デフォルトの名無しさん2016/09/21(水) 14:22:11.95ID:NRVuru4H
Gatekeeper関連の仕様変更に引っかかっているだけなのではなく?
http://applech2.com/archives/macos-10-12-sierra-upgrade-check.html

333デフォルトの名無しさん2016/09/21(水) 14:38:41.20ID:7yARBfoR
Squeak/Pharo系のアプリは全滅か?

334デフォルトの名無しさん2016/09/21(水) 20:37:30.04ID:GpzxBfpM
>>332
それじゃないな。クリーンインストールしたほうがいいのかも。画面真っ白で何もできない

335デフォルトの名無しさん2016/09/23(金) 08:36:51.44ID:cQNYWAur
Sierraクリーンインストールしたけどダメだった。

336デフォルトの名無しさん2016/09/23(金) 18:09:02.45ID:cQNYWAur
64bitのイメージと最新vmでならsierraで動いた
32bitのやつは動いたけどすぐ落ちて使えなかった

337デフォルトの名無しさん2016/09/23(金) 23:41:17.75ID:4cfFYHAy
macOS Sierraでうごかないやつこれためしてみて
vmの場所
https://bintray.com/estebanlm/pharo-vm/build#files
imageとchangeファイルの場所
http://files.pharo.org/image/50/
ここから64bit用の最新のやつ落してみて

338デフォルトの名無しさん2016/10/07(金) 01:18:57.84ID:7NDRQwS7
メタクリックできなくて詰んだ

339デフォルトの名無しさん2016/10/28(金) 09:52:42.42ID:zLimfAXR
Smalltalk Advent Calendar 2016
http://qiita.com/advent-calendar/2016/smalltalk

340デフォルトの名無しさん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.

341デフォルトの名無しさん2016/12/07(水) 19:30:36.23ID:dQ98CKcf
Smalltalk 7つの神話 - Qiita
http://qiita.com/tomooda/items/0f57a3f8fde98356c91a

342デフォルトの名無しさん2016/12/16(金) 05:01:57.48ID:wVYXqBDT
2017年からSmalltalkに(再)挑戦したい人へ
http://phaendal.hatenablog.com/entry/2016/12/14/230422

343デフォルトの名無しさん2017/02/19(日) 22:19:38.28ID:oHvSLa7Q
VisualWorksってダウンロードできなくなって
通信取り寄せしかないの?

344デフォルトの名無しさん2017/03/09(木) 12:58:33.85ID:3bYiHHP6
pharo5でprintItを調べたくてRubSmalltalkEditorとSmalltalkEditorのprintItにself haltを書き込んで
書き込んで、ワークスペースでprintItしてもデバッガーが起動しないんだけどなんでだろ?
そもそもhalt書き込んでる場所が間違ってるんかな

345デフォルトの名無しさん2017/03/09(木) 14:10:36.65ID:BFR+GBdm
手元のイメージではWorkspaceのprintItはRubSmalltalkEditorのprintItにhaltで止まるが。
実はPlayground?

346デフォルトの名無しさん2017/03/09(木) 19:40:21.75ID:t0eZA/yi
ごめんPlaygroundでやってた。

347292017/03/12(日) 00:43:54.04ID:AHF9JHq9
lisp系言語の「純lisp」に相当するような、
チューリング等価な最小のsmalltalk命令セットって
どのようなものなのでしょうか?

348デフォルトの名無しさん2017/03/12(日) 07:17:32.17ID:vU9+ZemV
そういうときってバイトコードインタープリターではなく
本当に純粋にSmalltalk式の評価系を考えるのでしょうか?

349292017/03/12(日) 14:27:30.98ID:pYc0weDt
あ、そっちの線は考えていませんでした。
smalltalkが実際にどう実装されてるかは抜きにして、
最小限、どの命令(?)があれば、
チューリング等価な計算力を持つかという、意味でした。

350デフォルトの名無しさん2017/03/12(日) 15:40:58.27ID:eGKUfyZ5
クラスで言えばIntegerとBooleanとBlockClosureがあれば、
逐次、繰り返し、条件分岐ができるけど、
全くSmalltalkらしくない悪寒

351デフォルトの名無しさん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階

352デフォルトの名無しさん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が続いている。

353デフォルトの名無しさん2017/04/01(土) 16:51:02.24ID:eZPxn7hQ
>>352
そこで挙がっている言語は普及しているから
無理やり使わされる(から嫌い)という要因が大きそう

一方Smalltalkは好きな奴しか残っていないイメージ

354デフォルトの名無しさん2017/04/02(日) 07:21:14.17ID:uhhm/UtX
Lispなんか使ってなくても嫌う人多いからね

355デフォルトの名無しさん2017/04/02(日) 12:04:02.82ID:j7pqXAos
嫌いと公言できるほど使いこなせないからかな

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

だいたいコイツ「やっていた」とか言ってても、あれがないこれがないって文句ばっかりで
何かを生み出す気ゼロ。調査だけで終わってろくすっぽ使えてないだろ…
おめーなんかより若い人のほうがよっぽどパワーを引き出しているよ

356デフォルトの名無しさん2017/04/02(日) 17:42:09.19ID:U8kt+FV8
Lispは嫌いだけどやってる
最近関数型が偉いみたいな風潮あるから
それ自体も嘘だと思ってるけど

357デフォルトの名無しさん2017/04/02(日) 17:45:00.93ID:U8kt+FV8
Smalltalkのユーザが高齢化してるのはあるだろうな
今はもうRubyやPythonやった方が絶対楽だし

358デフォルトの名無しさん2017/04/02(日) 20:06:27.08ID:Z4FPulUz
RubyやPythonのコミュニティーを見てるとSmalltalkerが踏んだ地雷を次々と踏みなおして爆発させているのを見るのがつらくて

359デフォルトの名無しさん2017/04/02(日) 20:09:43.67ID:0XahTNwQ
RubyやPythonで楽って感じたことはないわー

360デフォルトの名無しさん2017/04/05(水) 17:49:51.59ID:dSO/f0Am
>>355
この記事ポール・グラハムの劣化コピーじゃん
しかもこの人物物凄い不快感がする

361デフォルトの名無しさん2017/04/08(土) 23:20:46.77ID:nDDYstno
>>355
> このグラフが示してるのはSmalltalkerの高齢化です。
断言する理由が書かれていない
あとは延々「意識高い僕は選ばれた人間!」と言ってるだけ
典型的なバカ

362デフォルトの名無しさん2017/04/29(土) 03:51:08.50ID:syWvGXBC
でも不快に思ってるの実際おっさんでしょ?

363デフォルトの名無しさん2017/04/29(土) 03:53:36.98ID:syWvGXBC
>>352
ただのアンチM$かとおもいきやC#が入ってないのなw

364デフォルトの名無しさん2017/04/29(土) 22:13:44.34ID:EU04cbvt
GWだし、Mac の Pharo5.0 で Smalltalk 体験中なんだけど、
日本語IM(IME)で文字は入れられるけど、変換中の表示が
ないから、アプリ作っても使ってもらうことは出来ないなぁ。

オープンソース系はずっと有志が頑張ってたイメージなんだけど、
成果がバージョンアップで流れちゃう感じなんでしょうか。

365デフォルトの名無しさん2017/04/30(日) 00:35:44.72ID:ePGtBcSN
>>364
それな

366デフォルトの名無しさん2017/04/30(日) 00:40:52.57ID:SbBDypWI
昔から英語圏の言語は日本語に厳しいのよ。。。
オープンソースだと対応する義務も無いから特に。

3673642017/04/30(日) 01:58:36.51ID:Bxv2Awhp
他はなかなか良い感じなんですけどねぇ。アジア圏の他の国の人も困ると
思うけど。

Tekka 入れられたんでありがたく使ってますけど、本当は他所で書いて
コピペした方が実用的ではある…

368デフォルトの名無しさん2017/04/30(日) 22:26:02.97ID:ePGtBcSN
Squeak + Windows の方法は Pharo では使えないの?
http://phaendal.hatenablog.com/entry/2016/01/13/032456

3693642017/04/30(日) 23:05:29.56ID:Bxv2Awhp
Windows ではまだ試してませんが、この辺を見ると Squeak と Pharo は
同じ手順で OK という訳にはいかなさそうです。

http://phaendal.hatenablog.com/entry/2016/12/12/221828

370デフォルトの名無しさん2017/05/01(月) 08:31:12.87ID:5t91h+DH
ほらやっぱRubyやPythonの方が楽じゃん
日本語の問題だけでもだいぶ苦しむ

3713642017/05/01(月) 09:35:17.60ID:qKmHB6Zh
Windows7 と 95 にも入れてみました。

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

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


> ほらやっぱRubyやPythonの方が楽じゃん
全部できれば良いだけでは?

372デフォルトの名無しさん2017/05/05(金) 20:15:03.44ID:TOnHpg4g
Sirenに興味を持っていじってみようと悪戦苦闘しているのですが
使ってたって人いますかね?
現状だともうメンテナンスもされてないみたいだけどSqueak3.0か
VW7.5で動くようなんですけど。
インストールの仕方も良く判らない
ttp://fastlabinc.com/Siren/

373デフォルトの名無しさん2017/05/06(土) 07:46:20.23ID:gBi5/Vqg
>>372
そのページのSiren7.5.zipはもう試されましたか?

You don't have to build the image from scratch, though; the Siren ZIP file 
has a pre-configured VW virtual image (Siren7.5.{im,cha}) that ought to 
work for you out of the box. 
http://forum.world.st/Siren-installation-td134174.html

374デフォルトの名無しさん2017/05/06(土) 12:39:15.39ID:FrvZMHcY
>>373
VWは今インストールディスクを送ってもらっているところなので
Siren7.5はダウンロードして待機中です。
Squeakは2.7で動くらしいのですが、Windowsは専用のimageがある
ようで探したのですがもうダウンロードできないようでした。

375デフォルトの名無しさん2017/05/06(土) 22:03:17.44ID:xBPQmkVL
Cへのトランスレータとしてしか使ってない

376デフォルトの名無しさん2017/05/14(日) 11:16:56.51ID:tMuNfTLo
https://twitter.com/umejava/status/863400931081179136

5/31日の100回記念Smalltalk勉強会のLT受付開始しました。エントリ希望の方はコメント欄へ書き込みお願いします。
https://smalltalk.connpass.com/event/56564/
なお、100回記念缶バッチが配られます。抽選でPharoのTシャツもゲットできるかも。

新着レスの表示
レスを投稿する