Squeak

Squeak に英文を読ませる

ひ日誌の「 Mac に英文を読ませる」に触発されて。 エディタとして常用する Emacs に読み上げ機能を付加する便利さや、任意のキーで選択テキストを読み上げてくれる機能が用意されている OS X にはとうていかなわないまでも、クリップボードのテキストを声に…

カーリーブレイス記法による多重代入もどきを復活させる

Squeak の Smalltalk におけるカーリーブレイス(中括弧)を使った記述は、前身である Apple Smalltalk 時代にラリー・テスラーの手により組み込まれた、配列の特殊な表記法を受け継いだものです。 参考:Squeak のコード中によく中括弧を見かけるけど、あり…

Lua のコルーチンをシミュレート 2

id:sumim:20060209:p1 に call/cc 版を追記。

call/cc でコルーチンっぽいことをする

call/cc …というか継続(a Continuation)が使えるようになったので「 Scheme 入門 16. 継続」の最後の項「 4.3. コルーチン」にある、call/cc を用いたコルーチンもどきの例を試してみる。 まず手始めに、スレッドで同じことを記述。 | rstream | rstream :…

Squeak の Smalltalk で call/cc を使えるようにする

Squeak システムのインストール(念のため) http://squeakland.jp/developer/ の指示に従ってセットアップ ・http://squeakland.jp/developer/download/image/SqueakPlugin-dev-527.zip を入手、展開 ・使用している OS 向けの仮想マシン(バーチャルマシン…

Lua のコルーチンをシミュレート

TMUG(東京マッキントッシュユーザーズグループ)のメーリングリストで Apple の Aperture への言及にからめて引き合いに出された Adobe の Lightroom について、そこで引用されていた Sooey の「Adobe Lightroom には Lua が使われている」によれば、 Adobe…

suzuki さんの OOP 入門に新項目追加

トーフサロン な suzuki さんの「Squeakによるオブジェクト指向プログラミング入門」に、新ページ「クラスの定義」が追加されました。この次の Squeak システムならではの開発方法…というのも楽しみです。

Smalltalk-72 で遊ぶ

id:lethevert さんのコメント欄で id:squeaker さんのツッコミがあったのをきっかけに、また久々に Smalltalk-72 で遊んでみたので、メモ。 今回は、(今の)Smalltalk について知見を深めるためというより、純粋に“Smalltalk-72”という言語に興味をもって接…

Squeakによるオブジェクト指向プログラミング入門

http://www.spice-of-life.net/wiki/index.cgi/d/?wikiname=LearnOOPWithSqueak Ruby で書かれた Web アプリケーションフレームワーク、CGIKit で知られる トーフサロン の suzuki さんによる。 (主にメッセージ指向の)オブジェクト指向がまだピンとこない…

Classboxes で遊ぶ

Matz にっき 経由で。将来、Ruby にも採用される…かもしれないw、アスペクト指向っぽいモジュールシステム、Classboxes で遊んでみました。 Classboxes は、クラスボックスと名付けられたクラス横断モジュールの組み込みを通じて、既存メソッドを置き換えた…

正方形と正三角形のクイズの図を描く

解くんじゃないのかよ!w ヒビルテ より。おそらく、中学校の幾何の問題。 | pasteboard triangle square anotherTriangle | pasteboard := RectangleMorph new. pasteboard color: Color white. pasteboard borderWidth: 0. square := PolygonMorph shapeF…

nil の扱い

www.textfile.org より、ひ日誌 経由で [ruby-list:41768] Re: nilの扱い 。 ここで Rails の blank.rb に定義された blank? というのは、Squeak だと #isEmptyOrNil のようなものでしょうか。 Collection >> isEmptyOrNil ^ self isEmptyUndefinedObject >>…

単項メッセージの使用頻度

System.exit() の「メソッドの使用頻度の統計」に触発されて…。 札幌市にお住まいの○○さんからのお便りです。「Smalltalk システムって、クラスライブラリはもちろん、言語処理系自体がほぼすべて Smalltalk 言語で記述されていて、ソースもエンドユーザーが…

100 ドル PC とアルト

PC Watch:元麻布春男の週刊 PC ホットライン「アラン・ケイが Squeak で変える教育現場」 http://pc.watch.impress.co.jp/docs/2005/1111/hot392.htm 画素数に関して、ALTO と比べるところがニクイですね。っても、たぶんアラン・ケイが言ったことをなぞっ…

NSObject の +poseAsClass: をシミュレートする

Matz にっき 経由で、「ダイナミック Objective-C 第12回:ポージングで乗っ取り」。ここで紹介されている Cocoa/ObjC の poseAsClass: の作用が面白いので、同じようなもの(#poseAs:)を Squeak の Smalltalk で実装してみるテスト。#become: を使うので、…

日時オブジェクトの扱い

バカ往く のある記述への反応で始まった inamode6 のやりとりを受けて ruby-list に「Date へのメソッド追加要望」という投稿がありました。そのスレを見ていて、Squeak システムの Smalltalk 言語で同様のことはどんなふうになっているのか興味を持ったので…

今月の日曜日は何回? 2

ざっと見たところ、cweek を使ったものがないようなので(日数を 7 で割るのと、さほどかわりありませんが…)。 require 'date' t = Date.today; y = t.year; m = t.month p (Date.new(y,m,-7).cweek-(Date.new(y,m)-7).cweek)%52 -7 を -1 にすれば月曜日、…

Ruby で実行中のメソッドの名前の取得

同じく A Strolling Programmer 経由で、バカ往く 発。FAQ らしいので、メモ。 caller(0).first[/:in \`(.*?)\'\z/, 1] ちなみに、日曜日とはまたちがった意味で、ここいらへんも Smalltalk の得意とするところ。 thisContext method selector thisContext …

今月の日曜日は何回?

A Strolling Programmer 経由で、ふたたび id:nisyu さんによる はてなの質問、第二弾。「Rubyのプログラムで今月「日曜日」が何回あるのか教えてください。」 Ruby でも考えてみるつもりですが、まずはとりあえず、こういうのは Smalltalk の得意種目(?)な…

Io で非同期メッセージング

Erlang のチュートリアル の非同期メッセージングの例に触発されて、Io のアクター(“@()”)で似たようなことはできないか、Io の非同期メッセージングの学習を兼ねて試してみました。 syncFib.io fib := method(n, if(n < 3, 1, fib(n - 2) + fib(n - 1))) …

ファイル内容の 表示・編集 機能を持たないファイルリスト

次の式を評価すると、ファイルの内容を表示したり編集するためのペインを欠いた状態でファイルリストを起動することができます。 FileList2 morphicViewNoFile openInWorldちょうど、先の簡易エディタモード(ファイラ機能のペインを欠いている)とは逆の状…

FileListSaveAsEnh-sumim.cs

ファイルリストは、通常、デスクトップメニュー → open... → file list で起動し、Squeak システム備え付けのファイラとして使用しますが、デスクトップメニュー → open... → file... でファイルを選んで開いたり、あるいは、次のようにファイルストリームに…

Ruby で /\w/ な文字からなる文字列を生成する

丁稚な日々 経由で、はてなの こんな質問…っていうか挑戦? Squeak の Smalltalk で書き下すとこんな感じ。 (($0 to: $z) as: String) select: [:each | each isAlphaNumeric or: [each = $_]] これだけで終わらせるのもなんなので、Ruby の勉強を兼ねて、最…

Ruby と Smalltalk のリフレクション機能対応表

引き続き、日経 Linux 10 月号、「プログラミングのオキテ」にある Ruby のリフレクション機能の表を参考に、Squeak システムの Smalltalk との対応表を作ってみました。 リフレクション機能 Ruby Squeak の Smalltalk メソッド名の一覧 Foo.instance_method…

Smalltalk で SimpleDelegator

日経 Linux 10 月号の「プログラミングのオキテ」にて、SimpleDelegator の簡易実装を引き合いに、Ruby のリフレクション機能の紹介。まつもとさん曰く“Ruby に負けないくらい動的”…な Smalltalk ではどんな具合になるのかなぁ、と試してみました。 SimpleDe…

Linux Gazette の Smalltalk 関連記事、連載

id:mimpoo さんのところ経由でその存在(翻訳も)を知ったので、メモ。 Smalltalk と ペンギン (By Jason Steffler) [2000.03] Smalltalk [2000.11] Smalltalk(オブジェクト、クラス) [2000.12] Smalltalk(継承、ポリモーフィズム、抽象クラス、コレクシ…

逆数を求めるトリッキー(?)なコード

ちょっと前に arton さんのところの「トリッキーなコード」というエントリーを受けて、id:kmt-t さんによる 反応 で引き合いにだされた、逆数を求める C++ のコード。 #include <stdio.h> #define FP_ONE_BITS 0x3F800000 float p, r; p = 1234.121234f; int i = 2 * </stdio.h>…

fix と memoize

Derive Your Dreams 発、結城さんのところほか、いろいろなところ経由で。なんだか流行っているみたいなので…(^_^;)。 まず、fix 。Smalltalk のブロックを使ったプログラミングにおいて、一番身近な存在といえる Scheme 版を id:SaitoAtsushi さんのものを…

Ruby との配列操作の比較

die さんの 歪 経由で、高林さんの いやなブログ 発「配列操作の比較表: Ruby, Python, JavaScript, Perl, C++」をうけて。 似たような文法の言語間で混同しないように整理するのが、そもそもの目的のようなので、Smalltalk がごとき変態文法はお呼びでない……

LLDN 「君ならどう書く」 Squeak 編の解説 1

あまりに時間が短かったので、ちょっと詳しめの解説をぼちぼち書いてゆきます。 事後に提出した資料(ソース、プレゼン静止画、プレゼンイメージを再現するためのプロジェクトファイル群。自由演技作品を含む)は、LLDN のサイトで公開していただいています…