いままで黙っていましたが、
Aki さんのおっしゃることに質問があります。
#長いのはご容赦を。
From: h1suzuki@Bridgew.edu (Hideaki Suzuki)
Subject: [b-free 744] Re: 仮身名
Date: Wed, 08 Oct 97 06:28:08 -0500
> ども。Aki です。
> | 「抽象度の高い名前」は理解できませんね。それは実身の本質
> |を表すの? それとも実身を指す一つのキーに過ぎないの?
> | 「Javaマニュアル」の例だと、メソッドを説明する実身の本質
> |を表す名前はフルスペル(「<フルスペル>の説明」の方が正確?)
> |でメソッド名ではないでしょう。メソッド名は実身を指すキーの
> |一つではありますが本質ではないです。
>
> Full spell には、所有関係が含まれますね。それって、リンクで素直に表現しただ
> けで良いんじゃないの? 別に実身名にまでリンクの状態を含ませる必要がある?
> あとは、検索方法を「実身名の構成要素で検索」ではなく「実身名で構成される道で
> 検索」にすれば同じだと思う。
ということは、一旦リンクを作ると、リンクの順序を頼りにして実身を検索す
るケースがあるので、リンクを張り替えると実身を特定できなくなるケースも
あるということですよね?
1B を使っていて便利なのは、リンクを張り替えても他のリンクに影響が出な
いので好きにリンクを張り替えられることだと思っていたのですが。
「実身名で構成される道で検索」する機能を頼りにされると、常に検索出来る
ようにするためには、リンクを張り替えられなくなります。どの実身が「実身
名で構成される道で検索」する機能を利用しているのかなんて覚えたくありま
せん。忘れるためにメモをするのですから。
#リンクが固定されているのがわかっているなら、「実身名で構成される道で
#検索」というのは便利だと私も思います。
そりゃあ、絶対に切り放したくないときはリンクを直接張ります。そのとき名
前に使えるのは、実身名と仮身名。この二つが大きく違うのは、実身名は実身
作成者が決められるけれども仮身名は実身作成者が決められないことです。
「実身名だけでは実身を特定できないくらい実身名を短くする」ということは、
「実身作成者には実身を特定できる名前をつける権利を与えない」ということ
です。
実身同士で自由にリンクを張れる「実身/仮身モデル」というのは、一つの実
身から見れば他の実身は直接リンクを張っているか張っていないかの二つしか
ない、意外に平板な空間です。すると、実身単独で他の実身と区別できる名前
を持たなければなりません。ある実身から他の全ての実身に対してリンクが張
られる可能性があるからです(実装上の制限を無視した思考実験)。そして、
実身を特定するに充分な名前をつけられるのが仮身名だけとすると、実身作成
者は特定するに充分な名前を実身につけることが出来ません。
ディレクトリツリーの場合は、実は実身/仮身モデルより簡単です。ルートディ
レクトリからディレクトリ名を列挙していけばいいのですから。フルパスがファ
イルを一意に定める名前になります。実身/仮身モデルでは、私はネットワー
クをしょっちゅう組み替えるので、実身名だけで実身を一意に定められるよう
にして欲しいんです。少なくともディレクトリツリーのフルパスが全部入るく
らいでなければ駄目です。
#でも、それなら100文字は結構入るんですよね。
#実際にはそんなに長くなくても構わないかも。
> ぼくの云った「抽象度」は、たとえば、method: size() は、Vector のなかでも Ha
> shtable のなかでも、やっぱり size() で、それが文脈の中で意味を持つかどうかは
> 気にするなと。そんなことを気にする代わりに「文脈の通じるところで使え」と。も
> しくは、「文脈の通じるように、追加情報を含ませて使えばよい」とか。そう言った
> ことです。実際、どういう不都合があるでしょうか?
size() という実身名をつけた人とは別の人が実身「size()」を引用する場合。
Hashtable の size() の中にバグを見つけたことを他人に伝えたい場合。
引用した人が充分に説明すればよいのでしょうが、実身を作った人が充分説明
できるくらい長い名前をつければそもそも問題が起きなかったはず。
引用する人が苦労するだけです。
> 検索の時は、さっきも云ったように、「Hashtable が指す size() を探してこい」と
> 云えばいいじゃないですか。それが幾つもあるというのなら、きっと、それらは、そ
> の条件の中では「どれでも良い」もののはずです。size() というのは本質であり、
> キーではありません。それは何処に置かれても同じです。ただ、文脈が意味を持つか
> どうかは、別問題だと思いませんか?
ここでもう一つ異を唱えると、実身名が本質をあらわしているかどうかは保証
できません。特定するのに充分かどうかも保証できません。
「Hashtable の」 size() だ、と注意書きを付けないと実態を表現できない
名前が、本質と呼べるでしょうか。
だから、ある検索条件に適合したものが幾つもあったとしても、それは「どれ
でも良い」とは言い切れません。
なら、実身名を長くしても無駄なのでしょうか。
いいえ、「より少数の」実身が特定できたなら、後の仕事が楽になります。
正しく検索できないのは、検索条件を設定した人の責任かも知れません。
役に立たない実身名を付けた人の責任かも知れません。
でも、短い実身名しか付けられないことが原因ならシステム設計者の責任です。
> 複雑な概念の実身は、複雑な実身仮身ネットワークの中に置けば、それで、話は済む
> んじゃない?
> なにも、名前まで長くする必要はない(名前でその概念全てを説明する必要はない)
> 。
> 本当に、リンクでは説明できない部分(←これが本当の本質)を実身名にすればいい
> と思う。
その、 Aki さんが頼りにしているリンクが、結構変わりうるものなんです。
リンクを変えたいときもあるんです。
> 実身の内容が実身名を定義するというのは、(実身)内から外へのリンクで自分を定義
> しているという事ですね。一方、林さんの云う「長くなる名前」の実身は、外から内
> へのリンクが複雑な場合ではないでしょうか?
ここは良くわかっていないのですが、
リンクの向きは関係ないと思っています。
> | 実身の本質に関わる情報を他の実身にばらまいてどうするの?
>
> 確かに、ばらまいているのは本質かも知れませんが、それは、上記なら Hashtable
> から参照を受けていることで、その本質の一部分が表現されていると考えます。
最後に。
実身/仮身モデルである実身を参照する仮身を全て拾いあげるのは
非常に困難ですが。
#全ての参照を拾いあげないと、
#どこに本質が隠れているかわからないじゃないですか。
-- 三原 克大 (Katsuhiro MIHARA) 東京工業大学理学部情報科学科 mailto:mihara@is.titech.ac.jp http://www.is.titech.ac.jp/%7Emihara/index-j.html