青山です。

On Mon, 1 Nov 1999 15:14:32 +0900,
matz / netlab.co.jp (Yukihiro Matsumoto) wrote:

> それとFindモジュールはモジュール、ftplibとpstore.rbはライブ
> ラリを指しているつもりのような気がします。

pstore.rb については標準添付ライブラリにそれがありますと書いてあります
し、ftplib もライブラリと書いてあるのでまだましですが、Find モジュール
は機能としてのモジュールとしてだけ書いてあり、それがライブラリにあると
いう事さえ書かれていません。

で、気が付いてみると、require の説明がどこにも無いんですね。索引にもあ
りません。リファレンスマニュアルにひっそりと1行あるだけです。

> 私のつもりとしては、requireされるfeature名だけでライブラリを
> 呼ぶのがあるべき姿だと考えています。区別が必要なときには「ラ
> イブラリ」、「モジュール」をつけると。findライブラリで定義さ
> れている、Findモジュールなわけですね。

この区別は当然として、問題はその feature 名です。.rb, .so は省略可能な
わけですよね。その理由は当然、

> で、Rubyの拡張ライブラリAPIの特長はRubyで書けることがほぼ全
> 部Cでも書けることですから、それを考えるとライブラリがなにで
> 書かれているかは気にしたくない、というのが正直なところです。
> ですから、スクリプトレベルでしか書けないことの多いPerlや
> Pythonによって導入されたルールである

これなのですが、.rb, .so が省略可能という事で、socket, thread, timeout
などと書けるのは便利ですし、上記の気持もわかります。ところが、先の例の
ように、箇条書にする場合には特にそうですし、バイブルでさえ、機能とライ
ブラリの区別が付きにくくなってしまっています。

これは今後のあらゆる文書において、同様の問題が発生する可能性を示してい
ると思われます。いかがでしょうか。

また、socket.so のように記述することは、ちょうど上記のライブラリが何で
出来ているかは気にしたくないという事に反して、ライブラリが何で出来てい
るかを知らなくては文書化できないという問題につながります。

したがって、

> |・拡張ライブラリは同名の *.rb を用意する。
> 
> というのは採用したくありません。気持ち分かってもらえますか?

この気持はとても良くわかるのですが、それならば、例えば拡張ライブラリで
も、require *.rb として呼び出せるようにするとか、やはり何かしらの対策
は必要かと思われます。


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp