«前の日記(2003年08月27日) 最新 次の日記(2003年08月29日)» 編集

Matzにっき


2003年08月28日 [長年日記]

_ チケット

JAOO2003のチケットの手配終了。最終的には向こうが払ってくれるとはいえ、結構な額を立て替えることになる。

もっと重要人物になれば自分で苦労しなくても向こうでチケット手配してくれるようになるんだろうか。 あまり期待できそうにないな。

_ [OOP]アイデンティティFAQ

もうそろそろアイデンティティの話はもういいかなって気持ちになってるんだけど、 乗りかかった船なんで最後にまとめておこう。

アイデンティティってなんですか?
あるものと別のものを区別するなにかです。アドレスだったり、ユニークな番号だったり、 一意に決まる名前だったりします。アイデンティティがあるものが「もの」であり、 存在であり、オブジェクトになります。 まつもとは、アイデンティティがオブジェクト指向に最低限必要なものだと考えています。
アイデンティティがあるとオブジェクトなんですか?
私の主張は「アイデンティティがある存在はオブジェクトとして認識できる」です。 アイデンティティがないものはオブジェクトではありませんが、 アイデンティティがあるものがオブジェクトになるとは限りません。
アイデンティティがないとはどういうことですか?

わたしが「アイデンティティがない」という時には以下のことを意味しています。

  • すべてのデータを一意に区別する手段がない
  • すべてのデータとそのコピーを区別する手段がない

たとえばTclのような言語は、言語機能としてアイデンティティがありません。

アイデンティティがない言語ではオブジェクト指向できないと言う意味ですか?
いいえ、上記のTclでもオブジェクト指向できることが実証されています。 その場合にはユーザが自前でアイデンティティを用意することになります。 オブジェクト指向には何らかのアイデンティティが必要ですが、それを 言語が提供するか、自分で用意するか、は重要ではありません。 ただし、言語が提供した方が楽でしょう。
アイデンティティ以外にもオブジェクト指向に必要なものはあるんじゃないですか? 動的結合とか継承とか情報隠蔽とか。
Selfには継承がありません。CLOSには情報隠蔽がオブジェクトレベルでは存在しません。 動的結合が必要ないケースもたくさんあります。考え方としてオブジェクト指向を考える時、 これらは必須ではないのです。 本当に本質的な最低限はなにかと考える時に登場するのがアイデンティティだと考えます。
アイデンティティがないとは代入でコピーが発生するということですか?
たしかに、すべての代入でコピーが発生するような言語にはアイデンティティは存在しないでしょう。 しかし、実装と概念は切り離して考える必要があります。 今は考え方としてのオブジェクト指向とアイデンティティにについて考察しています。

«前の日記(2003年08月27日) 最新 次の日記(2003年08月29日)» 編集