2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

カプセル化は愚かな考え

1 :デフォルトの名無しさん:2020/07/29(水) 17:17:58 ID:u638n5uE.net
■危険性

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

一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性(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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C言語すごい

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

985 :デフォルトの名無しさん:2020/09/16(水) 01:25:58.14 ID:/p6a79yr.net
これぇ?
https://qiita.com/little_hand_s/items/721afcbc555444663247

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
298 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★