Smalltalk総合 Squeak Pharo
以前質問させていただいた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に継承されたんだからええやんか