カプセル化は愚かな考え

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2020/07/29(水) 17:17:58.13ID:u638n5uE
■危険性

かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性(RFC 3439)」として「カプセル化は絶対にやめろ」としている。

大雑把にいうと、教科書の上では素晴らしく、開発を始めた最初のうちは良いが、将来的な改修の際に隠蔽されたデータにアクセスできないと解決できない問題が出てきて、非常に高確率でデスマーチに陥るというのである。

オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」などという概念はない。

ソースコードが存在し改修が可能であればカプセル化しても問題ない。ソースコードがあってもライセンス的に改修できない場合や、そもそもバイナリのライブラリしかない場合などは絶望的である。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

0952デフォルトの名無しさん2020/09/14(月) 23:02:01.08ID:aDn+sCGd
>>950
お前の理屈だと、ファイルを使うとカプセル化とは縁遠い作りになることが多いんだろ?w

0953デフォルトの名無しさん2020/09/15(火) 01:45:28.43ID:Yms7aROo
カプセル化の意味を履き違えているのばかりだし、異様にこだわるのはもはやキチガイレベル。

0954デフォルトの名無しさん2020/09/15(火) 10:10:35.41ID:msQN58rY
オブジェクト指向に疑念を持って、関数型などにも浮気したが結局オブジェクト指向に戻ってきた
関数型だとインフラストラクチャのコントロール、外部APIコーディネートなどといった「現実の問題」に対象できない
また関数型が優れているとされる理由のエッセンスはイミュータビリティである、ということに気がついたからだ
結局のところオブジェクト指向にイミュータビリティを導入することが正解だった

0955デフォルトの名無しさん2020/09/15(火) 11:13:01.56ID:aoc93pM4
全然関係ないこと横文字羅列することで畳み掛けるの流行ってるの?
少なくともそんなとこ考えてるときにオブジェクト指向言語じゃないと実装できませんねとか
意味不明なこと言い出した奴もういらんわ

0956デフォルトの名無しさん2020/09/15(火) 11:21:53.53ID:QOcZ+8t3
何かに反論するときに、◯◯って流行ってるの?っていう入り方するのって流行ってるの?

0957デフォルトの名無しさん2020/09/15(火) 11:28:14.31ID:msQN58rY
オブジェクト指向でなければならないことはない
関数型ではダメなことは多い
手続き型のほうがうまくこなせることも現実世界には多い
それぞれ得手不得手がある
なのでそれらをいい感じに融合できるオブジェクト指向が正解ってわけ
融合する際にそれらの境界を上手く隔てるためにカプセル化が役に立つ

カプセル化を活用して、インフラストラクチャ、ステートフルリソース、手続き的な処理を隔離する
イミュータブルオブジェクトを導入して関数型の思想のもとで堅牢かつ柔軟なドメインモデルを構築する

このようにオブジェクト指向はなんでもそこそこ上手くできるからバランスがいいんだよ
現実を見据えたパラダイムだと思うよ
原理主義的にならずに旨味だけを享受すればいい

もちろんなんでもできるから使い方を間違えるとひどい目に合う
そこはしっかりと教育していくしかない
どんな道具でも学習は必要だ

0958デフォルトの名無しさん2020/09/15(火) 12:11:23.59ID:DF4Wozgk
>>957
>関数型ではダメなことは多い
ダメな例を具体的に書けば自分のダメさがよく分かるよ

>どんな道具でも学習は必要だ
君自身がしっかりと教育されるしかない

0959デフォルトの名無しさん2020/09/15(火) 12:21:34.24ID:gc4PCUOV
関数型のクイックソートはクイックじゃねえからなwwwww
wwwww使い物にならねえわwwww

0960デフォルトの名無しさん2020/09/15(火) 12:23:00.49ID:YmrXu57g
クイックソートの遅い実装?

0961デフォルトの名無しさん2020/09/15(火) 12:45:43.54ID:dgBsBrcB
>>958
挙げてるじゃん
インフラストラクチャ、ステートフルリソース、外部APIコーディネート、などなど
数えたら枚挙に暇がない

関数型は所詮はインメモリの世界でしか通用しない道具だ
しかしインメモリに限れば強力なツールだ

なので関数型が苦手なことが得意な手続き型と組み合わせて使うのが正解
そして関数型と手続き型を密結合することなくうまく調和させるためにOOPのカプセル化や抽象化といった概念が役に立つ

0962デフォルトの名無しさん2020/09/15(火) 13:04:11.00ID:RkqAJNr6
>>1
アランケイが提唱したオブジェクト指向と、クラスベースのオブジェクト指向を混同してる時点でな
いつものオブジェクト指向否定信者がスレ立てたんだろ

0963デフォルトの名無しさん2020/09/15(火) 13:27:23.20ID:QOcZ+8t3
関数型に適応できる高速なソートのアルゴリズムってあるの?

0964デフォルトの名無しさん2020/09/15(火) 14:42:17.61ID:i/gZOuAl
>>961
Erlang は上手くやってるな

0965デフォルトの名無しさん2020/09/15(火) 20:20:21.30ID:X9YPG5on
>>961
>インフラストラクチャ、ステートフルリソース、外部APIコーディネート

これが具体的な例なんだねww
にしてもインフラストラクチャてwww

無知を自覚してしっかり教育されるか、無知を認められず老害化するかは君次第

0966デフォルトの名無しさん2020/09/15(火) 21:23:52.92ID:gc4PCUOV
何わろてんねん

0967デフォルトの名無しさん2020/09/15(火) 22:03:17.38ID:IfSXNbex
「関数型はI/Oが苦手」
「関数型ではカプセル化できない」

と思っちゃってる個人の感想だよね

0968デフォルトの名無しさん2020/09/15(火) 22:08:43.90ID:X8qAKmym
次の世代は関数型OSだろな。

0969デフォルトの名無しさん2020/09/15(火) 23:38:31.91ID:Tmf/kgmE
>>968
いつまでに関数型OSが実用的に利用できると思う?
100年以内にでると言い切れる自信ないでしょ?w

0970デフォルトの名無しさん2020/09/15(火) 23:49:58.45ID:cvpGF9OU
現実世界は副作用の塊なんだよ
関数型は現実問題を解決するには不向き
手続き型やOOPの力によって現実問題とうまく切り離された僅かな隙間であるインメモリ計算処理をうまくこなすことができる
関数型とはただそれだけの存在だ

0971デフォルトの名無しさん2020/09/15(火) 23:52:41.89ID:Tmf/kgmE
数学の世界では無限という数値だって扱えるんです
しかしコンピュータでは扱えません

0972デフォルトの名無しさん2020/09/16(水) 00:11:09.88ID:XXyygoNj
>>971
∞ + 1 = ?

0973デフォルトの名無しさん2020/09/16(水) 00:33:59.70ID:6QoNdXGN
インメモリ計算処理www
なんで理解できてないことをあたかも理解してるかのように語りたがるのかな?

知らない書けない理解してない無知な自分を認めたくないからって"あっちの水は苦い"と喧伝して自分を慰めても何にもならないぞ

0974デフォルトの名無しさん2020/09/16(水) 00:47:40.07ID:XXyygoNj
ここにいるhaskellerはレベル低そう

0975デフォルトの名無しさん2020/09/16(水) 00:48:27.03ID:XXyygoNj
悔しかったらOS実装してみろ
C言語ならできるぞ手続き型に負けて悔しくないのか

0976デフォルトの名無しさん2020/09/16(水) 00:56:03.92ID:NJW1Qx1P
お前が実装したわけじゃあるまいしw
Windows はオブジェクト指向OS

0977デフォルトの名無しさん2020/09/16(水) 00:56:44.43ID:7X1piV6a
>>973
ん〜この中身の空っぽなレス
悔しかったら関数型で俺が上げた弱点をどう克服するのか示してみろよ
まあ理解してないことをあたかも理解してるように語る奴には克服方法なんて答えられんだろうけどw

0978デフォルトの名無しさん2020/09/16(水) 01:00:28.73ID:xovTn/QF
え?オブジェクト指向言語で解決できてる問題があると言っている?

恐怖を感じるほどのバカだな

0979デフォルトの名無しさん2020/09/16(水) 01:01:49.28ID:XXyygoNj
>>976
それはそうやな

0980デフォルトの名無しさん2020/09/16(水) 01:03:50.27ID:xovTn/QF
え?win32apiが?

0981デフォルトの名無しさん2020/09/16(水) 01:08:46.31ID:XXyygoNj
>>980
わかんない

>>976
そこの君い何がオブジェクト指向なのかね?

0982デフォルトの名無しさん2020/09/16(水) 01:10:26.55ID:XXyygoNj
>>978
qmailのソースコード見たことある?
C言語なんだけどオブジェクト指向の極みなんだよ
https://github.com/amery/qmail

オブジェクト指向はqmailを解決したわけですね

0983デフォルトの名無しさん2020/09/16(水) 01:22:52.13ID:XXyygoNj
GitのソースコードもC言語なんだけどこれもオブジェクト指向の極み
https://github.com/git/git

コミットやリビジョン、リポジトリといった概念とソースコードが一致するようになってる
オブジェクト指向によるドメイン駆動設計

C言語すごい

0984デフォルトの名無しさん2020/09/16(水) 01:23:47.90ID:/p6a79yr
ドメイン駆動って何?

0985デフォルトの名無しさん2020/09/16(水) 01:25:58.14ID:/p6a79yr

0986デフォルトの名無しさん2020/09/16(水) 01:31:39.87ID:XXyygoNj
>>984
ソフトウェアコードの構造と言語(クラス名、クラスメソッド、クラス変数)がドメインと一致するようにするという考え方
ドメインは、コンピュータプログラムの対象物のこと

0987デフォルトの名無しさん2020/09/16(水) 01:34:34.58ID:XXyygoNj
>>985
それえ!

0988デフォルトの名無しさん2020/09/16(水) 01:38:40.25ID:/p6a79yr
>>986
おまえさん、ソフトウエア、あんまり作ったことなさそうだな…

0989デフォルトの名無しさん2020/09/16(水) 01:42:15.93ID:XXyygoNj
>>988
あんまりどころか僕はソフトウェアを何一つ作ったことがないが
プログラムにすごく詳しいんだ、わからないことがあったら聞いてくれ

0990デフォルトの名無しさん2020/09/16(水) 01:43:37.93ID:XXyygoNj
DDDは流行の最先端だから覚えておくと良い

0991デフォルトの名無しさん2020/09/16(水) 01:48:57.66ID:/p6a79yr
>>989
正直でよろしい。
そしたらY-cominatorを用いた動的計画法の解法についておよび
ラマヌジャンがノートに残したモジュラ関数を応用した超数近似の収束性とカ・マーカー方への応用を
十実装したプログラムにたいして何か知見があったらその痴性をひけらかして演説書いてチョンマゲ

つか、ど素人はすっこんで定年までROMってろよ、ってかんじ

0992デフォルトの名無しさん2020/09/16(水) 01:51:37.85ID:/p6a79yr
>>991
Y-combinator
実装
な。ハート。

しかしオブジェクト指向とかにつて、ホントたまにこういう基地外が湧くのは
宗教的なせいだんだろうか

0993デフォルトの名無しさん2020/09/16(水) 01:56:50.65ID:/p6a79yr
>>991
は、適当に思い付きをかいただけだから、
むきになって検索して気の効いたレス書こうとかしてないで、
いい子だからお薬飲んで、おしっこしてネンネしなさいよ

0994デフォルトの名無しさん2020/09/16(水) 02:50:38.64ID:0ZaEBr0v
おまえら、とりあえず動くものを作ってから雑談しろよ。

0995デフォルトの名無しさん2020/09/16(水) 02:59:52.72ID:XXyygoNj
なんでや?

0996デフォルトの名無しさん2020/09/16(水) 03:01:35.60ID:XXyygoNj
天文学者に宇宙行けと言ってるようなもんだろ
優れた頭脳は計算によって世界を知る

0997デフォルトの名無しさん2020/09/16(水) 03:02:42.46ID:XXyygoNj
作らざること山のごとし

0998デフォルトの名無しさん2020/09/16(水) 07:13:38.52ID:Mp+zrl2P
進捗する毎火の如し

0999デフォルトの名無しさん2020/09/16(水) 08:26:28.51ID:NJW1Qx1P
キン肉マンネタ

1000デフォルトの名無しさん2020/09/16(水) 09:05:02.14ID:ChCLAHZC
ソフトウエアを作れない奴が、カプセル化だ、ゲッターセッターだ継承だ多態だ
薀蓄たれて開発者を惑わすのはやめる
足引っ張るだけだ

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 48日 15時間 47分 4秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。