ファイルファイル私は、いわゆるファイル(UNIXとかの)というのは、オブジェクト指向プログラミングにそぐわないのではないか、と思った事がありました。いうより、永続化という概念を必要とする事自体がオブジェクト指向プログラミングと衝突するような気がしたのです。--CUE永続化は痛いですね。永続するためにオブジェクトの「コピー」をとった瞬間に、オブジェクトの最大(?)の特色である「同一性」を脅かすのは事実。実際、永続オブジェクトとかオブジェクトデータベースとかってのは、そういう問題を常に抱えている。盛り上がっていましたね。--sumimhttp://www.sra.co.jp/smalltalk/SML/archives/2003-April/006164.htmlhttp://www.sra.co.jp/smalltalk/SML/archives/2003-April/thread.html#6164ファイルをオブジェクトとして表す時、ストリームをファイルから継承するというのは、実は設計としてまずいのではないか、という事を最近思い始めました。Oberonなどがしているように、ライダーという概念を考える方がエレガントで自然なのではないかという気がします。--CUE>ストリームをファイルから継承する(中略)設計としてまずいええ。JavaでもFileクラスと(File)Streamクラスは別物です。あんな感じが良いかな。Fileクラスは、ファイル名とかのメタ情報の保持者という感じ。ん?その話じゃない?#というか、継承ってどの継承っすか?ライダーはたしか、Streamに対する一種のイテレータでしたよね。Streamがテープなら、ライダーやイテレータはテープのヘッドって感じか。#そしてFileクラスはカセットケース(笑)Streamという言葉をどう捉えるか、じゃないかな。「流すもの」なのか「流されるもの」なのか、という。#英語的にはどっちがOKだっけ?後者だと捉えると、Streamと呼ばれるものは実はライダーであることになる。前者だと捉えると、Streamは雨樋(笑)であることになる。>ライダーはたしか、Streamに対する一種のイテレータでしたよね。ライダーがイテレーターか、というのは議論の余地があると思いますが、例えば、Oberonでは、Riderだけでは読み書きすらできません。読み書きするためにはReaderやWriterを必要とします。面白いのは、Reader/Writerは、FileではなくRiderにリンクさせて使用します。一方で、RiderはFileとリンクしているわけです。←とか書いたけど、違ったかも(ぉぃ)←違ってました:Texts.Reader/Texts.Writerと勘違いしてました。Files.Fileだけでは読み書きできず(できないわけではないけど、普通はしない)、Files.Riderを別に用意して置かなければならない、というだけ。RiderとFileは別にリンクしてるわけではなかった。ちなみに、FilesとかTextsとか言うのは、Oberonのモジュール名です。Object)話と、Objectをファイルの中に表す(つまり永続化)話って、別問題ですよね。-戯というわけで、勝手に編集しました。ページから参照されています。