- 1 名前:デフォルトの名無しさん mailto:sageteoff [2016/01/05(火) 02:10:25.72 ID:hJUQcrkl.net]
- オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
https://twitter.com/ProgrammingMono/status/665702678006140928 研究グループは、血管新生注において血管が伸長する際の血管内皮細胞注運動を制御するしくみを、生物学と数理モデル・ コンピュータシミュレーションを融合させた先端的な研究手法により明らかにしました。 生物は、最小の機能単位である細胞が寄り集まった多細胞体です。しかし、細胞の集まりが、組織や器官といった 秩序ある形態や構造をつくり機能するしくみはほとんど分かっていません。中でも血管は、体中の全組織に十分な 酸素や栄養源を効率よく供給するため、組織や組織の間に入り込み、血管外の環境との相互作用により、巧妙な 枝分かれ構造をとっています。 これまでに本研究グループは、新しく血管がつくられる(血管新生)際の細胞の動きに着目し、特に血管内皮細胞の 動きをリアルタイムで可視化し、定量的に捉えることを可能にしてきました。 今回さらに、血管の伸長を制御するしくみについて、細胞が自発的に自らを制御して動く過程(自律的過程)と、 隣接した細胞から適宜影響を受けて動く過程(協調的過程)がうまく共存することで、全体の動きが巧みに統制 されていることを世界に先駆けて実証しました。 興味深いことに、血管内皮細胞が前後したり、お互いに追い抜きあったりという血管新生で見られる複雑な細胞集団の 動きを制御している中枢部分は、細胞一つ一つの動き(スピードと方向性)の「確率的な変化」として十分説明できる ことをコンピュータシミュレーションで実証しました。 www.jst.go.jp/pr/announce/20151120-2/#YOUGO3 前スレ オブジェクト指向は愚かな考え。この世は計算式 ★2 peace.2ch.net/test/read.cgi/tech/1450153388/
- 2 名前:uy ◆Qawu9.2l1E mailto:sage [2016/01/05(火) 02:40:11.66 ID:3cj4CitF.net]
- >>1 = ハゲ
>>3-1000 ゴミ 死ね
- 3 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 08:10:47.12 ID:WVEw1bNF.net]
- 相変わらず気が狂ってるね
- 4 名前:デフォルトの名無しさん [2016/01/05(火) 21:54:42.69 ID:8fihq/Cm.net]
- オブジェクト指向は直観に反するんだよな。
こいつを見てくれ。 pbs.twimg.com/media/CW4jn4jUkAAqIlA.jpg Coffeeオブジェクトに振る舞いがある。これはオブジェクト指向的に完全に正しい。 しかし、現実にコーヒーを飲むのは人間だ。コーヒーは人間によってカップに注がれる存在だ。 これが思考を混乱させる。オブジェクト指向に従うとよくわからないソースコードのできあがりだ。 データに振る舞いを持たせるのは大失敗だと言わざるを得ない。
- 5 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 22:44:58.11 ID:zW6slUa6.net]
- 空かどうか判定するEmpty()を定義したCupクラスとLiquidクラスを継承したCoffeeクラスを作って、HumanクラスにRefill(Cup,Liquid),Drink(Cup)を定義すればいいだけだ
if(cup.Empty()) { human.Refill(cup,coffee); } else { human.Drink(Cup); }
- 6 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 22:47:52.22 ID:i0IFFoJB.net]
- コーヒーの属性定義が広範囲すぎる
量をのオブジェクトに突然、実態コーヒーを入れている 量のオブジェクトの範囲のクラスを作っる コーヒークラスに量をコンポジションさせる 設計の間違え
- 7 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 22:51:39.37 ID:GCWuNCn0.net]
- >>4
単純。 コーヒーはただの量であり、人間オブジェクトの一変数だ。 いや、コーヒーはオブジェクトであり、生成からの時間により温度変数の値が変わる。 いや、コーヒー生成の時刻を保持するのは人間であり、コーヒーの温度を計算するのは人間である。 いや、コーヒーはコーヒーサーバーオブジェクトの変数であり、、、、
- 8 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 22:55:26.17 ID:i0IFFoJB.net]
- >>5
ま^、これでもいいがこれをオブジェクト指向と思っている時点で 何をやっても後が大変。
- 9 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 23:02:31.55 ID:zW6slUa6.net]
- >>8
目的次第としか言えんわ 直感的なコードが求められるなら>>5ってだけ
- 10 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 23:15:31.85 ID:i0IFFoJB.net]
- その直感が、直感的だと思う時点
斜め直感にしか見えん
- 11 名前:デフォルトの名無しさん [2016/01/05(火) 23:33:07.12 ID:QVqdPGfo.net]
- すまん、自動で口にコーヒー注いでくれない前時代のコップ使ってる雑魚おる?
- 12 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 00:33:16.74 ID:73ZB/O6z.net]
- 胃瘻はかなり前に技術だが
- 13 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 02:56:11.57 ID:MPHK5bs1.net]
- >>5
おまえはカップを飲むのかw
- 14 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 06:53:26.42 ID:UF966QGg.net]
- 現実をそのままモデル化してOO否定って5周くらい遅れとるで
- 15 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 07:15:47.25 ID:QNndC4zW.net]
- 形式主義ではコーヒーを椅子に置き換えても成り立つってことをいいたいんじゃないのか。
- 16 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 08:11:16.53 ID:xFxLYqzC.net]
- >>14
>>4は現実をそのままモデル化できていない。 大事なのは、そのままモデル化するのではなく、どうモデル化するかなのだ。
- 17 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 08:45:38.03 ID:/XlzX9bH.net]
- 人間は現実を直接みてるわけじゃないからね
- 18 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 08:58:13.58 ID:9xF4ChVe.net]
- まー初心者(OOだけでなくプログラミング全般の初心者)向けのオブジェクト指向の解説とかでよくある説明だよね。
「オブジェクトとは日本語で物、対象物などという意味です」みたいなさ。とっかかりとしては平易なためによく使われているけど、 数学の定義のように後生大事にするべき、応用の効く、正しいイメージじゃない。
- 19 名前:デフォルトの名無しさん [2016/01/06(水) 11:11:49.69 ID:wCEM/hYT.net]
- >>1
乙
- 20 名前:デフォルトの名無しさん [2016/01/06(水) 11:14:02.62 ID:Nukx80Um.net]
- クラスは原子陽子中性子くらいから完璧に継承すべき
- 21 名前:デフォルトの名無しさん [2016/01/06(水) 11:15:12.81 ID:nQqbz+/u.net]
- メソッドに何かやらせるのはやめて全て物理演算で動作を決めるべき
- 22 名前:デフォルトの名無しさん [2016/01/06(水) 11:19:28.24 ID:dAXQ+tnq.net]
- コンピュータ内でシミュレートするのではなく実際の分子原子を用いるべき
- 23 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 11:34:29.07 ID:KjcuT4OL.net]
- そんなことしたら分子原子の仕様変更で全てがひっくり返るぞ
- 24 名前:デフォルトの名無しさん [2016/01/06(水) 11:54:24.95 ID:nQqbz+/u.net]
- メソッドコールのかわりにオブジェクトに対するフォースとトルクを搭載した言語を作ればいい
- 25 名前:デフォルトの名無しさん [2016/01/06(水) 11:57:30.95 ID:nQqbz+/u.net]
- >>13
これ、どう表現すべきなのか?
- 26 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 12:01:41.51 ID:QNndC4zW.net]
- beDrank, beRefilledにかえればいいだけだろ。
- 27 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 12:26:10.76 ID:HvQ48C0N.net]
- >>25
drinkに渡すのはcup.contentsとかにする?
- 28 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 13:44:41.72 ID:ZUCJrGIg.net]
- >>4は一般的なコーヒーのモデル化じゃなくて
コーヒーの消費が常態化したマの皮肉じゃないの 最後にコメント付いてるし
- 29 名前:デフォルトの名無しさん [2016/01/06(水) 21:55:30.95 ID:kAnzyWXR.net]
- オブジェクト指向は無理
- 30 名前:デフォルトの名無しさん [2016/01/06(水) 21:55:58.83 ID:zRcw+KQb.net]
- まったく直感的ではないな
- 31 名前:デフォルトの名無しさん [2016/01/06(水) 21:56:37.47 ID:fWGpYiip.net]
- こうしてクソみたいなソースコードが溢れた
- 32 名前:デフォルトの名無しさん [2016/01/06(水) 21:57:33.23 ID:ljmmccCR.net]
- >>25-27
こんな議論になる時点でオブジェクト指向はヤバいだろ
- 33 名前:デフォルトの名無しさん [2016/01/06(水) 21:58:49.59 ID:ljmmccCR.net]
- >>2
死ね
- 34 名前:デフォルトの名無しさん [2016/01/06(水) 22:00:48.90 ID:vTtwKBx3.net]
- >>9
そこまでしてオブジェクト指向にこだわる意味がわからない。 そんなもんperlやrubyのワンライナーですませろよ
- 35 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 00:25:26.48 ID:idw/W9gn.net]
- オブジェクト指向も結局はコミュニケーションというか
メソッド(関数)指向という方が正しい。 結局はメソッド(関数)をどのように呼ばれるか、まとめられるかってことだから。
- 36 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 01:03:06.56 ID:Spe75WNW.net]
- メソッドは関数ではない
メソッドとは特定のオブジェクトにのみ適用可能な手続きであり、 関数とは特定のオブジェクトに依存しないものである 特に純粋関数は状態にも依存せず、参照等価性が成り立つものである ところでオブジェクトが状態を持たず、メソッドを持たなければ、 それは単なるデータ(例えばハッシュマップ)と同じである 従ってオブジェクトというものは状態、及びメソッドの存在を暗示している オブジェクト志向とは全てのものを変更可能なデータ(言い換えればエンティティ)とメソッドで表そうという観念である 関数型はそれに反して極力多くのものを変更不可能なデータ(値)と関数で表そうとする ここの話はいわゆるドメイン駆動設計にも絡んでいる どちらが、現実世界の捨象に有用であるかということが問題なのである
- 37 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 01:15:30.61 ID:Spe75WNW.net]
- オブジェクト志向で実装可能なことは、原理的に関数型でも実装可能であり
関数型で実装可能なことは原理的にオブジェクト志向でも実装可能なはずである 関数はオブジェクト志向においては、staticクラスを使えば実装できる メソッドは関数型においては、第一引数によって動作を変更するポリモーフィズムとして実装できる 問題はどちらが汎化に適しているかということなのである 関数型にはオブジェクト指向では綺麗に実装できない麗としてマルチメソッドというものがある これは第一引数及び第二引数+・・・の型を持ってして動作を変更するという技であるが、 特定のオブジェクトに依存しているオブジェクトにおいてはこれはif文を内包したディスパッチをする他に実装する方法はないだろう 一方staticクラスによる関数のパッケージ化は煩雑である 必要な関数だけをインポートするには、その関数を内包したstaticクラスをインポートする必要がある もしここで厳密なカプセル化を適用するならば、 1つの関数のために1つのクラスを使う必要がある、さもなくば利用可能でない関数も同時にインポートしてしまう カプセル化もまた、オブジェクト志向の特権ではないのである 関数型は関数をカプセル化しているのである そして変数のカプセル化もまたクロージャで実装できる オブジェクト志向での変数のカプセル化は容易ではあるが、本当に変数はカプセル化されるべきか それが私の問いなのである
- 38 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 01:40:36.54 ID:6wDD5ILY.net]
- >>37
その問いにおける「変数」とは状態のことであるから、 それは構造化・カプセル化によってアクセス制限されるべきなのは明らか。
- 39 名前:デフォルトの名無しさん [2016/01/07(木) 02:02:35.73 ID:EDvZlrKk.net]
- >>1>>4
結局のところ、この問題に誰もが納得するシンプルな回答を示せない奴が設計するからデスマーチになるんだろ。
- 40 名前:uy ◆Qawu9.2l1E mailto:sage [2016/01/07(木) 03:17:27.43 ID:VBUUQOGk.net]
- 自分も参加してるプロジェクトでデスマが起こるなら多分自分にも原因があるんだと思うよ
- 41 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 03:22:02.67 ID:Y5yasR7+.net]
- >>4
そもそもなんでコーヒーに命令するとコーヒーが自分で動作してんだよ。 そんなコーヒーがあるかw いきなり設計段階から間違ってるじゃねーか どう考えても最後の"//I am a software developer"って時点で そういう設計をやらかす>>4みてぇなバカを揶揄したセルフパロじゃんかw
- 42 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 04:03:14.50 ID:Y5yasR7+.net]
- ああ、ジョークまで完全に見えた
>>4は「プログラマがコーヒーを飲む」じゃなくて 「コーヒーがプログラマに飲まれる」って逆転ジョークで 絶え間なくコーヒーが自動的にプログラマに注がれ続ける おかしな逆転コードでプログラマジョークになってんだ。 「こいつをみてくれ」じゃねーよ!プププ
- 43 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 04:17:18.05 ID:boatvz1E.net]
- >>36-37 が大嘘であることはOCamlの存在が証明している
- 44 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 14:46:08.69 ID:Geoe+pHe.net]
- こういう根本的に理解できてないのが大量に居る時点で、オブジェクト指向は愚かな考えw
- 45 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 15:46:48.63 ID:bWvRU875.net]
- コーヒーはどうでもいいけど、
2.log() とか数に数学的関数計算をくっつけるってどうなのよ? 気持ち悪いったらありゃしねえ。
- 46 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 18:04:34.20 ID:nwSyjPdt.net]
- 数学みたいにlog(2)でいいと思うが。
その()は何のためにあるんだと言いたい。
- 47 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 19:24:41.82 ID:bWvRU875.net]
- 大分昔だけどフリー関数は気持ち悪くて、1.sin()とか1.cos()とか書けるのが本来の在り方だ、といった
痛い記事を読んだ記憶がある。Rubyがらみだったかなあ。 今ちょっと検索すると見つからないから俺の妄想なのかもしれん。
- 48 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 19:33:58.76 ID:LLMMv1AA.net]
- 数字は計算をしないからそう書いちゃいかんのだけどな
- 49 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 19:53:48.55 ID:wknU54yj.net]
- + 1 2
- 50 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 21:42:11.31 ID:a7kpSA/c.net]
- 死ね括弧
- 51 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 21:57:00.05 ID:sG4YEGv+.net]
- (スズ)
拝承
- 52 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 22:18:47.33 ID:a7kpSA/c.net]
- >>46
> 何のため 関数そのものなのか、関数を呼び出した結果なのかを区別する括弧。 括弧がなければ関数そのもの、あれば関数呼び出しの結果。 括弧がなければlogという関数そのもの、あればlog(hoge)の計算結果。 かどうかは言語による。
- 53 名前:デフォルトの名無しさん [2016/01/09(土) 14:00:07.10 ID:8eWGVEYX.net]
- >>45
こういう主語述語みたいなくだらない議論に陥るのがオブジェクト指向の最大の問題点だな どっちでもいいからそのためのテストなりサンプルコードをがつがつ作ってくれれば問題ないんだが 糞みたいな議論ばっかりふっかける輩を生むところが最大の問題点だな。
- 54 名前:デフォルトの名無しさん [2016/01/09(土) 14:37:25.60 ID:hdqMNonU.net]
- >>53
何も考えずに作業こなすだけの社畜 VS 議論ばかりやる頭でっかち ファイッ!!
- 55 名前:デフォルトの名無しさん [2016/01/09(土) 16:12:34.83 ID:8eWGVEYX.net]
- >>54
極論煽るだけのカスも大概だけどな
- 56 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 17:15:53.50 ID:3kY/wzgi.net]
- >>53
ドット構文を変な風に使うバカの問題であってオブジェクト指向関係ないな。
- 57 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 18:23:24.86 ID:oGyr6/WF.net]
- 主語述語っていうけど、オブジェクトは目的語だからね
- 58 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 19:25:35.83 ID:oGyr6/WF.net]
- 昔ながらのfunc( obj ); 形式だと、オブジェクトを主語と考える人はいないだろうし
obj.func(); は↑が変形したものにすぎないから同じ理屈だよね しかも時期C++ではfunc( obj )でもobj.func()でもどちらの形式でも呼び出せるようにするって C++の超偉い人がやる気満々だし、見た目は最早重要ではないよね 普通に考えると、主語はコンピュータや処理系だね プログラミングを全然知らない人でも、主語は誰?って聞いたらコンピュータって答えるだろうね 何するにしても、結局実行するのはコンピュータだからね これが全く現実世界でおこっている物理現象なのに、あえてオブジェクトを主語という風に ひねくれた別な観点で考え直す必要は無いね 現実世界に合わせて、主語をコンピュータ、オブジェクトを目的語、関数を述語、と捉えると それで多態や継承が出来なくなるっつーんなら困るけど、そういうわけではないからね だったら現実世界で起こっていることに合わせて考えたほうが自然だね
- 59 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 19:39:23.22 ID:OrUjMMRy.net]
- メッセージングのオブジェクト指向の言い方で言うと、
主語はメッセージのレシーバであり、文の残りはメッセージだ
- 60 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 23:40:46.34 ID:3kY/wzgi.net]
- >>58 チンパンジーのアイちゃんかな?
- 61 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 23:55:42.86 ID:CpCNnIMM.net]
- >>58
x.sin() では x がオブジェクトで、sinというメソッド(もしくはメッセージ?)を処理していて、 sin(x) では sin がオブジェクトで、xという入力を処理している。 どちらかの方がよりオブジェクト指向的だという序列なんかない。 数学関数それ自体をオブジェクトと認めようとしない思想(?)の根源は何なんだ?
- 62 名前:デフォルトの名無しさん [2016/01/10(日) 00:13:34.71 ID:MD/fGeTk.net]
- ポーランド記法嫌いそう
- 63 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 00:21:12.30 ID:sdj7zt3O.net]
- 演算子前置のポーランド記法は嫌いだなぁ
存在する意味がわからないレベルで嫌い。 演算子後置の逆ポーランドじゃないとね。
- 64 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 00:34:49.51 ID:0XznusY4.net]
- > 存在する意味がわからないレベルで嫌い。
なんで? > 演算子後置の逆ポーランドじゃないとね。 なんで?
- 65 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 00:40:13.45 ID:hoksOuY6.net]
- Add 3 to 5, then multiple it by 2.
- 66 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 01:09:07.40 ID:UgGJRpwk.net]
- 逆ポーランドの方が実装しやすいと思う。
人それぞれの範疇だが。
- 67 名前:デフォルトの名無しさん [2016/01/10(日) 01:11:54.59 ID:MiN6/z6v.net]
- >逆ポーランドの方が実装しやすいと思う。
意味がわからん。 構文木作るのに一番前と後でなんか変わるか? AST作らずにそのまま逐次実行するならスタックに 積むだけでいい逆ポーランドの方がいいかもしれんが
- 68 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 01:16:08.27 ID:+l1yiqNW.net]
- x.sin() では x がオブジェクトで、sinというメソッド(もしくはメッセージ?)を処理していて、
sin(x) では sin がオブジェクトで、xという入力を処理している。 どちらかの方がよりオブジェクト指向的だという序列なんかない。 数学関数それ自体をオブジェクトと認めようとしない思想(?)の根源は何なんだ? 違うよな どちらがオブジェクト志向的かといえばx.sin()でしょ xというオブジェクトにsin()というメソッドが属しているという考えなんだから sin()は関数に対してxというオブジェクト、あるいは単にデータを引き渡しているだけ 後者は明らかに関数的な考え方、動詞優位
- 69 名前:デフォルトの名無しさん [2016/01/10(日) 01:27:11.07 ID:hZikTLMs.net]
- 関数へのエイリアスのようなメソッドはドットで繋ぐのでなく、
別の文字にした方がいいよな。
- 70 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 01:29:17.31 ID:sdj7zt3O.net]
- 釣りじゃなくて単に本当にあたまおかしいのかな?
Xはデータであって演算ではない。Xは演算しない。 Xをオブジェクトとして扱った場合、その操作として実装されるメソッドは データのゲットセットなど内部状態を隠蔽するためのメソッドと 可変不変などのデータ状態をあらわすメソッド。 まだお前の脳内じゃおまえがコーヒーを飲むんじゃなくて コーヒーが勝手に口に飛び込んで来てんのか。
- 71 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 01:29:19.21 ID:Ch7U5rc3.net]
- x.sin()は手続き言語的だと思うけどなあ
もちろんsin(x)も。 オブジェクト指向ならメッセージを送るような記述の方が自然では
- 72 名前:デフォルトの名無しさん [2016/01/10(日) 01:52:12.61 ID:hZikTLMs.net]
- 現実世界をオブジェクト指向に当てはめるやついるけど馬鹿だよなー
コーヒーが勝手に口まで運ばれてくる機能をコーヒにつけただけじゃんw ついでにコーヒーがしゃべる機能もつけたよ。 問題がないからそういう設計にしたんですよ
- 73 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 01:53:23.52 ID:+l1yiqNW.net]
- どちらがより汎化されているかではなく
具体例で語ろうとする人間は、プログラムを実装したことがないのでは? 具体的な手続きによる具体的な文字通りのプログラムを書きたいなら Cでかいてどうぞ
- 74 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 01:59:31.92 ID:+l1yiqNW.net]
- オブジェクト指向だろうと関数志向だろうとやってることは変わらない
オブジェクトはメソッドの第一引数でしかない コーヒーを飲むという行為を書くためには手続き的に書くしか無い コーヒーが俺の口の中にあるという結果を宣言的に書きたいのに その手続きを丹念に描写したいならそうすればいい I.drink(coffee)と書けばいいんだよ I.drink(coffee)とyou.drink(coffee)は飲み方が違う!というのならそう実装すればよい モデリングとは物事を単純化する行為、汎化する行為であって具象化する行為ではない Iとyouの違いがモデルのキーポイントなら、Iとyouという(メソッドの第一引数)をパラメータに加えればいいし そうでないなら含まないほうがモデルがシンプルに保たれる 数学ができない自称モデラーはプログラムを手続き的に書いたらいいんだよ
- 75 名前:デフォルトの名無しさん [2016/01/10(日) 02:00:42.57 ID:hZikTLMs.net]
- 特化させたいのに汎化する必要ある?
狭い世界で使うなら特化させていい。 広い世界で使うなら汎化させる。 それだけ。
- 76 名前:デフォルトの名無しさん [2016/01/10(日) 02:03:41.63 ID:hZikTLMs.net]
- 汎化と特化させるもんを決めるのが設計な
- 77 名前:デフォルトの名無しさん [2016/01/10(日) 02:42:12.92 ID:JhCLPk/2.net]
- >>74
言ってることはわかるがコーヒーを主語に対象を汎化なら coffee1.drunkBy(me); coffee2.drunkBy(you); だろ
- 78 名前:デフォルトの名無しさん [2016/01/10(日) 03:01:38.69 ID:JhCLPk/2.net]
- >>72
普通モデリングなんて想定される実装の多さや効率の問題で変えるものだからね 感性にまかせる初心者ほど文脈や抽象に拘って依存性の上下を無視するよ
- 79 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 04:22:46.36 ID:sdj7zt3O.net]
- アクセル→エンジン→ギア→タイヤじゃなくて
タイヤ.回転で自動車設計してそうだなおまえら。
- 80 名前:デフォルトの名無しさん [2016/01/10(日) 05:12:47.23 ID:JhCLPk/2.net]
- >>79
そうやって現実の構造を想定している時点でもう駄目なんだよ
- 81 名前:デフォルトの名無しさん [2016/01/10(日) 05:20:12.43 ID:JhCLPk/2.net]
- ちうかこれオブジェクトが目的語とか言ってる人か?
英語とプログラミングのobject混同とかとてもまともとは思えないよ
- 82 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 05:34:14.40 ID:97NQyWJD.net]
- >>74
JavaScriptだと実際foo.barは第0番目の引数を指定するための糖衣構文でしか無い オブジェクト指向は別にそんな大したものでも、手続き型と相容れないものでもない 指向とは言うが実際の所スタイルの一部だね
- 83 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 08:13:48.91 ID:86WjwACC.net]
- いいえ、自転車.操業で設計しています
- 84 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 08:49:55.36 ID:jS8+hJYw.net]
- >>82
そういう嘘をまき散らさないでもらいたいなあ。 毛の人といい、技術の普及は嘘との戦いだな。 オブジェクト指向は嘘つきが多すぎた。
- 85 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 09:36:41.30 ID:AcnVMiQc.net]
- >>68
いいえ。 sin(x) と書いたときのsinは十分オブジェクトに見えるでしょ。 xとsinは違う階層(空間)に属するモノだけど、後者の方が階層としては高い。 x.sin()と書くと、あるオブジェクトが自分より高い階層のオブジェクトを所有しているように見えてしまう。 これは俺にとっては不自然なので好きになれない。
- 86 名前:デフォルトの名無しさん [2016/01/10(日) 09:42:21.66 ID:KeJgEHCD.net]
- オブジェクト指向は手続き型と直行する概念だと理解してないのが何人かいるな
- 87 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 09:44:41.71 ID:sdj7zt3O.net]
- >>80
"現実の構造を想定しちゃダメ"て おまえの作るシステムはどんな現実離れした 脳内妄想ベースなんだよ。
- 88 名前:デフォルトの名無しさん [2016/01/10(日) 09:52:56.57 ID:Itquv6VW.net]
- sinは関数だろね。
テーブルを持つためにクラスを使わなければならない言語があったとしても、 極力、ユーザーにとって関数に見えるように実装するべきじゃないのかな。
- 89 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 10:08:13.09 ID:jS8+hJYw.net]
- 関数がオブジェクトじゃ何か困ることでも?
- 90 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 10:09:40.58 ID:jS8+hJYw.net]
- >>79
君が設計する自動車ではエンジンブレーキが効かないようだな。
- 91 名前:デフォルトの名無しさん [2016/01/10(日) 10:29:26.64 ID:hZikTLMs.net]
- ブレーキなんてのは外部から
ベクトルの力を操作するんだから 後付けで全然構わないんだが。
- 92 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 10:41:27.70 ID:AcnVMiQc.net]
- 関数を手続きだと思ってるならそれでいいけど、名前が関数ってだけで数学関数をそういうカテゴリーのものとするのは不適当でしょうね。
- 93 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 11:09:22.36 ID:hXY04te0.net]
- クロージャーって、関数なの?オブジェクトなの?
rubyだとProcのインスタンスでしかないよね
- 94 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 12:33:30.21 ID:jS8+hJYw.net]
- >>91
わからないなら無理に口を挟まないほうがいいよ。
- 95 名前:デフォルトの名無しさん [2016/01/10(日) 13:26:28.06 ID:Itquv6VW.net]
- >>92
関数が状態を持つべきかどうか考えると自ずと答えが出るのではないだろうか。
- 96 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 13:37:48.58 ID:UyzGSaeg.net]
- sin(x)は関数の値であって関数ではないよな。 関数は∀x∈double.sin(x)のことだよな。
- 97 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 13:51:03.83 ID:ainPuYsM.net]
- >>85
実装がどうあれ、OOPではメソッドはオブジェクトに属するものとして考えるから、 x.sin(value)の表記は不自然じゃ無いだろ。sinはオブジェクトxに属している。
- 98 名前:デフォルトの名無しさん [2016/01/10(日) 14:13:06.68 ID:Itquv6VW.net]
- >>97
それは不自然な考え方じゃないかな。 原点に立ち返ってみると、オブジェクト志向とはコード再利用に際して コンポーネント化の要求から発生したもの。 現実に存在する物のように、ディスプレイ上のウィンドウに四角形を 描画しろとメッセージを送るというようなシンプルなものだ。 この場合、四角形自体がオブジェクトであることは問題が無いように感じる。 これは、四角形が状態を保持しているからかもしれない。 一方、数値に対してsinを要求するのは突拍子もないように感じる。 これは、数値を日常いたるところで使用していて、数値がメッセージを受け取る性質を もたないと良く知ってるからではないだろうか。 あるいは計算機オブジェクトに対してsinを要求するなら不自然に感じないのかもしれない。 どうだろうか?
- 99 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 14:14:35.30 ID:CDx7UjTI.net]
- この種のくそ議論って恣意的な答えしかないんだから、
議論するだけ無駄なんだけどねぇ。
- 100 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 14:15:24.10 ID:AcnVMiQc.net]
- >>95
状態をもつかどうかは実装しだい。 関数を初期化するとき係数のセットを与えるとかあると思う。 関数がグループとしてまとまって環をなすとか
|

|