渋谷のアジアンキッチンで夜8時から開催されました。 約30人のRubyユーザに取り囲まれてぼこぼこにされました。えーん(嘘)。
いや、それはそれとして、 昨日の夕食はタイ料理、今日の昼食はカレー(ナン付き)、 夕食はアジアンキッチンとアジアンな食事になったものです。 「アジア人だからいいのだ」といったのは、なかださんだったっけ。
手元の広辞苑によれば
アイデンティティ
人格における同一性。ある人の一貫性が成り立ち、 それが時間的・空間的に他者や共同体にも認められていること。 自己同一性。同一性。主体性。
なのだそうだ。たとえば、私の同姓同名の「まつもとゆきひろ」という人がいるとしても (本当にいる)、その人と私は違う人間であり、区別もできる。 これは人間にはアイデンティティがあるからだ。
では、アイデンティティがないとはどういうことか。 ある二つの「値」があって、それがまったく同一のものか、 それともたまたま値が共通なのか知る方法がない時、アイデンティティが存在しない。
たとえば、PerlやBASICの文字列にはアイデンティティがない。 文字列を変数に代入する時、内部的にコピーが起きるかもしれないし、 そうでないかもしれない。あるいは代入が発生した時点では(内部的には)同一でも、 後で知らないうちにコピーに変わってしまうかもしれない。
アイデンティティがないということは、 「値」つまり「状態」にしか興味がないということだ。状態は(通常は)オブジェクトではない。 オブジェクトに関心がないということは、それはすなわちオブジェクト指向ではない。 よって、オブジェクト指向の本質としてアイデンティティが必要である、ということになる。
上記の理屈はとりあえず置いておくとして、アイデンティティは本当に必要かという点について、考えてみよう。実は以前のPHPの話のとき、 harukiさんの「リファレンスが無くてもオブジェクト指向できるのでは?」というツッコミに対して書こうと思ってた内容だ。
私の理解が正しければ、harukiさんの論理は「PHP4では代入によってコピーが発生する」が、 PHPにはオブジェクト指向機能がある、よってアイデンティティがなくてもオブジェクト指向ができる、 というものだったと思う。
しかし、PHPのオブジェクト指向機能はリファレンスというアイデンティティを利用しているので、 この論理は成立しないと思う。もしPHPにリファレンスがなければ オブジェクト指向プログラミングは不可能だろう。
私のもっともよく知っているアイデンティティのない言語はPerl4である。 バージョン4より前のPerlの「値」にはアイデンティティがない。 スカラー(数と文字列)も配列もハッシュもその内容でしか判定することはできない。 この言語でオブジェクト指向を行うことはほぼ不可能だ。 唯一アイデンティティを要求しそうなファイルハンドルは「グロブ」という シンボルテーブルのエントリをアイデンティティとして導入しなければ実現できなかった。
もうひとつのアイデンティティのない言語の例としてはTclがある。Tclには文字列というデータ型しかなく、 この文字列にはアイデンティティはない。 しかし、「オブジェクトパス」(.frame.buttonのようなの)や、番号のようなID(まさにアイデンティティの略だ)を 導入してオブジェクトを表現している
やはり、オブジェクト指向プログラミングにはアイデンティティが必要であると考えられるのではないだろうか。
とはいえ、つらつらと考えるに、 リファレンスのまったくない言語でオブジェクト指向プログラミングができる可能性はゼロではないかもしれない。
というのは、オブジェクトを更新するような副作用がまったくなければ、 アイデンティティはさほど重要にならないからだ。 Rubyの実装においてFixnumは厳密にはオブジェクトではなく単なる「値」なのに、 オブジェクトとして振る舞うことができるのもその例だ。
しかし、副作用の全くないオブジェクト指向プログラミングというのは、 なかなか考えにくい。はたして実用的に可能なのだろうか。 もし可能なら関数型言語に完全に整合したオブジェクト指向機能が実現できそうだが。 O'Camlには副作用があるしなあ。
LL Weekendの二日目。出席したかったなあ。
月に一度の会議。今月は担当部分の報告は割り当てがなかったので楽だ。 もっともそれとは別にあちこち電話をかける必要があったのだが。
しかし、東京二泊に引き続いての岡山訪問は貧弱な肉体に負担だ。 家族にも淋しい思いをさせたらしい。
やっと本気で取り掛かる。帰りの機内でいろいろ考えたのだが、どうもまとまらない。 先月分の一番最後に「次回は続き」と書いたので、 「言語重要」の続きを書くべきなような気もする。
確かに先月原稿を書いていたタイミングではいろいろ書き残したような気がしていたのだが、 1ヶ月も経っちゃうとなんかテンション落ちてるんだよなあ。
さんざん悩んだ挙げ句、やっぱり「言語重要」の続きにした。 今度は「言語を作る」って話だ。でも、今月は読み返してみるとあまり面白くない。 残念だ。
コピーワンスが取り消しになるかも、という話題。
気になるのはEPNで録画したものがLinuxで見れるのか、という点。 どうも見れないような気がする。
別にHDクオリティじゃなくてもいいんだけどな。
平和がほしい、と妻は言った。
楽天のミーティングのため上京。
午後イチから日経コンピュータの取材。 編集長の人からいろいろと質問を受けては 答えるというスタイル。未来の話が多くて、 例によってテケトーな答えをしてしまったんだが、 きっと編集部の人がきれいにまとめてくれるに違いない。
編集者バンザイ。
写真も撮られた。カメラマンの人には「実物よりも良く写してくださいね」とお願いしたら、 快くOKしてくださった。きっと雑誌掲載時にはめちゃめちゃ修正が入っているに違いない。(笑
NDAにより中身は詳しく話せないが、 スケーラビリティをテーマに、いろいろと。 現時点ではサーベイ段階で、モノ作りにはまだかかりそうだ。 ざっくりとしたスケジュールでは9月頃には手が動かせるとよいなと思っているのだが。
その後、PFIの人たちとミーティング。
しかし、アルゴリズムネタでこんなに盛り上がるとは思わなかった。 世間的には「技術の楽天」のイメージはなくとも、 「技術好きに事欠かない楽天」というのは事実だと思う。
懇親会でも盛り上がりっぱなし。終電がなくなるまで、 アツく語っていた。
ホテルまで徒歩。近いところにしといてよかった。
ミラクルの吉岡さんによるLL魂レポート。
学校でコンパイラの作り方とかは習うけど、オレ様言語を作ってしまえというような危険思想をうえつけられるということはまあない。オトナの事情というやつで、研究職に進む人には、言語では論文とおらないよ(これが殺し文句)、企業に行く人には、言語では食えないよ(これも殺し文句)。大抵はそれであきらめるのが良い子の姿である。
それにもかかわらづ、わらわらとオレ様言語一派が勃興しているのは、やはりRubyのまつもとさんの影響に違いない。諸悪の根源はまつもとである。
えーと、諸悪の根源たるまつもとです。悪の大魔王か、私は。
とはいえ、私の影響は微々たるものであると想像する。
まず、第一に日本におけるオレ様言語率が高いかというと実はそんなことはない。 まあLL魂でパネルができる程度にはいるので、全然いないというわけではないだろうけど、 ヨーロッパやアメリカでの「オレ様言語」ぶりを見るにつけ、 むしろ世界第二の市場であるはずの日本はまだまだだと感じてしまう。
一方、日本以外のアジア諸国発のオレ様言語は ほとんど知られていない(きっとあると思うけど)ことを考えると 日本は特殊なのかもしれないなあ。
でもきっと、中国やインドの言語屋は英語圏に出ていっちゃうような気がする。 XRubyの人たちとか中国人だし。
こういう仕事の仕方も面白いなあ。
先入観無く、いろいろなやり方を学んでおこう。 実践できるかどうかはまだわからないけれど。
オリエンテーション後の講演を依頼されている。 が、時間を間違えていて、遅刻してしまった。ダメじゃん。
とはいえ、いちおうプロ(?)なので最後はきれいにまとめる。
合宿の参加者は17名とこじんまりとしているが、 皆なかなか頼もしげな表情をしていた。
お楽しみの読者プレゼント当選発表です。 応募総数はTシャツが28通、書籍が54通でした。両方とも倍率10倍以上でしたね。
以上です。
きちんと確認していませんが、ハンドルが重複していてぬか喜びというケースはなかったと思います。 当選者の方々には後ほどこちらから連絡します。 発送はさらにその後になるので、今月中にはなんとか、という感じでしょうか。 あまり期待しすぎずにお待ちください。
「熱い思い」メッセージは楽しませていただきました。 知人からも応募があり、「ほしい」という圧力をいただきましたが(笑、 が、今回は純粋に乱数で決定しました。
よく考えるとArray#choiceはひとつしか選べないので、 Array#shuffleを使いました。やっぱ、choiceよりはsample(n)の方が良いような気がしてきた。
なお、「オブジェクト指向スクリプト言語Ruby」や他の書籍など かなり在庫があるので、近日中に次回プレゼントができると思います。