オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net

2016/01/05(火) 02:10:25.72ID:hJUQcrkl
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
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/
98デフォルトの名無しさん
垢版 |
2016/01/10(日) 14:13:06.68ID:Itquv6VW
>>97
それは不自然な考え方じゃないかな。
原点に立ち返ってみると、オブジェクト志向とはコード再利用に際して
コンポーネント化の要求から発生したもの。
現実に存在する物のように、ディスプレイ上のウィンドウに四角形を
描画しろとメッセージを送るというようなシンプルなものだ。
この場合、四角形自体がオブジェクトであることは問題が無いように感じる。
これは、四角形が状態を保持しているからかもしれない。
一方、数値に対してsinを要求するのは突拍子もないように感じる。
これは、数値を日常いたるところで使用していて、数値がメッセージを受け取る性質を
もたないと良く知ってるからではないだろうか。
あるいは計算機オブジェクトに対してsinを要求するなら不自然に感じないのかもしれない。
どうだろうか?
2016/01/10(日) 14:14:35.30ID:CDx7UjTI
この種のくそ議論って恣意的な答えしかないんだから、
議論するだけ無駄なんだけどねぇ。
2016/01/10(日) 14:15:24.10ID:AcnVMiQc
>>95
状態をもつかどうかは実装しだい。
関数を初期化するとき係数のセットを与えるとかあると思う。

関数がグループとしてまとまって環をなすとか
2016/01/10(日) 14:17:25.96ID:ainPuYsM
つか、sin(x)ってなんやねんw
引数無しのメソッドの話か? それならsinは例として不適当だ。

sinを例にするなら、x.sin(value) か、sin(x, value) だろ。
2016/01/10(日) 14:17:26.78ID:AcnVMiQc
>>97
そりゃメソッドはオブジェクトに属するだろ。
メソッドとして位置付けるのが適切かどうかの議論をしてるんだよ。
103デフォルトの名無しさん
垢版 |
2016/01/10(日) 14:17:31.05ID:Itquv6VW
こういうシンプルな考えに基づくと、四角形と三角形は形状クラスから
派生すると思われる。
しかし、四角形オブジェクトと三角形オブジェクトの合成メソッドは、形状クラスあるいは
その派生クラスにあってはならないように感じる。
それは形状合成器クラスに、あるいは単純な関数であった方が良いように感じる。
104デフォルトの名無しさん
垢版 |
2016/01/10(日) 14:21:04.23ID:JhCLPk/2
>>87
物理的構造物とは違うんだよ
それすら理解できないならもう向いてないとしか
2016/01/10(日) 14:21:57.10ID:UyzGSaeg
属すじゃなくて依存するだと思うが。
106デフォルトの名無しさん
垢版 |
2016/01/10(日) 14:25:29.45ID:JhCLPk/2
例えばゲームでキャラクターが特定のアイテムを使用するモデル
キャラ.使う(アイテム)はもらうアイテムによってメソッドの動作を変える必要があるが
設計としてはアイテム.適用(キャラ)のが遥かに取り回しやすい
なのにあえて前者のクソ設計を選ぶのが>>87のようなオバカさん
2016/01/10(日) 14:26:22.66ID:ainPuYsM
>>102
それならOOPの議論じゃないな。

>>105
いや、属する/所有するという概念の方が適当だと思う。(実装は違うが)
実際クラスを書くときそう書くだろ。
2016/01/10(日) 14:44:22.50ID:AcnVMiQc
>>101
現実の姿を模すという意味だとsinなどは連想配列であって、sin(x)という書き方はそのまんまだよね。
実装においては計算手続きだろうけど。
2016/01/10(日) 14:48:45.22ID:jS8+hJYw
Smalltalkerが引き上げたらもう初心者しか残ってないのかよ
2016/01/10(日) 15:22:03.47ID:yvIOv1as
そもそもクラスだってオブジェクト指向とは直接関係ない
>>84
嘘ではなく現実だ
2016/01/10(日) 15:23:27.70ID:yvIOv1as
美少女が云々言うのも一般的なクラスベースは融通が効かないねという話であって
オブジェクト指向とは直接関係ないし
112デフォルトの名無しさん
垢版 |
2016/01/10(日) 15:44:15.32ID:KeJgEHCD
>>111
ほう、それならウンコをしない美少女をオブジェクト指向で設計して貰おうか
2016/01/10(日) 15:50:56.07ID:AcnVMiQc
>>97
見逃したいたが、x.sin(value)の value って何だい?
2016/01/10(日) 16:06:27.16ID:ainPuYsM
>>113
引数だよ。
クラスxのメソッドsinに渡す引数。
俺はそういう話をしてると思ったから。
115デフォルトの名無しさん
垢版 |
2016/01/10(日) 16:18:07.80ID:hZikTLMs
xって中身は例えばfloatのデータ自身だぞ?
だから、引数は必要ないんだぞ?
2016/01/10(日) 16:26:17.41ID:ainPuYsM
>>115
理解した。
それなら、x.sin() なんて形が出てくる余地は無いよな。
2016/01/10(日) 16:29:21.43ID:CDx7UjTI
一般に sin に必要な引数は、 pi/2 とかの実数(もしくは複素数) かな。
あとはいくつまでの級数和をとるとか何桁まで計算するとかが引数になるんじゃないかね。
その辺をあいまいなまま value とか x がクラスだの引数だの言ってることに何か意味があると思ってんのかね。
2016/01/10(日) 16:34:25.26ID:ainPuYsM
>>117
いや、sinの引数がオブジェクトの場合はあるよ。
実数や10進型をクラスで表現したりするし、俺も実際やる。
xがそういうオブジェクトなら、sin(x)でいいし、x.sin()はおかしい。
まあ絶対におかしいとか無理ってわけじゃないけどなw
2016/01/10(日) 16:54:55.24ID:yIre7PYR
新しいC++ではsin(x)でもx.sin()でも、どちらの方法でも統一的に呼び出せるようになる予定だから
こんな議論は全く意味ないんだよ?

呼び出す側からしたら、sinがメンバ関数だろうが外部関数だろうが、何であれ、知ったことではないからね
気にしなければならないのは実装する側だけ
だからどちらの方法でも呼び出せるようになる、らしい

どちらの方法でも呼び出せるんだから、喧嘩する必要ないし、気にする必要ないよね
2016/01/10(日) 16:57:47.72ID:yIre7PYR
どちらの方法でも呼び出せるんだから
どちらの方が、よりオブジェクト指向的か、考えるのは意味がないんだよ
等しいわけ、等価と考えてよい
見た目が違うだけ
大した問題じゃない
2016/01/10(日) 17:00:24.30ID:ainPuYsM
なんか違うような気がするなw
122デフォルトの名無しさん
垢版 |
2016/01/10(日) 17:07:10.06ID:fbwGqbCo
こんなにややこしいプログラムがオブジェクト指向を使って
こんなに簡潔になりましたって事例が欲しい
2016/01/10(日) 17:12:10.48ID:1042xGua
>>112
思うんだけど、
うんkをしないというのが、
意思を持ってひたすら我慢して(人の目がある場所では)しないのか、
それとも腸内の美少女菌のおかげでする必要が無いのか、
もしくは他の何かなのかによってイメージが変わってくると思う。
でもしないにしろする必要がないにしろ、排便メソッド自体は備わっててもなんら問題ないと思う。
逆に、腸内やなんかの問題を解決せずに、排便メソッドだけ外して他を流用するということは、
オブジェクト指向的であろうがなかろうが不可能だと思う。
それこそ亞人として設計しなおして全ての手続やメソッドを別に用意することが妥当かもしれない。
だから結論を言うと、この例はそもそも良くないと思う。
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メソッドが内部で数えなおしてる場合はつまらないと思う
125デフォルトの名無しさん
垢版 |
2016/01/10(日) 19:10:53.94ID:fbwGqbCo
>>124
なるほどねー。
126デフォルトの名無しさん
垢版 |
2016/01/10(日) 19:16:06.37ID:fbwGqbCo
>>112
美少女はマーカーインターフェースであり、
美少女として扱うとき排便は隠蔽される。

interface 美少女 {
}

class おっさん implements 美少女 {
 void 排便() {
 }
}
2016/01/10(日) 20:20:59.69ID:VQDMXfno
>>126
それは「何もしない」という排便メソッドを持つ
持たない,ではない
128デフォルトの名無しさん
垢版 |
2016/01/10(日) 20:34:00.62ID:fbwGqbCo
>>127
何を言うてんの?排便メソッドを持つのはおっさんだよ。
129デフォルトの名無しさん
垢版 |
2016/01/10(日) 20:41:36.36ID:KeJgEHCD
聖水メソッドもないのに美少女とか笑わせんなよw
2016/01/10(日) 21:17:46.16ID:+l1yiqNW
オブジェクト志向の考えだと
大便ableインターフェースを実装するんだろ
2016/01/10(日) 21:57:06.57ID:Hm2sxH4v
美少女クラスを欲する奴が美少女のウンコがついたぱんつを欲しがらないかと考えると
これは要件定義から間違っているような気がしてならない。
2016/01/10(日) 22:05:43.79ID:zd2SpHtU
実装からメソッド設計を考えるより使い方から設計したほうが上手く行くと思う
つまり美少女がうんこ出来るのか、出来ないのかで考えるのでは無く美少女にうんこをさせたいのか、うんこさせたくないのかで考える
133デフォルトの名無しさん
垢版 |
2016/01/10(日) 22:12:58.59ID:hZikTLMs
肛門はコンポーネントとしてアタッチする。
美少女は肛門をインプリメントしていない
134デフォルトの名無しさん
垢版 |
2016/01/11(月) 02:57:08.55ID:87Jnvcw4
あのさ、どんな美少女もウンコするんだけど?
2016/01/11(月) 03:08:27.43ID:Rwcs8mHW
真の美少女は実在しない
2016/01/11(月) 03:18:02.16ID:4rCdY4Yq
>>134

http://youtu.be/_-KfZCZ4F0Q
2016/01/11(月) 04:26:03.17ID:3eUcyomA
2016/01/11(月) 14:41:47.97ID:GiqteBDS
関数型言語っていい点もあるけど、変更に弱過ぎない?
ちょっと動作を変えるのにかなり見直さないといけない
2016/01/11(月) 16:00:11.66ID:Rwcs8mHW
作りようだね
140デフォルトの名無しさん
垢版 |
2016/01/11(月) 17:41:31.97ID:d9M93+6h
>>138
関数型言語を使えば完璧なプログラミングが可能なので後から変更する必要が無い。
2016/01/11(月) 17:50:34.21ID:KkwWauMD
>>140
完璧なプログラミングは出来ても
将来の仕様の変化を完璧に予測することは出来ないでしょ?
2016/01/11(月) 17:53:14.36ID:GiqteBDS
仕様変更できないって実用上ヤバくないですか
2016/01/11(月) 18:03:26.01ID:RUBsLBHi
オブジェクト指向は細かい修正で済むと手を抜き続けた結果メチャクチャ悲惨なことになる
全て書き直すくらいがちょうどいい
2016/01/11(月) 18:08:52.97ID:hbMmOduf
> メチャクチャ悲惨なこと

たとえば?
2016/01/11(月) 18:13:38.40ID:rz35E4wE
>>144
全て書き直すはめになる
2016/01/11(月) 18:18:05.61ID:V0AQQEoP
関数型言語は仕様変更のたびにめちゃくちゃ悲惨なことをしなければならないのか
2016/01/11(月) 18:31:28.27ID:KoUNfQqa
言語の問題でなくて作ってる奴が馬鹿なだけでは?
2016/01/11(月) 18:59:27.70ID:A5Rx7ofK
ただのリスト操作を関数型と呼んでいる可能性
149デフォルトの名無しさん
垢版 |
2016/01/11(月) 19:14:51.77ID:d9M93+6h
>>141
関数型なら完全に未来を予測できる。
2016/01/11(月) 19:37:40.52ID:ugQF1NqL
そらすげーわ
2016/01/11(月) 19:38:18.20ID:rz35E4wE
>>149
そういうのいいから
2016/01/11(月) 19:43:22.94ID:XhrtL63c
関数型言語はコンパイルした瞬間全てが完了される。
153デフォルトの名無しさん
垢版 |
2016/01/11(月) 19:46:13.85ID:d9M93+6h
コンパイルが通ればバグが無いことを保証される。
2016/01/11(月) 19:47:17.32ID:rz35E4wE
>>153
それもいいから
155デフォルトの名無しさん
垢版 |
2016/01/11(月) 19:49:39.36ID:d9M93+6h
>>154
お前関数型馬鹿にしてんの?
2016/01/11(月) 19:53:45.95ID:XhrtL63c
関数型言語にとって型とはプログラムの設計図なのである。
2016/01/11(月) 19:55:09.91ID:rz35E4wE
>>155
関数型じゃなくてお前を馬鹿にしてるんだよw
2016/01/11(月) 19:55:15.79ID:eiYfk44d
1000近くなった雰囲気だな
159デフォルトの名無しさん
垢版 |
2016/01/11(月) 20:02:18.58ID:d9M93+6h
ヨハネの手紙にも関数型が登場する。
2016/01/11(月) 20:05:53.42ID:eiYfk44d
鶏が鳴く前に三度、関数型など知らないと言う
161デフォルトの名無しさん
垢版 |
2016/01/11(月) 20:09:36.09ID:d9M93+6h
マタイの福音書、関数型が世界を平和に導く。
162デフォルトの名無しさん
垢版 |
2016/01/11(月) 20:40:32.13ID:d9M93+6h
>>157
ああそう、なら良いんだ。
関数型馬鹿にしたら唐沢弁護士に頼んで勝訴しちゃうからね?
163デフォルトの名無しさん
垢版 |
2016/01/11(月) 22:15:27.49ID:qSBpiVnS
関数型に不可能はない。関数型は神にのみ扱える至高の言語
関数型を疑ってはならない。汝の実力を疑え
2016/01/11(月) 22:48:28.28ID:CMbhymom
毛の壁の臭いがするな。
2016/01/12(火) 01:32:19.38ID:SYPJaqWI
広く使われてて実用的な言語は多かれ少なかれマルチパラダイム
関数型っていうのも結局は作者がそう言ってるかどうかの線引でしか無い
理想的な関数型gwンゴを想定してなにか言うのはあまり意味が無い
2016/01/12(火) 01:34:43.86ID:uMvEa0J7
関数型ンゴwwwwwwwwwwwwwwwwwwwwwwwwwww
2016/01/12(火) 08:42:46.08ID:V5bMIqIZ
関数型グワンゴ
2016/01/12(火) 09:12:48.84ID:/ZqCERvo
今時は大学とかでも言語比較とか講義しているのかな。
2016/01/12(火) 19:38:37.49ID:7kdSKUGZ
lisp は関数型ですか?
2016/01/12(火) 22:56:29.42ID:uMvEa0J7
いいえ、変態型です
2016/01/14(木) 06:56:24.28ID:/XPEQoow
http://pc.rooter.link/
2016/01/16(土) 23:50:44.88ID:vrXiOUCa
美少女は天使クラスに属している。
排便しない。
2016/01/20(水) 11:46:14.76ID:HskUHurd
「オブジェクト指向プログラミングの例を挙げましょう。2000年代には、オブジェクト指向プログラミングは、企業向けプログラミングにおける基盤的技術の地位を確立したと思われていました。
しかし今では、私を含めて多くの人が、この潮流は20年間に渡って本流から逸れていたものであり、そのほとんどが間違いだったと考えています。」

コーディングを学ぶこと、それはあなたが考えるよりも大変です
http://postd.cc/learn-to-code-its-harder-than-you-think/
2016/01/20(水) 12:33:48.74ID:CF7z5V/R
>>173
記事のベースはイギリスのプログラマ教育のあり方と社会地位の話で
"大学で教えていることが現場で役に立たない"ことと
"高級技術者としてのプログラマの社会的地位の低さ"について
そして、前者関連の話で「教えるべき技術は次々と移り変わる」例として
オブジェクト指向を挙げてみてるが、筆者があまり理解してる感じではないなぁ…
20年前なら単語そのまま「構造化プログラミング」に置き換えて書かれた
単なる流行りワードの扱いだわな。
2016/01/20(水) 12:39:59.33ID:CF7z5V/R
また、書かれている内容のとおりイギリスのプログラミング技術のほとんどが
学校教育ではなく「独学」で学ばねばならないもので、その上でガチで
『しかし今では、私を含めて多くの人が、この潮流は20年間に渡って
本流から逸れていたものであり、そのほとんどが間違いだったと考えています。』
と、思ってるとしたら本当にイギリスのプログラミング業界界隈の危機は
深刻なものだと考えざるをえない…
2016/01/20(水) 12:41:46.50ID:uqyd4S+p
日本も似たようなもんじゃないの? 違うの?
2016/01/20(水) 12:58:06.53ID:CF7z5V/R
>>176
>>173のリンクを読んだ感じではイギリスではどうも国を挙げて
学校や社会人教育で「無償で国民にプログラミングを学ばせる」事業をやってたっぽい
で、たぶん日本でやってもそうなるだろうけれど
みんな合格するようなレベルの簡単な内容なので
わざわざ教える意味がない的な事態になったっぽい?

大学の情報学科だったら日本でもまぁ直でコーディングの役には立たんが
逆に大学レベルの情報工学理論面を広く教えるから
オブジェクト指向なんて〜って池沼はでないだろう(皮肉
2016/01/20(水) 21:59:54.59ID:ftWUH7Q0
オブジェクト指向は思考パターンを破壊されるよ
2016/01/20(水) 22:38:38.89ID:KK1TC/Qj
コードの奇麗さはなになに指向とかとはいつだって無相関だよ。
2016/01/20(水) 23:28:45.86ID:lyH/JRhU
>>179
その評価はとても健全
2016/01/21(木) 12:15:51.15ID:pkb4zgJk
>>179
「奇麗」なコードってどんなの?
2016/01/21(木) 16:38:21.88ID:OmENn3Ct
>>181
測定するツールがある。
2016/01/22(金) 08:41:08.27ID:jWLszG8x
それはツールに設定したルールを守ってるかの判別器でしか無いな。
本当に一般的に綺麗なコードとやらを図るには、
統計を集めて機械学習でもさせる必要があるだろう。

もしくは綺麗というのが、編集しやすいということなら
最低きちんとした理論と根拠を元に基準を決めるべき。
今の基準の多くはただ作者の信念だったり、狭い範囲での多数はを取っているだけ。
2016/01/22(金) 10:24:46.06ID:BOI0ua8w
>>183
コードコンプリートでもよんだら?
2016/01/22(金) 12:53:49.39ID:NE1Xg/XG
コードとは言語だから、綺麗な英語と置き換えてみればわかる。 学校で教えられるのは全部綺麗な英語だから実際の外人の喋ってることなんか一つも役に立たない。 汚いコードを書いてどんな汚いコードも読めるようになるのが大切。
2016/01/22(金) 13:21:50.19ID:p0qaIBjS
実際に効果があるかそっちのけで、主観的な綺麗さばっかり気にしてルールを
固定化しようとするやつなんなの?
どことなく自閉症的で気味が悪い。
2016/01/22(金) 13:23:33.14ID:p0qaIBjS
あ、このスレの発言のことじゃないです。リアルの話。
2016/01/22(金) 14:33:54.36ID:IejezU7v
コードコンプリートを書いたのはマイクロソフト()だぞ
林檎がビューティパーフェクトコードを書くまで待て
2016/01/22(金) 22:02:12.46ID:SlI41mNc
>>185
こういう人が職場にいたらきついお
2016/01/22(金) 22:17:23.23ID:jXHHn5ty
>>186
ルールなんて誰でもわかってると思うけどな。

・重複する処理はかかない。
・同じことに関する値を重複して定義しない。
・計算で求められるものは計算でだす。
・ある処理に関するコードは一箇所にまとめる。
・条件分岐を減らす。
・ループを減らす。
・設計とファイル名やディレクトリ構造を一致させる。
・役割毎に関数やクラスを分ける
・関数やクラスはなるべく短くする
・テストしにくい所を減らす
・適切な名前(グローバルに近いほど長く、ローカルに近いほど簡単な名前)をつける。
・十分にテストされた信頼性が高いライブラリを使用する。独自実装しない。
・コーディングスタイルに適合すること
・メトリクス(複雑度等)が悪いものは認めない

これらは主観じゃないので、このルールにしたがえば、
誰でも良い方がどちらかわかる。
2016/01/22(金) 23:23:12.65ID:p0qaIBjS
>>190
それらは効果があるとわかるものだから問題ないよ。
2016/01/23(土) 03:52:18.65ID:qPctTKOa
Smalltalker達がいなくなったら途端に初心者スレ化w
2016/01/23(土) 14:01:47.22ID:xYcOlVg1
Smalltalkの人はボコボコにされて
Smalltalkに自信を失って帰っちゃったからな

実際全然使われていない現実なわけだから
何を言っても説得力皆無だし机上の空論になるし
こいつマゾと思って皆で玩具にしたが
言うほどマゾじゃなかったのかもね
2016/01/23(土) 19:33:03.55ID:qHL6kF89
7 minutes of Pharo Smalltalk for Rubyists
https://www.youtube.com/watch?v=HOuZyOKa91o

Pharo - Welcome to Pharo!
http://pharo.org/
2016/01/23(土) 19:36:10.46ID:qHL6kF89
https://github.com/SquareBracketAssociates/UpdatedPharoByExample
2016/01/23(土) 22:09:12.03ID:Sj7C6OsA
http://blogs.c.yimg.jp/res/blog-4f-d6/arekusandesu/folder/1113716/52/34639752/img_6?1437491985
2016/01/30(土) 19:31:26.50ID:ZdxrrRsd
>>185
どんな汚いコードも読めることは大切だが
汚いコードは書くなよ…

まあその汚さをある程度許されるようになるオブジェクト指向は嫌いじゃない
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。