Bouchardが、「Rubyに本物の多重継承を」と提案している([ruby-core:1378])。基本的な主張はRubyのMix-inは実質的には多重継承であるだからclassとmoduleの差を無くしてしまえば制約が減るより理解しやすいし、説明も簡単になるというようなことなのだが、私の答えは「気持ちは分かるが賛成できない」である。クラスの階層構造のデザインがきれいになることを支援できると考えているからだ。考えると、「なぜその方がきれいになるか」とうことを上手に説明できない。問われると答えに窮したりして。将来の考察の材料にはなったと思う。Mix-inは本当に多重継承より優れているのか今後も考察を続けたい。私が書いていることについての疑問点をリストしていらっしゃる。分からないのは、私が書きなぐった日記を時間をかけて考察しているからではないかと(苦笑)。これらの記事を読むと「アイデンティティがあること」と「リファレンスあるいはポインタ値があること」と「代入によってコピーが発生しないこと」がほぼ同じ事とされているように思う。本当にこれらは同じことなのだろうか。これらがオブジェクト指向の必要条件とされている。私が同じでない例を思いつかなかっただけで。RubyにおけるFixnumの実装などを考えると、アイデンティティがないオブジェクト指向は不可能ではないと思います。実用的なオブジェクト指向プログラミングは不可能ではないかというのが私の意図です。その辺が、以前「アイデンティティ」で「副作用の全くないオブジェクト指向プログラミングというのは、なかなか考えにくい」と書いた真意なのです。第二の疑問はこの条件を満たさなくてもオブジェクト指向と呼べる場合があるのではないかということ。言う形の呼び出しを使って全てを済ませることが出来る。可変長のものを扱わなくて良いのならクラスメソッドの内部でもポインタを一切使わなくて良い。この場合はアイデンティティはない。代入によってコピーが発生する。これでも充分オブジェクト指向ではないのか。それともなにか見落としているだろうか。objectというのはスタック上のオブジェクトであるということなのかな。「ポインタ値もない」とはいえないんじゃないかと。それだけで実用的なオブジェクト指向プログラミングができるとは私には思えません。「不可能」ではなく「実用的ではない」ですね。動的結合も副作用さえも使えないわけですよね。「アイデンティティがないものがある」という意味で使ってます?私は「アイデンティティがないものしかない」という意味で使ってます。オブジェクト指向するのになんの問題もないので。