2004-10-01から1ヶ月間の記事一覧
っていう話は有名なんですが、どこかで見かけた文章の英語がちゃんと読めなくて確認できていなかったんですね。でも、Smalltalk システムっていつごろから仮想マシンを使い始めたんだろう…という話を調べているうちにたまたま行き着いた Smalltalk-80: Bits …
特異メソッドというのは、インスタンス特異的メソッドの Ruby におけるローカルな呼び名。Rubyist Magazine - 0002号で、特異メソッドの記事にある七並べを使った特異メソッドの例があまりよくないという話があるようです。個人的には、特異メソッドの一番シ…
関連:[OOP] オブジェクト指向の概念の発明者は誰ですか? くだんのオブジェクト指向3点セットの元になったともくされる論文のメモ。抽象データ型に加えて、以下の機構がオブジェクト指向プログラミングをサポートするのに必要とされる。 特殊な関数呼び出…
…の構図ってのは、クラスベースオブジェクト指向 vs プロトタイプベースオブジェクト指向 の構図にちょっと似ていますね(構図だけでなく、クラスは必須か否かを扱うだけに、完全にオーバーラップする対立点、うがった見方をすれば代理戦争的側面、もありそ…
Smalltalk で抽象データ型のスーパーセットをまったく無視しているとか、C++ でメッセージ指向できないとか言っているわけではありません。っていうか、まず、文献欲嫁?
つらつらとおもんみるに、ケイ(Smalltalk)が“それ”を「メッセージ指向」と言い続けなかったこと、ストラウストラップ(C++)が“また別のそれ”を「クラス指向」と言い換えなかったこと、に尽きるかな、と。
これ(オブ脳 vs アンチ)や、ちょっと古いけどこれ(Java は純粋 OOPL ?)なんかも、その典型でしょうね。上の前提に立てば、どちらも言っていることは正しい…って感じがしますから。
オブジェクトの広場の ML で熱いオブジェクト指向談義が展開されているのですね。1980 年代以降の OOD/OOA からすると、私の 1960 年代までさかのぼる オブジェクト指向(より厳密には OOP)の起源に関する研究(ぉぃぉぃ…)成果は、“古典”のひと言でうち捨て…
こんな感じの言及を幾度か見かけた記憶があるのですが、これって(少なくとも Smalltalk では)“メッセージはオブジェクトじゃない”と言いたかったのですよねぇ…。 いや、それだとメッセージという概念がそもそもない Eiffel で、おかしくなるか…。文脈的に…
self や io では当然駄目なので、selflanguage とか iolanguage とかすると、ある程度(検索ヒットを意識した言及ページを)拾うことができます。SELF についてはさらに、_AddSlots: というプリミティブメソッドをよく使うので、これをキーにする("_addslot…
self、super、thisContext、あるいは、メソッドのパラメータ変数やブロックのブロック変数が擬変数(変数のように使えるが、ユーザーが任意のオブジェクトを代入できない。つまり代入できない)であることは、 誰でもある程度、直感で理解できるものですが、…
ある意味“別格”の、つまり、メッセージ指向というパラダイムの有効性を検証するため(だけ)に作られた Smalltalk システムにおける Smalltalk 言語を除けば、個人的には、純粋オブジェクト指向言語と名乗ってよい言語は SELF くらいしか思い付きません。それ…
文字列は文字列であって、偽か真か以前に、真偽値 にすらなりようがない のように扱えることにそもそも違和感があり…と思うのは私だけでしょうか?w ま、Ruby の条件分岐はオブジェクト指向たることをハナから放棄しており(なお、ここでの“オブジェクト指…
無名関数を返さずに、かつ、メソッドにまとめてしまってよいならば、exit もでき、よりシンプルに書けます。 Object >> case: caseArray caseArray pairsDo: [: case : execBlock | (case = self or: [case = #else]) ifTrue: [^ execBlock value]] x挨拶s x…
die さんの PostScript 版 を Smalltalk で。ブロックからは exit できないんで、こねくり回していますが。w case xあいさつ case _ [: exp : array | | result | result _ nil. array pairsDo: [: e : b | (e = exp or: [result isNil and: [e = #else]]) …
某所で Python を使って呈示されている例を移植してみました。でも、Smalltalk だとやっていることや意味は同じでも、雰囲気や使い勝手はがらりと変わってしまいますね。 mySwitch mySwitch _ PySwitch subclass: #MySwitch instanceVariableNames: '' class…
某 Python スレに端を発した switch/case 文の話。ゲンゴァー未満の私は、どっちかというと Googler なのでw、検索で見つけたこちらのCamp Smalltalk の記事をパクって、Squeak システムの Smalltalk に組み込んでみました。 char char _ $b. ^ char switch…
つらつらと ruby-talk などを眺めていてふと目に付いたこれで、 (0..(10.0/0)).member?(4)るっ、Ruby は 0 で割っても例外をあげないのか、ってか、range は無限大を扱えるのか…とちょっと驚いて試してみる。 1/0 #=> error 1.0/0 #=> Infinity 0..(1.0/0) #…
…のメモ。再帰的な型 T を、 T = µt.F[t]と書くとき、 T = µt.{a:int, c:t, b:t→t} T1 = {a:int, c:T, b:T→T, d:bool} T2 = µt.{a:int, c:t, b:T→t, d:bool} T3 = µt.{a:int, c:t, b:t→t, d:bool}で、 T1, T2 は T のサブタイプだが、T3 はそうではない(型 …
マシンパワーが、まだまだ圧倒的に足りない。 いろいろとありそうに思えましたが、結局はこれに行き着きますか(笑)。
個人的には大好きなスクイークですが、世間では知らない人のほうが多いのもまた事実。 フリーソフトだし、もっと広く使われてもいいような気がするのですが、なぜ一般的に広まらないのでしょうか? なにか理由があるのでしょうか? その辺の事情など詳しく知…