なんか以前にもどこかで書いたような気がするけど、私がなんの修飾もなく 「オブジェクト指向」と表現する時には、ほとんど「オブジェクト指向という考え方」を意味するつもりでいる。
そして、その最低限の条件は「アイデンティティがある」ことである。 アイデンティティとはある「オブジェクト」と別の「オブジェクト」が、 同じかそうでないか判定できる、という意味だ。
たったそれだけのことならば別にオブジェクト指向言語を使う必要はない。 Cのstdioだって、UNIXのシステムコールだってオブジェクト指向だ。 どんな言語、どんな環境でプログラムするかではなく、 プログラムする対象をどう捉えるかという考え方が重要なのだ。
でも、これだけではあんまり嬉しくない。
そこで、あえてもう一つの条件を付け加えるなら、 「あるアイデンティティがある存在(=オブジェクト)は自分に対して適応可能な処理を知っている」こと、 つまり「動的結合」とか「ポリモルフィズム」と呼ばれる概念を挙げたい。
この二つがあれば「オブジェクト指向(という考え方)」は十分である。
よく、オブジェクト指向の三要素として
のみっつが挙げられるが、「継承」と「カプセル化」はあくまでも「あると便利なもの」であって、 必須ではない。そのことは
が十分オブジェクト指向言語であること、 つまりオブジェクト指向という考え方に従ったプログラミングを十分支援していることからも分かる。
でもって、そういう「ファンダメンタルなオブジェクト指向」に付け加えて、
いろいろなレベルがあって、人によってどのレベルで「オブジェクト指向」 という単語を使っているかが異なっているので、 過去長らく発生した不毛な論争の原因になっていたのだと思う。
それよりなにより、誰もが自分の使っているオブジェクト指向言語から学んだ「オブジェクト指向」に こだわりすぎていて、一般化・抽象化が行われなかったことが不幸だと思う。
いや、私もけっして人のことは言えないのだが、私自身は
という経緯があるので、比較的オブジェクト指向という考え方を一般化しやすい立場にあるのではないかと思う。
役に立たないメモ。
全体にUpdateでない感じ。「Update」と「紹介」は分離したほうがよかったか。
*1 新しいマシンを買え、ということかも
仕事でLL。なかなか悩ましく、上司の理解がないため、LLが使えないという悲しい話をたくさん聞く。
ちゅーか、私だったら「Rubyで書いた検証プログラムを顧客の無理解から泣く泣く書き換えた」なんて経験をしたら、 速攻転職を検討すると思う。みなさん、忍耐強いよなあ。
結局は「秘密兵器」としてサクセスストーリーを積み重ねるしかない、というのが個人的な結論。
追記。
あ、会場でも違和感があったんだけど、私の発言の「秘密兵器」は「秘密」には重点が置いてなくて、 実際には「すごい兵器」というニュアンスだったのでした。つまり、『黒い秘密兵器』における (誰もが知ってる)「秘密兵器」のような。って、若い人はそんなの知らないぞ。
「ls-lRシェル」と「nQueen対戦」。
前者はデザインパターンを強調しているのがちょっと苦しい感じ。 というか、C++中心のGoFとLLはかならずしも相性は良くないよね。 GoFはSmalltalkパターンも解説しているので、こっちはちょっと近いかも。 Rubyは前田くんが健闘。
後者は、NxMの盤面に順にチェスのクイーンを置いていき、
のいずれかに陥ったプレイヤーが負け、というルールで、Gauche, Python, Ruby, Squeakのプログラムが対戦する。 Rubyからの刺客はかずひこくん。
第1回戦: 時間切れでPythonの負け
第2回戦: 時間切れでGaucheの負け
第3回戦: 失敗でPythonの負け
第4回戦: 失敗でPHPの負け(PHPはランダムに置くサンプル。ここで脱落)
第5回戦: 時間切れでGaucheの負け
第6回戦: 時間切れでGaucheの負け
ギャラリーからの声によりここから勝ち残り戦
第7回戦: 失敗でGauche脱落
第8回戦: 失敗でPython脱落
第9回戦: サーバが落ちて再試合
第10回戦: 時間切れでRuby脱落(クライアントがエラー)
優勝はSqueak。
GaucheはXML-RPCライブラリから実装したぶん不利だったか。 PythonはLinuxザウルスで動かしていたので、もしかしたらパワー不足だったかも。 Rubyは...なんでエラーが出たんでしょうねえ。
Squeakはあぶなげない、というよりもGaucheとPythonが早々に脱落し、 Rubyとの一騎討ちではRubyが謎のエラーで自滅したので、 あんまり実力発揮というわけではなさそう。
ゲームは盛り上がる(勝ち抜き戦にしてからは特に)が、 ソースコードを鑑賞する時間が取れなかったのは残念だ。
で、終了後(いくつかサインなんかしたりした後)、そうそうに移動。 ほんとは懇親会とか出たかったんだけど、飛行機がなくなるので。
少々あせりつつ移動した結果、ちゃんた間に合った。が、会場にファイルフォルダをふたつ置いてきてしまった。 論文やら発表資料やらが入っているだけで、そんなに貴重なものではないはずだが、 なくなったとなると少々惜しい。だれか見つけて保護してくれないかなあ。
なんとかたどりつく。やたら疲れていると思ったら、ゆうべテレビでやってた映画『スコア』を見たからだ。 一度見た映画なのに、つい、最後まで見てしまったなあ。
朝、4時前に末娘に起こされる。「あそぼーっ」
おいおい。勘弁してよ。
結局、寝かしつけたのは5時半頃であった。 今日は地区のラジオ体操の当番で、 6時すぎにはでかけないといけない。
結局、あんまり寝れなかったなあ。 こんなことは珍しいが、たまにあるとしんどい。
先月は英語学習についてだったので、 今月は国語についてとか、 文型と理系の対比について考えようかとも思ったのだが、 生産性と「ゾーン」の話にした。国語とかについてはまた今度。
しかし、ゾーンの話とかはJoel on Softwareに似てしまったかなあ。
センセーショナルなタイトルであるが、内容は正直、薄い。 子供じゃないんだから無制限な自由は存在しえないことくらい理解してると思いたかった。
できれば「自由」について語る前に、 「ソフトウェアの自由」についてもうちょっと押さえて欲しいような。
「Ruby Rest of us conference」なんだそうだ。 いまいち実態が見えないんだけど、RubyConfに参加できない人を中心に デンバーで開催されるより緩やかなカンファレンス、なのかな?
FooCampに対抗したBarCampとかをイメージすればよいのかなあ。
煽ったエントリなんで普通なら取りあげないんだけど、 どういうワケか私が登場してたので(だからエゴサーチで見つかった)。
まつもと氏と結城氏がなぜあそこまで闘えるのか。それは彼らが信仰を持ち、妻と子があるからだ。いってみれば無限エリクサーを持っているようなものだ。
あんまり「闘ってる」自覚はないんだけど...。
でも、あんまり人生をプログラミングに「最適化」しちゃってたら ずっと前に生活破綻してたかも、という自覚はある。 そういう意味では信仰と妻子は「人生の碇」であったかもしれない。
になるかどうか自信は無いのだが、 1.9でイテレータ系メソッドにブロックを渡さない時に返される Enumerable::Enumeratorクラスに、 外部イテレータとして使うことができるようにnextメソッドを追加した。
実装には最近YARVに追加されたFiberを利用した。 っていうか、Fiberって初めて使ったよ。 使いやすいような、使いにくいような。慣れてないせいかな。
追加したメソッドは以下の通り
また、Enumerable#zipメソッドは、以前は引数として渡されたEnumerableを to_aで配列に変換していたが、Enumeratorを外部イテレータとして使うことにした。 これで、無限列もzipの対象にできる。
あと、zipの挙動だが、今まではレシーバの要素数だけ繰返していたが、 今後は正式にレシーバと引数でもっとも少ない要素数だけ繰り返すことにした(今までも1.9ではArray#zipがそうなってた)。
これでgeneratorライブラリを使わなくても簡単に外部イテレータが使えて、 PythonやXtalに一歩近づいた。
開成高校の吉田投手は吉田くんの弟だったんだ(そんなわきゃない)。
それはともかく、誰にでも理解できる表現ができる人には あこがれちゃうなあ。いや、蛙男については必ずしも「誰にでも」とは 言えないかもしれないけど、 少なくともRubyよりは広い範囲に分かってもらえそう。
というわけで、実は蛙男商会も島根県の重要な地域資源(コンテンツ産業)と 見なされているらしいぞ。現在、蛙男さんはほとんど東京に居るみたいだけど。
データフォーマットに特化しているという点ではYAML、JSONと同じ方向性のように見える。 CSSの影響が強いので、そっち方面に慣れている人にはわかりやすいかもしれない。
@ITのレポートが面白かった。
採用面接で「どんだけ技術が好きか」という点を集中的に確認するという仙石さん、という話。
技術が好きならば、プログラミング技術は後でいくらでも延ばせるし、 お互いに幸福な関係が築けるだろう、と。 まあ、確かにうちで生き残ってる連中も、 技術好きで日常生活をコンピュータにたとえて下らない話をするのが好きな連中が 多いものな。
今後の採用の参考にしよう。
Gemstoneといえば昔一世を風靡したOODBMS。 これがJRubyやRubiniusから使えるようになる、という話。 私はその頃ObjectStoreを使ってたけど。
待て。JavaとのコネクションでなんでもできるJRubyは分かるが Rubiniusが出てて、なんで本家Rubyが対象にならないのか。不思議。
動的型を好む人(Dynamic Typer)と静的型を好む人(Static Typer)は プログラミングの別の側面を見ているのだろう、という話。
If I understand correctly, people who prefer static type systems tend to
think in terms of structural invariants of their programs, while people who prefer dynamic type systems tend to think in terms of their programs' behavior. I am convinced this is a personal preference, nothing more, nothing less. I guess that static typers have equal problems developing in dynamically typed languages as dynamic typers have developing in statically typed languages. I don't see a problem here: If the requirements are such that a focus on static correctness is important, it's probably better to employ a static typer, whereas if the requirements are such that dynamic flexibility is more important, the job should better be done by a dynamic typer. There is nothing wrong with specialization, we don't need a grand unified theory of program development.
そう言われてみればそんな気もする。
「ぬりかべ」のあの姿と言うのは伝統的なものだと思っていたのだが、 実は水木さんの創造だったのね。実際はこんな獅子のような姿であったとは。
で、この「L・トム・ペリー コレクション」のL・トム・ペリーってのは、 ペリー長老のことだね、きっと。戦後、進駐軍として日本にいたって聞いてたけど、 ここまで日本通だったとは。
意外。
山口を夜の11時すぎにでて、松江に夜中の3時頃に着いた。
涼しいし、道は空いてるし、気分よく運転できた。
しかし、出雲市内ではことごとく信号に引っかかった。 あの街の信号のタイミングはおかしい。 せっかくのバイパスが全然有効に活用できない。 交通量もないのに。
それなりの応募が。 「ぜったいほしいです」とかいうメールもあったが、 実際の選択は私情をはさまず、乱数で決定します。
が、あまり競争率は高くないので、結構当たるかも(むやみな期待を増す奴)。
〆切を明示していませんでしたが、明日(8日)正午まで受け付けます。
まあ、今回外れても次回以降もあるはずだから。
補足
「本が当たったら勉強します」というメッセージを付けてくれた人が数名いたが、 この本はRuby 1.4が対象でかなり内容が古いので、勉強するならもっと新しい本が良いと思う。 純粋にコレクションとしてお楽しみください。
あと、本が当たった人は、希望によりサインも入れます。 が、絶版だからといって転売するのは勘弁してください。
妻や子供たちはOSS貢献者賞でいただいたPrius Noteを活用しているのだが、 最近あちこちおかしくなってきている。主にハード的に。
先月には画面の一部に縦に色が薄い部分が発生した。 よくみると1ドットおきに常時点灯しているようだ。 外部ディスプレイには現れないことから考えても ソフト的な問題ではなさそう。
で、今日になって内蔵のキーボードとタッチパッドが効かなくなった。 外付けのUSBマウスやキーボードは使える。 デバイスマネージャで見ると、内蔵デバイスが見えていないようだ。
大変困っているのだが、Windowsには慣れていないもので、 どう調べたらよいのかわからない。Linuxとかなら最終的にはソースコード読んででも確認するんだが。 Windowsはわからん。
もうそろそろいただいてから3年になるので、 もう買い替えろということなのかしら。特に性能上の不満はないんだけどなあ。
追記
キーボードとマウスは直った。
いろいろやったので、どれが効いたのかはわからない。 可能性があるのは
のいずれかだろうか。理由がわからないのが気持ち悪い。
Windows Updateの副作用としてIEがIE7になった。 UIが変わって妻はとまどうことだろう。うーむ。