アカウント名:
パスワード:
OOP in Rust(日本語資料です)http://www.slideshare.net/KENZ_gelsoft/oop-in-rust [slideshare.net]
クラス継承はないけど、traitのmixinがあり、traitにデフォルト実装を定義できるので、インターフェイスを前面に出しつつ、実質的な継承も可能っぽいですね。RubyのEnumerableモジュールみたいなものが自然に実装できます。なんか最近、golang設計者の主張を初めとした、雑な感じのOOP否定論を耳にすることが多くてモヤモヤしていたのですが、RustではちゃんとしたOOPができそうで安心しました。golangの何がしたいのかよくわからない型システムに比べれば、ずっとよくデザインされていると感じます。
引用されているウィキペディアの
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%8... [wikipedia.org]> これらの機能のうち、オブジェクト指向の考え方で不可欠なのは「カプセル化」の機能だけである。
これからして間違っているわけだが
ふつう最も重要とされるのは動的バインディングだよアラン・ケイもそう言っている
カプセル化だけじゃデータ抽象化と変わらないよね。最近の入門書はデータ抽象化→オブジェクト指向の順に書いてあって分かりやすい。
クラスベースのADTがOOPだと吹き込まれた連中が多いから仕方ない。
OOPの否定って相手の範囲を拡大させて言っちゃうのが良くない、雑に感じる部分なんだと思っています。大体が継承を基盤としたオブジェクト指向に当てはまりますが、OOPの根幹(メッセージパッシング)に対しては少々ナイーブに過ぎる批判ではないかと。
名前ベースの貧弱な型システムと、クラスベースのOOPを言語の根幹に入れると途端に酷いプログラムの温床になります。仕事した気になる小細工が沢山つくられ、3ヶ月後の自分を泣かせる原因になります。FizzBuzzエンタープライズ [github.com]は極端ですが、OOPを嫌う人の心理の一端に触れることができます。
>golangの何がしたいのかよくわからない型システムに比べれば私は逆にgolangのアプローチの方がしっくりくるんですよね。別コメントにもありますがカプセル化を間違って理解されていることが多いような。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
OOPがちゃんと使えそう (スコア:0)
OOP in Rust(日本語資料です)
http://www.slideshare.net/KENZ_gelsoft/oop-in-rust [slideshare.net]
クラス継承はないけど、traitのmixinがあり、traitにデフォルト実装を定義できるので、インターフェイスを前面に出しつつ、実質的な継承も可能っぽいですね。
RubyのEnumerableモジュールみたいなものが自然に実装できます。
なんか最近、golang設計者の主張を初めとした、雑な感じのOOP否定論を耳にすることが多くてモヤモヤしていたのですが、
RustではちゃんとしたOOPができそうで安心しました。
golangの何がしたいのかよくわからない型システムに比べれば、ずっとよくデザインされていると感じます。
Re:OOPがちゃんと使えそう (スコア:1)
引用されているウィキペディアの
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%8... [wikipedia.org]
> これらの機能のうち、オブジェクト指向の考え方で不可欠なのは「カプセル化」の機能だけである。
これからして間違っているわけだが
ふつう最も重要とされるのは動的バインディングだよ
アラン・ケイもそう言っている
Re: (スコア:0)
カプセル化だけじゃデータ抽象化と変わらないよね。
最近の入門書はデータ抽象化→オブジェクト指向の順に書いてあって分かりやすい。
Re: (スコア:0)
クラスベースのADTがOOPだと吹き込まれた連中が多いから仕方ない。
Re: (スコア:0)
OOPの否定って相手の範囲を拡大させて言っちゃうのが良くない、雑に感じる部分なんだと思っています。
大体が継承を基盤としたオブジェクト指向に当てはまりますが、OOPの根幹(メッセージパッシング)に対しては少々ナイーブに過ぎる批判ではないかと。
名前ベースの貧弱な型システムと、クラスベースのOOPを言語の根幹に入れると途端に酷いプログラムの温床になります。
仕事した気になる小細工が沢山つくられ、3ヶ月後の自分を泣かせる原因になります。
FizzBuzzエンタープライズ [github.com]は極端ですが、OOPを嫌う人の心理の一端に触れることができます。
Re: (スコア:0)
>golangの何がしたいのかよくわからない型システムに比べれば
私は逆にgolangのアプローチの方がしっくりくるんですよね。
別コメントにもありますがカプセル化を間違って理解されていることが多いような。