TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Lisp Scheme Part41
VisualBasic6.0 対 VisualBasic .NET 2003
シェルスクリプト総合 その28
テスト
Excel VBA 質問スレ Part63
Boost総合スレ part10
Visual Studio 2008 Part 22
安価でプログラミングの教科書を作るスレ
JavaScript情報交換所(プログラミング既習者専用)
次世代言語17 Go Rust Kotlin TypeScript Julia
オブジェクト指向は愚かな考え。この世は計算式 ★3
- 1 :2016/01/05 〜 最終レス :2020/05/19
- オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
https://twitter.com/ProgrammingMono/status/665702678006140928
研究グループは、血管新生注において血管が伸長する際の血管内皮細胞注運動を制御するしくみを、生物学と数理モデル・
コンピュータシミュレーションを融合させた先端的な研究手法により明らかにしました。
生物は、最小の機能単位である細胞が寄り集まった多細胞体です。しかし、細胞の集まりが、組織や器官といった
秩序ある形態や構造をつくり機能するしくみはほとんど分かっていません。中でも血管は、体中の全組織に十分な
酸素や栄養源を効率よく供給するため、組織や組織の間に入り込み、血管外の環境との相互作用により、巧妙な
枝分かれ構造をとっています。
これまでに本研究グループは、新しく血管がつくられる(血管新生)際の細胞の動きに着目し、特に血管内皮細胞の
動きをリアルタイムで可視化し、定量的に捉えることを可能にしてきました。
今回さらに、血管の伸長を制御するしくみについて、細胞が自発的に自らを制御して動く過程(自律的過程)と、
隣接した細胞から適宜影響を受けて動く過程(協調的過程)がうまく共存することで、全体の動きが巧みに統制
されていることを世界に先駆けて実証しました。
興味深いことに、血管内皮細胞が前後したり、お互いに追い抜きあったりという血管新生で見られる複雑な細胞集団の
動きを制御している中枢部分は、細胞一つ一つの動き(スピードと方向性)の「確率的な変化」として十分説明できる
ことをコンピュータシミュレーションで実証しました。
http://www.jst.go.jp/pr/announce/20151120-2/#YOUGO3
前スレ
オブジェクト指向は愚かな考え。この世は計算式 ★2
http://peace.2ch.sc/test/read.cgi/tech/1450153388/
- 2 :
- >>1 = ハゲ
>>3-1000
ゴミ
R
- 3 :
- 相変わらず気が狂ってるね
- 4 :
- オブジェクト指向は直観に反するんだよな。
こいつを見てくれ。
http://pbs.twimg.com/media/CW4jn4jUkAAqIlA.jpg
Coffeeオブジェクトに振る舞いがある。これはオブジェクト指向的に完全に正しい。
しかし、現実にコーヒーを飲むのは人間だ。コーヒーは人間によってカップに注がれる存在だ。
これが思考を混乱させる。オブジェクト指向に従うとよくわからないソースコードのできあがりだ。
データに振る舞いを持たせるのは大失敗だと言わざるを得ない。
- 5 :
- 空かどうか判定するEmpty()を定義したCupクラスとLiquidクラスを継承したCoffeeクラスを作って、HumanクラスにRefill(Cup,Liquid),Drink(Cup)を定義すればいいだけだ
if(cup.Empty())
{
human.Refill(cup,coffee);
}
else
{
human.Drink(Cup);
}
- 6 :
- コーヒーの属性定義が広範囲すぎる
量をのオブジェクトに突然、実態コーヒーを入れている
量のオブジェクトの範囲のクラスを作っる
コーヒークラスに量をコンポジションさせる
設計の間違え
- 7 :
- >>4
単純。
コーヒーはただの量であり、人間オブジェクトの一変数だ。
いや、コーヒーはオブジェクトであり、生成からの時間により温度変数の値が変わる。
いや、コーヒー生成の時刻を保持するのは人間であり、コーヒーの温度を計算するのは人間である。
いや、コーヒーはコーヒーサーバーオブジェクトの変数であり、、、、
- 8 :
- >>5
ま^、これでもいいがこれをオブジェクト指向と思っている時点で
何をやっても後が大変。
- 9 :
- >>8
目的次第としか言えんわ
直感的なコードが求められるなら>>5ってだけ
- 10 :
- その直感が、直感的だと思う時点
斜め直感にしか見えん
- 11 :
- すまん、自動で口にコーヒー注いでくれない前時代のコップ使ってる雑魚おる?
- 12 :
- 胃瘻はかなり前に技術だが
- 13 :
- >>5
おまえはカップを飲むのかw
- 14 :
- 現実をそのままモデル化してOO否定って5周くらい遅れとるで
- 15 :
- 形式主義ではコーヒーを椅子に置き換えても成り立つってことをいいたいんじゃないのか。
- 16 :
- >>14
>>4は現実をそのままモデル化できていない。
大事なのは、そのままモデル化するのではなく、どうモデル化するかなのだ。
- 17 :
- 人間は現実を直接みてるわけじゃないからね
- 18 :
- まー初心者(OOだけでなくプログラミング全般の初心者)向けのオブジェクト指向の解説とかでよくある説明だよね。
「オブジェクトとは日本語で物、対象物などという意味です」みたいなさ。とっかかりとしては平易なためによく使われているけど、
数学の定義のように後生大事にするべき、応用の効く、正しいイメージじゃない。
- 19 :
- >>1
乙
- 20 :
- クラスは原子陽子中性子くらいから完璧に継承すべき
- 21 :
- メソッドに何かやらせるのはやめて全て物理演算で動作を決めるべき
- 22 :
- コンピュータ内でシミュレートするのではなく実際の分子原子を用いるべき
- 23 :
- そんなことしたら分子原子の仕様変更で全てがひっくり返るぞ
- 24 :
- メソッドコールのかわりにオブジェクトに対するフォースとトルクを搭載した言語を作ればいい
- 25 :
- >>13
これ、どう表現すべきなのか?
- 26 :
- beDrank, beRefilledにかえればいいだけだろ。
- 27 :
- >>25
drinkに渡すのはcup.contentsとかにする?
- 28 :
- >>4は一般的なコーヒーのモデル化じゃなくて
コーヒーの消費が常態化したマの皮肉じゃないの
最後にコメント付いてるし
- 29 :
- オブジェクト指向は無理
- 30 :
- まったく直感的ではないな
- 31 :
- こうしてクソみたいなソースコードが溢れた
- 32 :
- >>25-27
こんな議論になる時点でオブジェクト指向はヤバいだろ
- 33 :
- >>2
R
- 34 :
- >>9
そこまでしてオブジェクト指向にこだわる意味がわからない。
そんなもんperlやrubyのワンライナーですませろよ
- 35 :
- オブジェクト指向も結局はコミュニケーションというか
メソッド(関数)指向という方が正しい。
結局はメソッド(関数)をどのように呼ばれるか、まとめられるかってことだから。
- 36 :
- メソッドは関数ではない
メソッドとは特定のオブジェクトにのみ適用可能な手続きであり、
関数とは特定のオブジェクトに依存しないものである
特に純粋関数は状態にも依存せず、参照等価性が成り立つものである
ところでオブジェクトが状態を持たず、メソッドを持たなければ、
それは単なるデータ(例えばハッシュマップ)と同じである
従ってオブジェクトというものは状態、及びメソッドの存在を暗示している
オブジェクト志向とは全てのものを変更可能なデータ(言い換えればエンティティ)とメソッドで表そうという観念である
関数型はそれに反して極力多くのものを変更不可能なデータ(値)と関数で表そうとする
ここの話はいわゆるドメイン駆動設計にも絡んでいる
どちらが、現実世界の捨象に有用であるかということが問題なのである
- 37 :
- オブジェクト志向で実装可能なことは、原理的に関数型でも実装可能であり
関数型で実装可能なことは原理的にオブジェクト志向でも実装可能なはずである
関数はオブジェクト志向においては、staticクラスを使えば実装できる
メソッドは関数型においては、第一引数によって動作を変更するポリモーフィズムとして実装できる
問題はどちらが汎化に適しているかということなのである
関数型にはオブジェクト指向では綺麗に実装できない麗としてマルチメソッドというものがある
これは第一引数及び第二引数+・・・の型を持ってして動作を変更するという技であるが、
特定のオブジェクトに依存しているオブジェクトにおいてはこれはif文を内包したディスパッチをする他に実装する方法はないだろう
一方staticクラスによる関数のパッケージ化は煩雑である
必要な関数だけをインポートするには、その関数を内包したstaticクラスをインポートする必要がある
もしここで厳密なカプセル化を適用するならば、
1つの関数のために1つのクラスを使う必要がある、さもなくば利用可能でない関数も同時にインポートしてしまう
カプセル化もまた、オブジェクト志向の特権ではないのである
関数型は関数をカプセル化しているのである
そして変数のカプセル化もまたクロージャで実装できる
オブジェクト志向での変数のカプセル化は容易ではあるが、本当に変数はカプセル化されるべきか
それが私の問いなのである
- 38 :
- >>37
その問いにおける「変数」とは状態のことであるから、
それは構造化・カプセル化によってアクセス制限されるべきなのは明らか。
- 39 :
- >>1>>4
結局のところ、この問題に誰もが納得するシンプルな回答を示せない奴が設計するからデスマーチになるんだろ。
- 40 :
- 自分も参加してるプロジェクトでデスマが起こるなら多分自分にも原因があるんだと思うよ
- 41 :
- >>4
そもそもなんでコーヒーに命令するとコーヒーが自分で動作してんだよ。
そんなコーヒーがあるかw
いきなり設計段階から間違ってるじゃねーか
どう考えても最後の"//I am a software developer"って時点で
そういう設計をやらかす>>4みてぇなバカを揶揄したセルフパロじゃんかw
- 42 :
- ああ、ジョークまで完全に見えた
>>4は「プログラマがコーヒーを飲む」じゃなくて
「コーヒーがプログラマに飲まれる」って逆転ジョークで
絶え間なくコーヒーが自動的にプログラマに注がれ続ける
おかしな逆転コードでプログラマジョークになってんだ。
「こいつをみてくれ」じゃねーよ!プププ
- 43 :
- >>36-37 が大嘘であることはOCamlの存在が証明している
- 44 :
- こういう根本的に理解できてないのが大量に居る時点で、オブジェクト指向は愚かな考えw
- 45 :
- コーヒーはどうでもいいけど、
2.log() とか数に数学的関数計算をくっつけるってどうなのよ?
気持ち悪いったらありゃしねえ。
- 46 :
- 数学みたいにlog(2)でいいと思うが。
その()は何のためにあるんだと言いたい。
- 47 :
- 大分昔だけどフリー関数は気持ち悪くて、1.sin()とか1.cos()とか書けるのが本来の在り方だ、といった
痛い記事を読んだ記憶がある。Rubyがらみだったかなあ。
今ちょっと検索すると見つからないから俺の妄想なのかもしれん。
- 48 :
- 数字は計算をしないからそう書いちゃいかんのだけどな
- 49 :
- + 1 2
- 50 :
- R括弧
- 51 :
- (スズ)
拝承
- 52 :
- >>46
> 何のため
関数そのものなのか、関数を呼び出した結果なのかを区別する括弧。
括弧がなければ関数そのもの、あれば関数呼び出しの結果。
括弧がなければlogという関数そのもの、あればlog(hoge)の計算結果。
かどうかは言語による。
- 53 :
- >>45
こういう主語述語みたいなくだらない議論に陥るのがオブジェクト指向の最大の問題点だな
どっちでもいいからそのためのテストなりサンプルコードをがつがつ作ってくれれば問題ないんだが
糞みたいな議論ばっかりふっかける輩を生むところが最大の問題点だな。
- 54 :
- >>53
何も考えずに作業こなすだけの社畜 VS 議論ばかりやる頭でっかち ファイッ!!
- 55 :
- >>54
極論煽るだけのカスも大概だけどな
- 56 :
- >>53
ドット構文を変な風に使うバカの問題であってオブジェクト指向関係ないな。
- 57 :
- 主語述語っていうけど、オブジェクトは目的語だからね
- 58 :
- 昔ながらのfunc( obj ); 形式だと、オブジェクトを主語と考える人はいないだろうし
obj.func(); は↑が変形したものにすぎないから同じ理屈だよね
しかも時期C++ではfunc( obj )でもobj.func()でもどちらの形式でも呼び出せるようにするって
C++の超偉い人がやる気満々だし、見た目は最早重要ではないよね
普通に考えると、主語はコンピュータや処理系だね
プログラミングを全然知らない人でも、主語は誰?って聞いたらコンピュータって答えるだろうね
何するにしても、結局実行するのはコンピュータだからね
これが全く現実世界でおこっている物理現象なのに、あえてオブジェクトを主語という風に
ひねくれた別な観点で考え直す必要は無いね
現実世界に合わせて、主語をコンピュータ、オブジェクトを目的語、関数を述語、と捉えると
それで多態や継承が出来なくなるっつーんなら困るけど、そういうわけではないからね
だったら現実世界で起こっていることに合わせて考えたほうが自然だね
- 59 :
- メッセージングのオブジェクト指向の言い方で言うと、
主語はメッセージのレシーバであり、文の残りはメッセージだ
- 60 :
- >>58 チンパンジーのアイちゃんかな?
- 61 :
- >>58
x.sin() では x がオブジェクトで、sinというメソッド(もしくはメッセージ?)を処理していて、
sin(x) では sin がオブジェクトで、xという入力を処理している。
どちらかの方がよりオブジェクト指向的だという序列なんかない。
数学関数それ自体をオブジェクトと認めようとしない思想(?)の根源は何なんだ?
- 62 :
- ポーランド記法嫌いそう
- 63 :
- 演算子前置のポーランド記法は嫌いだなぁ
存在する意味がわからないレベルで嫌い。
演算子後置の逆ポーランドじゃないとね。
- 64 :
- > 存在する意味がわからないレベルで嫌い。
なんで?
> 演算子後置の逆ポーランドじゃないとね。
なんで?
- 65 :
- Add 3 to 5, then multiple it by 2.
- 66 :
- 逆ポーランドの方が実装しやすいと思う。
人それぞれの範疇だが。
- 67 :
- >逆ポーランドの方が実装しやすいと思う。
意味がわからん。
構文木作るのに一番前と後でなんか変わるか?
AST作らずにそのまま逐次実行するならスタックに
積むだけでいい逆ポーランドの方がいいかもしれんが
- 68 :
- x.sin() では x がオブジェクトで、sinというメソッド(もしくはメッセージ?)を処理していて、
sin(x) では sin がオブジェクトで、xという入力を処理している。
どちらかの方がよりオブジェクト指向的だという序列なんかない。
数学関数それ自体をオブジェクトと認めようとしない思想(?)の根源は何なんだ?
違うよな
どちらがオブジェクト志向的かといえばx.sin()でしょ
xというオブジェクトにsin()というメソッドが属しているという考えなんだから
sin()は関数に対してxというオブジェクト、あるいは単にデータを引き渡しているだけ
後者は明らかに関数的な考え方、動詞優位
- 69 :
- 関数へのエイリアスのようなメソッドはドットで繋ぐのでなく、
別の文字にした方がいいよな。
- 70 :
- 釣りじゃなくて単に本当にあたまおかしいのかな?
Xはデータであって演算ではない。Xは演算しない。
Xをオブジェクトとして扱った場合、その操作として実装されるメソッドは
データのゲットセットなど内部状態を隠蔽するためのメソッドと
可変不変などのデータ状態をあらわすメソッド。
まだお前の脳内じゃおまえがコーヒーを飲むんじゃなくて
コーヒーが勝手に口に飛び込んで来てんのか。
- 71 :
- x.sin()は手続き言語的だと思うけどなあ
もちろんsin(x)も。
オブジェクト指向ならメッセージを送るような記述の方が自然では
- 72 :
- 現実世界をオブジェクト指向に当てはめるやついるけど馬鹿だよなー
コーヒーが勝手に口まで運ばれてくる機能をコーヒにつけただけじゃんw
ついでにコーヒーがしゃべる機能もつけたよ。
問題がないからそういう設計にしたんですよ
- 73 :
- どちらがより汎化されているかではなく
具体例で語ろうとする人間は、プログラムを実装したことがないのでは?
具体的な手続きによる具体的な文字通りのプログラムを書きたいなら
Cでかいてどうぞ
- 74 :
- オブジェクト指向だろうと関数志向だろうとやってることは変わらない
オブジェクトはメソッドの第一引数でしかない
コーヒーを飲むという行為を書くためには手続き的に書くしか無い
コーヒーが俺の口の中にあるという結果を宣言的に書きたいのに
その手続きを丹念に描写したいならそうすればいい
I.drink(coffee)と書けばいいんだよ
I.drink(coffee)とyou.drink(coffee)は飲み方が違う!というのならそう実装すればよい
モデリングとは物事を単純化する行為、汎化する行為であって具象化する行為ではない
Iとyouの違いがモデルのキーポイントなら、Iとyouという(メソッドの第一引数)をパラメータに加えればいいし
そうでないなら含まないほうがモデルがシンプルに保たれる
数学ができない自称モデラーはプログラムを手続き的に書いたらいいんだよ
- 75 :
- 特化させたいのに汎化する必要ある?
狭い世界で使うなら特化させていい。
広い世界で使うなら汎化させる。
それだけ。
- 76 :
- 汎化と特化させるもんを決めるのが設計な
- 77 :
- >>74
言ってることはわかるがコーヒーを主語に対象を汎化なら
coffee1.drunkBy(me);
coffee2.drunkBy(you);
だろ
- 78 :
- >>72
普通モデリングなんて想定される実装の多さや効率の問題で変えるものだからね
感性にまかせる初心者ほど文脈や抽象に拘って依存性の上下を無視するよ
- 79 :
- アクセル→エンジン→ギア→タイヤじゃなくて
タイヤ.回転で自動車設計してそうだなおまえら。
- 80 :
- >>79
そうやって現実の構造を想定している時点でもう駄目なんだよ
- 81 :
- ちうかこれオブジェクトが目的語とか言ってる人か?
英語とプログラミングのobject混同とかとてもまともとは思えないよ
- 82 :
- >>74
JavaScriptだと実際foo.barは第0番目の引数を指定するための糖衣構文でしか無い
オブジェクト指向は別にそんな大したものでも、手続き型と相容れないものでもない
指向とは言うが実際の所スタイルの一部だね
- 83 :
- いいえ、自転車.操業で設計しています
- 84 :
- >>82
そういう嘘をまき散らさないでもらいたいなあ。
毛の人といい、技術の普及は嘘との戦いだな。
オブジェクト指向は嘘つきが多すぎた。
- 85 :
- >>68
いいえ。
sin(x) と書いたときのsinは十分オブジェクトに見えるでしょ。
xとsinは違う階層(空間)に属するモノだけど、後者の方が階層としては高い。
x.sin()と書くと、あるオブジェクトが自分より高い階層のオブジェクトを所有しているように見えてしまう。
これは俺にとっては不自然なので好きになれない。
- 86 :
- オブジェクト指向は手続き型と直行する概念だと理解してないのが何人かいるな
- 87 :
- >>80
"現実の構造を想定しちゃダメ"て
おまえの作るシステムはどんな現実離れした
脳内妄想ベースなんだよ。
- 88 :
- sinは関数だろね。
テーブルを持つためにクラスを使わなければならない言語があったとしても、
極力、ユーザーにとって関数に見えるように実装するべきじゃないのかな。
- 89 :
- 関数がオブジェクトじゃ何か困ることでも?
- 90 :
- >>79
君が設計する自動車ではエンジンブレーキが効かないようだな。
- 91 :
- ブレーキなんてのは外部から
ベクトルの力を操作するんだから
後付けで全然構わないんだが。
- 92 :
- 関数を手続きだと思ってるならそれでいいけど、名前が関数ってだけで数学関数をそういうカテゴリーのものとするのは不適当でしょうね。
- 93 :
- クロージャーって、関数なの?オブジェクトなの?
rubyだとProcのインスタンスでしかないよね
- 94 :
- >>91
わからないなら無理に口を挟まないほうがいいよ。
- 95 :
- >>92
関数が状態を持つべきかどうか考えると自ずと答えが出るのではないだろうか。
- 96 :
- sin(x)は関数の値であって関数ではないよな。 関数は∀x∈double.sin(x)のことだよな。
- 97 :
- >>85
実装がどうあれ、OOPではメソッドはオブジェクトに属するものとして考えるから、
x.sin(value)の表記は不自然じゃ無いだろ。sinはオブジェクトxに属している。
- 98 :
- >>97
それは不自然な考え方じゃないかな。
原点に立ち返ってみると、オブジェクト志向とはコード再利用に際して
コンポーネント化の要求から発生したもの。
現実に存在する物のように、ディスプレイ上のウィンドウに四角形を
描画しろとメッセージを送るというようなシンプルなものだ。
この場合、四角形自体がオブジェクトであることは問題が無いように感じる。
これは、四角形が状態を保持しているからかもしれない。
一方、数値に対してsinを要求するのは突拍子もないように感じる。
これは、数値を日常いたるところで使用していて、数値がメッセージを受け取る性質を
もたないと良く知ってるからではないだろうか。
あるいは計算機オブジェクトに対してsinを要求するなら不自然に感じないのかもしれない。
どうだろうか?
- 99 :
- この種のくそ議論って恣意的な答えしかないんだから、
議論するだけ無駄なんだけどねぇ。
- 100 :
- >>95
状態をもつかどうかは実装しだい。
関数を初期化するとき係数のセットを与えるとかあると思う。
関数がグループとしてまとまって環をなすとか
100〜のスレッドの続きを読む
Android開発質問スレ
【えっ】Perlに未来はあるのか?【終わり?】
盗用したコードどれくらい書換えれば合法になるの?
動的言語で大規模開発
Borlandにはやられた...
C++14/C++1z 20
[RPA]PC自動化技術総合スレ[効率化] Part.6
シェルスクリプト総合 その32
sizeof(char)が必ず1でも、省略すべきではない
【GNU】スクリプト言語 Guile【scheme】
--------------------
カーリング女子外国選手を語る その10
【速報】東京感染者数19人!ガチで収束きたあああああああああああああああ
【病気腐アピ商法】関ジャニ∞ 安田章大アンチスレ28【腹黒偽善者】
【Morocco】 モロッコ王国 Part.1 【Maroc】
【はちきん】高知県パチンコ店情報24【いごっそう】
いつかはきっと答えが出るスレッド
【西島秀俊】 空母いぶき 【佐々木蔵之介】
志摩ノ海 応援スレpart1
【MLB】レッズ秋山、契約詳細明らかに 20年6.5億円→21年7.6億円→22年8.7億円
□■□■□ 群馬県高校野球スレ PART187 □■□■□
三澤紗千香 part36「-INFINITE Selection-」9/28発売
滑車163
恵比寿マスカッツ
ムカつく、ウザい、嫌いなやつのタイプ
あなたが昔いた写植屋さん 6社目!
バイト経験すらない人 9人目
【O】大阪環状線・JRゆめ咲線【P】 47周目
東浩紀493
IDにsobaやudonが出るまで頑張るスレ Part84
スパリゾートハワイアンズダンシングチーム48
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼