Smalltalk総合 Squeak Pharo
人気ないみたいだけど Smalltalkは現役だし スレがないとまずいっしょ http://smalltalk.smalltalk-users.jp/ こんなサイトが・・・ エイプリルフールの残骸らしい ちゃんと掃除しとけよw しかし超重要言語なのに極端に人気ないよな D言語より書き込みないってどうなの このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所 個人的には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/ Smalltalkは興味はあったけど仕事にならんかった つか、廻りの誰も知らんかった オブジェクト指向を鍛えるにはひたすら便利だと思う。実行しているアプリをインスペクトして オブジェクトグラフを書いて、各クラスの役割を考えるのはかなり役に立ったし。 結局、よくわからんかった。Squeakの本とか読んで試してみたけど 何でも出来るのかもしれないけど、「作法」?みたいなのがまったくわからんかった >>12 具体的にSmalltalkでどんなことを試してみたかったかを 書いてくれればなにか手助けできるかも >>12 良いサンプルプログラムがあると良いんだけどね Smalltalk、「クラスライブラリ」のサンプルとしてはとても良いと思うけど 「アプリケーション」を書こうと思うと「なんか違う」感が強いね 「隅から隅まで知ってないとダメ」見たいなノリも嫌い ノリとか以前に、そもそもそういうコンセプトで作られた環境だから仕方がない。 Smalltalkの底を流れる設計思想 http://web.archive.org/web/20041016084842/http ://marimpod.homeip.net/chomswiki/24# >>15 具体的にはどういうところが「なんか違う」と思った? Smalltalkはオブジェクトの協働というそのコンセプトから、アプリケーションソフトという概念が希薄で 環境内でアプリに見えるものも、使いやすいようにそう見せているだけだったりするのだけれども そういうことについてだろうか。あるいはイメージベースによって処理系ごと永続化されていて、 アプリケーション配布のときに余計なものを含めないといけないことに不自由さを感じた? >>17 「箱庭」というのは言い得て妙かも。 そもそものスタートがアラン・ケイの「ぼくのかんがえるさいきょうのOS」の 試作環境だから。 MessageCaptureってなんでわざわざnewせなあかんの? MessageCaptureに直接Message送られるようにしとけばよかったんちゃうん? ProtoClassをMetaClass objectが直接継承してないから? ネット調べると、どう書くorgでも一人頑張ってたid:suminしかいないイメージ いにしえの日本語化関連の人たちとかは脱Smalltalkしたのか まあどのソフトでも日本語化関わる人たちってだいたいいなくなるよね ユーザーとは違うんだろうな Smalltalkって何がすごいの? ライブラリがしょぼくなったRubyだよね? >>23 Rubyよりはイントロスペクションが強力で、デバッグ時の静的・動的トレースが楽ちん。 あと目的によってはユーザーが気ままに処理系をいじれるってイメージがあるけど >>23 > ライブラリがしょぼくなったRubyだよね? このたとえがわからん。Rubyってそんなにすごいの? ユーザが多い分使えるライブラリは多いんじゃなかろうか そんな事言ったら fortran 最強だけど >>25 それってRubyの潤沢なライブラリを捨ててまで使いたくなるものなんでしょうか?? Rubyってそんなにライブラリーあるのか? 総量からするとSqueakの半分も無いんじゃないか? >>18 >アプリケーション配布のときに余計なものを含めないといけないことに不自由さを感じた? そんな感じ 「2チャンネルの専用ブラウザ使おうとしたらVisualStudioが付いてきた」 みたいな感じになるでしょ 昔のQKS Smalltalkだったかな?開発環境とか不要なクラスを除外したイメージが書き出せますってんで買ったけど イメージファイルが1.44MBのフロッピーに収まらなかったんでガッカリ来た またこうしてRuby使いがいらぬ恨みを買うのであった 自重してくだしあ rubyって、REPLに先祖帰りしたSmalltalkでしょ? >>31 そのライブラリーだけじゃSmalltalk環境一つ作るだけでも 相当追加でコード書かなきゃならんだろう まず大前提として、Smalltalk環境なんてゴミは 求められてないって理解しようね 要らないもの作るためのライブラリが揃ってないのは 誰も必要無いものは作らないってだけの話 使う人がいるからいっぱいSmalltalk環境があるんだろ 正規表現ライブラリーが100個あったりとか、 fcgiをラップするライブラリーが100個あっても仕方ないんだけどね。 1000ライブラリーがあるならせめて700通りの問題に対応できなきゃ ゴミじゃね?50個ライブラリーを集めたら10000行掛かった プログラムが20行程度、むしろコードは一切書かず数回の クリック操作で完成するとかじゃないと嬉しくはないなぁ。 >>36 つまり、君の大好きなRubyには、Smalltalkのそのゴミがごとき環境を 経ずとも必要とされる機能が通過不足なく用意されているんだよね。 それはよかったじゃん。で、ここにはいったい何しに来たんだい? >>36 で?そのゴミからの返答を求めているお前の存在価値はどこにある? Smalltalk環境ってOSの上にOSモドキ作ってるだけだからなぁ 普通にOSの機能使ってれば要らないよね Ruby信者ってキモイな。こんなSmalltalk使いのマッタリスレにまで来て、 自言語の優位性を誇示しにくるのか? どんな言語/環境でもOSへのI/F持ってるよね。 OSへのI/Fをその言語/環境のパラダイムでモデル化してるよね。 結局、どんな言語/環境でも内部にOSモデルを持ってるよね。 そのOSモデルがその言語/環境とシームレスに繋がる言語/環境は優秀だね。 普通にOSの機能を使ってるだけに見える言語/環境はモデル化がクソだね。 で、>>41 さんが大好きなRubyはどっちなんだい? 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の最良の部分を手にしているのだ。 C#が見ているOS .Net Framework Javaが見ているOS JRE どっちもSmalltalkの真似事じゃあるけど十分普及してるわな てか、GUIが気に入らんだけならDolphinみたいに自分で表示させるようにした GUIかつ、OSネィティブデザインのGUIしか表示させないようにする手もある。 >>43 ダン=インガルスがそんな感じのこと言ってたな。 OSの機能は言語に内包されるべきだとか何とか。 .net も JVM も複数言語で使えるのが人気の秘訣 引きこもりSmalltalk環境とは違いますから 興味あるから試してみたいんだけど、 既にあるコード資産を活かしつつ、徐々にSmalltalkに移行できるかな? 例えば、以下のようなシェルスクリプトの処理があったとき、 mapperだけをSmalltalk製に置き換えられたりする? cat data/* | mapper | sort -k1 | reducer > result.txt 一応GNU Smalltalkなら可能らしい所までは分かったんだけど、 何かニセモノ扱いっぽいので、ちょっと躊躇してしまう…… その手の用途ならheadlessとかOSProcessとかで調べたら 色々出てくると思う ありがとう。その単語で検索したら 知りたい内容のStackoverflowのページが見つかった シェル端末みたいなSmalltalk環境って無いんですかね。 bashやzshみたいに日常作業をこなしやすいやつ。 せめてself inspect.できたり self help.できたり ファイル名補間できるものが欲しいです。 >>55 個人にどうこう言うつもりはないけれど、こういうのよく見かけるので書くけど、 (すでに好きで制約があっても使いたいととかではなく、そもそも使ったこともないのに) シェル端末だけで使えるならSmalltalkしたいけどって人は、例えば (3/4) inspect とかが どんな風に出力されればいいと思うのだろう… ちょっと理解に苦しむ。 denominatorやnumeratorとかのインスタンス変数の値を表示するところまでは いいとして、その書き換えは(普通はもちろんそんなことしないけど、インスペクト しているのが開発中の自作オブジェクトだったりで仮に必要なら)インスペクターは 介さずに直接 instVerNameAt:put: とかでやりたいということ? さらに、 インスペクターはある種アプリケーション様の振る舞いをするから別ウインドウに 保持しておきたいよね。そういうのはEmacsやvimみたいなエディタを介在させて インスペクターの起動毎にペインやバッファを切るということだろうか。 もちろん、そういうニーズがあるのなら作るし作るべきなのがSmalltalkのスタンスだけど そんな不完全なものでSmalltalkを学んだり使ったりして何が嬉しいのか、誰か説明して!w シェルとして使いたいならinspetの出力とかはgstの形式で満足だよ 用途は (File path:'/home') list display.とかでbashを置き換えたいだけ で。できれば自分でシェルオブジェクトを書換えて タブ補完とかしたい。 そんでシェルスクリプトをSmalltalkで書いてしまいたい。 さらに出来るならDBusの呼出をメッセージ式にしてしまいたい。 後でわかることだが これがあの有名なシェルを作ってしまうプロジェクトの始まりであった >>58 それはもうすでに好きで、制約があっても使いたいパターンですよね? UNIXも飽きたからSmalltalk的環境が普及して欲しい。 その時の言語がRubyでも構わんよ。 実行環境入れるのも面倒だから まずは日常会話に取り入れていけばいい 例えば嫁さんとのメールとか かおり 買った?: おかず. 俺 後で買うよ: 夕方頃. SqueakでもPharoでもVisualWorksでもいいから、好きなSmalltalk処理系をビジュアルシェルとして使えばいいじゃん? 起動が重い上他との親和性が低いからなぁ sshで使った時、他のshellと交換できるぐらいの 可搬性は欲しいな はあ?Squeakが重いか? よくいるよね、20年前のイメージで重いとか遅いとか高いとか言っちゃう人。 >>68 端末としてつかうにゃ起動終了が重いよ。 gnome-terminalやKonsoleの10倍以上遅い。 ちょっとした作業のためにこれだけ待たされるのは辛い。 >>70 え? ウィンドウマネージャとしてX.orgを起動してからずっとSqueakを使うんじゃないの? どうしてgnomeとかKDEなんて必要なの? 面白い言語で案件があるのなら使いたいけど、いろんな技術トレンドの元ネタ的存在にも 関わらず商業的に失敗したな。後続の言語に美味しい所を持って行かれたというか。音楽 でいう既に廃盤済みの知る人ぞ知る名盤という感じ。 むしろ最初は商業ベースがメインだったんだよ ただ使い物にならず他言語に流れた いまは一部の物好きの玩具 一部の物好きのリストがこれ ttp://smalltalk.cincom.jp/main/successes/ >>74 さすがに、そのリストは少なすぎる 普通に使われてる言語はそんなもんじゃない >>71 vlcやらvimやらOperaがSqueak上にあればええけど 現実はそうじゃ無いじゃん。 Squeak上にLinux移植できたなら話は変わるだろうね。 Athena Smalltalk http://bergel.eu/athena/ Little Smalltalk の作者自身による Java 拡張移植 SmallWorld から派生 シェルで使うには java -cp athena-0.1.jar athena.engine.AthenaShell -i ちなみに Java なためか日本語も大丈夫っぽい 2.7のときに大学でsqueakでHTTPサーバを作って遊んでたのだが、そのときのソースを流用できたらいいなぁ squeakは環境全部が一体だからサーバ系は致命的なバグを混入させてしまったときに、次にそのsqueakそのものを起動できなくなるようで怖い All in one をダウンロードしたらexeファイルがあるフォルダにimageファイルがなかったからあせった Squeakって、もしかして Windows7 は対応してなかったりします? 起動した直後にエラーが出るんですけど >>81 普通に使えている。 エラーメッセージはちゃんと読んだのか? よく見たらzipファイルの解凍に失敗してた 解凍ソフト変えて解凍したらとりあえずエラーなしで起動できた たしかに all in one + 解凍レンジだと警告が出る ためしたいけど、SqueakとPharoの違いが分からないです >>85 分からないうちは、日本語化されたSqueakを使っとけ 入門書でお勧めってある? 「Smalltalkで学ぶオブジェクト指向プログラミングの本質」は、 若干宗教臭いのと、このコード入力して実行してみてで説明が終わってる部分が多くて、 今一だった >>87 サクサクSmalltalk―オブジェクト指向のアートとサイエンス 実際の所、smalltalkはコードからしか学べない。 「Smalltalkベストプラクティス・パターン - シンプル・デザインへの宝石集」が良かったが 入門書ではないかもしれん >>88 これは読み易そう 無理してVisualWorksやPharo使うより、素直にSqueakからはじめたほうが、楽かもしれませんね >>89 考え方が身につきそうな内容っぽいですね 中古価格も手頃だし… >>90 長く使えそうだったので以前、購入しました 斜め読みした後、積読中ですが… ExterenalStream系にbinary送って StreamEncoderにbigEndian:false とかおくってもほぼ全部のEncoderがこれ無視しててBigEndianしか考慮してないのな。 結局ちまちまとバイト単位で読んでbig<->littleの変換を手動でしなければいけないという もうちょっとこの辺直してくれよ・・ パソコン初心者向けの本か、専門家向けだけど古くてタイプライターで文字打ったような本のどちらかしかない印象 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なダイアログを出すにはどうしたらいいのでしょうか? >>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 なんだそうでしたか。>98 コンテントはあるのが普通なので、それなら問題ないですね。 ありがと。 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です。 >>100 例によってPharoは使っていないのでハズしていたらごめんなさい。 ちょっと調べてみたのですが、どうもPharo 1.4ではSqueakと違い、Workspaceや Transcriptであっても単語の区切りで行を改めるようにはなっていないように見受けられます。 これは Paragraph>>#composeAll が常にマルチバイト文字列用の改行位置決めの機構を 使っているせいのようです。したがって、この部分をシングルバイト文字列用の当該機構を 使うように書き換えてやれば、ご呈示のスクリプトは変更無しに単語の区切りで改行される ようになるはずです。 具体的には Paragraph の composeAll メソッドを探し、multiComposeLinesFrom: という キーワード部分を composeLinesFrom: に書き換えて、黄ボタンメニューから Accespt (s) します。 ありがとうございます。>>101 TranscriptやWorkspaceを実際に開くと、単語区切りで行を改めてくれているんです。 英単語だけのダイアログの例を出しましたが、 もちろん日本語のダイアログを出したいこともあるので、 Paragraph>>composeAllを書き換えるべきかも、もう少し考えてみます。 お役に立てずすみません。Pharo 1.4 ですよね? http://www.pharo-project.org/pharo-download/release-1-4 を念のため落として調べてみたのですが、 やっぱり手元の環境ではWorkspaceは単語で折り返さないようです。 いずれにせよ、単語区切りで折り返すか否かは Paragraph が 何か挙動を代えている可能性が高いので、そこを意識して 折り返さない LongMessageDialogWindow と折り返す StringHolder など とでコードや設定の違いを調べてみると、答えが見つかるかもしれません。 Paragraphは単語区切り作業をScannerに委譲しているはずですが、 委譲先を選ぶ際にどうも筋の悪いことをやっているように見えて、あきらめました。 実のところ、Pharo2.0を試したら、>>100 のダイアログは簡単に単語区切りになったので、 移行しようと思ってます。 ありがとうございました。 なお、再度Pharo1.4を取り直して試しましたのですが、 私のところだとWorkspaceやTranscriptは何もせず単語で区切ってくれます。 MacでもWindowsでも。 Settings等を何もいじらない、取ってきたそのままの状態で試しました。 Smalltalkで書かれたnative用のCompilerと Smalltalkで書かれたvmのSourceて無いの? Pharo当たりで、Nativeで動くVMを生成して、 そのVMでPharoを動かしたい。 >>79 本番稼働前にimageのバックアップとっとけばいいだろう。 >>105 自分で何を言ってんのかわかってんのか? >>108 VMMakerで作れるcog vmみたいなもんはないかって話です Pharoってデフォだとwindowsで、FileStreamのstdoutなんかから 取得した標準入出力がまともに動かんね。 そろそろなおらねぇかなぁ。 7.10pulのOSX版、各種描画や日本語表示入力関連がやっと直ってきたね 今までストレスマッハだっただけにこれはとてもありがたい しかしVMが64bitじゃないのは今後に期待か・・ roadmap見ると一応いつかはやるらしいが linux版は未だInput Methodがマトモに動かねえ MatriXが面白すぎてブロック投げまくってる Polycephaly1がpipe動作だったのに対してMatrix(Polycephaly2)がsocket動作になったようだ 異なるマシン間でVisualWorks専用のプロトコル流すって話題があったと思って store見たらPolycephaly-Networkなんてのがあるんだね 全画面表示のソフト作るのはこんだけ。 | 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 でしょ。 電車の中の暇つぶしにゲームやらずにこれでプログラム書いてるわ。 VisualWorksいいっちゃいいけど、 Linux Unix 環境じゃ 全角文字の表示がダメダメ。 あと、OSのapi呼び出すときに使うthapiが遅すぎ。 job queue 方式にするなり何とかしてほしい。 Smalltalkって、html5+javascriptと比べて、どの辺りにアドバンテージあるの? >>121 殆どドラッグ&ドロップでWebサイト作れたりする。 しかも、サーバーと区別がいらない。率直にいって比較にならん。 具体例: Seaside 難点は、OOが解らない人には使えないとこか。 多態やセレクターの指定で切り替えれば済む事を、 bool値とifで凌ごうとするヤツや、引数や戻り値は 色んなオブジェクトを使えばいいのに、数値や文字、 日付ぐらいしかつかわないみたいなヤツは使えないだろ。 オブジェクトの入れ替えで動作を切り替えていくからな。 どうでもいいけどHTML5なんて規格は存在しないから 正確にはDOM4規格だよね。 ほとんどリクエストの無いしょぼいサイトなら Seasideが向いてる つまり、ほとんどのサイトならSeasideが向いている。 小規模社内システムとかSeasideで十分だよな。 あんなんにJavaとPHPとかオーバースペックで効率悪すぎるわ。 そういやPharo 3.0が出たな。 そろそろVisualWorksやGSTみたいに名前空間搭載すればいいのに。 ラルフ先生はVWが名前空間導入した時大喜びしてたなー そらやっぱ接頭辞と違って空間名の変更が楽だもの。 それにSmalltalk環境がClass名とちゃんと別扱いしてくれるし。 GNU SmalltalkでImageに保存したClassの削除方法がわかんねー removeFromSystemとか無いんかい Seasideの新しいバージョンでてるな パフォーマンスも向上したとかなんとか あれの使い方分かってないんでまだ手出してないが どうにも詰まって進みようがなくなったので質問です やりたいことはHTMLをparseしてタグ単位にnode化しtree状にばらして rootから各nodeを辿れるようにしてelementを適当に参照したいわけです XML.XMLParserに読ませるとまず通らないというか HTML ≠ XML なので当然なのかも知れないですが XMLMarshaler(これと連動しているXPath) , SIXX これらも見てみましたが HTMLを読ませることはできないような気がします。 いい加減に書かれているHTMLをこれまた適当にparseしてくれるようなクラスはないんでしょうか。 自力で書くことも出来ないわけじゃないと思いますが、WebServiceのドキュメントを見る限りはHTMLを読めるようにも見えるので情報不足過ぎて困ってます。 これを使えとか何かヒントがあったらお願いします! >>132 古いWebBrowserの実装がコントリビュートかPublic Repositoryにあったはず。 それとは別に、埋め込みのWebBrowserコンポーネントが使えるから、パースはそちらに任せることができるかもしれない。 うまくいかないのと追加したい機能があるんで イチから作ることにしました 助言ありがとうでした >>132 本当にしたい事は何なの? 昔Web巡回ソフトつくったけど、その時は必要な情報以外は正規表現で消したよ。 この方法だと汎用性は無いけど結果はすぐ出せる。 >>137 特定キーワードの後に来ているtableを特定して要素抜き出したりとか iframe分割するとかそんなとこです csv入出力に加えてタグの値をセルから拾って再加工してhtmlに吐いたりとかそのへんも必要です parseして再帰構造作るところまでは終わったので /html/body/table/3@4 とかのString pathからelementを取得できるところを書いてます VistaScript(VistaSmalltalk)使ったことあるヤツ居る? VistaScriptには思い出もなにもあったもんじゃないらしい やっぱりSmalltalkは言語だけを切り離せないんじゃないの そりゃね フレームワークなしじゃ何の役にも立たないし Frameworkって嫌な響き。 Class Libraryでええやん。 Frameworkの場合は、あらかじめ必要なクラスがあるわけじゃないし… 青木導師の「Smalltalkイディオム」買いましたが、やっぱこれ、逝ちゃって ませんか? さまざまな文献からの綺羅星のごとき引用も、変化自在な例え話も、「ために する」感じがして読み手のこと考えているのかなと。 例えば城砦都市の話とかでセキュリティの話をしているかとおもうと、それが Smalltalkのオブジェクト間の通信の自由さと比較されたり。 それってぜんぜん別の話じゃあ・・・? 引用も多すぎて、なんか引用が多すぎる文章をからかった、パロディみたいだ と思いました。本気ならコワイ。 でも内容は高度で、Smalltalk関連情報に飢えている心の隙間を埋めてくれる 良書であるとは思います。 結論:自意識過剰 あの人の本は読んでも役に立たないから MLでもそうだったけどわざわざ理解が遠くなるような投稿ばかりしてたり 本質そらすような誘導してたり 読み物として買うならいいけどあの人の本は入門させる気がないって内容が多すぎる どうでもいいことばかり書いてあるだけで何かできるようになるわけじゃないからね・・ 一応それなりのポジション扱いされてるから表立って批判されることはないけど MLでも登場すると他の人がいちいちフォローしなきゃいけなかったりとなかなか困った存在ではあったと思う VWに関しては公式pdf読んだりExampleやったほうが早いしね Cincomに連絡すれば日本語版を送ってくれる。うれしいことにドキュメントも 日本語。 Cincomは、オブジェクト脳育成ツールとか、分析技術育成ツールと して割り切って使うようにプロモートすればいいのにな。 それよりいい加減ネイティブなGUIを使うようにしてほしい 7.10からUISkinningとか入って来てるけど 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. !! 64bit化されてなかった そろそろ10.5以下切ってもいいのに Pharoいいな Squeakが子供向けっぽくなったから敬遠してたけどまたSmalltalk系を 触ってみたくなった rasberry pi に scratch が入ってるらしいから、これから買ってポータブルの squeak 専用マシンにしようと思う Seaside を動かすサーバってログインしてSmalltalk動かしっぱなしにしとかなきゃ駄目なんか? それとWebサーバ落ちたらどうやって再起動するの? >>160 Webアプリケーションサーバとはそういうものだ。 Webサーバが落ちたら、先に起動したときと同じ手順を踏むだけだと思うが、何がわからないのかがわからん。 >>160 画面が邪魔ならheadlessで起動すれ >>161 普通のWebサーバならデーモンやサービスで動いているんでログオンしてる必要は無いし 死活監視があるので落ちても自動でサーバ立ち上がるし サーバがバックグランドで動かいななんてあるんかと思っただけ >>162 Smalltalkをデーモン化するようなものか? Smalltalkのオススメの本かサイト教えてください。 正月休みに遊んでみたいんで。 >>164 ここらへんからよさげなのを選んでみてはどうでしょう。↓ Smalltalkをちょっとかじってみたい人のための、チュートリアルまとめ http://qiita.com/sumim/items/6bed17961bd57daf88a3 >>163 deployすれば一つのアプリケーションになるよ 運用がうまくいくかは不明 >>165 有難う御座います〜♪ Squeak見て、何じゃこりゃ〜分けわからんになって Pharo見てこれなら使えるかと思ってるところです。 >>166 deploy? なんかわからんが調べてみます >>168 VisualWorksだけね SqueakやPharoは知らない >>160 Smalltalk にはいわゆる方言がたくさんあって、それぞれに事情が異なります。 さらに Seaside は人気で、処理系の差異も乗り越えて比較的多くの処理系に移植されているという 特殊な事情があるので、質問するときは特にどの処理系を想定しているか限定したほうがいいですよ。 Smalltalk を学び始めるタイミングでは、すでに他の言語にかなり精通している人が多いので めんどくさい手続きかもしれませんが… squeak eToysでキーボード入力を取得するにはどうしたらいいの? >>172 http://wiki.squeak.org/squeak/488 ここ見た?このページにある、 http://bike-nomad.com/squeak/DriveUsingKeyboard.002.pr このプロジェクトをSqueakland 2005Jで読み込んだら矢印キーで操作できた。 worldのkeyWatcherスクリプトに書いてある。詳しくはわかんない。 ありがとう けれどそれeToys 5.0じゃダメみたい でもそのページのワールドのキーストロークを使えるみたいな説明があったので 部分的には使えるかな そこのページに書かれているけどモディファイやキーや複数キーの同時押しなんかには対応できないらしいのが残念 右と上の矢印キーの同時押しで右上に動くとかやりたいけど無理みたいね 今年を振り返って一行プログラムでもやろうかと思ったけど 特に何も思いつかなかった >>4 超重要なのは君の頭の中だけで 誰も必要としてないからだよ というツッコミがないのが凄いスレ Smalltalkより キミがどうしてそんな書き込みを 今、わざわざしたくなったのかの方に興味がわく そういや昔アラン・ケイが来日したときサインして貰った本がでてきた >>178 オブジェクト指向の元祖はSimulaだしSmalltalkなどは完全に無視できる派 ストラウストラップがSmalltalkを重要視してないので かつてはC++ユーザーにもそういう人がいたのだという。 うん。 世の中にはそういう主張をする派があって、キミがその派に属することはわかった。 で、ならばその完全に無視していいはずの Smalltalk のスレを 今、ここにきてどうして無視できなくなったのかに興味がわく そんなことより WindowsのVMはIMEのインライン化がいまだにできないことと OSXのVMはネイティブのMenuBar(NSMenu)を使えるようにならないことが不満ではある Windowにメニューが張り付くのはあんまりいい気がしない・・ これ最近さわりはじめて 発想がすごく面白いと思ったけど やっぱ実用的な面で欲しい機能もある たとえば作ったアプリは実行ファイル (Windowsでいう .exeファイル)で配布したい 実行形式じゃないと絶対ダメってほど頭固くないけど (速度が)早い・(容量が)小さい・(コードを)隠せる ってメリットがあるから便利だと思う それ(に近いこと)ができる処理系もあるようだけど もともと少数派のSmalltalkの中で分家筋を使うと さらに日本語ドキュメント少なくなって使いにくいし (というわけでとりあえずSqueakさわってる) Webアプリならサーバの部分はクライアントから見えないけど 今度はレンサバに入ってないからPHPのほうが早いってなる そういうCファミリーのメジャー言語のいろんな恩恵に どっぷり漬かっちゃってるから参入障壁になってる 自分ひとり用の環境としては面白いけど…… Smalltalkは初心者だから なにか初歩的な誤解があるかもしれないが あったらツッコミしてくれ >>183 俺はずっと初心者だけど やはり最初は.exe作りたいと思ってた できることが面白くなってからは、そういうこだわりは無くなったかな まぁ配布したいものもないんだけど Scratchもそうだけどpr、sar、imageで配布だし、そういうプラットフォームなんだと割り切ってる 他の人に使ってもらうにはインストールから説明しないといけないから、 確かに寂しいと思うけどね SqueakだとWindowsの.exe作る方法もあったと思うけど... そうね 自分ひとり用の環境としては面白いからSqueakでArduinoと通信するものとか 自宅LAN用のComSwikiのプラグインたまに作るくらいだけど >>184 >そういうこだわりは無くなった >自分ひとり用の環境としては面白い オレもひとり用で完結した環境でいいかなとも思ってるんだけど やっぱ最終的にはアウトプットを外に出したいって気持ちもある それでプログラムの開発環境(言語)としてこれを使いたい とりあえず動くプロトタイプ作るなら早そうだから もし配布までになんかしら難があるようなら 本格的に開発するときは他言語に移植してもいい 二度手間だけど設計ツールとして割り切って使う >他の人に使ってもらうには >インストールから説明しないといけない 独自形式の配布は一般ユーザにとって障壁になるよな >SqueakだとWindowsの.exe作る方法もあった サンクス それは知らなかった 探してみる >>184 VisualWorksもexeやappで配布することはできる やり方が大変面倒だがApplication Deliveryの項目を一通り見ればわかると思う Smalltalkはどんな分野に向いてるの? なんでもいいんだけど、昔Perlが流行ってた頃 文字列処理が得意って言われてたみたいなの >>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も動的なソフトの入れ替えの仕組みがあるか >>188 > 走ってるシステムを簡単に変更できてすぐに結果がわかる言語 そうだね 開発環境の部分はすごくとっつきやすく感じた 逆に他言語だと今まで動作確認のたびに いちいちビルドしてたのがめんどうくさく感じてくる でもいざ実用的なソフトを開発しようとなると 巨大なクラスライブラリを覚える必要がある しかもそれはロクに説明なくて ソース(か英語ドキュメント)を読まないといけない GUIの部分はやさしいし 言語仕様もシンプルだけど ライブラリを使うのが難しい >>189 「お勧めなのは、エキスパートによって作られた、広大なライブラリの類に頼らないことです。それは安易な解決策になってくれるように思えるだけです。代わりに、何もないところから、素早くプログラミングです。Squeakはそうした目的のために作られています。」 特別寄稿 ー Alan Kayからのメッセージ『ダイナミック・オブジェクト』(『自由自在Squeakプログラミング』梅澤真史著) まぁそうは言っても...だけどね VWを業務で使ってる人達はどう思うのかしら? でもライブラリの機能や使用例もソースから調べやすいし、テストしやすいとは思うけど、 最近何も作ってないや >>190 それ読んだとき半分くらいは共感したんだけど (C++とWin32APIがめんどくさすぎるから) できる範囲で車輪の再発明するとしても 入出力とか、画像処理、通信みたいな低レイヤーは ほんとに何もないとこからは作れない どんな言語でもライブラリ覚える必要はあるんだけど これは日本語リファレンスがすごい欲しくなる まあアウトプットが文字列みたいな 小物アプリをぼちぼち作りつつライブラリを 少しずつ覚えていこうみたいな感じなのかな >>191 そうだね そう思う ググれば日本語でも参考になる例はあるから、なんとかなるけど、 ライブラリ覚える気はないけど、知らなければ発想できないこともあるしね。 『自由自在〜』読み返したり、Pharocast見たりしてできること、アイデアを学ぼうとするけど、 それより何か作ろうとしなくちゃダメかな、と思ってる Smalltalk ほど単純なルールで構成されてる言語・環境を どうしてだか理解できない人がいるのはしょうがないとしても 逆恨みして粘着アンチ化するのをどうにか避けられないものか。 Squeakでプロトタイプ作って来られるとか経験すれば、逆恨みする人の気持ちも分かると思う Smalltalkで受託開発してるけど逆恨みする人の気持ちは全くわからない。 Smalltalkはメッセージングみたいなルールが 全体で一貫してるから理解しやすいと思うけど なぜかキラーアプリがないよな 代表的なキラーアプリがあれば もっと広まってたと思うんだけど それは「計算機の言語を狭い意味でとらえる人」がいかにも言いそうな Smalltalk評かと http://web.archive.org/web/20041016084842/http ://marimpod.homeip.net/chomswiki/24# てなことをいうと反感かってアンチが増えるわけか… 失敬、失敬^^; たしかに Ruby におけるとっついやすい Rails みたいなキラーアプリがあるといいのかも。 そういえば単なる言語ではないんだったな 言ってることのカッコ良さに当時はしびれた(死語)ものだけど まあ先を読むのって難しいってことで 利用者が全体を俯瞰して 際限なくカスタマイズできるのは 良いコンセプトだと思う でもイメージが肥大化してきたときに 収拾をどうつけるのか クラスを足すのはかんたんでも削るのは難しい 使い始めちゃうと依存関係ができるから それとガベージコレクションをすりぬけた メモリのゴミがたまっていきそうなもんだけど 毎日手を入れ続けてる 秘伝のタレ状態でいいのか それともOSの再インストや 新OSへの乗り換えみたいに ファイルでバックアップとっといて 定期的にリセットするのか 長く使ってる人はソース管理どうやってんの? >>201 20年ぐらい昔のSmalltalkの話をしていないか? >>202 いや使い方調べてて気になったんだけど ネットの記事は1年前でも20年前でも 同じように並んで表示されてるし 問題ある場合のほうが記事多いから じゃ今はもうそういう問題 起こらないように進化してるんだ? PharoやSqueakならコードはmonticelloで管理するのが普通だし、 filetreeでgitでコード管理する人もいるしで、 イメージの中でこねくり回し続ける人はそう多くないと思うよ。 自分もイメージなんて1週間も経たないうちに捨てる。 新しいイメージに必要なパッケージ群を一通り入れるのは metacello使えば1行のコードで各パッケージをそれぞれの レポジトリから最新版をダウンロードしてきて初期化まで 自動的にやってくれる。 >>204 サンクスなるほど 今はそうやって管理するのか つまりSmalltalkerが他言語との差異のひとつとして挙げる事が多い イメージ方式は問題だらけのオワコンで 結局は普通の言語と同じ方式に落ち着いたわけだ >>206 そう。だからキミは Smalltalk のことなんか気にせず 先進の他言語ライフをエンジョイしてください。おしあわせに。 ただ口が悪いだけで悪意は無かったという可能性もあるから 念のためマジレスしておくと(でもなきゃ煽って情報を得ようとする方略を助長するようで残念なんだけど) イメージベースのメリットはソース管理だけじゃなくて たとえば再現困難なデバッグの状態を保存できるとか (いうまでもなく保存できるかは状況にもよるけど、同等機能をいっさい欠いているよりはマシというレベルで) オブジェクトメモリ内のオブジェクトの状態保持が主なので ソース管理の方法が他言語に倣ったからっていちがいにオワコンということはないと思う。 >>206 外部ストレージにパッケージを保存できることとイメージベースは全く矛盾しないどころか むしろ長所を伸ばしあう関係にあるわけだけど、まあ君には関係ない話だね。さよなら。 これからはスマホの時代だけど Smalltalkでスマホ開発ってどしたらいいの? やっぱWebアプリにするのかな >>183 VisualWorksならexe作れるよ >>210 Pyonkee とか Dr. Geo とか調べてみそ。 Smalltalkの最大の欠点はOSの上にOSモドキを乗っけるナンセンスさと マイナーな独自UIを強制するところにあるから、 一からスマホOSをSmalltalkで作って UIをiPhoneに似せれば天下取れるかもよ まだいたのか、キミ… ^^; ナンセンスということなら、キミがここにいること自体がナンセンスだよ。 とりあえず、これ↓を10ぺんくらい読んでみることをお薦めすることしか今はできない。 「Smalltalkの底を流れる設計思想」 http://web.archive.org/web/20041016084842/http ://marimpod.homeip.net/chomswiki/24# >>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. >>212-213 あんがと しかし情報すくなすぎる >>215 「Smalltalkの底が知れた設計思想」だね。10回読んでみるわ クラスライブラリの実装見ると たいてい使える機能から予想するよりも 短い記述になってる印象なんだけど なんで? 文法が簡潔で記述量が少なく書けるから? 書き手がOOマスターしてるから? それとも継承しまくってるから (継承を追って見るくらいはしてる) 総量は多くても個々が少なく感じるだけ? じつはシステムブラウザから見えない部分 (インライン)で下処理を済ましてるから? >>220 本当に実装量程度の機能かもしれないし、 からくりがある場合もある。 具体的には、どのクラス?(できれば処理系も) >>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: ''. "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. 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名まで存在するか見てくれない。 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は受け取れない。 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. >>221 処理系はSqueak クラスは「Kernel-」系のクラス こんなコアな部分でもこれだけで済むの? ってのが素朴な疑問だった (とくに昔の)C++とかのソースだと 1ファイルに何千行もドバッと書かれてるから 小分けで錯覚してるだけかもしれないけど 自力で分かったのは Kernel-Objects BooleanのifTrueが インライン展開されてるから書かれてないってこと >>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++ などで書かれたものと厳密に(たとえば数理学的に)同等の機能を記述しようと思ったら それなりのコード量になるのではないでしょうか。 >>228 うわー詳しい! 触ったばかりとはいえ雑な理解で恥ずかしいです^^; >実質的にはコード量なりの機能しか実装されていない パッと見で気づかれないていどに うまく手を抜いてるってことですかね たしかにC++みたいな巨大な仕様の言語と 細部の挙動が違うのは想像できます もしそれが気に入らなければ Smalltalkは仕様自体をカスタマイズできるんだし YAGNI的にも開発リソース的にも それが現実解の気がします なぜそこが気になったかというと 少ないコード量で実現してるというのは 設計の参考になるからです 正直、どうしてこんないい加減なものが動くのか、私もかねてから不思議に思っています。^^; まあそこが興味の対象であり、数理学的に論じると味わいのなくなる面白いところでもあるわけですが。 手抜きのことも含めて、もちろん他にも短く書くための工夫らしきことはあるので もう少し、システムの中身を覗いてみてください。 設計の参考ということでは、しばらくいじってみて興味をひかれた機能を その動作から実装を予想し、実際にそう実装されているか確認してみると 「その手があったか!」というような発見もあって楽しみながら学べると思います。 (あるいは時間の無駄で終わるかもしれませんが…) 個人的によくお薦めするところでは、print it(式を選択して右クリックメニューなどから print it すると返値が挿入される機構)がどのように実装されているか、コンパイラの 実装やその動作などと併せて予想・確認してみるのは比較的よい題材かと思います。 >>230 >どうしてこんないい加減なものが動くのか 不思議ですよねー 古くからあるから職人芸なのかな 記述が短いから拡張や改造が楽で 助かる面はあります >実装やその動作などと併せて >予想・確認してみるのは比較的よい題材 それは良さそうですね じっくり取り組んでみます >>228 value := 1 < 2 ifTrue: 3 asValue ifFalse: 4 asValue. こんな場合もInline展開されないでしょ。 VisualWorksだと最適化しないって警告がでる。 >>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なんだろうけど >>231 長い時間をかけたリファクタリングの結果です。 >>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' " >>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 >>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 ). >>237 言いたいことがよく分かりません。 それはコンパイル時の ifTrue: 、whileTrue: などのインライン展開とどういう関係があるのでしょうか? そもそも 1 + 10 と 1 + MyClass new とではコンパイル結果は変わらないですよね? そのコードも SmallInteger >> + のプリミティブが失敗して普通にフォールバックしているだけだと思うんですが… >>234 Smalltalkならではの伝統ですね 新しい言語だと何十年もリファクタリングした コードを見る機会はないし >>235-236 >引数がブロックかどうかをチェックして >インライン化を判断している インライン化とそうでない処理に分けることについて なぜそうするか、思いついたメリットとしては インライン化のほうが早いだろうけど もしインライン化しかないと ifTrue系の命令を自分で改造するのが大変だからかな IDEが使いやすいので C++やJavaでも こういうIDEないかな? 他言語でも同様のものを作れなくはないと思うのですが Smalltalk環境の機能自体があまり多くの人に知られていないのと 他言語では同様のものを(Smalltalkほどには)簡単には 作りにくいのかもしれませんね。 Clojure 向けですが、最近ではこんなIDEが話題になっていました。 http://cloxp.github.io/cloxp-intro.html 補完とか名前変更とかSmalltalkのIDEはウンコすぎるじゃん 本当に開発してると一番差が出るところなのに 本当にJavaやC++のIDE使った事あんのかよ (…補完も名前変更も一発なのにこの人は一体何を言っているのだろう…) (…そもそもこの人が言うSmalltalkのIDEとは何を指しているのだろう…) 無関係な候補が補完されたり、無関係な名前まで変更されてしまうゴミじゃん 粘着アンチ君、まだいたのか。 他言語で幸せになれなかったのかな…。かわいそうに。 >>244 この人は補完の精度のことを言っているんですよ。 動的型言語である以上、どうやったって精度はだせない。 よって、補完がないとコード書けないユーザーにはウンコで使えない、と。 >>241 > 他言語では同様のものを(Smalltalkほどには)簡単には作りにくい Smalltalkは最初からGUIのことまで考えて言語が設計されてるからかな >>242 まだ一般人が使えるようにはなってないのかな >>245 ちなみにおれが言ってるほうのIDEはSqueakね まあ静的型付けほどの精度はないし 多機能さとか総合力でスコアつけたら VSとかメジャーなIDEのほうが上だろうよ でも主観的な使い心地はすごい良く感じる 純粋OOPLとか動的とかイメージベースとか いろんな仕様がかみ合ってるから使いやすい 逆にVSっつーかC++は かみ合ってないから疲れる そもそもIDEよりエディタで気軽に書くほうが 好きだったりするんだけど Smalltalkに関してはIDEじゃないと魅力半減 >>249 > Smalltalkは最初からGUIのことまで考えて言語が設計されてるからか たしかに GUI の扱いやすいさもひとつにありそうですが、個人的にはそれに加えて Smalltalk(というかアラン・ケイが)重要視して、他言語では良くない余計なものとされる オブジェクトの全能性(というと語弊があるので「訊けば答えてくれる感」?)も重要だと思っています。 たとえば、ブラウザ機能を実現するのに必要なクラスに定義されたメソッドの一覧や メソッドのソースは、それぞれクラスやメソッド自身に尋ねればこんなふうにして 簡単に得られます。(後者は Squeak の場合) Integer selectors (Integer >> #factorial) getSource リフレクションの API が充実しているだけと言われればそれまでですが、 (先だってのコードの短さともからめて)そういう切り口ではない、環境内のオブジェクト間の連携を しやすくする工夫の結果としての IDE の使い勝手であるような気がします。 「無関係」の定義もなく「変更されてしまうじゃん」とか断言する人って、技術的な議論には全く向かないよね。 彼はSmalltalkをコケにすることができれば満足で そういう次元の議論は1ミリも望んでいないでしょう。 それはさておき本気を出せばSmalltalkでも 補完くらいなら、そこそこの精度は出せるでしょうね。 Smalltalkを覚えたいのだが本業のドカタ仕事に忙殺されてなかなか出来ぬ。 人生は短すぎる。 で、Smalltalkerさん達の本業は何よ? >>253 ID:KJLqYxlY の心の平安のために精度は今のままの方がよさそう。w >>251 > オブジェクトの全能性 たしかにC++のクラスが抽象データ型の延長なのに対して Smalltalkではより能動性とか主体性を持たせようとしてますね C++だとメモリ管理とかとあわせてクラスの管理をいろいろ プログラマが抱え込まないといけないからストレスになる Smalltalkはブラウザ関係もふくめて メッセージングに任せられる部分が多いので ストレスが軽減されていると感じます C++(とVS)は多機能で高性能なんだけど それだけプログラマの負担も大きくて Smalltalkはそれよりさらに高性能というよりかは 使用者が使いやすい方向を目指してる感じ >>259 土方のお仲間じゃないですか。 Smalltalkの受託やってるの? >>238 GNU Smalltalkだと定数の演算とかは糞真面目に計算せずに、 翻訳時にすませてるっぽいよ。 この辺も最適化の過程でMessage送信が必要かどうか判断してるんじゃない? >>239 原則Message送信であってif文の構文糖じゃないからね。 最適化はあくまでもオマケ。 最適化し辛い構文があってもMessage送信の原則は守る必要があるんでしょ。 >>251 Squeak以外は使わないの? VisualWorksとかPharoとかは、補完するSelectorを結構絞り込んでくれるから便利よ。 VisualWorksはCincom本社の海外サイトで個人情報入れなきゃなんないのが面倒だけど。 >>264 > GNU Smalltalkだと定数の演算とかは糞真面目に計算せずに、 > 翻訳時にすませてるっぽいよ。 それは分かりましたが、それを踏まえてもなお >> 237 > 自作ClassのObjectに対してはMessage送信省略しないお陰で、 > 数値計算に自作ClassのObjectをツッコむことができるんだよね。 が出てきた理由がまだよくわかりません。 なぜあえてこの例が必要だったのか(Squeak の話をしているときになぜあえて GNU Smalltalk か? 非リテラルオブジェクトではなくなぜあえて自作クラスなのか? さらになぜあえて nil を継承したのか?)、 それぞれによって、どんな理解が進むのかについて少々かみ砕いての解説をお願いできますか? 64bit VMがlinux版しかないのはどういうわけ >>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を渡すと 動かなかったりするわけではない という事が理解いただければと考えています。 >>269 なるほど、よくわかりました。 丁寧な説明をありがとうございます。 1. の早合点はさておき、 はじめから 5. のような簡易な説明を添えていただけていたなら 私ども読み手も視野を広げやすくなるので、今後もご助言を いただけるのでしたら、ご一考いただければさいわいです。 Smalltalkの新しい書籍 出る予定ないのかな 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. GNU SmalltalkにSmalltalkのVM上で Javaを動かすPackage、その名もJavaがあった。 .jarを読み込んでくれず.classを取り出さないとダメだったり、 Java7には対応してなかったりと微妙な出来だけど、 JavaのClassが完全にSmalltalkのClassとして取り込まれてる所が面白い。 他にも誰が使ったことある人いる? >>270 端からは、あなたがもうちょっと謙虚に聞けばよかった、と見えますよ。 >>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 >>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 >>277 ありがとうございます。 >>264 の「翻訳時にすませてる」を、3+4 を 7 にする!? と勘違いしていました。 #+ などは特殊なバイトコードを使用し、そうした特殊なバイトコードでは引数の組み合わせ次第で レシーバー(この場合 3)へのメッセージ送信は行なわない、ということですね。 別件ですが、メソッドにコードされたプリミティブが #perfom: 等でコールされたときのためとは 知りませんでした。 そうすると、3 + 4 時は VM 内の + 関数で処理され、 3 + OrderedCollection new 時は + 〜 (バイトコード的には + )が 3 に送られて そこでプリミティブ記述により改めて VM 内の + 関数がコールされ それが失敗してフォールバックコード(たとえば ^super + aNumber)が実行される、 という理解で合っていますか? >>278 > 3 + 4 時は… 自己レスです。(Squeak で、かつ旧 VM でですが)どうなっているか調べてみたら、 VM 内でプリミティブとしてコールされる + 関数(Squeak の場合 primitiveAdd )と バイトコード実行時にコールされる + 関数(同、bytecodePrimAdd )は別物なんですね。 通常は bytecodePrimAdd がコールされ、整数/整数とかでなければメッセージを送信、 #perform: などで呼んだ場合は primitiveAdd がコールされ、それが失敗すると プリミティブに続いて記述してあるフォールバックコードが実行されるというカラクリでした。 似たようなことに興味を持つ人もいるかもしれないので参考まで。 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 は当然ですがしょっちゅう呼ばれるので…) >>184 >SqueakだとWindowsの.exe作る方法もあったと思うけど ちょっと前の話だけど これをずっと探してて見つけられなかった Visual Worksならできるっていうのは分かったけど SqueakでWindowsの実行ファイル作る方法は見つけられなかった いや実際にSqueakでexeを吐いてるけどって人いる?Think different? by 2ch.net/bbspink.com 今Windowsの環境ないから確認できないけど http://d.hatena.ne.jp/propella/20050925/p1 こことか、リンクのとことか。やったのだいぶ前だけど。 >>283 できた! サンクス! エントリ自体は前に見たことあるけど ウゴモーフとか興味なかったから 流し読みしてしまって見落としてた exe化はできたけど もうひとつやりたいことがあるんだ リリースしたアプリをユーザがいじっておかしくしないように ハローとか開発環境の部分を隠蔽することってできる? http://wiki.squeak.org/squeak/518 ここのcs.gzをDLして、解凍してできたcsをinstall。 Workspaceで Preferences disableProgrammerFacilities をdo it したら、警告ウィンドウ出るのでYes、保存する新しいimage名を指定。 保存したimageを起動すると、望みの動作になってるはず。 >>286 おおすばらしい! ありがとう! まだメニューが残ってたりするけど これでだいぶ普通のアプリっぽくなった できないと勝手に思いこんでたけど 同じところでつまづいた人多そう Smalltalkそのものは大変すばらしいので 日本語情報さえあればもっと広まるのに ああ試してたらメニューバーも消せたわ ワールドメニューがちょっと残るけど ほとんど普通のアプリと変わらない >288 >ワールドメニューがちょっと残るけど 中ボタンで出るyellowButtonMenuのことかなぁ PreferenceのSearch preferences forでgeneralizedYellowButtonMenuを検索して表示して enableをオフにしたら出なくなるけど >>289 できた! 何度も世話を焼かせてしまってすまない これでタイトルバーにねずみのアイコンがある以外は 普通のWinアプリと同じ何もないところまで来たんだけど…… だけどメニューバーも黄ボタンメニューも ほかのワークスペースとかもなくした状態で どうやってイメージ保存してexe書き出しすればいいんだろう? なんか一休さんのびょうぶから虎を追い出せ みたいなとんち状態になってきた >>290 >>これでタイトルバーにねずみのアイコンがある以外は >>普通のWinアプリと同じ何もないところまで来たんだけど…… Preferenceの Show world main docking bar のenable のオフでバーごと非表示にならない? Windows持ってないから状態わからないけど 最後のとんち状態は そうだね...解決策はありそうだけど >>291 >オフでバーごと非表示にならない? ねずみアイコンが2つあって メニューバーのほうはまるごと消せるけど タイトルバーのほうは残る それでデバッグ項目みたいのが残る Winしか持ってないから 他OSとの違いは分からないが でもライセンス的にMITだから Squeakを使ってること自体は どこかで教えないといけないので これでもいいよ >>291 exe書き出しのとんちのほうは アイディアが色々あるので試してみる 超初心者だから時間かかるだろうけど 他言語の経験はあるから 少しずつ調べながらやってみる 最後は自分で何とかしたいと思う 長々と付き合わせてしまって申し訳なかった >>293 こちらこそ久々にいろいろやってみて、いろんな機能を知って面白かった >>256 >SqueakのCトランスレータが結構使える 一行レスだから見逃してしまってたけど 今スレ見返してたらすごい面白そう VMの埋め込みとかで触れないのかと思ってた 普通にワークスペースから使えるものなの? クラス名とか検索するための単語なにか教えて >>295 レスが付かないから自分でザッと調べてみたけど >>256 で言うCトランスレータというのは Slangで書くVMプラグイン機構のことかな? (それとも別の何かがあるなら誰か教えて欲しい) プラグインはしばしば他言語でそうするように DLLみたいなC/C++で書くものという先入観があったから 逆方向でトランスレータとしても使えるのは面白いと思った ただCのソース単体で取り出して 他でコンパイルできるのかとか まだ詳しく調べてないけど >>296 現実的にはslangは単純な整数とか整数の配列の計算くらいにしか使えない 行列とかベクトルの計算とか、その程度が限界 プラグインは普通にcで書くという先入観で正しいと思う >>297 あーそうなんだ、thx Cと自由に行き来できたら便利だと思ったけど 計算で速度稼ぐとか、実用に耐える範囲は限定的か まあ制約が多くても 使えるだけでありがたいけど 下記サイトにオブジェクトの定義が書かれています。 オブジェクト指向プログラミングとは何か? http://eed3si9n.com/node/145 オブジェクトとは何か? 他のオブジェクトへの参照を保持し、事前にリストアップされたメッセージを受信することができ、 他のオブジェクトや自分自身にメッセージを送信することができるアトムで、他には何もしない。 メッセージは名前とオブジェクトへの参照のリストから構成される。 アトムの意味がよくわからないのですが、すみませんがご教示お願いします。 >>299 メッセージを事前にリストアップしないといけないとか、オブジェクトがアトムであるとかは この人の思い込みや勝手な言い換えなので原文(をもう少しマシに訳したサイト)を 当たられることをお薦めします。 http://d.hatena.ne.jp/katzchang/20080807/p2 私が考えるOOPはメッセージング、状態処理のローカルでの保有・保護・隠蔽、 そして全ての物に対する強力な遅延束縛、これだけだ。これはSmalltalkとLISP だけが実現できている。他のシステムでも可能かもしれないが、私は知らない。 >>299 たぶんアトムはLispの用語から取ってるんじゃないかな? でも定義してる中で(一般には)未知の新用語を出すって 筋の良い定義じゃないよね >>300 の原文でも言ってないし 事前にリストアップってのも静的型付けの発想で 遅延束縛を重視するSmalltalkの発想から離れてる アランケイのアイディアと混ぜないで 自分で一から言い直したほうが良い気はする >>300-301 レス、ありがとうございます。 アラン・ケイによる正確なオブジェクト定義の提示ありがとうございます。 Lispのアトムを検索して、これ以上分解できない基本データだと理解しました。 >>302 そこで言ってるアトムは分解出来る機能の集合体なのだから これ以上分解できない基本データではないな 単に個体とかでいいんじゃね ぜんぜん関係ないけどおれアラン・ケイが来日したときサインもらった いいだろう ひさしぶりにスレが動いたから オレもついでに言うけど Smalltalkやってる人がもともと少ないんだけど とくに日本でPharoやってる人ぜんぜんいないな 言語(処理系)は良さそうなんだけど 日本語情報が少なすぎてどうしようもない >>240 Code Browser じゃあダメなん? ttp://tibleiz.net/code-browser/ >>308 おお〜サンクス! こういうのがあるんだ 代替になるか分からないけど触ってみる スタートアップ界の異端児!産業機器 x IT x SmalltalkのSORABITO株式会社 …人材採用のプロ・高野秀敏氏が厳選「いま最も旬なベンチャー」 https://news.thepedia.co/article/1068/ 日本でクックパッドがRubyを広めたように、日本も海外も含めて「SmalltalkといえばSORABITO」となるとおもしろい >>310 >Smalltalkの場合は最も覚えることが少ない言語 言語仕様だけならそうだけど ライブラリまで含めたら 最も覚えることが多い言語になりそうだけどなー まあプロトタイプはSmalltalkで ライブラリ必要な部分はRuby って分担ならわりと妥当だと思うけど Smalltalk の代わりに Ruby とか、よう使わんわ Sakuraエディタでコード書いてPharoのファイルブラウザから読み込ませてたんだけど、直接書けるって教えてくれよ >>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の組み込みのエディタ機能はおいおい学んで、気に入ればカスタマイズも含めて使えばよいので。 Smalltalk使うなら ワークスペース使うのが一番 Happy birthday Squeak! It has been 20 years! Squeak 5.1 is now available for download. http://squeak.org/ MacでSqueak5.1の右上にある検索使うとvmが落ちてしまう Squeak5.1、日本語フォントの設定ができん! >>318 Apps → Font Importer → 日本語フォントを右クリック → Link Font → Close これでリンクしたフォントが appearance... → system fonts... 等のフォント選択の一覧に現われない? >>316 久しぶりに公式を見に行ったらそれが出てた >>320 MacでOsakaフォントをLinkしようとしたら、 クリックした瞬間にいくつかMorphが壊れて Emergency Evaluatorが出てきたよ… 自由自在っていう本が良いみたいだけど、最新のSqueakで勉強できる? 舌足らずか、自由自在のPDF落としたんですが、Squeak最新のバージョンで 本の内容を同じように試すことは出来ますか?だいぶ違ってます? Smalltalkは変わったツールや習慣、考え方がよく出てくるのですが 無理に通常の言語での習慣や考え方に翻訳して咀嚼しようとすると (やればできなくもないですが、いろいろ無理を生じますし) 学習コストが無駄にかかるわりに、誤った結論に達しがちなので 疑問なことは自力解決にこだわらずにどんどん訊いてください。 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 第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動向に触れる良い機会でしょう。 macOS sierraにしたらPharoもSqueakも動かなくなった >>332 それじゃないな。クリーンインストールしたほうがいいのかも。画面真っ白で何もできない Sierraクリーンインストールしたけどダメだった。 64bitのイメージと最新vmでならsierraで動いた 32bitのやつは動いたけどすぐ落ちて使えなかった 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. VisualWorksってダウンロードできなくなって 通信取り寄せしかないの? pharo5でprintItを調べたくてRubSmalltalkEditorとSmalltalkEditorのprintItにself haltを書き込んで 書き込んで、ワークスペースでprintItしてもデバッガーが起動しないんだけどなんでだろ? そもそもhalt書き込んでる場所が間違ってるんかな 手元のイメージではWorkspaceのprintItはRubSmalltalkEditorのprintItにhaltで止まるが。 実はPlayground? lisp系言語の「純lisp」に相当するような、 チューリング等価な最小のsmalltalk命令セットって どのようなものなのでしょうか? そういうときってバイトコードインタープリターではなく 本当に純粋にSmalltalk式の評価系を考えるのでしょうか? あ、そっちの線は考えていませんでした。 smalltalkが実際にどう実装されてるかは抜きにして、 最小限、どの命令(?)があれば、 チューリング等価な計算力を持つかという、意味でした。 クラスで言えばIntegerとBooleanとBlockClosureがあれば、 逐次、繰り返し、条件分岐ができるけど、 全くSmalltalkらしくない悪寒 今時なウェブ開発を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階 開発者に嫌われているプログラミング言語トップ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が続いている。 >>352 そこで挙がっている言語は普及しているから 無理やり使わされる(から嫌い)という要因が大きそう 一方Smalltalkは好きな奴しか残っていないイメージ 嫌いと公言できるほど使いこなせないからかな もっともちょっと使えるようになったからって 知ったかでこういうFUDはやめてほしい https://medium.com/@zerobase/ プログラミング言語の選択とソフトウェア企業の競争優位性に関する本当のところ-smalltalk-clojure-lisp-7378602ac468 Smalltalker の給料が一見高く見えますが、そうではなくて、 このグラフが示してるのはSmalltalkerの高齢化です。 いっときSmalltalkをやっていた、ぼくの実感にも合います。 だいたいコイツ「やっていた」とか言ってても、あれがないこれがないって文句ばっかりで 何かを生み出す気ゼロ。調査だけで終わってろくすっぽ使えてないだろ… おめーなんかより若い人のほうがよっぽどパワーを引き出しているよ Lispは嫌いだけどやってる 最近関数型が偉いみたいな風潮あるから それ自体も嘘だと思ってるけど Smalltalkのユーザが高齢化してるのはあるだろうな 今はもうRubyやPythonやった方が絶対楽だし RubyやPythonのコミュニティーを見てるとSmalltalkerが踏んだ地雷を次々と踏みなおして爆発させているのを見るのがつらくて RubyやPythonで楽って感じたことはないわー >>355 この記事ポール・グラハムの劣化コピーじゃん しかもこの人物物凄い不快感がする >>355 > このグラフが示してるのはSmalltalkerの高齢化です。 断言する理由が書かれていない あとは延々「意識高い僕は選ばれた人間!」と言ってるだけ 典型的なバカ >>352 ただのアンチM$かとおもいきやC#が入ってないのなw GWだし、Mac の Pharo5.0 で Smalltalk 体験中なんだけど、 日本語IM(IME)で文字は入れられるけど、変換中の表示が ないから、アプリ作っても使ってもらうことは出来ないなぁ。 オープンソース系はずっと有志が頑張ってたイメージなんだけど、 成果がバージョンアップで流れちゃう感じなんでしょうか。 昔から英語圏の言語は日本語に厳しいのよ。。。 オープンソースだと対応する義務も無いから特に。 他はなかなか良い感じなんですけどねぇ。アジア圏の他の国の人も困ると 思うけど。 Tekka 入れられたんでありがたく使ってますけど、本当は他所で書いて コピペした方が実用的ではある… Windows ではまだ試してませんが、この辺を見ると Squeak と Pharo は 同じ手順で OK という訳にはいかなさそうです。 http://phaendal.hatenablog.com/entry/2016/12/12/221828 ほらやっぱRubyやPythonの方が楽じゃん 日本語の問題だけでもだいぶ苦しむ Windows7 と 95 にも入れてみました。 95では変換表示が pharo のウインドウの左上端に出るので、まぁ自分的にはOKかな。 Windows7では、変換表示はウインドウとして出て動かせるので、更にまし。 以前ダウンロードして積ん読状態だった Mac 版 Pharo1.0 では変換ウインドウが出 ますね。5 で同じようになれば良いんだけどなぁ。 > ほらやっぱRubyやPythonの方が楽じゃん 全部できれば良いだけでは? Sirenに興味を持っていじってみようと悪戦苦闘しているのですが 使ってたって人いますかね? 現状だともうメンテナンスもされてないみたいだけどSqueak3.0か VW7.5で動くようなんですけど。 インストールの仕方も良く判らない ttp://fastlabinc.com/Siren/ >>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 >>373 VWは今インストールディスクを送ってもらっているところなので Siren7.5はダウンロードして待機中です。 Squeakは2.7で動くらしいのですが、Windowsは専用のimageがある ようで探したのですがもうダウンロードできないようでした。 https://twitter.com/umejava/status/863400931081179136 5/31日の100回記念Smalltalk勉強会のLT受付開始しました。エントリ希望の方はコメント欄へ書き込みお願いします。 https://smalltalk.connpass.com/event/56564/ なお、100回記念缶バッチが配られます。抽選でPharoのTシャツもゲットできるかも。 その昔、Smalltalkは言語でありOSだった。 SmalltalkというOSがアプリそのものでもあった。 SmalltalkというOSで動いている唯一のアプリにワード、 エクセル、ゲームの機能を追加していくそういう世界であった。 アプリの終了はOSの終了、世界の終了を意味していた。 世界を終わらせること無く機能を追加していくために Smalltalkは生まれたのである 元ネタはこれかな 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では「オブジェクトは遅延結合が必要で動的に変更できなければならない」という 根拠になってしまっているから、お前らの世界では遅延結合や動的が必須なのだろうけど、 そのマイナーな世界を押し付けるな。そんなものはなくてもできる。という感じで荒れる Windowsの規模でイメージベースとかの 仕組みが上手くいってたかというと疑問だな 現状のSmalltalkでもイメージベースだけじゃなく ファイルベースでも管理するのが普通だし そうしないと少し不安なところがある 小規模なプロトタイピングを作るときに いちいちファイルに分けない イメージベースは快適ではあるんだけど そのまま大規模なソフトを作れる スケーラブルな方式だとはとても思えない Dolphin Smalltalk7をwineで動かしてみたらヘルプの文字が表示がされない 直し方教えて Pharoに興味持って、MacのVer.6.1-64を動かしてみたんだが、 https://qiita.com/sumim/items/c2a38a42c3ccd70c18b2 の通りにやっていて、ハングアップしてしまう・・・ 上のurlは5.0用みたいだから挙動が違うとかメニューが違うのはいいとして、ハングアップってどうなのよ?という感じ。 どこでハングするかぐらい書かないと どこまで優秀なエスパーを期待しているのやら http://pharo.org/web/download の32、64ビット版何れでも、self shouldBeImplemented」というスタブメソッドの内容を変更、保存した瞬間にハングアップ。 環境は、macOS High Sierra(10.13.1) Pharo5.0で試してみるか・・・正直、チョットと動かしてみようと思ってただけなので、萎える。 手元でその環境(High Sierra, Pharo6.1-64)を作って試してみましたが 件のスタブの書き換え(変更してコンパイル)を含め、問題はないみたいです 確か、6.0ではそういう障害が報告されていたようですが 6.1でもまだ完全に解決していないか、環境依存でたまたま起きた可能性がありそうですね ちょっと試すだけなら5.0で良さそうに思いますので面倒かもしれませんがリトライしてみてくだい あと今回の件とは関係なさそうなのであくまで一般論&余計な事かもですが Smalltalkのチュートリアルを試す際は、処理系を同じにするのはいうまでもない事ですが バージョンについてもそのチュートリアルが対象にしているのと極力同じバージョンを選ぶ (もちろん可能な範囲でですが…)のが萎える要素を少なくできて良いと思います Smalltalkの学習の初期の段階では他言語の習熟者ほどストレスフルに感じる疑問が多く発生しがちなので… >>387 おかげさまでPharo5.0で試すことが出来ました。 テストをサクッと書ける(しかも作成中のクラスへの表示も)のが良いですね。 (Java、RubyだとWebアプリ作る際にテストライブラリを別導入したりするので、人に勧めたり説明するのがチョット手間) まだアプリの作り方とか全く分かりませんが、もうチョット遊んでみようかと思います。 最初に試したiMacとPharo6との相性が悪かったようです。(多分、iMacの環境のせい) 別のMacBookPro(El Capitan 10.11.6)では Pharo5.0、6.1、6.1-64bit ともに正常に操作出来ました。 Pharoで標準入出力ってどう扱うの? シンプルなコマンド作ってbashで他のコマンドとパイプでつないで使うところから始めたいです その方向からならPharoよりGNU Smalltalkの方がよくない? あえて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 GNU SmalltalkはAPIやライブラリーの充実度でPharoには遠く及びませんが 今回のようにshellとの連携からの入門には十分でむしろ優れていると思います 参考までGNU Smalltalkでの対話的なコーディングに欠ける機能を補う試みとしてこんなのもあります CUIなSmalltalkでメソッド調べる小技 https://qiita.com/tetha/items/1833cff9f4024595be78 Pharo使って見始めたが、これ全てがメッセージ、というのが興味深い。 ただ、チーム数人で、Smalltalk使って開発するときって、ソース管理(メンバー間での同期、マージ)はどうしてるんだろう? JavaやRubyでは基本的にはテキストファイルだから、Gitが定番だと思うが。 >>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 の機構もいろいろ利用されています >>400 古典的にはSmalltalkではソースを環境内でメソッド単位で管理することになっていますが それぞれを、ディレクトリー(パッケージ名とクラス名、インスタンスメソッドかクラスメソッドか)と ファイル名(プロトコルとメソッド名)を使って個々のファイルにマッピングすることで Git で管理できるようになります 前述の iceberg がその方式で、それ以前にも Filetree といったそうしたマッピング専用のツールがありました 念のため >>402 ,403 おおっ、そういうのが有るのですね。 早速見てみます。 (iceburgってのがメニューのトップに有ったけど、何だろう・・・あとで調べるか、と思ってましたw) 富士ゼロックス、米ゼロックスと経営統合へ 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 シンコムさんからメディアが届いた 週末は久しぶりにSmalltalk三昧できそうです もう忘れかけてるから頭リセットしなきゃ ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 少しは使われてるけど ほぼ使われてないと言っても同じようなもん アンチの憎悪をここまでかきたてるのは何なんだろうね マイナーなんだから出しゃばるなとかそういう了見の狭さか マイナーなこと自体は仕様がないけど 普及を阻む使いにくいところは もっと早く変えた方が良かった あの時代遅れなIDEを積極的に使わせようとするの謎 IntelliJ使ってるユーザが乗り換えるわけないじゃん そら普及しないわ IDEは良いけどイメージベースでEXE作らないとかの独自仕様が アイディアとしてはともかく実用的には使いづらかった (Smalltalk keys noneSatisfy: #isValuable) ifTrue: [^self] >>422 ほー、Behavior>>isVariableの駄洒落ですか。 スモールトーク自身ウンコなので、それ自体がキラーアプリってなのは成立しない そもそも成立してたら普及してるって これか ストロングゼロの氷結のストロングゼロのウォッカ入ってるんだけど、この氷結のチューハイ毎日ではないけどかなりのペースで飲むと2本 今も例えば月曜日とかだと氷結でストロングゼロ飲んでって感じで飲んでるから人気になるんだと思う 楽でいろんな味だしね おそらくはこういう意味? ストロングゼロや氷結ストロング等の“ストロング”系チューハイにはウォッカが入っていて 口当たりがたいへん良いので毎日というわけではないけどペースが乗ると日に2本とか普通に飲めてしまう 実際、まだ週が始まったばかりだけど氷結ストロングでも飲むかってつい飲んでしまったよ こんな感じで皆が気軽に飲めるから人気がでるんだと思う いろいろな味があって楽しめるしね Smalltalkをいま使ってる日本企業ってゼロ? 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を使えばいい? 手元の環境では特に問題ない感じなので何かの相性の問題かもしれません あと、仮想イメージは同時期に提供された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内(あるいはその他のブラウザ内)で起動できます お試しあれかし >>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 試してみたところ、こちらの実装では(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.. からダウンロードできます。 こちらも参考まで。 >>434 ctrl+cでコピーできました!ありがとうございます https://squeak.js.org/demo/simple.html ↑の方でもctrl+cでいけますね。 私は力技でvw.jsの primitiveClipboardText: function(argCount) { の中で this.display.clipboardString から値を取り出すことを考えてましたが、 もうその必要がなくなってよかったです。 あと、この経緯でついでに<primitive: 141>まわりの実装が勉強になった。 よかったです。Smalltalk世界の散策を楽しんでください。 昔のsqueakにはメニューにdebug itがなかったんですね 仕方がないので、例えばBrowser openBrowerの処理を追いかけたいときは、ワークスペースを開いて self halt. Browser openBrowser. の2行を書いて、それをマウスで選択してdo itで実行させてるんですが、 当時の人たちはこういうときはどうやってデバッガを起動してたんでしょう? Smalltalk面白いと思うんだが、何で流行らないんだろ? >>437 halt は何にでも送れるので Browser halt; openBrowser でいけます 古いっていうだけでもう相手にされないか、そこを突破できても 実際に古臭い点も多々あるんで本当におもしろいところまで行き着けないんでしょうね あと今の人は学ぶことが多すぎて、余計な事を学ぶ気持ちや時間の余裕が持てないのが大きそう Smalltalk、プチコンくらい流行らせてみたいね >>439 「halt;」を書き足すだけでいいので便利ですね。 そのアイデアいただきます! scratchって、Small talkクローン? Scratch は、古いバージョン(バージョン 1.4 まで)が Smalltalk(MIT版 Squeak)で実装されたというだけで Smalltalk とは別の独立した言語処理系です。 >>443 なるほど、ありがとう。 LOGO、Smalltalk、scratchを触ってみて言語のバックグラウンドが似てるように見えたのはそういう事だと腑に落ちました。 ブロックを自分で定義出来ると色々遊べそう(センサーのエミュレーションとか)。 まだまだ勉強中です。 >>444 Scratch の開発リーダー、ミッチェル・レズニックはシーモア・パパートの弟子で LOGOの並列化版 StarLogo の開発者でもあるので、Scratch は Smalltalk よりは LOGO の影響の方が色濃いのかもしれません。 >>438 キラーアプリがないから ドキュメントが少ないから 独自仕様に従うのが大変だから 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 2EWEB >>448 たとえばイメージベース(EXE出力しない)とかね イメージベースのメリットを損なわずに迎合するにはどうしたらいいのだろうね 以前質問させていただいた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で止まらないことからこのメソッドは表示処理に使われていないと予想。 他は何を調べればいいでしょう? ハードウェアカーソルなんじゃないの?よく知らんけど。 >>454 カーソルの表示処理を知りたいのであれば、Cursor nomal halt; show を追っかけた方がいいですね。 display はご自身でお調べになった結果からも分かるように レシーバーである画像オブジェクト(カーソルもこれに属します)を画面左上(0@0)に表示するだけの処理になります。 たとえば From fromUser display とすると、選択した矩形領域を切り取って左上に表示するコードになります。 あと、showの方もおっかけると分かりますが、最後はプリミティブ(VMの関数呼び出し)に行き当たるので どんな処理をしているかは該当するVM内関数のコードを見てあげる必要があります。 >>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ではマウスカーソルが画面端に残らないのがそのせいかな、と思ったり。 この言語しばらく使ってるとゴミさが身に染みてくるんだよな うっかり間違って採用しちゃった企業も途中で捨てるから、いつまでも利用者が増えない アンチもゴミさが分かるくらいまで使えれるならたいしたものだがな そういや一時期Smalltalk使ってるのをアピールしてる日本の会社あったよね 昔じゃないよ去年とか一昨年くらいの話 あそこってどうなったの?まだSmalltalk使ってる? SqueakかPharoのCogDroidβ以外のAndroid用のVMってあります? ちゃんとSmalltalkを理解した上でクソって言ってる人って 今まで2人しか見たことないわ 他はろくすっぽ使ったこともない雑魚ばっかだった 6月のSmalltalk勉強会は26日(火)SORABITOさんにて。 小田さんによる「Pharoで3D」のお話です。#st_study https://t.co/wMiwwytiyq SORABITO、Smalltalkと縁を切ったわけじゃないみたいだな 👀 Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01) 批判者が少ないのは人口が少ないからだろ 実用言語には利用者の多さが重要 愛好者ランキング高いのは仕事で使う奴が少ないからじゃないの >>472 smalltalkのlovedが67%だけど、これ使ってるって回答したのが3人でそのうち2人が好きって言ってるだけの可能性が十分にある それがマイナー言語smalltalkの現実 >>474 66.7%ではなく67.0%なんだけど?数字読めない人でちゅか? Smalltalkは文化的にタイピング量が多くなってしまうのが面倒い あとPharoがころころ仕様が変わるのでついていくの面倒い 好きな言語なんだけどね 文化的なことを言っていいなら、Smalltalkにはかなり以前からIDEからの支援が提供されていたので タイプ数もスペル等の記述の正確性への心理的負担も他の言語よりずっと少なくて済む印象が強いなぁ… 仕様の変遷の激しさは同感。でも、まぁそれはSmalltalkの宿命っぽいところもあり半分あきらめている^^; どうしても耐えられなければ、比較的変化の穏やかなVisualWorks等の商用Smalltalkという選択肢もあるし >タイプ数もスペル等の記述の正確性への心理的負担も他の言語よりずっと少なくて済む印象が強いなぁ… 懐古じじいは昔の知識だけで書いてるんだろうけど いまどきの言語とIDEの組み合わせからみたら Smalltalkの補完はゴミだよ。 型推論すれば必要ないって分かるものも補完の候補で出てきやがる。 いまどきの言語とIDEの組み合わせで事足りるならそれでええやん なんでSmalltalkなんか使うの? 事足りるとか意味わからんw Smalltalkが下なの!他の言語では可能でもSmalltalkでは出来ないことばかりなの! お前がずっとここに張り付いてる意味のほうがわからんわw JavaからSmalltalkに乗り換える開発者が100000000人に一人くらい居ると良いね 滅んだと信じ込んでる無知がうるさいから わざわざSmalltalk除く細工しこんでるしね Smalltalk除く細工ってw 被害妄想もここまで行くと病気ww Smalltalkを狙って抜いたというよりは 当初適当な比率で順位決めたらSmalltalkが二位なんかに入っちゃったもんだから もうちょっとましな結果になるように評価法を適正なものに変えたといったところだろう 普通に考えて外れ値の扱いになるのは仕方ないよ 一部の狂信者以外は誰も使ってないんだから >>494 小学校のプログラミングすら知らない人? Scratchのこと?あれは良いものだね。 でも最早Smalltalk関係ないじゃん。捨てられてんじゃん。 わざわざ別言語に乗り換えられてるなんてゴミ言語の証拠じゃん。 ScratchはおろかSqueak/etoysで知識止まってるとか? 教育用言語として普及しているのは スクラッチであってスモールトーク自体じゃないから やっぱりスモールトークは使いづらいってことじゃん 子供であってもSmalltalk-72のころから常にSmalltalkは人を選んで来たよね ドローイング/ペインティングツール、回路設計支援ツールとかまで作れたのは一握りの優れた子供だけ Personal Dynamic Media (1977) にもブルース・ホーン(後にAppleでFinder等の開発に寄与)を含む 5人の子供の名前しかクレジットされていない Scratch2.0の方が便利なのに、何も知らない子供にScratch1.4(Smalltalkで実装されてる)を使うように推薦するSmalltalkerって マジで害悪だよねw オフラインならScratch1.4の方が断然便利だろ タブ向けもPyonkeeしか提供されてないし なんだかんだいったところで結局Smalltalk以外選択肢がないんじゃしかたない Scratch3.0(もうプレビュー版が出てる。タブレットにも対応してるし、スマホでもプレイ可能)が正式リリースされても SmalltalkerはPyonkeeを無垢な子供に推薦するんだろうなぁ マジで害悪だよね スクラッチ勢は古参のSmalltalk使いをずいぶん煙たがっているんだな そりゃSmalltalkを布教したいという邪な欲望丸出しで 新バージョンへの移行を妨げる分断工作してんだから 疎まれて当然でしょ 子供の教育を考えたら百害あって一利なし >>503 いや単に他の板から逃げて来た知ったかが居るだけだから。(実装の件とか思い込みで言ってるのバレバレだし) 反論出来なくなると、こうやって相手にSmalltalkを知らないヤツってレッテル貼るところまでがテンプレだよねw (まあ死滅したクソマイナー言語を知らなくても不思議は無いし、成功率は高そうw) >>504 想像でいってんの?現場の人間の本音なの? >>506 知っている範囲で構わないんだけどSmalltalkはどこらへんがクソだと一般に思われているの? >>502 が自白しているように、全ては病的アンチの妄想。 所詮VBにすら負ける言語だからね Scratchを別言語でゼロから再実装されても仕方ないよ >>510 VBに負けているというのは具体的には何について? よく引き合いにだされるTIOBEインデックス等の話題に上る頻度のこと? VB以下の言語がすべてVBに劣るわけではないと思うけど… TIOBEだけが生きがいの>>510 さんをいじめないで! SmalltalkとVBといえば九大病院 Scratchの件と合わせて他言語に完敗した歴史として語り継いでいくべき >>513 これのこと? 九大病院“つまずき”の真相 「要件定義の甘さ」が尾を引く http://web.archive.org/web/19990910201442/http ://www3.nikkeibp.co.jp:80/WAT2/971212/971212trein01.html 単に日本IBMの思惑とマネージメントに問題があっただけのような気がするんだけど 513はこの件で具体的にはSmalltalkの何が悪かったと語り継ぎたいの? へー、九大病院だけじゃなくて長野オリンピックのシステムもSmalltalkじゃ上手くいかなかったけどVBでは開発出来たんだね Smalltalkでは開発失敗したけど、VBなら成功したんだね 一方、米IBMは96年開催のアトランタ・オリンピックのシステム開発で 同社のSmalltalk開発ツールであるVisualAgeを使用しなんら支障なかったので 結局、日本IBMの技術力とマネージメントだけが問題なんだよね VBでも開発に失敗してたら、そういう言い訳も通ったかもねw ていうか、Smalltalkから他言語に乗り換えた話ばかりじゃん 逆に他言語からSmalltalkに乗り換えた例はないわけ? 一件くらいあるだろゴミクソ言語でも キミみたいな筋金入りのアンチならケント・ベックがその名をはせた クライスラー総合報酬(Chrysler Comprehensive Compensation, 通称C3)プロジェクトの失敗 も大好物なんじゃない?http://bliki-ja.github.io/C3/ やれエクストリーム・プログラミングだのやれテスト駆動開発だのと偉そうなことを言ったところで COBOLで書かれたレガシーシステムのひとつもリプレースできないヘタレ言語 これもぜひレパートリーに入れといてくれw 失敗と言いつつ、実は成功したと思ってる例を出してくるあたりセコイねー Smalltalkerってホントしょーもねーなw はるか昔にCOBOLのリプレースに一時的に成功したのが Smalltalkの数少ない(唯一の?)輝かしい成果ってことは分かったよ その後またCOBOLに戻っちゃったみたいだけど、オマケで VB > Smalltalk >= COBOL って事にしてあげるねw オマケでCOBOLに勝った認定でウキウキのSmalltalkerさんw C3って成功プロジェクトなの?アンチの基準がいまいちわからんな アンチって言えばCincom出身のこの人 https://www.reddit.com/user/dlyund?count=1000& ;after=t1_czedjw5 全力でSmalltalk殺しにかかっててきてて怖いw まだ生きてるような言い方するなよ 死んでんだよ、ずっと昔に この人の主張は - Smalltalkは個人や小さな規模では楽しいかもしれないが大規模には使えない - Smalltalkが大規模でも快適であるような嘘の宣伝はやめろ - うっかり真に受けてCincomに入りいくつかの大規模案件に従事したが時間の無駄になった と(思い込みによる誤認はあるものの)アンチな理由がはっきりしていて見ていてすごく胸が痛むが ここに居着いているアンチはSmalltalkを使ったことはおろか恐らくは関わりすらなかったろうに 今はただひたすらSmalltalkが死んだことにしたいだけのために日々戦っていてそれもそれで気の毒だ Smalltalkは分かりやすく底が浅いから 直ぐに大規模開発には使い物にならないって分かりそうなもんだけどな >>525 結局Smalltalkは大規模に 使えないってハッキリしたじゃん >>527 >思い込みによる誤認 って何? >>529 よく分からんけど朝鮮人とかが一向に証拠出さないようなもんかな。 Smalltalkは大規模開発に使えないのは分かった。 だったら小規模開発には使えるの? 具体的な数値を言ったら「あれ?そんなクソザコ小規模を中規模呼ばわりしてるの?Smalltalkerってクソザコだねw」 って言われてしまいそうで怖いです 勘弁してください モデルベース開発は「動く仕様書」が必須だから、あとは使い所を決める人のセンスの問題だな。 使い所を決めるセンスがある人が死んだ言語を選ぶわけがないから Smalltalkによる開発は必ず失敗するってことだね 自己定義してて、コードに全部実装書いてあるSmalltalkやっぱ偉大だな… 哲学的な問にも応えてくれる >>541 まあ元々、設計と実装の分離ってのは、初期の頃の「やり直しのコストが高い」時代のバッドノウハウだからねえ。 今でもSI時代のウオーターフォール方式を引き摺ってる所は多い。 Windows1.0を起動できたって喜ぶのと同じレベルだけど、そういう非生産的なのも趣味としては良いよね PolyMathOrg の libtensorflow-pharo-bindings を macOS と Windows とで試してて気になったんだけど GitHub からのクローン後のコンパイルが macOS版 Pharo だと一瞬なのに Windows版だとかなり時間がかかるのはそういうもの? 設計思想はObjective-Cに継承されたんだからええやんか http://mevius.5ch.net/test/read.cgi/tech/1538096947/385 >このスレは不特定言語スレだけど >高速性ならC/C++/Rast >コンパクト性の追求ならSmallTalkとかRubyとか >RADならJavaとかPythonとか定番固定化。 >既にもうある程度少数特定言語スレになりつつあ >る希ガス ほぼ一人の活躍のおかげでSmalltalkの評価がむっちゃ高い オブジェクト指向のネタスレでSmalltalkの話でてたな ここでももっと話せよ 他言語の人たちが珍しがる話でもSmalltalkだと語るまでもない事だったりするし… どんな話がしたいの? なんで死んじゃったゴミ言語にしがみついてるの? 人生無駄じゃない? それそのまんまお前に返すわwww 死んだ言語に粘着して人生無駄にすんなや タブレット対応のScratch3.0がそろそろ出ますね Pyonkeeさん、お疲れ様でしたw Visualworks 8.3でずっと止まってると思ったら 次期バージョンのV9を準備中なのな Objectworksと合体するとかスライドショーに書いてたがどうなることやら https://www.google.co.jp/chrome/thank-you.html?brand=CHBD& ;statcb=0&installdataindex=empty 南米はUMLツールのastahが売れたり、prologで作られた超高速開発ツールが販売されたりと、音楽同様秘境すぎる。 Design patterns Smalltalk companion の電子書籍って出てますか?それと同じような本でお勧めを教えてください 代わるものは思い付かないですね^^; 紙媒体では駄目なのですか?あるいは自炊とか。 ご存知かもしれませんが、一部ドラフト原稿がこちらで読めます。 http://sdmeta.gforge.inria.fr/FreeBooks/SmalltalkDesignPatternCompanion/ The chapters listed here are not in their final form but more in draft form. Buy the book it is really excellent. VisualWorksはPUL版の提供にさらに制限くわえてきたね 8.3.2のlatest欲しかったらREVライセンス買えってさ年間500ドル そもそもセキュリティライブラリもずっと同梱しないままだからWEB関連開発できないし 一体この先どうするつもりなんだろうね ライブ変換の入力はバグって使い物にならないしまったく・・ もういいかなって気がしてくるってもんよ いいけどさ、払ってもでも年間500ドルはさすがにないわ せめて100ドルにしてよ mathematicaは無料になったのになぜ時代に逆行する? いや、高くて誰も使ってくれないからいったん無料にして ←Mathematicaイマココ それだとやっぱ駄目だから制限つける ←VisualWorksイマココ って一連の流れの通りかと 学生用のライセンスも作ったからPULは単なるお試し版扱いにしたんだろうね ただこのライセンスも制限あって北米の学生じゃないと受けられないとかありそう 無料にしたって新規ユーザなんて絶対に増えないんだから いま居る物好きが年老いて死滅するまで 高値で売りつける以外の道はなかろう Unityみたいなライセンス形態にした方が良かったと思うけど。 商用利用の場合、儲かっているユーザーから金を取る。 せっかくいいプロダクトなのにもったいないな。 ほとんどのSmalltalkerは商用利用可能なPharoに流れた? なんか、バックテストで言語どれがいいか調べててRとPyとexcelつかってるんたけど、なんかおもしろいのがないかquoraみてたらsmalltalkってのを一時間前に知りました。 pharoをいれればいいの? 英語が苦にならないのなら、Pharo 7がおすすめ。 PharoLauncher をダウンロードしたら、 左側のリストで WindowsならPharo 7.0 - 32bit、 それ以外なら Pharo 7.0 - 64bitをダブルクリック。 OKしたら右側に同じ名前のアイテムが落ちてくるから、 それをダブルクリック。 これでPharo 7が開く。 Welcomeと書いてあるウィンドウの左側のリストで Learn Pharo を選んで、右側の ProfStef go をクリック。 するとチュートリアルが始まる。 これに従っていけば、言語の基本やIDEの基本操作がわかるようになっている。 vmの熟成度の問題で、今のところwindowsだけ32ビットVMがデフォルトになっている。 チュートリアル全部終えたよ! Pharo、R-guiっぽい感じ(マウスで選択してctrl+○で実行)もあるけどね。 言語は独特やなぁ。 pdfのマニュアルもダウンロードして流し読み。 Slideshareもみてる。世界的な建設車両の個人売買サービスがこれで動いてるらしいけど、ブロトタイプはsmalltalkでさくっと作ってプロダクションはJavaScriptに書き換える、そういう使い方が便利なの? 初歩的だけどwindows上のpharoで日本語のインライン入力はできないの? おお!SKK使ってるから試してみる ありがとう! PharoのVMは裏でSDL使ってるのかな 頑張ったらいけそうな気もする 以前、Squeakで変換ウインドウの位置を適切にするとかやっているブログを見たことがある はずなんだけど、いま探したけど、見つけられなかった。 最近はもうSqueakもPharoも追っかけていないんでわかんないんだけど、まだSqueakでも インライン入力はできないですか? LinuxだとVMオプションに-compositioninputをつけるといいらしい。 VMのソース見たけどWindows版はIMEのことは丸無視ですな... Squeakも同じOpenSmalltalk-vmみたいだから挙動は同じでは http://forum.world.st ↑を見ると、PharoとVisualworksはユーザー数に15倍から20倍の差があるかし、Visualworksはもうオワコンっぽいね。 Dolphin Smalltalk楽しいね〜 Win限定だけど簡単なGUIアプリならこれで十分? dolphin smalltalkってバイナリ配布は無いよね? >>597 VisualWorksは今回のPUL版制限で自らとどめかと Pharoに流れるってことも考えにくいからSTコミュはさらに縮小という結果に そもそもあれだな PUL版からセキュリティライブラリ抜くようになって随分経つから とっくに終わってたのかもしれないな・・ >>601 これそうなの!?サイズがあまりに小さかったんでスルーしてた。 サイトの説明だとVisualStudio入れてソースからビルドしろって書いてあるし。 あ、7.1.4ならセットアップ形式で配布されてるってことね...失礼しました。 Pharo 8.0でネィティブウィンドウを提供するから、VisualWorksは留めを刺されそう。 既に終わったマイナー言語の信者が ユーザ数でマウントしてるのクソ笑うわ 情弱アンチがしたり顔でちょっかい出してくるのクッソ笑うわ 言語をオワコン視するとき、言語もまたこちらをオワコン視しているのだ あるクラスの定義全体をソースファイル形式でざっと見るような機能はないのかしら。 エクスポートしたらソース形式になるのは分かるんだけど。 ちょっと他のクラスを参考にしながら書くみたいな時にBrowserだと見える範囲が狭くてマウス操作が多くなるなぁと思うのですよ。 >>610 処理系は? たとえばSqueakとかPharoなら String streamContents: [:ss | YourClass fileOutOn: ss] とか >>610 Pharo 7のCalypsoブラウザはその辺りの軽減を狙ってるけど まだタブ移動操作が必要だね。 >>611 なるほど! 使わせてもらいます >>612 ブラウザを使わず定義する文法があれば改善しそうだけどね >>613 まだ実験段階でいろいろバグが残ってるけど、 これのCoderってのがそのコンセプトに近い。 https://gtoolkit.com/#components Pharoに限らないかもしれないけど、プロトコルって実行時には何か意味あるの? メソッドの整理みたいなコーディング上の機能だけ? 例えばprivateにすると赤い印がついて意味ありげになるけど、普通に呼べるし。 >>615 あれはメソッドを分類して見せているだけ。 アクセス制御的なものは全くない。 >>615 Monticello(SCM)的にはパッケージに含まれないクラス以外に定義されたメソッドを パッケージに含める目印に流用している(つまり意味はある)けど実行時ではないからノーカン? あと、メタプロ的には実行時に利用可能な情報であるとか まあともあれ>>614 の言うとおり通常は単なる分類 あるいは「メソッド」というオブジェクトの属性の一つ みたいな感じ >>616 >>617 ありがとう。 >>617 が言うパッケージに含まれないクラスを...ってのがよく分からないけどMonticello自体よく分かってないので勉強してきます。 Dolphin Smalltalk 7.1、Windows 10日本語版で起動しないな VirtualBoxにインストールしたWindows 10英語版だとあっさり起動した 7.1から追加されてるコードページの処理とかがおかしいのかねぇ >>620 システムロケールを日本語からEnglish(United States)に変更すると起動可 青木先生の講座からSmalltalkが消えていた PythonとJava教えてるってさ >>622 教わる側もバカじゃないし、いまは少しググれば 「あれ?なんでこんなオワコン教わってんの?意味なくね?」 って気づいちゃうからね すげー反応遅かったな… もうヲチしてないのかな… しょぼーん Smalltalkの講義をやりたきゃ、南米やヨーロッパあたりの大学に行くしかないな。 >>586 >ブロトタイプはsmalltalkでさくっと作って >プロダクションはJavaScriptに書き換える まあそういうやり方が現実的だろうな? ライブラリやドキュメントや書籍とか 情報の充実度がぜんぜん違うからな! >>622 学校なら生徒からの要望があるだろうからな 今時普通に普及してる言語を教えてくれって! VisualWorks 9.0がやっと出た 予定通りObjectStudioと統合したバージョンになったようだが いつものようにPUL版は使えないんだろうな 一つだけいいことがあるとすれば8.x系でmacOSの3〜4世代前くらいまでしか対応できてなかったのが ようやくCatalina対応したってことくらいかな・・ ライセンスやセキュリティライブラリの問題が厳しいのは相変わらずだろう まあ今更ではある どうもV9から日本語版というのがなくなるっぽいねえ 大丈夫なのかね8.3とかライブ変換ON/OFFどっちでもデバッガに落ちるくらい 日本語扱えたもんじゃなかったが UTF8/16も問答無用でCJK互換漢字が正規化される関係でファイル名をそのまま扱えないこともたまにあるが これV7くらいからずっと引きずってる問題でリポートはしてあるけどファイル名をそのまま扱おうとすれば手を入れるしかなかった CatalinaからはCJKをファイル名に使うことはそもそもできないようになったので 自動的に解決ってことにはなるんだけど >>632 ずっといまどき普通に普及してる言語教えてなかったのに今更やん 本来はSmalltalk / Prolog / Haskell / Lispみたいなパラダイムを具現化した言語は大学でちゃんとやった方が良いかもね。 マーケティングを考えるとPythonとかになるんだろうけど。 LISPやったらSmalltalkは不要 っていうかSmalltalkはウンコ 半年遅れたこともある リリースしないってことはないだろうけど 無償版は起動時間とヒープ量で制限するのが妥協点かな。 いつものようにセキュリティライブラリを外して来るはず VisualWorks9の無償版の提供無いのかな? 出ても出なくてもPUL版使い物にならないしなあ・・ 商用利用できなきゃ意味ないな。Pharoで十分となる。 スレチかもしれないけど 、Python でクラスブラウザ風に使えるプログラムないかな? M1プロセッサに対応したPharoのVMって出てるの? cincom news見てる限りPUL版もう出す気ないみたいね REVで契約しろとさ Pharoは世の中に出てくるのが10年遅すぎたかな。 PharoはUIがどうしようもないから触る気になれない native UIになるって話は前あったけど進んでるのかね >>655 バックエンドはGTKに変えたらしいけど、あんまり変化ないな。 そういやREVの案内来てたから見たら ライセンス1年で$1000だってさ ハハッ IDEのフォントが汚いな。 MDIスタイルのUIも古臭いし。 >>659 そんな突き放した事を言っているからシェアが伸びない。 VisualWorks9.1に年1000ドル払ってる人いますか? Gemstone/SをDevKit_homeでインストール試したけど失敗しちゃう あれは古すぎるからな mojaveで動かなくてVMでsnow leopard環境でやったらインストールできたときは笑うしかなかった >>663 >Gemstone/SをDevKit_homeでインストール試したけど失敗しちゃう これhostsに書いたら解決しました。 『Smalltalkでは、オブジェクト同士はメッセージでやり取りを~』 というのはよく見聞きするけど、オブジェクトを「互いにメッセージを送信するもの」と考えると、 どのようなメリットがあるのか良くわからん・・・ 結局は、『メッセージ送信=メソッド呼び出し』じゃないのん・・? メッセージ送信をメソッド呼び出しとして処理系つくったんだから そりゃそうというか結局の意味がわからん(わかるが系譜をかんがえてみ) 一番安いstandard supportで$2295/年 だけど・・ trialバージョンがフルバージョンならともかく何にも書いてない win/linux版しかないみたいね squeakから家庭内ネットワークのサーバにtelnet(またはssh)接続して オートパイロットしたいのですが、どこかにログインして適当なコマンドを 入力して出力を取り込むサンプル無いもんでしょうか。linuxでいうexpectみたいな。 read.cgi ver 07.4.7 2024/03/31 Walang Kapalit ★ | Donguri System Team 5ちゃんねる