トップページ > プログラム > 2015年12月16日 > R3uzXom/

書き込み順位&時間帯一覧

9 位/170 ID中時間01234567891011121314151617181920212223Total
書き込み数1300000000000000000000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
オブジェクト指向は愚かな考え。この世は計算式 [転載禁止]©2ch.net
オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net

書き込みレス一覧

オブジェクト指向は愚かな考え。この世は計算式 [転載禁止]©2ch.net
992 :デフォルトの名無しさん[sage]:2015/12/16(水) 00:20:54.71 ID:R3uzXom/
>>990
(Scala のトレイトが Ruby のモジュール同様にミックスインだって話は納得していただけたんですかね…?)

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

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

http://ideone.com/v4MJE0

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


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

http://ideone.com/qFM4xa


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

http://ideone.com/aFL0sL
オブジェクト指向は愚かな考え。この世は計算式 [転載禁止]©2ch.net
995 :デフォルトの名無しさん[sage]:2015/12/16(水) 01:00:12.38 ID:R3uzXom/
>>994
いや、Smalltalkだってコンパイル時に発見できてますよ?
なんか、決定的な勘違いしてませんか?(たとえばSmalltalkがコンパイル言語と知らないとか)
オブジェクト指向は愚かな考え。この世は計算式 [転載禁止]©2ch.net
998 :デフォルトの名無しさん[sage]:2015/12/16(水) 01:14:48.04 ID:R3uzXom/
>>997
それは、コンパイル時には(検出はするが)あえてエラーは出さずに
実行時にエラーを出すスタブメソッドを動的に生成しているからですよ。
オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
6 :デフォルトの名無しさん[sage]:2015/12/16(水) 01:35:54.96 ID:R3uzXom/
前スレ>>999

意味がないってことはないですよ。

動的遅延結合をモットーとするSmalltalkでは、コンパイル時間を短くするのはもちろん、
コンパイルが通らないエラーを含めてソフトウェアが動作しなくなる時間をできるだけ無くす必要があるので。

それに、エラーがでなくなるように修正するのと、スタブが生じないように修正するのとで
本質は変わらんでしょう。

あとSmalltalkはコンパイル処理も自身のプロセス内で動的に行なうしくみなので
「コンパイル時に」と「動的に」は矛盾しません。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。