オブジェクト指向は愚かな考え。この世は計算式at TECH
オブジェクト指向は愚かな考え。この世は計算式 - 暇つぶし2ch989:デフォルトの名無しさん
15/12/15 08:31:08.46 qjG5txy2.net
俺たちは日本語だから、traitやmixinはあまり馴染みがない
英単語なわけで、技術用語のように感じるけど
単なる「特性」なわけだ。
だから外国人にとっては、
class A extends B trait C とかいうのは
Bを拡張した種類A (特性Cを持つ)
のように感じるわけだ。

そこれで俺らが、特性とは~のことであの言語で使ってる
「特性」をパクったということに何の意味があるのだるか?
言語によって特性の意味するニュアンスが微妙に違うだけではないのか?

990:デフォルトの名無しさん
15/12/15 09:28:37.27 cIzoqdye.net
ニュアンスで言語機能の違いが説明できれば苦労はない

991:デフォルトの名無しさん
15/12/15 09:40:04.88 dWzipLnf.net
サンプルコードの一つも満足に書けないカスが。

992:デフォルトの名無しさん
15/12/15 09:40:24.27 TRpr4+TJ.net
前にどこかで、
英語文法の目的語はobjectだからobject orientedは「目的語指向」だって主張して
文法にトンデモ解釈つけてバカ全開してたヤツ見かけたことあるけど、あれの類いかな

993:デフォルトの名無しさん
15/12/15 09:49:30.84 ax++RPg4.net
>>981
形質という訳語を推したい

994:デフォルトの名無しさん
15/12/15 10:55:28.13 2HcBwVqG.net
scalaのtraitはsmalltalkのtraitと違うが、
それ以上にrubyのmixinとは違うので、
どういう根拠でmixinと呼んでるのか気になる
あれはscalaのtraitとしか言えないものだろ

995:デフォルトの名無しさん
15/12/15 11:47:16.73 rnQ5rq5D.net
ミックスインの実例をRubyのモジュールしか知らないというのがちょっと狭すぎるのでは?
ミックスインというのはクラスやそれに準ずるエンティティ(抽象クラスやRubyならモジュール)を
継承パスに挿入することで実現する多重継承のひとつの手法で、Scalaのトレイトもその範疇。
対して、本来のトレイトというのは端的には、通常はクラスの一部であるメソッド辞書(メソッドの集合)を取り出して
エンティティにしたようなもので、継承パスとは無関係。クラスに組み込む(useする)ことで使用し、
複数useされた場合は合成無名トレイトが作られ(フラット化)、あらためてそれがuseされる。
この無名トレイトが合成されるときにトレイト間にコンフリクトがあれば検知されるから、
それを明示的に解消しないとコンパイルが通らない、というところがポイント。
参考まで、Scalaのトレイトと元ネタのシェルリらのトレイトとの関係についてScala設計者の見解は次のような感じ。
Unlike the original trait proposal [29], traits in
Scala are not different from classes.
[29] N. Sch?rli, S. Ducasse, O. Nierstrasz, and A. Black. Traits:
Composable units of behavior. In Proceedings of the 17th
European Conference on Object-Oriented Programming,
Darmstadt, Germany, June 2003.
URLリンク(www.bytelabs.org)

996:デフォルトの名無しさん
15/12/15 13:23:34.52 Ln94sVRZ.net
次スレ
オブジェクト指向は愚かな考え。この世は計算式 ★2
スレリンク(tech板)

997:デフォルトの名無しさん
15/12/15 16:59:08.09 HSnPmHSe.net
>>988
scalaのtraitも名前衝突してコンフリクトしたらコンパイル通らないよ
静的に検査されるところはsmalltalkより遥かに優れてるけど

998:デフォルトの名無しさん
15/12/15 23:06:52.10 NSMNq7E6.net
たぶん、Brainfuckが一番読みやすい言語だと思うよ

999:デフォルトの名無しさん
15/12/16 00:20:54.71 R3uzXom/.net
>>990
(Scala のトレイトが Ruby のモジュール同様にミックスインだって話は納得していただけたんですかね…?)

たしかに、Scalaのトレイト同士のコンフリクトは override修飾子付き同名メソッド再定義で
回避する必要があり結果的に解消できますが、コンフリクト解消のためだけにメソッドを再定義する
という手段は、言語機能と呼ぶにはちょっとスジが違うような気がします。

あと、ミックスイン、つまりScalaのトレイト等、クラス様エンティティを継承パスに挿入する古典的な方式の問題は、
継承パスが汚染されて、super によるスーパークラスのメソッド呼び出しが素直に振る舞わないことじゃないかと。
たとえばこんな感じに、

URLリンク(ideone.com)

継承した B ではなく、ミックスインした T2 の同名メソッドがコールされてしまうところとか、
そうならないように、継承した B のメソッドを呼ぶには super[B] などと明示的にしないといけないところとか。
(ミックスインといっても継承なので、super でミックスインが呼ばれるのは当たり前といえば当たり前なのですが…)


なお、仕組み上、継承とは関係ないトレイトにはそういった制約は生じないので素直に書けるし振る舞います。
(ideone.com の Smalltalk はトレイトが使えなさそうな GNU Smalltalk なので、PHP で)

URLリンク(ideone.com)


蛇足ですが念のため、この振る舞いに関しては Ruby は super ではスーパークラスの別メソッドが呼べない仕様から
それを回避するトリッキーな手段をとると(そこで使う superclass が M2 ではなく B を返す細工があることも幸いして)
後者のトレイトと同じ結果になってしまいます。けれど、これは super が M2#m を呼ぶことを鑑みても
たまたまそうなっただけだと考えるのがよさそうです。

URLリンク(ideone.com)

1000:デフォルトの名無しさん
15/12/16 00:31:06.80 oNo3I5gu.net
>>992
Scalaの明示的に書かないとエラーになるのは
うっかりミスを防ぐ良い仕組みだね、って感想しか出ないな
やっぱり静的型付けって素晴らしいね

1001:デフォルトの名無しさん
15/12/16 00:39:35.06 oNo3I5gu.net
988自身が書いてるように

>この無名トレイトが合成されるときにトレイト間にコンフリクトがあれば検知されるから、
>それを明示的に解消しないとコンパイルが通らない、というところがポイント。

まさにココがポイントで、それをコンパイル時に発見できるScalaはSmalltalkより進歩してると言わざるを得ない

1002:デフォルトの名無しさん
15/12/16 01:00:12.38 R3uzXom/.net
>>994
いや、Smalltalkだってコンパイル時に発見できてますよ?
なんか、決定的な勘違いしてませんか?(たとえばSmalltalkがコンパイル言語と知らないとか)

1003:デフォルトの名無しさん
15/12/16 01:01:55.94 r9ejGnsb.net
まともに実務に使えない言語で言い争うなよ。

1004:デフォルトの名無しさん
15/12/16 01:07:43.78 oNo3I5gu.net
>>995
Squeakってやつのは実行時に例外が出るだけらしいけど?
URLリンク(d.hatena.ne.jp)

動的型付けのSmalltalkでコンパイル時にエラー出す処理系を教えてよ

1005:デフォルトの名無しさん
15/12/16 01:14:48.04 R3uzXom/.net
>>997
それは、コンパイル時には(検出はするが)あえてエラーは出さずに
実行時にエラーを出すスタブメソッドを動的に生成しているからですよ。

1006:デフォルトの名無しさん
15/12/16 01:19:10.72 oNo3I5gu.net
>>998
あえてエラーを出さないw まったく意味ねーw

Smalltalkには無縁な話だけど、実務で使われる言語はデフォルト動作が大事なんだぜ

1007:デフォルトの名無しさん
15/12/16 01:20:55.92 oNo3I5gu.net
>>998
あとコンパイル時にやってんのか動的に生成してんのかハッキリしろ
たった2行の文章で矛盾してるぞ

1008:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1009:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch