[#6219] Ruby連載 第4話 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

32 messages 1998/02/04
[#6221] Re: Ruby連載 第4話 — Shin-ichiro HARA <sinara@...> 1998/02/04

原です。

[#6224] Re: Ruby連載 第4話 — Yasunari Momoi <conan@...> 1998/02/04

ももちゃん@あるもにこすです.

[#6225] Re: Ruby連載 第4話 — matz@... (Yukihiro Matsumoto) 1998/02/04

まつもと ゆきひろです

[#6249] Re: i++ — 助田 雅紀 <masaki.suketa@...>

助田です。

33 messages 1998/02/04
[#6252] Re: i++ — gotoken@... (GOTO Kentaro) 1998/02/05

ことけんです

[#6255] Re: i++ — matz@... (Yukihiro Matsumoto) 1998/02/05

まつもと ゆきひろです

[#6260] Re: i++ — Yuji Shigehiro <sigehiro@...> 1998/02/05

しげひろです.

[#6314] RE: ruby's design policy (Re: I'd like to subscr ibe this ML) — 助田 雅紀 <masaki.suketa@...>

オブジェクト指向周辺をぶらぶらしている助田です。

11 messages 1998/02/06

[#6333] ruby 流に添削して下さい — nkon@...2.3web.ne.jp

13 messages 1998/02/07
[#6335] Re: ruby 流に添削して下さい — OZAWA Sakuro <crouton@...> 1998/02/07

さくです.

[#6372] ruby 1.1b7 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

24 messages 1998/02/10
[#6402] parsedate (Re: ruby 1.1b7 released) — WATANABE Hirofumi <watanabe@...> 1998/02/13

わたなべです.

[#6405] Re: parsedate (Re: ruby 1.1b7 released) — Tadayoshi Funaba <tadf@...> 1998/02/13

ふなばです。

[#6407] Re: parsedate (Re: ruby 1.1b7 released) — matz@... (Yukihiro Matsumoto) 1998/02/13

まつもと ゆきひろです

[#6373] call for scripts — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

133 messages 1998/02/10
[#6414] Re: call for scripts — Terutuoshi Kaneshiro <k-teru@...06.odn.ne.jp> 1998/02/14

金城です.

[#6428] Re: call for scripts — matz@... (Yukihiro Matsumoto) 1998/02/16

まつもと ゆきひろです

[#6448] Re: call for scripts — Terutuoshi Kaneshiro <k-teru@...06.odn.ne.jp> 1998/02/16

金城です.

[#6452] Re: call for scripts — matz@... (Yukihiro Matsumoto) 1998/02/17

まつもと ゆきひろです

[#6481] Re: call for scripts — Kikutani Makoto <kikutani@...> 1998/02/17

きくたに@ぷ〜たろ〜です。

[#6483] Re: call for scripts — OZAWA Sakuro <crouton@...> 1998/02/17

さくです.

[#6495] Re: call for scripts — WATANABE Hirofumi <watanabe@...> 1998/02/18

わたなべです.

[#6416] Re: call for scripts — shugo@... (Shugo Maeda) 1998/02/14

前田です。

[#6417] rgrep (Re: call for scripts) — shugo@... (Shugo Maeda) 1998/02/15

前田です。

[#6423] Re: rgrep (Re: call for scripts) — matz@... (Yukihiro Matsumoto) 1998/02/16

まつもと ゆきひろです

[#6612] Re: call for scripts — Tadayoshi Funaba <tadf@...> 1998/02/21

ふなばです。

[#6582] File::Separator on cygwin — OZAWA Sakuro <ozawa@...>

小澤さくです。

19 messages 1998/02/20
[#6583] Re: File::Separator on cygwin — WATANABE Hirofumi <watanabe@...> 1998/02/20

わたなべです.

[#6586] Re: File::Separator on cygwin — OZAWA Sakuro <ozawa@...> 1998/02/20

小澤さくです。

[#6591] ruby 1.1b8 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

32 messages 1998/02/20
[#6620] rbc.rb and binding — shugo@... (Shugo Maeda) 1998/02/22

前田です。

[#6629] Re: rbc.rb and binding — keiju@... (石塚圭樹 ) 1998/02/23

けいじゅ@日本ラショナルソフトウェアです.

[#6643] Re: rbc.rb and binding — shugo@... (Shugo Maeda) 1998/02/23

前田です。

[#6649] Re: rbc.rb and binding — keiju@... (石塚圭樹 ) 1998/02/23

けいじゅ@日本ラショナルソフトウェアです.

[#6650] Re: rbc.rb and binding — matz@... (Yukihiro Matsumoto) 1998/02/23

まつもと ゆきひろです

[#6667] JRI 0.5 worked (was Re: rbc.rb and binding) — OZAWA Sakuro <crouton@...> 1998/02/23

さくです.

[#6687] Re: JRI 0.5 worked (was Re: rbc.rb and binding) — shugo@... (Shugo Maeda) 1998/02/24

前田です。

[#6712] JRI and JDBC — OZAWA Sakuro <ozawa@...> 1998/02/24

小澤さくです。

[#6635] hello — WATANABE Tetsuya <tetsu@...>

渡辺哲也と申します。

15 messages 1998/02/23

[#6706] Re: Counter class — toyofuku@...

豊福@パパイヤです。

12 messages 1998/02/24

[#6735] Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda)

前田です。

27 messages 1998/02/24
[#6746] Re: Mutex/ConditionVariable/Queue — keiju@... (石塚圭樹 ) 1998/02/25

けいじゅ@日本ラショナルソフトウェアです.

[#6747] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/25

前田です。

[#6752] Re: Mutex/ConditionVariable/Queue — senda@... 1998/02/25

From: shugo@po.aianet.ne.jp (Shugo Maeda)

[#6754] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/25

前田です。

[#6756] Re: Mutex/ConditionVariable/Queue — senda@... 1998/02/25

From: shugo@po.aianet.ne.jp (Shugo Maeda)

[#6786] Re: Mutex/ConditionVariable/Queue — senda@...

From: shugo@po.aianet.ne.jp (Shugo Maeda)

33 messages 1998/02/26
[#6791] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/26

前田です。

[#6794] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/26

前田です。

[#6796] Re: Mutex/ConditionVariable/Queue — keiju@... (石塚圭樹 ) 1998/02/26

けいじゅ@日本ラショナルソフトウェアです.

[ruby-list:6347] Re: ruby's design policy (Re: I'd like to su bscr ibe this ML)

From: matz@... (Yukihiro Matsumoto)
Date: 1998-02-09 03:23:03 UTC
List: ruby-list #6347
まつもと ゆきひろです

In message "[ruby-list:6341] Re: ruby's design policy (Re: I'd like to su bscr ibe this ML)"
    on 98/02/09, 助田 雅紀 <masaki.suketa@tonen.co.jp> writes:
|
|助田@ちょっと反応が遅れましたです。

|Mix-in は、1つの具象クラスに複数の抽象クラス(=Module)を多重継承
|する機能と考えれば、C++ で、(複数の)抽象クラスと1つ以下の具象
|クラスを多重継承させる場合と、同じじゃないのという気がして「ほと
|んど変らん」という風に思っている訳です。

うーん,Mix-inは「多重継承で出来ないことをできるようにするツー
ル」ではなく,「多重継承で出来ることのサブセット」である,と
いうことについては認識していただけているでしょうか.そういう
意味で,「Mix-inは1つの具象クラスに複数の抽象クラス(=Module)
を多重継承する機能」であり,「C++ で、(複数の)抽象クラスと
1つ以下の具象クラスを多重継承させる場合と同じ」です.

|多重継承では無く、Mix-in を採用した積極的なメリットってあるんだ
|ろうかという疑問が、根底にあるんです。
|決して、Mix-inが駄目で、多重継承が良いと言っている訳ではないです。
|多重継承を採用しないで、Mix-in という方法を採用した理由が知りたい
|のです。

まず,繰り返しになりますが,Mix-inは多重継承でできないことを
実現するものはなく,多重継承のサブセットです.で,なぜサブセッ
トにしたのか,という話ですが,まず多重継承の問題からお話しま
しょう.

多重継承にはいくつか問題があり,大きく分類すると

    (1) モデルが複雑になる(継承関係が属性の付加やis-a関係な
        ど様々な目的で使われてしまう)

    (2) 独立に開発されたメソッド,属性の間で名称重複が起きる

というものがあります.しかし,だからといって多重継承をあきら
めると継承階層を越えた実装の共有が出来なくなります.これはつ
らい.

で,多重継承の経験が豊富なlisp界では昔からMix-inという手法が
使われていました.どのようなものであるかという説明は繰り返し
ませんが,これはメインの継承以外の継承関係は「性質の付加」と
いう使い方しかしない,という意味になります.

ちなみに,rubyでは2の方に対するアプローチはあっさりあきらめ
てます.

さて,rubyでMix-inを採用した理由は

  * 多重継承があれば,それを使ってしまうから

    複数のクラスに対してis-a関係を持つ設計は間違ってます(注:
    まつもとの主観です).しかし,多重継承を持つ言語が増えて
    来た現在,そのようなことを深く考えないで多重継承を使う人
    はますます増えるでしょう.rubyではいっそのことそのような
    設計をやろうと思ってもできないようにしてしまうことで,苦
    痛を軽減しようと考えました.

  * 多重継承の(1)の問題を解決させる方法としてMix-in以外の方
    法が知られていないから

    rubyは採用していないものの静的型言語では2に対する解決策
    はかなり知られてきています.しかし,1の問題に対する言語
    からのサポートはほとんどありません.rubyはそれらの言語と
    は違ったアプローチをとることを望みました.

  * Mix-in手法の知名度が低いから

    今後rubyを使う人が沢山になれば,「自然にMix-inを使える人」
    も増えて来ると思います.それはオブジェクト指向プログラミ
    ング全体に対する貢献になると思います.

です.

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next