オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
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
2016/01/06(水) 13:44:41.72ID:ZUCJrGIg
29デフォルトの名無しさん
2016/01/06(水) 21:55:30.95ID:kAnzyWXR オブジェクト指向は無理
30デフォルトの名無しさん
2016/01/06(水) 21:55:58.83ID:zRcw+KQb まったく直感的ではないな
31デフォルトの名無しさん
2016/01/06(水) 21:56:37.47ID:fWGpYiip こうしてクソみたいなソースコードが溢れた
32デフォルトの名無しさん
2016/01/06(水) 21:57:33.23ID:ljmmccCR >>25-27
こんな議論になる時点でオブジェクト指向はヤバいだろ
こんな議論になる時点でオブジェクト指向はヤバいだろ
33デフォルトの名無しさん
2016/01/06(水) 21:58:49.59ID:ljmmccCR >>2
死ね
死ね
34デフォルトの名無しさん
2016/01/06(水) 22:00:48.90ID:vTtwKBx32016/01/07(木) 00:25:26.48ID:idw/W9gn
オブジェクト指向も結局はコミュニケーションというか
メソッド(関数)指向という方が正しい。
結局はメソッド(関数)をどのように呼ばれるか、まとめられるかってことだから。
メソッド(関数)指向という方が正しい。
結局はメソッド(関数)をどのように呼ばれるか、まとめられるかってことだから。
2016/01/07(木) 01:03:06.56ID:Spe75WNW
メソッドは関数ではない
メソッドとは特定のオブジェクトにのみ適用可能な手続きであり、
関数とは特定のオブジェクトに依存しないものである
特に純粋関数は状態にも依存せず、参照等価性が成り立つものである
ところでオブジェクトが状態を持たず、メソッドを持たなければ、
それは単なるデータ(例えばハッシュマップ)と同じである
従ってオブジェクトというものは状態、及びメソッドの存在を暗示している
オブジェクト志向とは全てのものを変更可能なデータ(言い換えればエンティティ)とメソッドで表そうという観念である
関数型はそれに反して極力多くのものを変更不可能なデータ(値)と関数で表そうとする
ここの話はいわゆるドメイン駆動設計にも絡んでいる
どちらが、現実世界の捨象に有用であるかということが問題なのである
メソッドとは特定のオブジェクトにのみ適用可能な手続きであり、
関数とは特定のオブジェクトに依存しないものである
特に純粋関数は状態にも依存せず、参照等価性が成り立つものである
ところでオブジェクトが状態を持たず、メソッドを持たなければ、
それは単なるデータ(例えばハッシュマップ)と同じである
従ってオブジェクトというものは状態、及びメソッドの存在を暗示している
オブジェクト志向とは全てのものを変更可能なデータ(言い換えればエンティティ)とメソッドで表そうという観念である
関数型はそれに反して極力多くのものを変更不可能なデータ(値)と関数で表そうとする
ここの話はいわゆるドメイン駆動設計にも絡んでいる
どちらが、現実世界の捨象に有用であるかということが問題なのである
2016/01/07(木) 01:15:30.61ID:Spe75WNW
オブジェクト志向で実装可能なことは、原理的に関数型でも実装可能であり
関数型で実装可能なことは原理的にオブジェクト志向でも実装可能なはずである
関数はオブジェクト志向においては、staticクラスを使えば実装できる
メソッドは関数型においては、第一引数によって動作を変更するポリモーフィズムとして実装できる
問題はどちらが汎化に適しているかということなのである
関数型にはオブジェクト指向では綺麗に実装できない麗としてマルチメソッドというものがある
これは第一引数及び第二引数+・・・の型を持ってして動作を変更するという技であるが、
特定のオブジェクトに依存しているオブジェクトにおいてはこれはif文を内包したディスパッチをする他に実装する方法はないだろう
一方staticクラスによる関数のパッケージ化は煩雑である
必要な関数だけをインポートするには、その関数を内包したstaticクラスをインポートする必要がある
もしここで厳密なカプセル化を適用するならば、
1つの関数のために1つのクラスを使う必要がある、さもなくば利用可能でない関数も同時にインポートしてしまう
カプセル化もまた、オブジェクト志向の特権ではないのである
関数型は関数をカプセル化しているのである
そして変数のカプセル化もまたクロージャで実装できる
オブジェクト志向での変数のカプセル化は容易ではあるが、本当に変数はカプセル化されるべきか
それが私の問いなのである
関数型で実装可能なことは原理的にオブジェクト志向でも実装可能なはずである
関数はオブジェクト志向においては、staticクラスを使えば実装できる
メソッドは関数型においては、第一引数によって動作を変更するポリモーフィズムとして実装できる
問題はどちらが汎化に適しているかということなのである
関数型にはオブジェクト指向では綺麗に実装できない麗としてマルチメソッドというものがある
これは第一引数及び第二引数+・・・の型を持ってして動作を変更するという技であるが、
特定のオブジェクトに依存しているオブジェクトにおいてはこれはif文を内包したディスパッチをする他に実装する方法はないだろう
一方staticクラスによる関数のパッケージ化は煩雑である
必要な関数だけをインポートするには、その関数を内包したstaticクラスをインポートする必要がある
もしここで厳密なカプセル化を適用するならば、
1つの関数のために1つのクラスを使う必要がある、さもなくば利用可能でない関数も同時にインポートしてしまう
カプセル化もまた、オブジェクト志向の特権ではないのである
関数型は関数をカプセル化しているのである
そして変数のカプセル化もまたクロージャで実装できる
オブジェクト志向での変数のカプセル化は容易ではあるが、本当に変数はカプセル化されるべきか
それが私の問いなのである
2016/01/07(木) 01:40:36.54ID:6wDD5ILY
39デフォルトの名無しさん
2016/01/07(木) 02:02:35.73ID:EDvZlrKk >>1>>4
結局のところ、この問題に誰もが納得するシンプルな回答を示せない奴が設計するからデスマーチになるんだろ。
結局のところ、この問題に誰もが納得するシンプルな回答を示せない奴が設計するからデスマーチになるんだろ。
40uy ◆Qawu9.2l1E
2016/01/07(木) 03:17:27.43ID:VBUUQOGk 自分も参加してるプロジェクトでデスマが起こるなら多分自分にも原因があるんだと思うよ
2016/01/07(木) 03:22:02.67ID:Y5yasR7+
2016/01/07(木) 04:03:14.50ID:Y5yasR7+
ああ、ジョークまで完全に見えた
>>4は「プログラマがコーヒーを飲む」じゃなくて
「コーヒーがプログラマに飲まれる」って逆転ジョークで
絶え間なくコーヒーが自動的にプログラマに注がれ続ける
おかしな逆転コードでプログラマジョークになってんだ。
「こいつをみてくれ」じゃねーよ!プププ
>>4は「プログラマがコーヒーを飲む」じゃなくて
「コーヒーがプログラマに飲まれる」って逆転ジョークで
絶え間なくコーヒーが自動的にプログラマに注がれ続ける
おかしな逆転コードでプログラマジョークになってんだ。
「こいつをみてくれ」じゃねーよ!プププ
2016/01/07(木) 04:17:18.05ID:boatvz1E
>>36-37 が大嘘であることはOCamlの存在が証明している
2016/01/07(木) 14:46:08.69ID:Geoe+pHe
こういう根本的に理解できてないのが大量に居る時点で、オブジェクト指向は愚かな考えw
2016/01/07(木) 15:46:48.63ID:bWvRU875
コーヒーはどうでもいいけど、
2.log() とか数に数学的関数計算をくっつけるってどうなのよ?
気持ち悪いったらありゃしねえ。
2.log() とか数に数学的関数計算をくっつけるってどうなのよ?
気持ち悪いったらありゃしねえ。
2016/01/07(木) 18:04:34.20ID:nwSyjPdt
数学みたいにlog(2)でいいと思うが。
その()は何のためにあるんだと言いたい。
その()は何のためにあるんだと言いたい。
2016/01/07(木) 19:24:41.82ID:bWvRU875
大分昔だけどフリー関数は気持ち悪くて、1.sin()とか1.cos()とか書けるのが本来の在り方だ、といった
痛い記事を読んだ記憶がある。Rubyがらみだったかなあ。
今ちょっと検索すると見つからないから俺の妄想なのかもしれん。
痛い記事を読んだ記憶がある。Rubyがらみだったかなあ。
今ちょっと検索すると見つからないから俺の妄想なのかもしれん。
2016/01/07(木) 19:33:58.76ID:LLMMv1AA
数字は計算をしないからそう書いちゃいかんのだけどな
2016/01/07(木) 19:53:48.55ID:wknU54yj
+ 1 2
2016/01/07(木) 21:42:11.31ID:a7kpSA/c
死ね括弧
2016/01/07(木) 21:57:00.05ID:sG4YEGv+
(スズ)
拝承
拝承
2016/01/07(木) 22:18:47.33ID:a7kpSA/c
>>46
> 何のため
関数そのものなのか、関数を呼び出した結果なのかを区別する括弧。
括弧がなければ関数そのもの、あれば関数呼び出しの結果。
括弧がなければlogという関数そのもの、あればlog(hoge)の計算結果。
かどうかは言語による。
> 何のため
関数そのものなのか、関数を呼び出した結果なのかを区別する括弧。
括弧がなければ関数そのもの、あれば関数呼び出しの結果。
括弧がなければlogという関数そのもの、あればlog(hoge)の計算結果。
かどうかは言語による。
53デフォルトの名無しさん
2016/01/09(土) 14:00:07.10ID:8eWGVEYX >>45
こういう主語述語みたいなくだらない議論に陥るのがオブジェクト指向の最大の問題点だな
どっちでもいいからそのためのテストなりサンプルコードをがつがつ作ってくれれば問題ないんだが
糞みたいな議論ばっかりふっかける輩を生むところが最大の問題点だな。
こういう主語述語みたいなくだらない議論に陥るのがオブジェクト指向の最大の問題点だな
どっちでもいいからそのためのテストなりサンプルコードをがつがつ作ってくれれば問題ないんだが
糞みたいな議論ばっかりふっかける輩を生むところが最大の問題点だな。
54デフォルトの名無しさん
2016/01/09(土) 14:37:25.60ID:hdqMNonU >>53
何も考えずに作業こなすだけの社畜 VS 議論ばかりやる頭でっかち ファイッ!!
何も考えずに作業こなすだけの社畜 VS 議論ばかりやる頭でっかち ファイッ!!
55デフォルトの名無しさん
2016/01/09(土) 16:12:34.83ID:8eWGVEYX >>54
極論煽るだけのカスも大概だけどな
極論煽るだけのカスも大概だけどな
2016/01/09(土) 17:15:53.50ID:3kY/wzgi
>>53
ドット構文を変な風に使うバカの問題であってオブジェクト指向関係ないな。
ドット構文を変な風に使うバカの問題であってオブジェクト指向関係ないな。
2016/01/09(土) 18:23:24.86ID:oGyr6/WF
主語述語っていうけど、オブジェクトは目的語だからね
2016/01/09(土) 19:25:35.83ID:oGyr6/WF
昔ながらのfunc( obj ); 形式だと、オブジェクトを主語と考える人はいないだろうし
obj.func(); は↑が変形したものにすぎないから同じ理屈だよね
しかも時期C++ではfunc( obj )でもobj.func()でもどちらの形式でも呼び出せるようにするって
C++の超偉い人がやる気満々だし、見た目は最早重要ではないよね
普通に考えると、主語はコンピュータや処理系だね
プログラミングを全然知らない人でも、主語は誰?って聞いたらコンピュータって答えるだろうね
何するにしても、結局実行するのはコンピュータだからね
これが全く現実世界でおこっている物理現象なのに、あえてオブジェクトを主語という風に
ひねくれた別な観点で考え直す必要は無いね
現実世界に合わせて、主語をコンピュータ、オブジェクトを目的語、関数を述語、と捉えると
それで多態や継承が出来なくなるっつーんなら困るけど、そういうわけではないからね
だったら現実世界で起こっていることに合わせて考えたほうが自然だね
obj.func(); は↑が変形したものにすぎないから同じ理屈だよね
しかも時期C++ではfunc( obj )でもobj.func()でもどちらの形式でも呼び出せるようにするって
C++の超偉い人がやる気満々だし、見た目は最早重要ではないよね
普通に考えると、主語はコンピュータや処理系だね
プログラミングを全然知らない人でも、主語は誰?って聞いたらコンピュータって答えるだろうね
何するにしても、結局実行するのはコンピュータだからね
これが全く現実世界でおこっている物理現象なのに、あえてオブジェクトを主語という風に
ひねくれた別な観点で考え直す必要は無いね
現実世界に合わせて、主語をコンピュータ、オブジェクトを目的語、関数を述語、と捉えると
それで多態や継承が出来なくなるっつーんなら困るけど、そういうわけではないからね
だったら現実世界で起こっていることに合わせて考えたほうが自然だね
2016/01/09(土) 19:39:23.22ID:OrUjMMRy
メッセージングのオブジェクト指向の言い方で言うと、
主語はメッセージのレシーバであり、文の残りはメッセージだ
主語はメッセージのレシーバであり、文の残りはメッセージだ
2016/01/09(土) 23:40:46.34ID:3kY/wzgi
>>58 チンパンジーのアイちゃんかな?
2016/01/09(土) 23:55:42.86ID:CpCNnIMM
>>58
x.sin() では x がオブジェクトで、sinというメソッド(もしくはメッセージ?)を処理していて、
sin(x) では sin がオブジェクトで、xという入力を処理している。
どちらかの方がよりオブジェクト指向的だという序列なんかない。
数学関数それ自体をオブジェクトと認めようとしない思想(?)の根源は何なんだ?
x.sin() では x がオブジェクトで、sinというメソッド(もしくはメッセージ?)を処理していて、
sin(x) では sin がオブジェクトで、xという入力を処理している。
どちらかの方がよりオブジェクト指向的だという序列なんかない。
数学関数それ自体をオブジェクトと認めようとしない思想(?)の根源は何なんだ?
62デフォルトの名無しさん
2016/01/10(日) 00:13:34.71ID:MD/fGeTk ポーランド記法嫌いそう
2016/01/10(日) 00:21:12.30ID:sdj7zt3O
演算子前置のポーランド記法は嫌いだなぁ
存在する意味がわからないレベルで嫌い。
演算子後置の逆ポーランドじゃないとね。
存在する意味がわからないレベルで嫌い。
演算子後置の逆ポーランドじゃないとね。
2016/01/10(日) 00:34:49.51ID:0XznusY4
> 存在する意味がわからないレベルで嫌い。
なんで?
> 演算子後置の逆ポーランドじゃないとね。
なんで?
なんで?
> 演算子後置の逆ポーランドじゃないとね。
なんで?
2016/01/10(日) 00:40:13.45ID:hoksOuY6
Add 3 to 5, then multiple it by 2.
2016/01/10(日) 01:09:07.40ID:UgGJRpwk
逆ポーランドの方が実装しやすいと思う。
人それぞれの範疇だが。
人それぞれの範疇だが。
67デフォルトの名無しさん
2016/01/10(日) 01:11:54.59ID:MiN6/z6v >逆ポーランドの方が実装しやすいと思う。
意味がわからん。
構文木作るのに一番前と後でなんか変わるか?
AST作らずにそのまま逐次実行するならスタックに
積むだけでいい逆ポーランドの方がいいかもしれんが
意味がわからん。
構文木作るのに一番前と後でなんか変わるか?
AST作らずにそのまま逐次実行するならスタックに
積むだけでいい逆ポーランドの方がいいかもしれんが
2016/01/10(日) 01:16:08.27ID:+l1yiqNW
x.sin() では x がオブジェクトで、sinというメソッド(もしくはメッセージ?)を処理していて、
sin(x) では sin がオブジェクトで、xという入力を処理している。
どちらかの方がよりオブジェクト指向的だという序列なんかない。
数学関数それ自体をオブジェクトと認めようとしない思想(?)の根源は何なんだ?
違うよな
どちらがオブジェクト志向的かといえばx.sin()でしょ
xというオブジェクトにsin()というメソッドが属しているという考えなんだから
sin()は関数に対してxというオブジェクト、あるいは単にデータを引き渡しているだけ
後者は明らかに関数的な考え方、動詞優位
sin(x) では sin がオブジェクトで、xという入力を処理している。
どちらかの方がよりオブジェクト指向的だという序列なんかない。
数学関数それ自体をオブジェクトと認めようとしない思想(?)の根源は何なんだ?
違うよな
どちらがオブジェクト志向的かといえばx.sin()でしょ
xというオブジェクトにsin()というメソッドが属しているという考えなんだから
sin()は関数に対してxというオブジェクト、あるいは単にデータを引き渡しているだけ
後者は明らかに関数的な考え方、動詞優位
69デフォルトの名無しさん
2016/01/10(日) 01:27:11.07ID:hZikTLMs 関数へのエイリアスのようなメソッドはドットで繋ぐのでなく、
別の文字にした方がいいよな。
別の文字にした方がいいよな。
2016/01/10(日) 01:29:17.31ID:sdj7zt3O
釣りじゃなくて単に本当にあたまおかしいのかな?
Xはデータであって演算ではない。Xは演算しない。
Xをオブジェクトとして扱った場合、その操作として実装されるメソッドは
データのゲットセットなど内部状態を隠蔽するためのメソッドと
可変不変などのデータ状態をあらわすメソッド。
まだお前の脳内じゃおまえがコーヒーを飲むんじゃなくて
コーヒーが勝手に口に飛び込んで来てんのか。
Xはデータであって演算ではない。Xは演算しない。
Xをオブジェクトとして扱った場合、その操作として実装されるメソッドは
データのゲットセットなど内部状態を隠蔽するためのメソッドと
可変不変などのデータ状態をあらわすメソッド。
まだお前の脳内じゃおまえがコーヒーを飲むんじゃなくて
コーヒーが勝手に口に飛び込んで来てんのか。
2016/01/10(日) 01:29:19.21ID:Ch7U5rc3
x.sin()は手続き言語的だと思うけどなあ
もちろんsin(x)も。
オブジェクト指向ならメッセージを送るような記述の方が自然では
もちろんsin(x)も。
オブジェクト指向ならメッセージを送るような記述の方が自然では
72デフォルトの名無しさん
2016/01/10(日) 01:52:12.61ID:hZikTLMs 現実世界をオブジェクト指向に当てはめるやついるけど馬鹿だよなー
コーヒーが勝手に口まで運ばれてくる機能をコーヒにつけただけじゃんw
ついでにコーヒーがしゃべる機能もつけたよ。
問題がないからそういう設計にしたんですよ
コーヒーが勝手に口まで運ばれてくる機能をコーヒにつけただけじゃんw
ついでにコーヒーがしゃべる機能もつけたよ。
問題がないからそういう設計にしたんですよ
2016/01/10(日) 01:53:23.52ID:+l1yiqNW
どちらがより汎化されているかではなく
具体例で語ろうとする人間は、プログラムを実装したことがないのでは?
具体的な手続きによる具体的な文字通りのプログラムを書きたいなら
Cでかいてどうぞ
具体例で語ろうとする人間は、プログラムを実装したことがないのでは?
具体的な手続きによる具体的な文字通りのプログラムを書きたいなら
Cでかいてどうぞ
2016/01/10(日) 01:59:31.92ID:+l1yiqNW
オブジェクト指向だろうと関数志向だろうとやってることは変わらない
オブジェクトはメソッドの第一引数でしかない
コーヒーを飲むという行為を書くためには手続き的に書くしか無い
コーヒーが俺の口の中にあるという結果を宣言的に書きたいのに
その手続きを丹念に描写したいならそうすればいい
I.drink(coffee)と書けばいいんだよ
I.drink(coffee)とyou.drink(coffee)は飲み方が違う!というのならそう実装すればよい
モデリングとは物事を単純化する行為、汎化する行為であって具象化する行為ではない
Iとyouの違いがモデルのキーポイントなら、Iとyouという(メソッドの第一引数)をパラメータに加えればいいし
そうでないなら含まないほうがモデルがシンプルに保たれる
数学ができない自称モデラーはプログラムを手続き的に書いたらいいんだよ
オブジェクトはメソッドの第一引数でしかない
コーヒーを飲むという行為を書くためには手続き的に書くしか無い
コーヒーが俺の口の中にあるという結果を宣言的に書きたいのに
その手続きを丹念に描写したいならそうすればいい
I.drink(coffee)と書けばいいんだよ
I.drink(coffee)とyou.drink(coffee)は飲み方が違う!というのならそう実装すればよい
モデリングとは物事を単純化する行為、汎化する行為であって具象化する行為ではない
Iとyouの違いがモデルのキーポイントなら、Iとyouという(メソッドの第一引数)をパラメータに加えればいいし
そうでないなら含まないほうがモデルがシンプルに保たれる
数学ができない自称モデラーはプログラムを手続き的に書いたらいいんだよ
75デフォルトの名無しさん
2016/01/10(日) 02:00:42.57ID:hZikTLMs 特化させたいのに汎化する必要ある?
狭い世界で使うなら特化させていい。
広い世界で使うなら汎化させる。
それだけ。
狭い世界で使うなら特化させていい。
広い世界で使うなら汎化させる。
それだけ。
76デフォルトの名無しさん
2016/01/10(日) 02:03:41.63ID:hZikTLMs 汎化と特化させるもんを決めるのが設計な
77デフォルトの名無しさん
2016/01/10(日) 02:42:12.92ID:JhCLPk/278デフォルトの名無しさん
2016/01/10(日) 03:01:38.69ID:JhCLPk/22016/01/10(日) 04:22:46.36ID:sdj7zt3O
アクセル→エンジン→ギア→タイヤじゃなくて
タイヤ.回転で自動車設計してそうだなおまえら。
タイヤ.回転で自動車設計してそうだなおまえら。
80デフォルトの名無しさん
2016/01/10(日) 05:12:47.23ID:JhCLPk/2 >>79
そうやって現実の構造を想定している時点でもう駄目なんだよ
そうやって現実の構造を想定している時点でもう駄目なんだよ
81デフォルトの名無しさん
2016/01/10(日) 05:20:12.43ID:JhCLPk/2 ちうかこれオブジェクトが目的語とか言ってる人か?
英語とプログラミングのobject混同とかとてもまともとは思えないよ
英語とプログラミングのobject混同とかとてもまともとは思えないよ
2016/01/10(日) 05:34:14.40ID:97NQyWJD
>>74
JavaScriptだと実際foo.barは第0番目の引数を指定するための糖衣構文でしか無い
オブジェクト指向は別にそんな大したものでも、手続き型と相容れないものでもない
指向とは言うが実際の所スタイルの一部だね
JavaScriptだと実際foo.barは第0番目の引数を指定するための糖衣構文でしか無い
オブジェクト指向は別にそんな大したものでも、手続き型と相容れないものでもない
指向とは言うが実際の所スタイルの一部だね
2016/01/10(日) 08:13:48.91ID:86WjwACC
いいえ、自転車.操業で設計しています
2016/01/10(日) 08:49:55.36ID:jS8+hJYw
2016/01/10(日) 09:36:41.30ID:AcnVMiQc
>>68
いいえ。
sin(x) と書いたときのsinは十分オブジェクトに見えるでしょ。
xとsinは違う階層(空間)に属するモノだけど、後者の方が階層としては高い。
x.sin()と書くと、あるオブジェクトが自分より高い階層のオブジェクトを所有しているように見えてしまう。
これは俺にとっては不自然なので好きになれない。
いいえ。
sin(x) と書いたときのsinは十分オブジェクトに見えるでしょ。
xとsinは違う階層(空間)に属するモノだけど、後者の方が階層としては高い。
x.sin()と書くと、あるオブジェクトが自分より高い階層のオブジェクトを所有しているように見えてしまう。
これは俺にとっては不自然なので好きになれない。
86デフォルトの名無しさん
2016/01/10(日) 09:42:21.66ID:KeJgEHCD オブジェクト指向は手続き型と直行する概念だと理解してないのが何人かいるな
2016/01/10(日) 09:44:41.71ID:sdj7zt3O
88デフォルトの名無しさん
2016/01/10(日) 09:52:56.57ID:Itquv6VW sinは関数だろね。
テーブルを持つためにクラスを使わなければならない言語があったとしても、
極力、ユーザーにとって関数に見えるように実装するべきじゃないのかな。
テーブルを持つためにクラスを使わなければならない言語があったとしても、
極力、ユーザーにとって関数に見えるように実装するべきじゃないのかな。
2016/01/10(日) 10:08:13.09ID:jS8+hJYw
関数がオブジェクトじゃ何か困ることでも?
2016/01/10(日) 10:09:40.58ID:jS8+hJYw
>>79
君が設計する自動車ではエンジンブレーキが効かないようだな。
君が設計する自動車ではエンジンブレーキが効かないようだな。
91デフォルトの名無しさん
2016/01/10(日) 10:29:26.64ID:hZikTLMs ブレーキなんてのは外部から
ベクトルの力を操作するんだから
後付けで全然構わないんだが。
ベクトルの力を操作するんだから
後付けで全然構わないんだが。
2016/01/10(日) 10:41:27.70ID:AcnVMiQc
関数を手続きだと思ってるならそれでいいけど、名前が関数ってだけで数学関数をそういうカテゴリーのものとするのは不適当でしょうね。
2016/01/10(日) 11:09:22.36ID:hXY04te0
クロージャーって、関数なの?オブジェクトなの?
rubyだとProcのインスタンスでしかないよね
rubyだとProcのインスタンスでしかないよね
2016/01/10(日) 12:33:30.21ID:jS8+hJYw
>>91
わからないなら無理に口を挟まないほうがいいよ。
わからないなら無理に口を挟まないほうがいいよ。
95デフォルトの名無しさん
2016/01/10(日) 13:26:28.06ID:Itquv6VW >>92
関数が状態を持つべきかどうか考えると自ずと答えが出るのではないだろうか。
関数が状態を持つべきかどうか考えると自ずと答えが出るのではないだろうか。
2016/01/10(日) 13:37:48.58ID:UyzGSaeg
sin(x)は関数の値であって関数ではないよな。 関数は∀x∈double.sin(x)のことだよな。
2016/01/10(日) 13:51:03.83ID:ainPuYsM
98デフォルトの名無しさん
2016/01/10(日) 14:13:06.68ID:Itquv6VW >>97
それは不自然な考え方じゃないかな。
原点に立ち返ってみると、オブジェクト志向とはコード再利用に際して
コンポーネント化の要求から発生したもの。
現実に存在する物のように、ディスプレイ上のウィンドウに四角形を
描画しろとメッセージを送るというようなシンプルなものだ。
この場合、四角形自体がオブジェクトであることは問題が無いように感じる。
これは、四角形が状態を保持しているからかもしれない。
一方、数値に対してsinを要求するのは突拍子もないように感じる。
これは、数値を日常いたるところで使用していて、数値がメッセージを受け取る性質を
もたないと良く知ってるからではないだろうか。
あるいは計算機オブジェクトに対してsinを要求するなら不自然に感じないのかもしれない。
どうだろうか?
それは不自然な考え方じゃないかな。
原点に立ち返ってみると、オブジェクト志向とはコード再利用に際して
コンポーネント化の要求から発生したもの。
現実に存在する物のように、ディスプレイ上のウィンドウに四角形を
描画しろとメッセージを送るというようなシンプルなものだ。
この場合、四角形自体がオブジェクトであることは問題が無いように感じる。
これは、四角形が状態を保持しているからかもしれない。
一方、数値に対してsinを要求するのは突拍子もないように感じる。
これは、数値を日常いたるところで使用していて、数値がメッセージを受け取る性質を
もたないと良く知ってるからではないだろうか。
あるいは計算機オブジェクトに対してsinを要求するなら不自然に感じないのかもしれない。
どうだろうか?
2016/01/10(日) 14:14:35.30ID:CDx7UjTI
この種のくそ議論って恣意的な答えしかないんだから、
議論するだけ無駄なんだけどねぇ。
議論するだけ無駄なんだけどねぇ。
100デフォルトの名無しさん
2016/01/10(日) 14:15:24.10ID:AcnVMiQc101デフォルトの名無しさん
2016/01/10(日) 14:17:25.96ID:ainPuYsM つか、sin(x)ってなんやねんw
引数無しのメソッドの話か? それならsinは例として不適当だ。
sinを例にするなら、x.sin(value) か、sin(x, value) だろ。
引数無しのメソッドの話か? それならsinは例として不適当だ。
sinを例にするなら、x.sin(value) か、sin(x, value) だろ。
102デフォルトの名無しさん
2016/01/10(日) 14:17:26.78ID:AcnVMiQc103デフォルトの名無しさん
2016/01/10(日) 14:17:31.05ID:Itquv6VW こういうシンプルな考えに基づくと、四角形と三角形は形状クラスから
派生すると思われる。
しかし、四角形オブジェクトと三角形オブジェクトの合成メソッドは、形状クラスあるいは
その派生クラスにあってはならないように感じる。
それは形状合成器クラスに、あるいは単純な関数であった方が良いように感じる。
派生すると思われる。
しかし、四角形オブジェクトと三角形オブジェクトの合成メソッドは、形状クラスあるいは
その派生クラスにあってはならないように感じる。
それは形状合成器クラスに、あるいは単純な関数であった方が良いように感じる。
104デフォルトの名無しさん
2016/01/10(日) 14:21:04.23ID:JhCLPk/2105デフォルトの名無しさん
2016/01/10(日) 14:21:57.10ID:UyzGSaeg 属すじゃなくて依存するだと思うが。
106デフォルトの名無しさん
2016/01/10(日) 14:25:29.45ID:JhCLPk/2 例えばゲームでキャラクターが特定のアイテムを使用するモデル
キャラ.使う(アイテム)はもらうアイテムによってメソッドの動作を変える必要があるが
設計としてはアイテム.適用(キャラ)のが遥かに取り回しやすい
なのにあえて前者のクソ設計を選ぶのが>>87のようなオバカさん
キャラ.使う(アイテム)はもらうアイテムによってメソッドの動作を変える必要があるが
設計としてはアイテム.適用(キャラ)のが遥かに取り回しやすい
なのにあえて前者のクソ設計を選ぶのが>>87のようなオバカさん
107デフォルトの名無しさん
2016/01/10(日) 14:26:22.66ID:ainPuYsM108デフォルトの名無しさん
2016/01/10(日) 14:44:22.50ID:AcnVMiQc109デフォルトの名無しさん
2016/01/10(日) 14:48:45.22ID:jS8+hJYw Smalltalkerが引き上げたらもう初心者しか残ってないのかよ
110デフォルトの名無しさん
2016/01/10(日) 15:22:03.47ID:yvIOv1as111デフォルトの名無しさん
2016/01/10(日) 15:23:27.70ID:yvIOv1as 美少女が云々言うのも一般的なクラスベースは融通が効かないねという話であって
オブジェクト指向とは直接関係ないし
オブジェクト指向とは直接関係ないし
112デフォルトの名無しさん
2016/01/10(日) 15:44:15.32ID:KeJgEHCD >>111
ほう、それならウンコをしない美少女をオブジェクト指向で設計して貰おうか
ほう、それならウンコをしない美少女をオブジェクト指向で設計して貰おうか
113デフォルトの名無しさん
2016/01/10(日) 15:50:56.07ID:AcnVMiQc >>97
見逃したいたが、x.sin(value)の value って何だい?
見逃したいたが、x.sin(value)の value って何だい?
114デフォルトの名無しさん
2016/01/10(日) 16:06:27.16ID:ainPuYsM115デフォルトの名無しさん
2016/01/10(日) 16:18:07.80ID:hZikTLMs xって中身は例えばfloatのデータ自身だぞ?
だから、引数は必要ないんだぞ?
だから、引数は必要ないんだぞ?
116デフォルトの名無しさん
2016/01/10(日) 16:26:17.41ID:ainPuYsM117デフォルトの名無しさん
2016/01/10(日) 16:29:21.43ID:CDx7UjTI 一般に sin に必要な引数は、 pi/2 とかの実数(もしくは複素数) かな。
あとはいくつまでの級数和をとるとか何桁まで計算するとかが引数になるんじゃないかね。
その辺をあいまいなまま value とか x がクラスだの引数だの言ってることに何か意味があると思ってんのかね。
あとはいくつまでの級数和をとるとか何桁まで計算するとかが引数になるんじゃないかね。
その辺をあいまいなまま value とか x がクラスだの引数だの言ってることに何か意味があると思ってんのかね。
118デフォルトの名無しさん
2016/01/10(日) 16:34:25.26ID:ainPuYsM >>117
いや、sinの引数がオブジェクトの場合はあるよ。
実数や10進型をクラスで表現したりするし、俺も実際やる。
xがそういうオブジェクトなら、sin(x)でいいし、x.sin()はおかしい。
まあ絶対におかしいとか無理ってわけじゃないけどなw
いや、sinの引数がオブジェクトの場合はあるよ。
実数や10進型をクラスで表現したりするし、俺も実際やる。
xがそういうオブジェクトなら、sin(x)でいいし、x.sin()はおかしい。
まあ絶対におかしいとか無理ってわけじゃないけどなw
119デフォルトの名無しさん
2016/01/10(日) 16:54:55.24ID:yIre7PYR 新しいC++ではsin(x)でもx.sin()でも、どちらの方法でも統一的に呼び出せるようになる予定だから
こんな議論は全く意味ないんだよ?
呼び出す側からしたら、sinがメンバ関数だろうが外部関数だろうが、何であれ、知ったことではないからね
気にしなければならないのは実装する側だけ
だからどちらの方法でも呼び出せるようになる、らしい
どちらの方法でも呼び出せるんだから、喧嘩する必要ないし、気にする必要ないよね
こんな議論は全く意味ないんだよ?
呼び出す側からしたら、sinがメンバ関数だろうが外部関数だろうが、何であれ、知ったことではないからね
気にしなければならないのは実装する側だけ
だからどちらの方法でも呼び出せるようになる、らしい
どちらの方法でも呼び出せるんだから、喧嘩する必要ないし、気にする必要ないよね
120デフォルトの名無しさん
2016/01/10(日) 16:57:47.72ID:yIre7PYR どちらの方法でも呼び出せるんだから
どちらの方が、よりオブジェクト指向的か、考えるのは意味がないんだよ
等しいわけ、等価と考えてよい
見た目が違うだけ
大した問題じゃない
どちらの方が、よりオブジェクト指向的か、考えるのは意味がないんだよ
等しいわけ、等価と考えてよい
見た目が違うだけ
大した問題じゃない
121デフォルトの名無しさん
2016/01/10(日) 17:00:24.30ID:ainPuYsM なんか違うような気がするなw
122デフォルトの名無しさん
2016/01/10(日) 17:07:10.06ID:fbwGqbCo こんなにややこしいプログラムがオブジェクト指向を使って
こんなに簡潔になりましたって事例が欲しい
こんなに簡潔になりましたって事例が欲しい
123デフォルトの名無しさん
2016/01/10(日) 17:12:10.48ID:1042xGua >>112
思うんだけど、
うんkをしないというのが、
意思を持ってひたすら我慢して(人の目がある場所では)しないのか、
それとも腸内の美少女菌のおかげでする必要が無いのか、
もしくは他の何かなのかによってイメージが変わってくると思う。
でもしないにしろする必要がないにしろ、排便メソッド自体は備わっててもなんら問題ないと思う。
逆に、腸内やなんかの問題を解決せずに、排便メソッドだけ外して他を流用するということは、
オブジェクト指向的であろうがなかろうが不可能だと思う。
それこそ亞人として設計しなおして全ての手続やメソッドを別に用意することが妥当かもしれない。
だから結論を言うと、この例はそもそも良くないと思う。
思うんだけど、
うんkをしないというのが、
意思を持ってひたすら我慢して(人の目がある場所では)しないのか、
それとも腸内の美少女菌のおかげでする必要が無いのか、
もしくは他の何かなのかによってイメージが変わってくると思う。
でもしないにしろする必要がないにしろ、排便メソッド自体は備わっててもなんら問題ないと思う。
逆に、腸内やなんかの問題を解決せずに、排便メソッドだけ外して他を流用するということは、
オブジェクト指向的であろうがなかろうが不可能だと思う。
それこそ亞人として設計しなおして全ての手続やメソッドを別に用意することが妥当かもしれない。
だから結論を言うと、この例はそもそも良くないと思う。
124デフォルトの名無しさん
2016/01/10(日) 17:51:06.88ID:QPFpTdMb >>122
サイズを持っていてくれるのですら俺は嬉しいと思う
文字列や配列を扱うとき
int string::size() {return strlen(data);} // 数える関数を使うって例
↑こーいうのじゃなくて
int string::size() {return end - begin;} // 簡単な計算(ポインタの差分)で返す
int string::size() {return size;} // 内部でケアしていたprivate変数を返す
こういう実装をしうるのが嬉しい
使うときに
a = s.size * s.size / s.size % s.size
みたいにいっぱい呼び出しても安心
逆に言うとせっかく用意されたsizeメソッドが内部で数えなおしてる場合はつまらないと思う
サイズを持っていてくれるのですら俺は嬉しいと思う
文字列や配列を扱うとき
int string::size() {return strlen(data);} // 数える関数を使うって例
↑こーいうのじゃなくて
int string::size() {return end - begin;} // 簡単な計算(ポインタの差分)で返す
int string::size() {return size;} // 内部でケアしていたprivate変数を返す
こういう実装をしうるのが嬉しい
使うときに
a = s.size * s.size / s.size % s.size
みたいにいっぱい呼び出しても安心
逆に言うとせっかく用意されたsizeメソッドが内部で数えなおしてる場合はつまらないと思う
125デフォルトの名無しさん
2016/01/10(日) 19:10:53.94ID:fbwGqbCo >>124
なるほどねー。
なるほどねー。
126デフォルトの名無しさん
2016/01/10(日) 19:16:06.37ID:fbwGqbCo >>112
美少女はマーカーインターフェースであり、
美少女として扱うとき排便は隠蔽される。
interface 美少女 {
}
class おっさん implements 美少女 {
void 排便() {
}
}
美少女はマーカーインターフェースであり、
美少女として扱うとき排便は隠蔽される。
interface 美少女 {
}
class おっさん implements 美少女 {
void 排便() {
}
}
127デフォルトの名無しさん
2016/01/10(日) 20:20:59.69ID:VQDMXfnoレスを投稿する
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪 ★2
- 【実況】博衣こよりのえちえち朝こよ🧪
- カカロット、腰痛い
- 【悲報】高市早苗を妄信している今の日本人見ると80年前も市民は進んで戦争協力してたんだって理解出来るよね🥺 [616817505]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
