From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2002-08-05T20:19:26+09:00 Subject: [ruby-dev:17927] Re: import-module (Re: Re: scope-in-state) けいじゅ@日本ラショナルソフトウェアです. 話がややこしくなりそうなので, devに引っ越しします. In [ruby-list:35711] the message: "[ruby-list:35711] Re: import-module (Re: Re: scope-in-state)", on Aug/05 19:30(JST) Shin-ichiro HARA writes: >原です。 >>私の感覚からすると, 原さんのimport-module, class-in-stateと >>scope-in-stateの共通部分というか最大公約数という感じですかね. >> >>私の場合, class-in-stateがまずあったので, そのサブセットっぽい >>import-module相当のもので求めるものを実現するのはあまり意味を感じなかっ >>たです. ですので, 複数のクラスの振る舞いをまとめて変えられる >>scope-in-stateというものになりました. > >import-module は class-in-state のサブセットっぽくないと思うけど、、、 >変だな。 言葉足らずでした. import-moduleからのclass-in-stateの特徴はオブジェクト単位に振る舞いを 変えることができることで, まともなオブジェクト指向のメカニズムと言えま す. import-moduleからscope-in-stateの特徴は一度に多くのモジュールの振 る舞いを変えることができることって感じでしょうか. 私的には import-moduleから各々の目的に応じて分化したって考えられるわけです. >で、class-in-state の実装を見てみると、なるほど相似な所があり >ますね。ついでに今回初めて Behaviors も見てみたけど、これは我々がして >いる事の素朴バージョンでした。 ですね. >しかし import-module は、複数のオブジェクトの挙動を一気に変えるのが目 >的なので、近いのは scope-in-state です。ターゲットとしているのは、 >Matrix#determinant とか、mean とか、ずっと問題になっている箇所を解決 >しようとしています。(MPolynomial で、単項式順序の変更を、スピードの >低下無しに行いたいというのも。) 目的はわかります. ただ, プログラムはオブジェクト同士のコラボレーション で処理が進むものなので, 1つだけのクラスの振る舞いを変えるimport-module は不十分ではという気がしています. >いや、標準採用の話は見えてませんでした。import-module は、マルチスレッド >対応に若干不安があるので、まだ標準採用に立候補できません。scope-in-state >は立派なものだと思います。 > >まあ、実装の事は分けて考えないといけないですけど。 その通りで, 仕様と実装は分けて考えた方が良いと思います. In [ruby-list:35710] the message: "[ruby-list:35710] Re: scope-in-state [Re: new mathn [Re: Rational#to_int ~ String#center]]", on Aug/05 19:02(JST) Shin-ichiro HARA writes: >原です。 >なる程。私は自前で継承列を構築する scope-in-state の強引さ:-)に >感動しました。こんなことができるんだなあと。 (^^;;; これはこの実装しか思いつかなかったからです. ただ, まだ, 概念設 計段階なので実装にはまだこだわっていませんでした. >で、ちょっと刺激を受けて、エイリアスしまくるのを躊躇しないとした >らどうか、と思って作ったのが import-module です。 klass.import_module(mod)した時点で, aliasするのですものね. これには気 が付きませんでした(^^;;; scope-in-stateの方ももうちょっと実装を考えてみます. __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---