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

Ruby1.9 のクラスのメタ階層を整理する 4

http://idm.s9.xrea.com/ratio/2008/12/14/000803.html ぜんぜん関係ない話ですが、この記事で Yugui さんが、ごくふつうのことのように Smalltalk を使って確かめた結果を例として挙げてくださっているのが個人的にはとっても嬉しかったです。とかく世間で…

Smalltalk の #ensure: もリターンを撤回できる

以下のメソッドを呼び出すと何が得られるだろうか? def foo return 1 ensure return 2 end Rubyのensureはreturnを撤回できる - Hello, world! - s21g Smalltalk だと、これはどんな動きをするのかと疑問に思ったので手元の Smalltalk 処理系(Squeak[link]…

MacよりもWindowsのほうが歴史が長い? 〜右クリックメニューの起源〜

GUI

一方のWindowsでは、最初から2ボタン以上のマウスを標準的に使用するようにはなっていたものの、左ボタンと右ボタンの違いをシステムレベルではっきりと分け、それぞれの用途を明確に定めたのはWindows 95からだった。その時点で、右ボタンはコンテクストメ…

二つのオブジェクト指向とそれぞれのメリット

OOP

似たような話の繰り返しで恐縮ですが、現時点での自分の理解の整理のためのメモ。前後しますが、こうして改めてまとめてみると、純粋な抽象データ型のオブジェクト指向プログラミングは、メッセージングのオブジェクト指向の影響も多分に受けている OOAD(分…

GNUstep/Objective-C で KVO(キー・バリュー・オブザービング)

もろもろの勉強を兼ねて、一番初めのObjective-Cプログラム (1/3):Cocoaの素、Objective-Cを知ろう(2) - @IT を改変して、KVO で歌詞変更を監視して自動出力する版への書き換えにチャレンジしてみました。a Singer は a Song を与えられると、自身をオブ…

C# で遅延&メモワイズなフィボナッチ数列

LazyなFibonacci - (hatena (diary ’Nobuhisa)) にからめて。 墓に刻むほどクールではないけれど、そういえば Ruby にも特異メソッドを使って… fib = [1,1] def fib.[](i) i < size ? super : self[i] = self[i-2] + self[i-1] end p fib[39] #=> 102334155 …

Pythonクイズ(辞書の非破壊的操作) を Squeak Smalltalk の実装を参考に

以下の?????を埋めよ。但し文字数の指定はない。解答はいくつかあると思うが後日。>>> d1 = {'a':1, 'b':2, 'c':3} >>> d2 = {'c':4, 'd':5, 'e':6} >>> print ????? {'a': 1, 'c': 4, 'b': 2, 'e': 6, 'd': 5} >>> d1 {'a': 1, 'c': 3, 'b': 2} >>> d2 {'c'…

Squeak Smalltalk のクラス階層の深さ

Smalltalk のクラス階層が深すぎる気がする Twitter / 星一 というつぶやきを見かけたので、調べてみました。 | dict | dict := Dictionary new. SystemNavigation default allBehaviorsDo: [:class | class isMeta not ifTrue: [ (dict at: class allSuperc…

Dolphin Smalltalk の MVPアーキテクチャで BMI checker

id:sumim:20080923:p1 の続き。MVC の進化形である VisualWorks のアプリケーションモデルに続き、MVP(Model-View-Presenter)にも興味を持ったので、ちょっとした騒ぎにもなったディスコン宣言から一転、このほどめでたく 復活することになった Dolphin Sm…

Scheme どう書く?的お題を Squeak Smalltalk で

Scheme どう書く?的 - higepon blog 発で、整数リストの変形 - プログラミング日記 で提案された拡張版のお題を、ちょっと変わった方向性で。関連クラスにメソッド「#,,」を定義(「#,」は使えないので、代わりに…)し、これを使ってリテラル風のリスト記述…

VisualWorks Smalltalk の“アプリケーションモデル”で BMI checker 2

id:sumim:20080919:p1 の続き。umejavaさんにコメントやメールで教えていただいたので、フィールドの色が変わる版も。複数のウインドウが共通のモデルを共有したときにも動作するように細工してみました。 | app1 app2 window1 window2 | app1 := BMIChecker…

VisualWorks Smalltalk の“アプリケーションモデル”で BMI checker

アプリケーションモデル これは、Fowler氏がVisualWorks Smalltalkのやり方を念頭において説明しているパターンだ。残念なことに私はSmalltalkに詳しくないので、私の理解が正しいか確かめる術がない(助けてsumimさん!!)。 http://blog.inomata.lolipop.jp/?…

Ruby1.9 のクラスのメタ階層を整理する 3

id:sumim:20080913:p2 の続きで、最後に本題(?)の特異クラスの特異クラスが作られた場合について。 これまでの Ruby1.8 では、特異クラスに特異クラスが作られると、文字通り特異クラス特異的クラスが作られていました。こうして新しく設けられた特異クラス…

Ruby1.9 のクラスのメタ階層を整理する

[ruby-core:18437] Class as second-generation singleton class を読んだ当初は、特異クラスのクラスが Class ってことでええやん!と思ったのですが、改めて調べてみるとどうやら必ずしもすべての特異クラスが Class に属するわけではないようで(かつ、確…

Ruby1.9 のクラスのメタ階層を整理する 2

sumimさんの「Ruby1.9のクラスのメタ階層を整理する」という記事、Rubyの型階層は雑然としているというのは、なんかsumimさんの図が悪いような気もするなぁ。整理すればもうちょっと情報を引き出せるよ。 Ruby1.9 のクラスのメタ階層とかevil-rubyとか - 世…

恒例のフィボナッチベンチで V8 と Smalltalk、Ruby、Python、Scheme とを戦わせてみる

爆速で話題の Google Chrome 搭載 JavaScript VM “V8” は、Animorphic Smalltalk VM がベースになっているらしい の続き。 その速いと言われる V8。実際、どのくらいの速度で動くのかを具体的な数値として見てみたくなったので、手軽に試すことができるフィ…

爆速で話題の Google Chrome 搭載 JavaScript VM “V8” は、Animorphic Smalltalk VM がベースになっているらしい

Animorphic Smalltalk というのは、1990年代半ばに作られ、2006年にオープンソース化されて話題になった“Strongtalk”のこと。 Another interesting aspect of the V8 virtual machine is that it's open source. It is mainly written in C++, based on the …

“Lisp as 〜”のお題を Scala で、を Squeak Smalltalk で

“Lisp as an Alternative to Java”のお題を Scalaで - 玲瓏庵 こ、これは短い! Scala、恐るべし。 どういう動きなのかの解析と Scala の勉強を兼ねて、Squeak Smalltalk へ直訳っぽく。 Object subclass: #DD instanceVariableNames: 'word digits' DD >> d…

最低限の Smalltalk デバッガ入門(Squeak システム向け)

Smalltalk ではスタックフレームも「コンテキスト」と呼ばれるオブジェクトです。ちなみに、実行中のコンテキストに容易にアクセスできるようにわざわざ thisContext という擬変数まで用意されています。Smalltalk には予約語は全部でたった6つしかない(他…

“Lisp as an Alternative to Java”のお題を Squeak Smalltalk で

何を見てだったかは失念^^;…経由で http://www.kmonos.net/alang/d/2.0/lisp-java-d.html を知って、面白そうだったのでチャレンジ。こんなのは33分くらいあれば十分!とナメてかかったものの、結局、なんやかんやあって3時間くらいかかっちゃいました。…

アラン・ケイの「Is "Software Engineering" an Oxymoron?」

OOP

UPDATE!!: id:propella さんがすばらしい翻訳を公開してくださいましたので、そちらをどうぞ 「ソフトウェア工学」は矛盾語法か? "-- -- -- -- -- -- -- -- -- -- -- -- -- --" Is "Software Engineering" an Oxymoron? [PDF(勝手ミラー版)] タイトルの訳…

Ruby の #choice にふさわしい名前

話題の #choice について。 [ruby-core:18080] Re: New array methods cycle, choice, shuffle (plus bug in cycle) 同じ choice でも Python の場合、狙ったのかどうなのか random.choice(ary) という表現になるのでかっこいいのですが、Ruby の場合は ary.…

「Smalltalk で学ぶオブジェクト指向プログラミングの本質」というよりは「Cincom Smalltalk(VisualWorks)で学ぶイマドキの Smalltalk の実際」?

SMALLTALKで学ぶ オブジェクト指向プログラミングの本質作者: 青木淳,浅岡浩子,澤本依里出版社/メーカー: 日経BP社発売日: 2008/07/24メディア: 単行本購入: 14人 クリック: 408回この商品を含むブログ (39件) を見る 雑誌連載をただまとめて書籍化しただけ…

EQL スペシャライザで猫と犬をしゃべらせる

http://d.hatena.ne.jp/scinfaxi/20080727/1217119532 メタクラスを使うのは、けっこう普通にできそうな気がしたので、EQL スペシャライザで。ただ、Gauche にはこの機能はないので、CLISP を使いました。 (setq <cat> (defclass <cat> () ())) (setq <dog> (defclass <dog> () (</dog></dog></cat></cat>…

「初めてのRuby」の言語系図を勝手に添削

http://www.amazon.co.jp/dp/4873113679 http://yugui.jp/wiki/LearningRuby この手の系図には間違いがつきものなのですが、「プログラム言語の系譜で、Lisp→Smalltalkの線を引いてるのはこの本だけ!」と言われてしまうとつい反応したくなるのが人情という…

Squeak Smalltalk で万華鏡を書いてみた件 2

id:sumim:20080719:p1 に関連して、念のため、グラフィックスの扱いが手軽な Squeak システムで万華鏡を書くなら、オーソドックスにはこうだろうという例も書きました。 [Sensor anyButtonPressed] whileFalse: [ | original mirror | original := Form from…

[OOPL] Ruby で、nil.dup は nil を返すべきか?それとも、エラーにすべきか?

[ruby-core:17871] duping the NilClass なぜか異様な盛り上がりを見せています。ちなみに、“ゆるさ”が売りの Smalltalk 的には「 nil を返す以外あるの?」でFAなので、Ruby もこの議論を機に改心して同じ“ゆるさ”を身につけてくれるとうれしいのですが(…

同値関係を求めるパズルを Squeak Smalltalk で

問題xxxx=yyyy という形式のデータをたくさん受け取り、等しいもの同士をグルーピングするプログラムを書いてください。 Rubyで同値関係を求めるパズル - rubyco(るびこ)の日記 Set を使って書いてみました。なお、入力は in.txt なるテキストファイルから…

Squeak Smalltalk で万華鏡を書いてみた件

http://d.hatena.ne.jp/scinfaxi/20080719/1216413198 経由で。 http://d.hatena.ne.jp/hrkt0115311/20080718/kaleidoscope まずは、オリジナルの Ruby コードの雰囲気を反映させつつ Squeak Smalltalk に移植してみました。Ruby の rand() と違い Smalltalk…

じゃんけんの勝ち負け判定を Squeak Smalltalk で

arton師の ご指摘(…というよりは、あからさまな煽り?w)をうけて、「なぜ、あなたはJavaでオブジェクト指向開発ができないのか」の Squeak 版 Smalltalk への移植を暇をみて書いてみてはいるものの、遅々として作業が進まない理由の一つに、ひとつひとつ…