Mini Squeak 2.2 (Webブラウザで動作する、古く、最小構成に近いSmalltalk)の古典的 MVC でタイマーを実装する

前回のエントリー『「使わないと損をする Model-View-Controller」のサンプルコードを SqueakJS のデモ画面(Mini Squeak 2.2)で動かす 』では個人的にも実に久しぶりに古典的MVC に触れて楽しかったので、今回は引き続き Mini Sqeauk 2.2 環境を使って @mi…

「使わないと損をする Model-View-Controller」(Smalltalkの古典的MVCの解説)のサンプルコードを SqueakJS のデモ画面(Mini Squeak 2.2)で動かす

「使わないと損をする Model-View-Controller」 はオブジェクト指向や Smalltalk関連の著作の多い青木淳氏による(今となっては)古典的な Smalltalk の MVC の解説記事で、ごく初期の“コントローラーが頑張るMVC”、そこから少し進化した“依存性を利用したMV…

DCI パラダイムの提唱者、Reenskaug 氏の BabyIDE で遊ぶ - Squeak4.5対応版向け

久しぶりに DCI がらみで BabyIDE にヒントがあるかもしれないな…と思われる話題に接したのを機に、以前遊んでみた BabyIDE のその後を調べてみたところ、引き続き Squeak3.10.2 上で開発が続けられている BabyIDE-2018.07.31.ZIP というのを発見して驚きま…

Smalltalk-76 とアルト・エミュレータ(ContrAlto)でマンデルブロ集合

最後はやっぱりアルト実機に対抗(?)して、アルト・エミュレーターの ContrAlto で動く Smalltalk-76 で書いたマンデルブロ集合描画で締めくくりたい…と思ったのですが、想像以上に遅くてけっこう大変でした。^^; Smalltalk-76 を動作させるにあたり こちら …

Squeak Smalltalk でマンデルブロ集合 番外編(Squeak Etoys 毛玉版)

Squeak Etoys に組み込みの id:squeakerさんの毛玉(Kedama)を使って書いてみました。基本的に その3 などでやっているように実部と虚部に分けて計算する実装の移植です。毛玉は、端的に言うと LOGO の後継の StarLogo の流れを汲む並行処理版タートルグラ…

Squeak Smalltalk でマンデルブロ集合 その3(1トゥート版)

マストドンでは1トゥートが 500文字までで、そのインスタンスのひとつの Qiitadon ではコードブロックを指定できることから、短めのプログラムならシンタックスハイライトを使ってトゥートすることが可能です。id:squeakerさんが提示された配列を積算する方…

Squeak Smalltalk でマンデルブロ集合 その2(id:squeakerさん版)

コメントでいただいた id:squeakerさんのコードに僭越ながら少し手を入れたものを。FlaotArray>>#*= とか知らなくてなんじゃこれ?!となったのは内緒です。^^; Float nan や Float infinity の振る舞いを利用するのは面白いですね。 | size half zREs zIMs …

Squeak Smalltalk でマンデルブロ集合

こちらの件のレストアしたアルト実機で BCPL で記述したマンデルブロ集合を実行してみたら1時間かかったという話を読んでいて、そういえば自分でマンデルブロ集合を描いてみたことがなかったなぁ…と気付いたのでさっそく書いてみました。本当は、かなり以前…

型クラスの現在のところの理解を Squeak Smalltalk で表現してみる

ここ数日で、Scala の implicit parameter がどうやって型クラスっぽいことを実現しているかというのが分かったような気になってきたのと、型クラスが「状態を扱わないメソッドの集合」であるということを聞いて「それってまさにトレイトそのもの(ただし Sc…

〜ect:で終わるセレクター(Rubyで言うところの〜ect系のメソッド名)にはどんなものがあるか、あらためてSqueak Smalltalkで調べてみた

アーロ・ガスリーの「アリスのレストラン」の歌詞にインスパイアされて Smalltalk-80 から使われ始めたとされる collect: 、select: 、inject:into: など Ruby で言うところの Smalltalk 由来の 〜ect系のメソッド名(Smalltalk では「メッセージセレクター…

Squeak 5.1 をエディタ代わりに使い始めたので気付いたことを記録

ちょっとしたことを書くときに使うようにエディタ代わりに立ち上げている Squeak環境を 4.3J から久しぶりに 5.1 に更新して気付いたこと。 ▼ duplicate があっさり殺されていた件 duplicate は、任意のテキストを選択→ alt-shift-d というキー操作で、選択…

Squeak 5.1 でとりあえず日本語を表示させるために踏んだ手順の記録

Windows 8.1 での手順を記します。 Squeak5.1 を http://squeak.org/ の Windows版ボタンをクリックしてダウンロード、展開。 http://www.geocities.jp/ep3797/modified_fonts_01.html から komatuna.ttf、komatuna-p.ttf を入手して Squeak5.1-16548-32bit.…

『プログラミングElixir』出版記念: Elixir、Ruby、Squeak Smalltalkでspawn/chain.exの速度対決

OOP

なぜか Ruby インタプリタ開発者が翻訳をしたことで話題の『プログラミング Elixir』 p.167 にある「14.2 プロセスのオーバヘッド」のサンプルコード https://media.pragprog.com/titles/elixir12/code/spawn/chain.ex これと似たようなことを Ruby の軽量ス…

イケてないRubyのコードのリファクタリングって奴をSmalltalkでやってみる(sumim版)

件のネタについては Ruby ではすでに言及済みですが、その後 えせはらさんが Smalltalk に書き直すかたちで イケてないRubyのコードのリファクタリングって奴をSmallTalkでやってみる - Line 1: Error: Invalid Blog('by Esehara' ) というすばらしいエント…

手続き的で冗長な Ruby のコードを Squeak/Pharo Smalltalk の類似機能を活用してよりシンプルに書き換える

Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その3 - ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記 こんな感じの“イケてない”と称されるコードを改善する話。 def total_sales_w…

Sak 関数ベンチを Squeak/Pharo Smalltalk で

絶対どっかにありそうだけど、ベンチマーク用関数 fib_m() を考えてみた。 fib_m(0 or 1) = 1 fib_m(n) = fib_m(n-1) * fib_m(n-2)Sak 関数と呼んで下さい。 Diary - 2016 July 研究日記 これを Squeak/Pharo Smalltalk で試してみました。 "メソッド版" Int…

現在の Smalltalk(すなわち、-80以降)と Smalltalk-76, -72における true, false の扱いの違いを調べてみた

元の話の発端が何かは分からなかったのですが、最近 Ruby の true, false の属するクラスについての言及TrueClass / FalseClass が分かれてるのはSmalltalkもそうだからまあある程度理由はあったと思うんだけど。でもSmalltalkはちゃんと共通祖先のBooleanを…

「『出現確率1%のガチャを100回引いても,4割近くの人は全部はずれる。“本当の確率”を読み解いてみよう』を素直に解いてみる」をSqueak Smalltalkで

『出現確率1%のガチャを100回引いても,4割近くの人は全部はずれる。“本当の確率”を読み解いてみよう』を素直に解いてみる - L'eclat des jours(2016-03-12) 「1 - 100回引いてハズす確率」ではなく、各回の当たる確率を積算して算出する計算はどうなるか、…

平和な動物園を作ろう!をインスタンス特異的メソッドを用いてSqueak Smalltalkで

http://echo.2ch.net/test/read.cgi/tech/1444216746/361 経由で、 あなたは,さいたま動物園の園長に選ばれました.さいたま動物園には全部で10種類の動物たちがいます.あなたの園長としての初仕事は,これらの動物たちをどのオリに入れるかを決めることに…

Smalltalk-76(-78)のArrayのAPIが思ったよりSmalltalk-80と違っていて面白かったので、気付いた範囲でいくつか拾ってみた

Smalltalk-78 on lively-web.org x . "at:put:, yourself" ↪(1 2 3) ◦ 2 ← 100; itself "⇒ (1 100 3 ) ". "atLast:put:" ↪(1 2 3) last ← 100; itself "⇒ (1 2 100 ) ". "replaceFrom:to:with:" ↪(1 2 3 4 5 6) ◦ (2 to: 3) ← ↪(20 30); itself "⇒ (1 20 30 …

Squeak5.0で日本語表示をするシリーズ: とりあえずJapaneseEnvironmentを直してStrikeFontで日本語を表示できるようにする

おそらくここらへんは将来的にはなくなる予定の仕組みなのかもしれないのですが、とりあえず淡々と直していきましょう。いったん TrueType のことは忘れて StrikeFont(ビットマップフォント)で日本語を表示できるようにします。 まず最初に、既定のフォン…

Squeak5.0で日本語表示をするシリーズ: (寄り道編)ワークスペース内容をHTMLで保存する機能追加

Squeak5.0の日本語フォント表示周りをぼちぼち直していこうかと件のTTなんたらクラスの動きをちまちま調べている途中、ワークスペースにメソッド内容などをコピペしてメモを作ったりしているうちに、シンタックスハイライトできれいに色づけされた文字属性も…

Squeak5.0で日本語表示をするシリーズ: FontImporterTool を使う

ご多分に漏れず1バイト文字圏に自由気ままに振る舞われているのと、将来的には EncodingTag/leadingChar とかの仕組みが変わるような話も耳にして、5.0 までになった Squeak ではもはや日本語表示は無理なのかなぁ…4.3J とか 4.4J を使い続けるかなぁ…と、…

“サイコロの展開図”問題を正規表現がデフォで使える Pharo Smalltalk で(正規表現を使わずに Squeak でも)

サイコロの展開図 横へな 2015.3.7 問題 Pharo では正規表現が使えるとのことなので、ちょうどそれ向きのお題ということもあり、久しぶりに Pharo で、Squeak 向けのコードの動作確認の範疇をこえて、書き下ろしていろいろ遊んでみました。 | patterns solve…

“とある世界のタクシー料金”問題を Squeak/Pharo Smalltalk で

とある世界のタクシー料金 横へな 2015.4.18 問題 | cityOfPlace distOfSection additFare initFare fareFor | cityOfPlace := Dictionary new. #(円來 'ABC' 炭州 'DEFG') pairsDo: [:ci :pls | pls do: [:pl | cityOfPlace at: pl put: ci]]. distOfSectio…

「進捗・どう・です・か」を Squeak Smalltalk で

タイトルにもあるように「進捗・どう・です・か」をランダムな順序で表示し、「進捗どうですか」が完成したところで適当にクエスチョンマークをつけて去っていくプログラムです。特に意味もなく文字カウントします。おおよそ数十文字から1000文字程度で目的…

共立出版刊「Common Lisp オブジェクトシステム」の共通例題 Grapher の Smalltalk-80 版を Squeak 1.3 で

Ruby の「特異メソッド」命名の元ネタとも言われる、共立出版刊「Common Lisp オブジェクトシステム」にあった各種 OOPL での共通例題の Smalltalk-80 版を Squeak Smalltalk のごく初期のバージョン(1.31)で動かしてみました。 CLOS-Grapher.st だいぶ改…

“SEND + MORE = MONEY”ソルバーを Squeak Smalltalk で その4

久しぶりに SEND + MORE = MONEY 。以前書いたもの(ブルートフォース版)の焼き直しなのですが、少しだけ趣を変えてみました。デュードニーの覆面算というのですね。 | int solveAlphametics | int := [:array | array reversed polynomialEval: 10]. solve…

Consセルがメッセージを受け取って動くLispもどきをPharo3.0 Smalltalk で

OOP

引数を評価する(carをevalしていく)ときにatomとして使っているSmalltalkのデータ全てがevalメッセージを理解 http://phaendal.hatenablog.com/entry/2015/04/17/164825 名詞とか動詞とか宣言的とかは難しくてよく分からないのですが(をゐ)、このアイデア…

ジバニャン方程式を Squeak Smalltalk で

ジバニャン方程式をついに発見した https://t.co/6ADdU4LGyw pic.twitter.com/CEtNYcb80x— Akiya Mizukoshi (@Akiyah) 2014, 11月 12 輪郭抽出が手抜きでちょっとあれですが…^^; | jibanyanEquation form size | jibanyanEquation := [:x :y | { { {1-(x/108…