2006-01-01から1年間の記事一覧

Ruby は Smalltalk-76 に似ている。by アラン・ケイ 番外編

id:sumim:20060615#p1 の続き。いろいろと調べているうちに Smalltalk-76 で見かけた、Ruby にも Smalltalk-80 にもない、ちょっとおもしろい機能、編。 ▼心持ちインテリジェントな配列要素アクセス #• は、通常はパラメータである整数の位置にある要素を取…

Ruby は Smalltalk-76 に似ている。by アラン・ケイ 2

id:sumim:20060613#p1 の続き。Smalltalk-76 の勉強を兼ねて、Smalltalk-76 が Ruby に似ているっぽいところを列挙しています。 ▼制御構造の書き方 Smalltalk-80 以降では、条件分岐や繰り返しなどの制御構造もすべて、しかるべきレシーバに対するメッセージ…

LISP 誕生から Smalltalk 誕生までは何年?

某所で見かけたのですが、ちょっと計算…というか、起点のとりかたが一貫していないように思えたので詷べてみました。 History of LISP [McCarthy78] の冒頭に、こんなふうな記述があります。 1. Introduction.This paper concentrates on the development of…

Ruby は Smalltalk-76 に似ている。by アラン・ケイ

Matzにっき - Alan Kayといっしょ によれば、前のエントリーで取り上げさせていただいた“死んだ言語”以外にも、タイトルのような示唆に富む言及があったとのことだったので、さっそく調べてみました。正直、これまで Smalltak-76 はあまり興味がなかったので…

Smalltalk は死んだ言語だ。by アラン・ケイ

Matzにっき - Alan Kayといっしょ や 日本 Ruby カンファレンス 2006(RubyKaigi)の まつもとさんの基調講演での言及から、一部の隠れ Smalltalk ファンの方々には衝撃をもって受け止められたり、あるいはおもしろおかしく取り上げる向きもある、くだんのセ…

Ruby で Smalltalk の #with:collect:

rubyco(るびこ)の日記 - zipWithの自作 と もち - 今日の自作関数 にて、Ruby で Haskell の zipWith を自作しよう…という話。 Haskell の zipWith と似たような動きをするメソッドを Smalltalk で探すと、#with:collect: が見つかります。Squeak システム…

re: re: 代入とメッセージング

id:sumim:20060602:p1 で、(少なくとも“ケイのオブジェクト指向”に立脚して Smalltalk を利用する際には)「すべてはオブジェクト」というよりは「すべてはメッセージング」であることを意識すべし…という話をうけての、結城さんの、 sumimさんの「すべてが…

Ruby のブロックってオブジェクトじゃないよね。これって“驚き最小の法則”に反しない?

プログラマ向けオンラインマガジンの bitwise magazine にて、どうしてかくも多くの人が Ruby に魅了されるのか…を編集者があれこれ語った記事が掲載されているのですが、ちょっと笑ってしまった一節。 Huw: Matz has said that, with Ruby, he has 'tried t…

#overlappingPairsCollect: を使ってパスカルの三角形

巷ではなにやら、風変わりな方法でパスカルの三角形を得るのが流行っているようなので、便乗して id:sumim:20060517#p1 で見つけた #overlappingPairsCollect: を使ってみました。 | results | results := OrderedCollection with: #(1). 10 timesRepeat: [ …

シェパード音階を Squeak の Smalltalk で

rubyco(るびこ)の日記 - Rubyで作る無限音階 経由で、PB memo - [Ruby][音楽]Shepard Tone に、触発されて。マルチメディアなら Squeak!ということでもないのですが(むしろ、マルチメディアはおろか、サウンド関係すらほとんど遊んだことがない…汗)、ま…

二次元配列の要素を縦方向に足す

技術メモ帳 - 二次元配列を列方向に処理 で、まず読み込みは素直にしておいて、得られた配列が、 ary = [[1,2,3],[4,5,6],[7,8,9]]だったとして、さあ、そこからどうするか…というのを考えてみました。Ruby には transpose というのがあるので、これを使うの…

…ect:(Smalltalk ではコロンも忘れないでねw)メソッドたち

なにやら、ここ一両日、コレクションブロックメソッドがらみでアクセスをいただくようになったのは、“るびま”こと、Rubyist Magazine 最新号の Rubyist Hotlinks 【第 14 回】 角谷信太郎さん のコーナーで、なかば恒例となっている map 派、collect 派の話…

メソッドが定義されているクラスを探す

404 Blog Not Found:perl - UNIVERSAL::which 経由で、どのクラスで定義されたメソッドなのか - にぽたん研究所 を読んでいて、Smalltalk でも、あるメソッドを起動できることは分かっているのだけれど、それがどのクラスに定義されているのか分からない…と…

起動すべきメソッドが見つからないメッセージに対処する

id:rubyco さん経由で。小飼さんの 404 Blog Not Found:Perl Monger の質問 - AUTOLOADって他でどうやるの? を受けて。shiro さんがコメント欄で示唆されているように、Smalltalk や、その影響を強く受けている Ruby などではおなじみの手法ですね。 定義(…

メソッド定義にリテラルを含む際の注意

結城浩のSICP日記 - クイズ とそれへの shiro さんのコメントを読んでいて、Squeak や VisualWorks の Smalltalk でも似たようなことがあるな…と思いました。 後述の VisualWorks の場合とは異なり、Squeak の Smalltalk では、リテラルの書き換えも自由に行…

Mac のメニューバーの正体

GUI

リファラによると、「メニューバーの正体」という検索で訪れてくださった方がおられたようですので…。 “正体”が何を意図するのか分かりませんでしたが、Mac の前身である Lisa のプロトタイプで、画面トップにメニューバーが設けられるまでの経緯は、以前も…

Squeak の Smalltalk での Complex チェック

404 Blog Not Found:%w(Complex Number).reverse を受けて、お呼びでないとは理解しつつも、しかし、どんな振る舞いをするか確認のために。 Float pi " => 3.141592653589793 "Float e " => 2.718281828459045 "Float e raisedTo: (Float pi i) " => エラー …

Croquet SDK 1.0 beta Tips

Croquet で遊んだり、人前でデモをするときに知っておくとうれしい、全画面表示モードへの移行とその解除のための操作、および、関連クラスに定義された #keyStroke: メソッドのコードをつらつらと眺めていて分かったこと(3Dオブジェクトが受け付けるキー…

ガイ・スティールJrが Sun で開発中の新言語は Traits ベース

Derive Your Dreams 経由で。 http://research.sun.com/projects/plrg/fortress0866.pdf Traits are named program constructs that declare sets of methods. They were introduced in the Self programming language, and their semantic properties (and …

LISP の CAR と CDR、特に address と decrement の起源

http://www.iwriteiam.nl/HaCAR_CDR.html OK, so it's decrement. I have never encountered decrement used like this. What does it mean? id:babie:20060426:p9 を拝読していて、私も、「で、decrement って何よ?」と思ったのでググってみたところ、その…

インスタンス特異的メソッドを使ったフィボナッチ数列

id:rubyco:20060419:fib のコメント欄にある mobius さんによる、Ruby の特異メソッドを用いたコードが面白かったので、例によって意訳。 | fibonacci | fibonacci := #(1 1). fibonacci assureUniClass. " インスタンス特異的クラスの作成 " fibonacci clas…

f(f(x)) ==> -x な、実数を返す f を定義せよ…クイズ 3

趣を変えて、歪 の PostScript による変態的な手法と大枠で同じ方針による。 Number >> f | method nn | method := thisContext method. nn := method literals size. method literalAt: nn put: ( (method literalAt: nn) == #negated ifTrue: [#yourself] …

f(f(x)) ==> -x な、実数を返す f を定義せよ…クイズ 2

http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-04-18 id:sumim:20060418:p1 の続き。nobsun の Haskell による解答を意訳で。 | ff | ff := [:real | real abs caseOf: { [0] -> [real]. [1] -> [real sign * Float infinity]. [Fl…

f(f(x)) ==> -x な、実数を返す f を定義せよ…クイズ

http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-04-17 | ff | ff := [:xx | xx * 1 i]. ^ #(0.2 -0.2 1.2 -1.2) collect: [:rr | (ff value: (ff value: rr)) real]=> #(-0.2 0.2 -1.2 1.2) 実数を返す関数だからこれじゃダメか…。…

call/cc を使ったコルーチンもどきでフィボナッチ数列

ちまたでは、なにやらフィボナッチ数列が流行っているようなのですが、フィボナッチ数列といえば、以前、Lua について触れたときに、資料で見かけたコルーチンを使ったフィボナッチ数列が印象深かったのに、まだそれを Squeak の Smalltalk で書いていなかっ…

○3つ、△2つ、×1つの目を持つサイコロ2個を振ったときに出る目の組み合わせで一番多いのは…ふんがっ

http://blogs.yahoo.co.jp/takutakutakutaku50/28887753.html 遅レス。 経由で。リンク先の ささださんの inject、sort_by を使った版を直訳ぎみに Squeak の Smalltalk で。 | ss | ((ss := #(○ ○ ○ △ △ ×)) inject: Dictionary new into: [:result :aa | s…

AA 折れ線グラフクイズ 9

id:sumim:20060408:p1 で書き直した Squeak の Smalltalk 版 および Ruby 版を、Gauche(Scheme)を用いた毎度お馴染みの直訳ぎみ+妙な回避策で。 私自身に Scheme 力が足りないのと、push! 、pop! を無理に使ったためか、こんなんなってしまいました。ごめ…

AA 折れ線グラフクイズ 8

http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-03-14http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-03-15オーソドックスな解答例(座標をキーにした連想配列に入れておき、あとでスキャン…)はこちら。 i…

AA 折れ線グラフクイズ 7

いろいろな言語の解答を拝見。 辞書(連想配列)に入れておいて、あとでスキャンする…という、シンプルかつオーソドックスな方法の存在に気づきませなんだ…。orz | series data yy yys | series := 'RCRFCRFFCCRFFRRCRRCCFRFRFF'. data := Dictionary new. y…

AA 折れ線グラフクイズ 6

id:sumim:20060406:p5 からの続き。hirofummy さんの Haskell 版を Squeak の Smalltalk で書き直した最後の版を、こんどは Ruby で直訳気味に。 これを Ruby らしく書き直すのに必要な Ruby 力は、恥ずかしながら私には備わっていません。w #!/usr/local/b…