オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
https://twitter.com/ProgrammingMono/status/665702678006140928
研究グループは、血管新生注において血管が伸長する際の血管内皮細胞注運動を制御するしくみを、生物学と数理モデル・
コンピュータシミュレーションを融合させた先端的な研究手法により明らかにしました。
生物は、最小の機能単位である細胞が寄り集まった多細胞体です。しかし、細胞の集まりが、組織や器官といった
秩序ある形態や構造をつくり機能するしくみはほとんど分かっていません。中でも血管は、体中の全組織に十分な
酸素や栄養源を効率よく供給するため、組織や組織の間に入り込み、血管外の環境との相互作用により、巧妙な
枝分かれ構造をとっています。
これまでに本研究グループは、新しく血管がつくられる(血管新生)際の細胞の動きに着目し、特に血管内皮細胞の
動きをリアルタイムで可視化し、定量的に捉えることを可能にしてきました。
今回さらに、血管の伸長を制御するしくみについて、細胞が自発的に自らを制御して動く過程(自律的過程)と、
隣接した細胞から適宜影響を受けて動く過程(協調的過程)がうまく共存することで、全体の動きが巧みに統制
されていることを世界に先駆けて実証しました。
興味深いことに、血管内皮細胞が前後したり、お互いに追い抜きあったりという血管新生で見られる複雑な細胞集団の
動きを制御している中枢部分は、細胞一つ一つの動き(スピードと方向性)の「確率的な変化」として十分説明できる
ことをコンピュータシミュレーションで実証しました。
http://www.jst.go.jp/pr/announce/20151120-2/#YOUGO3
前スレ
オブジェクト指向は愚かな考え。この世は計算式 ★2
http://peace.2ch.net/test/read.cgi/tech/1450153388/
オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net
2016/01/05(火) 02:10:25.72ID:hJUQcrkl
540デフォルトの名無しさん
2016/08/02(火) 10:26:45.37ID:KjBiyzhL 型が動的だと>>535の例のようなコードはどうなるの?
541デフォルトの名無しさん
2016/08/02(火) 10:29:15.63ID:YMxtX/GD そそ
例えばアセンブリや機械語は制約がないからデコレータパターンとか要らないでしょ
それと同じでSmalltalkには何も必要ないよ
例えばアセンブリや機械語は制約がないからデコレータパターンとか要らないでしょ
それと同じでSmalltalkには何も必要ないよ
542デフォルトの名無しさん
2016/08/02(火) 13:11:20.31ID:KCBRtMku 全然違うのだが。デコレータもSmallTalkも理解してないとみた。
543デフォルトの名無しさん
2016/08/02(火) 13:40:40.79ID:C0zGukRC アセンブリというかC言語だとこんな感じか。出来るには出来るけどちょっとねえ
http://codepad.org/XgRtJlQb
http://codepad.org/XgRtJlQb
544デフォルトの名無しさん
2016/08/02(火) 15:34:07.46ID:lROFhaXh なにも知らなくても語れる。
それが Smalltalk のいいところらしい。
人間の悲しさがほの見えるな・・・
それが Smalltalk のいいところらしい。
人間の悲しさがほの見えるな・・・
545デフォルトの名無しさん
2016/08/02(火) 16:01:47.58ID:wOSsX6OQ >>540
Smalltalkはよくわからないけど、
DoublePriceとかWholesalePriceとかいうクラスを増やすより、
元値から実売価格を計算するクロージャを持たせるんじゃないかなあ。
SmalltalkのPluggableMVCとかもクロージャで柔軟な変換を実装しているし。
Smalltalkはよくわからないけど、
DoublePriceとかWholesalePriceとかいうクラスを増やすより、
元値から実売価格を計算するクロージャを持たせるんじゃないかなあ。
SmalltalkのPluggableMVCとかもクロージャで柔軟な変換を実装しているし。
546デフォルトの名無しさん
2016/08/02(火) 16:53:22.92ID:I0xQlCpI >>545
> 元値から実売価格を計算するクロージャを持たせるんじゃないかなあ。
こんなんでどうですかね?
http://ideone.com/d8iLSE
ついでにRuby版も書いてみた
http://ideone.com/WW8gva
> 元値から実売価格を計算するクロージャを持たせるんじゃないかなあ。
こんなんでどうですかね?
http://ideone.com/d8iLSE
ついでにRuby版も書いてみた
http://ideone.com/WW8gva
547デフォルトの名無しさん
2016/08/02(火) 17:16:35.65ID:I0xQlCpI >>543
これだと Java 版でいうところの getValue() する前に
毎回、二倍にして 利益80乗せて、また二倍にしてもう一度 利益200乗せて…とかって
いちいち書かないと 840を返せないから、結果は合っているけど要求仕様を満たしていないような気がする
これだと Java 版でいうところの getValue() する前に
毎回、二倍にして 利益80乗せて、また二倍にしてもう一度 利益200乗せて…とかって
いちいち書かないと 840を返せないから、結果は合っているけど要求仕様を満たしていないような気がする
548デフォルトの名無しさん
2016/08/02(火) 18:25:05.78ID:lROFhaXh いつになったら、
人間クラスと美少女クラスの問題に辿りつけるのかね?
悲しいの〜。
人間クラスと美少女クラスの問題に辿りつけるのかね?
悲しいの〜。
549デフォルトの名無しさん
2016/08/02(火) 20:24:15.92ID:wOSsX6OQ550デフォルトの名無しさん
2016/08/02(火) 20:30:55.27ID:lROFhaXh どう解けてるんだよ。
人間の肛門と天使の肛門にコンポーネントするのか?
人間の肛門と天使の肛門にコンポーネントするのか?
551デフォルトの名無しさん
2016/08/02(火) 20:41:47.88ID:UCo4tbLK 用途も分からず闇雲に現実世界をクラス化して行ったら、一生掛かっても終わらないから無駄な事すんな。
552デフォルトの名無しさん
2016/08/02(火) 20:42:03.85ID:9rM4/wP9 美少女は偶像であり人間ではない
553デフォルトの名無しさん
2016/08/02(火) 20:57:34.64ID:flPsn8Jo もうそろそろいいかな?
みんな「デコレーターパターン」をどうするか?というテーマで
会話が成り立ってるよね?
つまりこういうことさ。デザインパターンっていうのは用語。
実装じゃない。
デコレーターパターンをJavaならこう書く、SmallTalkならこう書くと
いうふうに共通認識ができてる。これこそデザインパターンの有用な所。
だからコードの書き方が決まってるわけじゃないんだよ。
設計だからね。言語が決まらない状態であっても話はできる。
デザインパターンをどういうふうに書くかってのは例でしか無いんだよ。
目的を達成できるならどう書くてもいいし、デコレータパターンを
どう書いてもそれはデコレータパターンなのさ。
SmallTalkであってもデコレーターパターンっていうのは存在する。
だからこそSmallTalkでデコレータパターンをシンプルに書くことができる!と
主張できる。
みんな「デコレーターパターン」をどうするか?というテーマで
会話が成り立ってるよね?
つまりこういうことさ。デザインパターンっていうのは用語。
実装じゃない。
デコレーターパターンをJavaならこう書く、SmallTalkならこう書くと
いうふうに共通認識ができてる。これこそデザインパターンの有用な所。
だからコードの書き方が決まってるわけじゃないんだよ。
設計だからね。言語が決まらない状態であっても話はできる。
デザインパターンをどういうふうに書くかってのは例でしか無いんだよ。
目的を達成できるならどう書くてもいいし、デコレータパターンを
どう書いてもそれはデコレータパターンなのさ。
SmallTalkであってもデコレーターパターンっていうのは存在する。
だからこそSmallTalkでデコレータパターンをシンプルに書くことができる!と
主張できる。
554デフォルトの名無しさん
2016/08/02(火) 21:16:53.04ID:LOKS06K+555デフォルトの名無しさん
2016/08/02(火) 21:20:29.76ID:flPsn8Jo >>554
言いたいことはそれだけかw
言いたいことはそれだけかw
556デフォルトの名無しさん
2016/08/02(火) 21:22:05.73ID:LOKS06K+ ごめんね
557デフォルトの名無しさん
2016/08/02(火) 21:24:18.11ID:e9gYPknx Smalltalk の t を大文字で書くやつは無知か知ったかぶり
558デフォルトの名無しさん
2016/08/02(火) 21:24:35.32ID:lROFhaXh 実は誰も Smalltalk なんて知らない www
559デフォルトの名無しさん
2016/08/02(火) 21:27:22.36ID:flPsn8Jo 反論あるなら待ってるよw
560デフォルトの名無しさん
2016/08/02(火) 21:32:29.72ID:LOKS06K+ >>557
ワロタw
ワロタw
561デフォルトの名無しさん
2016/08/02(火) 21:38:39.55ID:UCo4tbLK 言語は関係無いと言う内容の話への反論が、言語名のミスプリントの指摘とか、レベル低過ぎだろw
小学生の負け惜しみかよw
小学生の負け惜しみかよw
562デフォルトの名無しさん
2016/08/02(火) 21:39:26.48ID:flPsn8Jo563デフォルトの名無しさん
2016/08/02(火) 21:40:28.47ID:UCo4tbLK うゎw
保育園だなここはw
保育園だなここはw
564デフォルトの名無しさん
2016/08/02(火) 21:47:57.27ID:6KXXOitA >>561
「プリント」とかまさに小並
「プリント」とかまさに小並
565デフォルトの名無しさん
2016/08/02(火) 22:08:58.16ID:e9gYPknx566デフォルトの名無しさん
2016/08/02(火) 22:14:56.76ID:flPsn8Jo >>565
いやw
最初からこのために、
デコレータパターンをSmallTalkで書いたらどうなるの?って
話題を振って会話をさせたんだよ。
デコレータパターンという共通知識があり、
SmallTalkでそれを実装することができるという会話をね。
もし実装が決まっているものであれば、
SmallTalkでデコレータパターンを実装すれば
シンプルな形で実装できるんだっていう話はでてこない。
いやw
最初からこのために、
デコレータパターンをSmallTalkで書いたらどうなるの?って
話題を振って会話をさせたんだよ。
デコレータパターンという共通知識があり、
SmallTalkでそれを実装することができるという会話をね。
もし実装が決まっているものであれば、
SmallTalkでデコレータパターンを実装すれば
シンプルな形で実装できるんだっていう話はでてこない。
567デフォルトの名無しさん
2016/08/02(火) 22:27:10.71ID:KCBRtMku そもそもC++でデコレーターでもそんな難しくないでしょw
シングルトンの方がよっぽどややこしい。
シングルトンの方がよっぽどややこしい。
568デフォルトの名無しさん
2016/08/02(火) 22:30:18.68ID:flPsn8Jo 「シングルトン」だけで話が通じる所がデザインパターンの
便利なところだね。
さてシングルトンにもいろんな実装があるけど、
DIコンテナを使ってシングルトンに見せるっていう方法もあるよね。
これだと普通にクラスを作るだけで良くなる。
便利なところだね。
さてシングルトンにもいろんな実装があるけど、
DIコンテナを使ってシングルトンに見せるっていう方法もあるよね。
これだと普通にクラスを作るだけで良くなる。
569デフォルトの名無しさん
2016/08/02(火) 22:34:48.24ID:qU1dasmj 兄さん、そこでPythonですよ
ですしおすし
ですしおすし
570デフォルトの名無しさん
2016/08/02(火) 23:26:19.20ID:QqIbwu4d Java8ならもっとHENTAIなコードが書けるぞ
http://ideone.com/DbIiD0
http://ideone.com/DbIiD0
571デフォルトの名無しさん
2016/08/02(火) 23:41:10.66ID:6KXXOitA572デフォルトの名無しさん
2016/08/02(火) 23:59:46.02ID:lROFhaXh Smalltalk の最大の魅力は、
それが雑談に過ぎないということである。
by アラン・ケイ
それが雑談に過ぎないということである。
by アラン・ケイ
573デフォルトの名無しさん
2016/08/03(水) 00:45:18.40ID:qJ0ntPw4 >>570
new Price((120*2+80)*2+200) を作りたいわけではなくて
new Price(120) をデコって 840 を返させるのが Decorator
だからデコったあとに setValue(100) してから getValue() すると 760 が返るはず
http://ideone.com/Z24LFA
http://ideone.com/Diod1I
http://ideone.com/x2goNr
http://ideone.com/do6fT9
new Price((120*2+80)*2+200) を作りたいわけではなくて
new Price(120) をデコって 840 を返させるのが Decorator
だからデコったあとに setValue(100) してから getValue() すると 760 が返るはず
http://ideone.com/Z24LFA
http://ideone.com/Diod1I
http://ideone.com/x2goNr
http://ideone.com/do6fT9
574デフォルトの名無しさん
2016/08/03(水) 11:21:17.97ID:nNt8IZmK575デフォルトの名無しさん
2016/08/03(水) 12:45:10.82ID:XBNCNfrP576デフォルトの名無しさん
2016/08/03(水) 15:55:24.00ID:8J75MUHP SmallTalkとか
577デフォルトの名無しさん
2016/08/03(水) 17:09:10.94ID:R0iPm5qU 関数型インターフェースの方が簡潔になる
http://ideone.com/6MAwKM
>>573
setValue(100)してからgetValueしたら100返らなきゃバグってるだろ
setOriginalValueとかに修正するところだな
http://ideone.com/6MAwKM
>>573
setValue(100)してからgetValueしたら100返らなきゃバグってるだろ
setOriginalValueとかに修正するところだな
578デフォルトの名無しさん
2016/08/03(水) 18:07:08.01ID:8J75MUHP Wikipediaにある
> Decorator パターンの方針は、既存のオブジェクトを新しい Decorator オブジェクトでラップすることである。
がわかってない奴がいるな
> Decorator パターンの方針は、既存のオブジェクトを新しい Decorator オブジェクトでラップすることである。
がわかってない奴がいるな
579デフォルトの名無しさん
2016/08/03(水) 18:17:54.35ID:qhbdc1zB デザパタの目的とされがちであるが
常に失敗しているのが語彙の共有
いつでもつねに認識がバラバラw
常に失敗しているのが語彙の共有
いつでもつねに認識がバラバラw
580デフォルトの名無しさん
2016/08/03(水) 18:21:38.71ID:8J75MUHP581デフォルトの名無しさん
2016/08/03(水) 18:45:37.19ID:9oohU77o582デフォルトの名無しさん
2016/08/03(水) 19:57:46.85ID:N9MmOijn Smalltalkに意味なんかないよ
登場してから30年とか40年とか経ってるのに
誰も現場で使ってない言語だからね
40年という歳月は結論を出すのに十分な時間だと思うよ
これから先もずっと使われないだろう
こんな言語についてあれこれ考えるのは時間の無駄だよ
御幣を恐れずに言うと、Smalltalkは間違っている、机上の空論
本当によくできていたなら、もうちょっとぐらい使われていてもおかしくない
少なくともRuby程度ぐらいには使われてないと話にならない
Smalltalkは実用にならないスジの悪い言語だということ
登場してから30年とか40年とか経ってるのに
誰も現場で使ってない言語だからね
40年という歳月は結論を出すのに十分な時間だと思うよ
これから先もずっと使われないだろう
こんな言語についてあれこれ考えるのは時間の無駄だよ
御幣を恐れずに言うと、Smalltalkは間違っている、机上の空論
本当によくできていたなら、もうちょっとぐらい使われていてもおかしくない
少なくともRuby程度ぐらいには使われてないと話にならない
Smalltalkは実用にならないスジの悪い言語だということ
583デフォルトの名無しさん
2016/08/03(水) 20:22:04.47ID:M+rE/wd/ Smalltalkは言語だけじゃダメで。
windows上では使い物にならないから仕方無い。
windows上では使い物にならないから仕方無い。
584デフォルトの名無しさん
2016/08/03(水) 20:23:22.86ID:M+rE/wd/ 要するに、windows自体がオブジェクト指向に向いてないんだよ。
585デフォルトの名無しさん
2016/08/03(水) 20:29:26.00ID:1jcdD/Xi 結論。
誰も Smalltalk なんて知らない www
誰も Smalltalk なんて知らない www
586デフォルトの名無しさん
2016/08/03(水) 20:32:04.15ID:N9MmOijn それは関係ない
なぜなら概念上の問題より運用上の問題のほうが大事だから
いくら概念的な素晴らしさを語ったところで
まともに運用できないならゴミ
使えない
なぜなら概念上の問題より運用上の問題のほうが大事だから
いくら概念的な素晴らしさを語ったところで
まともに運用できないならゴミ
使えない
587デフォルトの名無しさん
2016/08/03(水) 20:45:27.46ID:YtpqVXv4 >>574
> Javaではデコレータパターンを使う問題を
> デコレータパターンを使わずにより簡潔に記述した例。
お前は勘違いしているな。
デコレータパターンを実装しなさいというお題なんだから
それがデコレータパターンなんだよ。
Javaならこういう実装でやるが、他の言語では
その実装方法が違うだけ。
> Javaではデコレータパターンを使う問題を
> デコレータパターンを使わずにより簡潔に記述した例。
お前は勘違いしているな。
デコレータパターンを実装しなさいというお題なんだから
それがデコレータパターンなんだよ。
Javaならこういう実装でやるが、他の言語では
その実装方法が違うだけ。
588デフォルトの名無しさん
2016/08/03(水) 21:24:23.35ID:TE6NppPB589デフォルトの名無しさん
2016/08/03(水) 21:37:23.40ID:46yxFVyN シングルトンやアイテレーターなどは時代が変わっても重要だろうけど、
デコレーターは継承関係への依存度が高いから微妙だな。
デコレーターは継承関係への依存度が高いから微妙だな。
590デフォルトの名無しさん
2016/08/03(水) 22:46:55.08ID:PwtoF+FA >>583
Smalltalkは独自のGUIもそうだけれども、もうひとつ、通常のセルフホスティング
(自身で自身を記述)にとどまらず、処理系を構成する実行時オブジェクト群を
仮想イメージと呼ばれる、ある種のオブジェクトストアに永続化して次回起動時も
継続利用する運用スタイルも毛嫌いされるよね。個人的には示唆に富んでいて好きなんだけど
Smalltalkは独自のGUIもそうだけれども、もうひとつ、通常のセルフホスティング
(自身で自身を記述)にとどまらず、処理系を構成する実行時オブジェクト群を
仮想イメージと呼ばれる、ある種のオブジェクトストアに永続化して次回起動時も
継続利用する運用スタイルも毛嫌いされるよね。個人的には示唆に富んでいて好きなんだけど
591デフォルトの名無しさん
2016/08/04(木) 00:17:31.35ID:iDV12Qqy592デフォルトの名無しさん
2016/08/04(木) 00:19:01.73ID:jTAWnEUa > クロージャで実装しているのだから、
クロージャで "何を" 実装しているの?
クロージャで "何を" 実装しているの?
593デフォルトの名無しさん
2016/08/04(木) 00:24:24.39ID:ClPuKc3B デコレータパターンを実装できてはいないんだよw
これでわかった?w
これでわかった?w
594デフォルトの名無しさん
2016/08/04(木) 00:25:35.63ID:jTAWnEUa いや、何を実装したのかを聞いたんだが?
実装したものは何?
実装したものは何?
595デフォルトの名無しさん
2016/08/04(木) 00:30:18.03ID:ynLXOlFE >>590
あのあたりはむしろメモリや記憶装置いくらでも使える現代向けというか
過去にオブジェクト指向の要素をちょっとだけ輸入してみた中途半端なオブジェクト指向言語が次々出ては滅びの興亡続けてたのは
"コンパイル後のサイズが大きいじゃないか"とかいまじゃヘソが茶を沸かすような理由がメインなわけだし。
あのあたりはむしろメモリや記憶装置いくらでも使える現代向けというか
過去にオブジェクト指向の要素をちょっとだけ輸入してみた中途半端なオブジェクト指向言語が次々出ては滅びの興亡続けてたのは
"コンパイル後のサイズが大きいじゃないか"とかいまじゃヘソが茶を沸かすような理由がメインなわけだし。
596デフォルトの名無しさん
2016/08/04(木) 00:31:24.04ID:w6fnMNqO デコレータパターンと同等の機能をクロージャで実装した
じゃね?
同等の機能を持った違った実装があるのは当たり前じゃね?
デコレータパターンと同じような機能をもたらすけど
デコレータパターンじゃない実装は普通にあり得るんじゃね?
じゃね?
同等の機能を持った違った実装があるのは当たり前じゃね?
デコレータパターンと同じような機能をもたらすけど
デコレータパターンじゃない実装は普通にあり得るんじゃね?
597デフォルトの名無しさん
2016/08/04(木) 00:34:51.00ID:jTAWnEUa598デフォルトの名無しさん
2016/08/04(木) 00:36:04.52ID:jTAWnEUa wikipediaにすら書いてあるしw
https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
デザインパターンは、よく使われる設計を一般化された形でまとめたものに過ぎない。
そのため、具体的な実装を提供するものではなく、
あくまでもコンセプトとして参照されることが意図されている。
つまり、サンプルコードは、実装例に過ぎない。
https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
デザインパターンは、よく使われる設計を一般化された形でまとめたものに過ぎない。
そのため、具体的な実装を提供するものではなく、
あくまでもコンセプトとして参照されることが意図されている。
つまり、サンプルコードは、実装例に過ぎない。
599デフォルトの名無しさん
2016/08/04(木) 00:42:01.96ID:w6fnMNqO >パターンは機能じゃないよ。設計。
それで、その設計パターンとは合致しないけど
同等の機能や目的を満たす他の設計はあり得る
ってことでしょ?
俺の言ってることと一緒だね
それで、その設計パターンとは合致しないけど
同等の機能や目的を満たす他の設計はあり得る
ってことでしょ?
俺の言ってることと一緒だね
600デフォルトの名無しさん
2016/08/04(木) 00:44:00.26ID:fESKb5E9 ID:jTAWnEUaを教育してあげる義務は我々には無い
601デフォルトの名無しさん
2016/08/04(木) 00:45:06.02ID:jTAWnEUa >>599
わざわざ複雑にしないでいいよw
やりたいことがある。
でも説明するのが面倒くさい。
じゃあ「デコレーターパターン」と呼びましょう。
これで話は通じてるじゃん。
だからこれだけの情報でコードを書くことができる。
そのデコレーターパターンを
クロージャーで実装したんでしょ?
そういえば良いんだよ。
わざわざ複雑にしないでいいよw
やりたいことがある。
でも説明するのが面倒くさい。
じゃあ「デコレーターパターン」と呼びましょう。
これで話は通じてるじゃん。
だからこれだけの情報でコードを書くことができる。
そのデコレーターパターンを
クロージャーで実装したんでしょ?
そういえば良いんだよ。
602デフォルトの名無しさん
2016/08/04(木) 00:48:34.94ID:jTAWnEUa >>600
じゃあ一緒に勉強していきましょう(笑)
http://www.techscore.com/tech/DesignPattern/foundation/foundation1.html/#dp0-2
> 前章でも説明したとおり、デザインパターンとは、「よく出会う問題とそれにうまく対処するための設計」を
> まとめたものです。 デザインパターンを利用するメリットとして、最初にあげられるのが、
> 「再利用性の高い柔軟な設計ができる」という点です。各パターンには、多くの知恵が凝縮されています。
> これまでは、設計者の直感や経験などに依存していた設計が、デザインパターンを導入することで、
> 初心者でも先人たちが詰め込んだ「知恵」を利用した設計をすることが可能となります。
> また、先人たちの知恵を参考にすることで、設計力の向上も期待できます。
>
> 次のメリットは、「技術者どうしの意思疎通が容易になる」ことが挙げられます。
> デザインパターンを習得している技術者どうしであれば、設計について相談するとき
> 「Singleton パターンで行きましょう」とか「Strategy パターンが応用できるのではないでしょうか」と
> いうようにパターン名で設計の概要の合意を取ることが可能です。デザインパターンを
> 習得していない技術者には「こんなクラスを作って、このクラスはこんな役割を持っていて・・・。」と
> 延々と説明しなければなりません。このように、デザインパターンを学習しておくことで
> 開発者どうしの意思疎通がスムースになるのです。
あなたは何で勉強していますか?
じゃあ一緒に勉強していきましょう(笑)
http://www.techscore.com/tech/DesignPattern/foundation/foundation1.html/#dp0-2
> 前章でも説明したとおり、デザインパターンとは、「よく出会う問題とそれにうまく対処するための設計」を
> まとめたものです。 デザインパターンを利用するメリットとして、最初にあげられるのが、
> 「再利用性の高い柔軟な設計ができる」という点です。各パターンには、多くの知恵が凝縮されています。
> これまでは、設計者の直感や経験などに依存していた設計が、デザインパターンを導入することで、
> 初心者でも先人たちが詰め込んだ「知恵」を利用した設計をすることが可能となります。
> また、先人たちの知恵を参考にすることで、設計力の向上も期待できます。
>
> 次のメリットは、「技術者どうしの意思疎通が容易になる」ことが挙げられます。
> デザインパターンを習得している技術者どうしであれば、設計について相談するとき
> 「Singleton パターンで行きましょう」とか「Strategy パターンが応用できるのではないでしょうか」と
> いうようにパターン名で設計の概要の合意を取ることが可能です。デザインパターンを
> 習得していない技術者には「こんなクラスを作って、このクラスはこんな役割を持っていて・・・。」と
> 延々と説明しなければなりません。このように、デザインパターンを学習しておくことで
> 開発者どうしの意思疎通がスムースになるのです。
あなたは何で勉強していますか?
603デフォルトの名無しさん
2016/08/04(木) 01:13:23.05ID:w6fnMNqO 話をややこしくしているのはあなたです
>パターンは機能じゃないよ。設計。
↑これは君が言ったことだよね
その上で俺は、同等の機能を持った、違ったデザインなんじゃね?って言ってるわけ
機能が同じであっても、同じデザインパターンとは限らない
何故なら、デザインパターンは機能じゃないから、設計のパターンだから
↑君の言ってることと全く同じだよね
だから同じ機能だけど、違った設計パターンであり
同じデザインパターンに属さない設計は有る
ということを君は認めているということ
>パターンは機能じゃないよ。設計。
↑これは君が言ったことだよね
その上で俺は、同等の機能を持った、違ったデザインなんじゃね?って言ってるわけ
機能が同じであっても、同じデザインパターンとは限らない
何故なら、デザインパターンは機能じゃないから、設計のパターンだから
↑君の言ってることと全く同じだよね
だから同じ機能だけど、違った設計パターンであり
同じデザインパターンに属さない設計は有る
ということを君は認めているということ
604デフォルトの名無しさん
2016/08/04(木) 01:43:58.02ID:w6fnMNqO デザインパターンは機能では無く、よくある設計パターンに名前を付けたもの
ってのは正に君が自分で言ったことであって
それは俺も了承している
だから同じ機能であっても、それだけで同じデザインパターンとは言えないよね
と俺は言ってるわけ
なぜならデザインパターンは機能では無いから(君の言ったことだよね)
そもそも俺とお前とのやり取りに、何のとどこおりも無い
俺は、>>596で同等の機能を別の設計で実装したんじゃないか、と言い
お前は>>597でデザインパターンの分類は機能で決まるものではなく設計で決まる、と言っている
合わせると、「同等の機能であっても同じデザインパターンであるとは限らない、設計で決まる」
という結論が得られる
ってのは正に君が自分で言ったことであって
それは俺も了承している
だから同じ機能であっても、それだけで同じデザインパターンとは言えないよね
と俺は言ってるわけ
なぜならデザインパターンは機能では無いから(君の言ったことだよね)
そもそも俺とお前とのやり取りに、何のとどこおりも無い
俺は、>>596で同等の機能を別の設計で実装したんじゃないか、と言い
お前は>>597でデザインパターンの分類は機能で決まるものではなく設計で決まる、と言っている
合わせると、「同等の機能であっても同じデザインパターンであるとは限らない、設計で決まる」
という結論が得られる
605デフォルトの名無しさん
2016/08/04(木) 01:56:34.90ID:tMKvO+zV デコレータパターンの解決できる問題領域は他の(オブジェクト指向でない)方法でもっと簡潔に書ける、のはいいだろうか。
これと同じことが他のデザインパターンでもできるんじゃね?という主張だったと思うんだが。
Singletonは言語によって容易に達成できるものもあればそうでない言語もあるが、そう難しくは無いはず。
OCamlだったらmutable valueを持ったモジュール使えば同等のことが実現できる。
Adapterパターンも変更できない物がオブジェクトだったら関数1つで済むし、
モジュールだったらファンクタ使えば良い。
これを続けていけばデザインパターンがOOPの表現力の低さを解決する妥協案である、と示せる気がするが、
逆にOOPでデザパタ使うのが一番簡潔になる問題を探す方が難しいかもね。
これと同じことが他のデザインパターンでもできるんじゃね?という主張だったと思うんだが。
Singletonは言語によって容易に達成できるものもあればそうでない言語もあるが、そう難しくは無いはず。
OCamlだったらmutable valueを持ったモジュール使えば同等のことが実現できる。
Adapterパターンも変更できない物がオブジェクトだったら関数1つで済むし、
モジュールだったらファンクタ使えば良い。
これを続けていけばデザインパターンがOOPの表現力の低さを解決する妥協案である、と示せる気がするが、
逆にOOPでデザパタ使うのが一番簡潔になる問題を探す方が難しいかもね。
606デフォルトの名無しさん
2016/08/04(木) 03:16:53.36ID:jTAWnEUa やっぱりデザインパターンを
実装パターンと勘違いしているとしか思えないな。
まず大前提としてデザインパターンに言語は関係ない。
だから言語は関係なく設計の話、
オブジェクト指向での設計の話を考える。
そうするとそこにデザインパターンが出てくる
ここまでで言語の話は出てこないから
当然実装の話もでてこないんだよ。
実装パターンと勘違いしているとしか思えないな。
まず大前提としてデザインパターンに言語は関係ない。
だから言語は関係なく設計の話、
オブジェクト指向での設計の話を考える。
そうするとそこにデザインパターンが出てくる
ここまでで言語の話は出てこないから
当然実装の話もでてこないんだよ。
607デフォルトの名無しさん
2016/08/04(木) 03:18:24.28ID:jTAWnEUa OOPじゃなくてC言語でも当てはまる話だよね。
シングルトンやデコレータなどは。
C言語であってもオブジェクト指向で設計していれば
自然とデザインパターンは出てくる。
シングルトンやデコレータなどは。
C言語であってもオブジェクト指向で設計していれば
自然とデザインパターンは出てくる。
608デフォルトの名無しさん
2016/08/04(木) 06:27:25.67ID:iDV12Qqy >>605
だから、GoFはSmalltalkなら簡単に記述できる構造や機能を
JavaやC++の表現力で解決する妥協案を集めたものなの。
JavaやC++の表現能力や抽象度が低いことを勝手にOOPの表現能力の低さにすり替えるな。
だから、GoFはSmalltalkなら簡単に記述できる構造や機能を
JavaやC++の表現力で解決する妥協案を集めたものなの。
JavaやC++の表現能力や抽象度が低いことを勝手にOOPの表現能力の低さにすり替えるな。
609デフォルトの名無しさん
2016/08/04(木) 09:14:32.03ID:jTAWnEUa >>608
それはオレオレ定義ですよね。
それはオレオレ定義ですよね。
610デフォルトの名無しさん
2016/08/04(木) 09:31:36.26ID:0aO0sFCL デザパタの実装はいろいろあっていいし、言語によって簡単に書けたりそもそも必要なかったりもする。
「オブジェクト指向における再利用のためのデザインパターン」←GoFのデザパタ提唱本ね。念のため。
プログラミング言語の選択は重要である。なぜなら、どの言語を使うかによってどのような観点でデ
ザインパターンをまとめるかが違ってくるからである。我々のパターンはSmalltalk/C+十レベルの言
語形態を想定している。その選択によって、容易に実現できることとできないことが決まる。たとえば、
もし、我々が手続き型言語を想定していれば、Inheritance(継承)、Encapsuladon(カプセル化)、
Polymorphism(ポリモルフィズム)といったデザインパターンを組み入れたであろう。また、我々のパタ
ーンの中には、あまリー般的でない言語によって直接サポートされているものもある。たとえば、CLOS
はマルチメソッドを有しているので、Visitorパターン(P.53)のようなパターンは必要性がなくなるの
である。実際のところ、SmalltalkとC十+の間にも違いがあり、どちらの言語を使うとより簡単に表現
できるかは、パターンによっても違ってくる(例としては、Iteratorパターン(P.275)を参照)。
「オブジェクト指向における再利用のためのデザインパターン」←GoFのデザパタ提唱本ね。念のため。
プログラミング言語の選択は重要である。なぜなら、どの言語を使うかによってどのような観点でデ
ザインパターンをまとめるかが違ってくるからである。我々のパターンはSmalltalk/C+十レベルの言
語形態を想定している。その選択によって、容易に実現できることとできないことが決まる。たとえば、
もし、我々が手続き型言語を想定していれば、Inheritance(継承)、Encapsuladon(カプセル化)、
Polymorphism(ポリモルフィズム)といったデザインパターンを組み入れたであろう。また、我々のパタ
ーンの中には、あまリー般的でない言語によって直接サポートされているものもある。たとえば、CLOS
はマルチメソッドを有しているので、Visitorパターン(P.53)のようなパターンは必要性がなくなるの
である。実際のところ、SmalltalkとC十+の間にも違いがあり、どちらの言語を使うとより簡単に表現
できるかは、パターンによっても違ってくる(例としては、Iteratorパターン(P.275)を参照)。
611デフォルトの名無しさん
2016/08/04(木) 09:33:28.01ID:IwXa2U8x 内容を理解してないから例にある記述方法しか受け付けないんだよ。
612デフォルトの名無しさん
2016/08/04(木) 09:33:48.07ID:jTAWnEUa > だから、GoFはSmalltalkなら簡単に記述できる構造や機能を
> JavaやC++の表現力で解決する妥協案を集めたものなの。
じゃあなんでこんな本が存在するんですか?w
Rubyによるデザインパターン-Russ-Olsen/
https://www.amazon.co.jp/dp/4894712857
JavaScriptデザインパターン
https://www.oreilly.co.jp/books/9784873116181/
The Design Patterns Smalltalk Companion
https://www.amazon.com/dp/0201184621
> JavaやC++の表現力で解決する妥協案を集めたものなの。
じゃあなんでこんな本が存在するんですか?w
Rubyによるデザインパターン-Russ-Olsen/
https://www.amazon.co.jp/dp/4894712857
JavaScriptデザインパターン
https://www.oreilly.co.jp/books/9784873116181/
The Design Patterns Smalltalk Companion
https://www.amazon.com/dp/0201184621
613デフォルトの名無しさん
2016/08/04(木) 09:34:24.97ID:0aO0sFCL >>610
あ。引用部分は自炊本の OCR のコピペなんで、タイポは脳内補完ねがいます。
あ。引用部分は自炊本の OCR のコピペなんで、タイポは脳内補完ねがいます。
614デフォルトの名無しさん
2016/08/04(木) 09:35:44.09ID:0aO0sFCL615デフォルトの名無しさん
2016/08/04(木) 09:35:54.66ID:IwXa2U8x >>612
おまいみたいなバカに本を売り付ける為だろw
おまいみたいなバカに本を売り付ける為だろw
616デフォルトの名無しさん
2016/08/04(木) 09:38:22.54ID:jTAWnEUa >>615
え?捨て台詞?w
え?捨て台詞?w
617デフォルトの名無しさん
2016/08/04(木) 10:07:48.33ID:e/09ny1R これはまさに捨て台詞で十分な一例。
618デフォルトの名無しさん
2016/08/04(木) 10:14:03.24ID:0aO0sFCL > だから、GoFはSmalltalkなら簡単に記述できる構造や機能を
> JavaやC++の表現力で解決する妥協案を集めたものなの。
Smalltalkを好意的にとらえて持ち上げてくれるのは、狭い視野で意味なし認定しちゃう人たちよりは
ファンとしてはありがたいけど、これはさすがにオーバーエスティメートだし、
もうちょっとSmalltalkならではのアドバンテージを学んでから、適切な持ち上げ方をしてほしい…
> JavaやC++の表現力で解決する妥協案を集めたものなの。
Smalltalkを好意的にとらえて持ち上げてくれるのは、狭い視野で意味なし認定しちゃう人たちよりは
ファンとしてはありがたいけど、これはさすがにオーバーエスティメートだし、
もうちょっとSmalltalkならではのアドバンテージを学んでから、適切な持ち上げ方をしてほしい…
619デフォルトの名無しさん
2016/08/04(木) 10:47:43.12ID:iDV12Qqy 「GoFは、」と、「デザインパターンは、」の区別がつかない人たちと技術を語るのは非常に困難である。
620デフォルトの名無しさん
2016/08/04(木) 11:37:47.99ID:0aO0sFCL621デフォルトの名無しさん
2016/08/04(木) 12:27:01.14ID:CY/jwgqy smalltalkって簡単に色々できるんでしょ?
なんで現代でメジャーじゃないの?
なんで現代でメジャーじゃないの?
622デフォルトの名無しさん
2016/08/04(木) 12:30:59.74ID:IwXa2U8x 日本語の方が優れてるのに、世界じゃ日本人しか使ってないだろ?
623デフォルトの名無しさん
2016/08/04(木) 12:31:27.57ID:79cTVfxr MSがVisual Smalltalkをつくらなかったから
624デフォルトの名無しさん
2016/08/04(木) 12:57:32.53ID:iDV12Qqy625デフォルトの名無しさん
2016/08/04(木) 13:05:00.50ID:rDDGHvQu はやく、
人間クラスと美少女クラスの問題に
たどり着いてくれよ。
人間クラスと美少女クラスの問題に
たどり着いてくれよ。
626デフォルトの名無しさん
2016/08/04(木) 13:16:23.28ID:0aO0sFCL >>624
だとするとちょっと分からないのですが、
あなたの言う「Smalltalkなら簡単に記述できる構造や機能」で実現された
デコレーターパターン(GoFの定義如何に関わらない)というのを提示してもらうことはできますか?
Smalltalk は書けないということでしたら、端的に方針だけ示してもらえればこちらで書きますので。
そもそも Smalltalk ではデコレーターパターンが不要(なので、実装はナンセンス)とのお考えでしたら
代替として Smalltalk 組み込みのどういう構造や機能を使うかを示してもらえればさいわいです。
だとするとちょっと分からないのですが、
あなたの言う「Smalltalkなら簡単に記述できる構造や機能」で実現された
デコレーターパターン(GoFの定義如何に関わらない)というのを提示してもらうことはできますか?
Smalltalk は書けないということでしたら、端的に方針だけ示してもらえればこちらで書きますので。
そもそも Smalltalk ではデコレーターパターンが不要(なので、実装はナンセンス)とのお考えでしたら
代替として Smalltalk 組み込みのどういう構造や機能を使うかを示してもらえればさいわいです。
627デフォルトの名無しさん
2016/08/04(木) 14:01:27.52ID:gwNa+xfa つか、>>546のruby版って一体何?
デコレータパターンのつもり?
デコレータパターンのつもり?
628デフォルトの名無しさん
2016/08/04(木) 14:13:24.61ID:0aO0sFCL629デフォルトの名無しさん
2016/08/04(木) 14:41:37.79ID:gwNa+xfa >>628
あ、デコレータパターンの実装だったんだ。
同じ感じでこれ実装できる?
class Log
def output(s)
puts s
end
end
class TimeStampLog
def initialize(log)
@log = log
end
def output(s)
@log.output "#{Time.now} #{s}"
end
end
class PidLog
def initialize(log)
@log = log
@pid = Process.pid
end
def output(s)
@log.output "[#{@pid}] #{s}"
end
end
あ、デコレータパターンの実装だったんだ。
同じ感じでこれ実装できる?
class Log
def output(s)
puts s
end
end
class TimeStampLog
def initialize(log)
@log = log
end
def output(s)
@log.output "#{Time.now} #{s}"
end
end
class PidLog
def initialize(log)
@log = log
@pid = Process.pid
end
def output(s)
@log.output "[#{@pid}] #{s}"
end
end
630デフォルトの名無しさん
2016/08/04(木) 14:42:24.41ID:gwNa+xfa log = TimeStampLog.new(PidLog.new(Log.new))
log.output 'aaa'
log.output 'bbb'
log2 = PidLog.new(TimeStampLog.new(Log.new))
log2.output 'aaa'
log2.output 'bbb'
結果:
[24968] 2016-08-04 14:41:58 +0900 aaa
[24968] 2016-08-04 14:41:58 +0900 bbb
2016-08-04 14:41:58 +0900 [24968] aaa
2016-08-04 14:41:58 +0900 [24968] bbb
log.output 'aaa'
log.output 'bbb'
log2 = PidLog.new(TimeStampLog.new(Log.new))
log2.output 'aaa'
log2.output 'bbb'
結果:
[24968] 2016-08-04 14:41:58 +0900 aaa
[24968] 2016-08-04 14:41:58 +0900 bbb
2016-08-04 14:41:58 +0900 [24968] aaa
2016-08-04 14:41:58 +0900 [24968] bbb
631デフォルトの名無しさん
2016/08/04(木) 16:18:58.29ID:0aO0sFCL632デフォルトの名無しさん
2016/08/04(木) 16:59:33.41ID:gwNa+xfa633デフォルトの名無しさん
2016/08/04(木) 17:09:10.90ID:0aO0sFCL634デフォルトの名無しさん
2016/08/04(木) 17:41:28.54ID:gwNa+xfa635デフォルトの名無しさん
2016/08/04(木) 18:07:30.87ID:iDV12Qqy >>626
だーかーらー、
デコレータパターンという、修飾オブジェクトで被修飾オブジェクトでラップして、両者を同じ基底クラスから派生させることで型に互換性を持たせる、というバッドノウハウは静的型OOPLのためのものにすぎなくて、
同等の機能はSmalltalkでクロージャを使った実装(当然、上記デコレータパターンの実装ではない)で実現できる。
という主張に、どうして「じゃあSmalltalkで実装したデコレータパターンはどうなんだよ」がどれだけ的外れか理解できてる?
だーかーらー、
デコレータパターンという、修飾オブジェクトで被修飾オブジェクトでラップして、両者を同じ基底クラスから派生させることで型に互換性を持たせる、というバッドノウハウは静的型OOPLのためのものにすぎなくて、
同等の機能はSmalltalkでクロージャを使った実装(当然、上記デコレータパターンの実装ではない)で実現できる。
という主張に、どうして「じゃあSmalltalkで実装したデコレータパターンはどうなんだよ」がどれだけ的外れか理解できてる?
636デフォルトの名無しさん
2016/08/04(木) 18:33:42.23ID:0aO0sFCL >>634
> 一方、>>546のコードだとそうはいかない。
単純に、ideone.com/WW8gva はデコレートをテストにハードコードしているからそうなるってだけで
http://ideone.com/HOkUN1 というふうに書いておけば、デコレーターの振る舞いを変えたければ
それを定義した decorate_price.rb だけを変えれば、decorate_price_test.rb は変更不要でしょう。
> 一方、>>546のコードだとそうはいかない。
単純に、ideone.com/WW8gva はデコレートをテストにハードコードしているからそうなるってだけで
http://ideone.com/HOkUN1 というふうに書いておけば、デコレーターの振る舞いを変えたければ
それを定義した decorate_price.rb だけを変えれば、decorate_price_test.rb は変更不要でしょう。
637デフォルトの名無しさん
2016/08/04(木) 18:57:12.60ID:0aO0sFCL >>635
なるほど。たしかにおっしゃるとおりです。的外れなことを言ってすみません。
なるほど。たしかにおっしゃるとおりです。的外れなことを言ってすみません。
638デフォルトの名無しさん
2016/08/04(木) 18:59:34.21ID:iP1jJ0aF >>610
iteratorはどっちが楽なの?
iteratorはどっちが楽なの?
639デフォルトの名無しさん
2016/08/04(木) 19:27:18.45ID:0aO0sFCL >>638
Smalltalk と C++ との比較で? それならもちろん Smalltalk です。
(同書P.289より)
Smalltalkではiteratorを明示的に定義する必要はない。標準的なコレクションクラス(Bag、
Set、Dictionary、OrderedCollection、Stringなど)で、内部iteratorのメソッドdo:を定義してい
るからである。do:はブロック(つまり、closure)を引数としてとる。
(標準的なコレクションクラスの例になぜか名前がありませんが当然Arrayも含みます。念のため。)
Smalltalk と C++ との比較で? それならもちろん Smalltalk です。
(同書P.289より)
Smalltalkではiteratorを明示的に定義する必要はない。標準的なコレクションクラス(Bag、
Set、Dictionary、OrderedCollection、Stringなど)で、内部iteratorのメソッドdo:を定義してい
るからである。do:はブロック(つまり、closure)を引数としてとる。
(標準的なコレクションクラスの例になぜか名前がありませんが当然Arrayも含みます。念のため。)
レスを投稿する
ニュース
- 【日本大使館】中国在留邦人は安全確保を [ぐれ★]
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★10 [ぐれ★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- ニートしかいない時間ってマジでつまんないよな
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 愛子、初の公式外国訪問でラオスに 日本の象徴一家を名乗るならジャップロリペド買春男どもの謝罪と賠償してこい [377482965]
- 千速は誰とのカップリングがエロいのか
- 高市コイン、155円突破wwwwwwwwww [246620176]
- おじゃる丸をまったり待機するスレ🏡
