カプセル化は愚かな考え

レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
垢版 |
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)
2020/09/02(水) 13:56:40.83ID:6n47TPOy
メリットのつもりだけどちっともメリットになってないやつがいるよな
不必要な階層化が明らかにバグ増やしてるやつ

やめとけって
813デフォルトの名無しさん
垢版 |
2020/09/02(水) 14:23:36.56ID:b48j9NlC
>>779
ホントか?

https://ezoeryou.github.io/cpp-intro/

コレのHelloWorldには「コードの詳細な意味はさておくとして」とあるぞ
814デフォルトの名無しさん
垢版 |
2020/09/02(水) 17:14:55.68ID:KTyhBksd
C++のこれダサくない?
std::cout << "hello" ;

<<これダサくない?

イキりマンが設計したとしか思えない
2020/09/02(水) 17:53:01.12ID:6n47TPOy
>>814
俺もクソだと思う
816デフォルトの名無しさん
垢版 |
2020/09/02(水) 17:57:46.65ID:PicHUi2j
明らかに (hoge)printf の方が使い易い
2020/09/02(水) 18:23:05.03ID:oyfP4D/d
C++でそれ使った事無かったなw
何故かhello worldではそのコードが書かれている事が多いけどw
2020/09/02(水) 18:31:49.16ID:X9xcF9vI
std::cout << "hello" << std::endl;
819デフォルトの名無しさん
垢版 |
2020/09/02(水) 19:19:30.10ID:9/rkp9iy
ダサいけどprintfのセキュリティ的な問題がないから使っておる
2020/09/02(水) 21:24:37.75ID:Hwtp1D+h
>>814
普段からLinuxを使ってないとその発想にならないと思う
PHPのほうが自然
2020/09/02(水) 21:42:32.36ID:/nOWjplL
>>809
「オブジェクト指向を妄信する人への揶揄」が「オブジェクト指向に対する愚痴」に見えている可能性
822デフォルトの名無しさん
垢版 |
2020/09/02(水) 21:44:17.02ID:vGE3/anR
>>821
>「オブジェクト指向を妄信する人への揶揄」が

ならば「チンポがシコシコする」という日本語表現は、文法的に正しいのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
823デフォルトの名無しさん
垢版 |
2020/09/02(水) 21:46:22.75ID:vGE3/anR
>>809
>1つはその人にとってオブジェクト指向が新しいパラダイムであり

俺の股間に付いているモノは「オブジェクト指向」とは違うのか?
824デフォルトの名無しさん
垢版 |
2020/09/02(水) 21:51:21.43ID:C0O9Iab7
>>804
フレームワーク作成者の
身の保身のために
無意味な作業何度もさせられるんか?

フレームワークだけやないで
大抵の既存クラスがそんなもんや
825デフォルトの名無しさん
垢版 |
2020/09/02(水) 21:51:33.18ID:iHJfSlZg
>>811
老害のドカタに使わないという選択肢があると思うか?

選ぶ自由がない環境でしか生きられない上にリアルで相手にされないから5chで愚痴を言い続ける。

低脳低スキルを他者のせいにするメンタリティのやつには何言っても無駄よ。建設的議論にはなりえない。
826デフォルトの名無しさん
垢版 |
2020/09/02(水) 22:01:00.56ID:vGE3/anR
>>810
「チンポがシコシコする」という日本語は、何かオカシイか?
2020/09/03(木) 00:55:17.34ID:oPPXaQOW
>>825
イキってクソコード撒き散らす害悪よりかはマシだけどな。
お前のクソスキルはどうでもいいからとりあえず関数かけ馬鹿。
2020/09/03(木) 01:19:00.75ID:UIrbSeQG
藻前ラ、モチツケ
https://i.imgur.com/2QRRE2u.jpg
829デフォルトの名無しさん
垢版 |
2020/09/03(木) 11:50:45.09ID:DK3Ul6vK
誰?
タイトルは?
2020/09/03(木) 12:14:39.09ID:HRrMH9TX
>>829
必死だな(藁
2020/09/03(木) 14:28:11.70ID:GKTly5Nv
SubjectとObjectの違い
832デフォルトの名無しさん
垢版 |
2020/09/03(木) 17:30:23.79ID:9nAKzDdi
結局これ人間性の問題なのよ。

カプセル化を容認するような人間は、犯罪も容認するし、なにも守れない。
2020/09/03(木) 17:31:02.51ID:ZSeh1kM5
>>814
それがかっこよかったんだよ。
2020/09/03(木) 17:31:54.36ID:ZSeh1kM5
型安全なprintfですんだ話し
835デフォルトの名無しさん
垢版 |
2020/09/03(木) 18:52:57.27ID:D+Mzdye0
僕はオチンチニストです
836デフォルトの名無しさん
垢版 |
2020/09/03(木) 21:35:19.31ID:9nAKzDdi
オポンティーヌと言えば、あわしろいくやを連想してしまうな。
837デフォルトの名無しさん
垢版 |
2020/09/03(木) 23:15:25.43ID:/DfmFXGp
オブジェクト指向否定する前に小学校の国語からやりなおせカス
838デフォルトの名無しさん
垢版 |
2020/09/03(木) 23:26:55.29ID:s/nu4dlU
>>837
オブジェクト指向は俺の股間に付いているからな!
2020/09/03(木) 23:44:41.85ID:HRrMH9TX
ズンドコベロンチョは至高!
ズンドコベロンチョ否定する前に小学校の国語からやりなおせカス

何にでも使える。
2020/09/04(金) 01:10:13.14ID:gbrpP/bR
https://video.twimg.com/ext_tw_video/1293154574795067398/pu/vid/1280x720/8c4iCDgG8QEnD1Y9.mp4
2020/09/04(金) 17:25:27.12ID:i4uc+bjy
オブジェクト指向は設計を間違えるときついことが起こる。
C++みたいな純ではないのはその辺り、コードがわかりにくくなるだけでなんとか対応できる。
2020/09/04(金) 17:52:24.10ID:/hJPKHew
関数型言語は設計を間違えるときついことが起こる。

そして正しい設計の話は一切でない
ボタンを作るにはどうすればいいんだ?
843デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:14:27.54ID:0wfgbo8M
>>842
GUI Toolkitしだいだと思うよ
F#ならnew Buttonで作れる
844デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:23:09.61ID:zzSWw99B
>>839
「ズンドコベロンチョ」は、俺の股間に付いている!
2020/09/04(金) 18:26:08.59ID:/hJPKHew
>>843
> F#ならnew Buttonで作れる
そりゃオブジェクト指向の機能を使ってるからな
846デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:27:32.23ID:0wfgbo8M
>>845
関数型言語ではオブジェクト指向の機能を使います
2020/09/04(金) 18:33:51.31ID:/hJPKHew
>>846
単に「オブジェクト指向の機能を使います」で十分でしょw
848デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:35:52.20ID:0wfgbo8M
>>847
何の話ですか?
2020/09/04(金) 18:37:23.97ID:/hJPKHew
>>848
どの言語でもオブジェクト指向を使うという話です。
850デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:39:00.61ID:0wfgbo8M
>>849
つまり関数型言語ではオブジェクト指向の機能を使うってことですね
851デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:40:16.94ID:0wfgbo8M
関数型言語は「どの言語」に含まれます
852デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:41:18.57ID:0wfgbo8M
> ボタンを作るにはどうすればいいんだ?
関数型言語だからといって悩む必要などないのです
ボタンはnew Buttonで作れます
2020/09/04(金) 18:42:55.29ID:67e8l95x
>>850
「関数型を名乗っている言語でも」っていうのが正確ですね
なので純粋な関数型では不可能なんです。
2020/09/04(金) 18:43:21.23ID:67e8l95x
>>852
さっきも書いたように、それはオブジェクト指向の機能です。
2020/09/04(金) 18:44:27.17ID:67e8l95x
F#はオブジェクト指向言語+関数型言語
オブジェクト指向言語に関数型を取り入れた言語なんです。
純粋な関数型ではないんです。
856デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:46:57.81ID:0wfgbo8M
>>853
ボタンの機能にはGUI Toolkitが必要です
HaskellでGtkを使う例
https://www.stackbuilders.com/tutorials/haskell/gui-application/
857デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:48:03.77ID:0wfgbo8M
>>854
関数型言語ではオブジェクト指向の機能を使います
2020/09/04(金) 18:52:10.66ID:67e8l95x
結局の所、有用なものはすべてオブジェクト指向なんです。
859デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:55:33.07ID:0wfgbo8M
関数型言語も有用なのでオブジェクト指向と言って良いでしょう
860デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:57:15.82ID:0wfgbo8M
オブジェクト指向関数型言語を省略したものが関数型言語なのでしょうね
オブジェクトを作れない、オブジェクトを操作できない関数型言語は存在しません
861デフォルトの名無しさん
垢版 |
2020/09/04(金) 19:44:45.33ID:0q9nxY6X
>>849
オブジェクト指向は俺の股間に付いている!
2020/09/04(金) 22:01:21.46ID:7/5Xc9M6
>>657
どうにかして、そのパンティーに俺のおちんちんを突っ込みたい。
2020/09/05(土) 01:24:48.25ID:Tue1Ajzg
https://video.twimg.com/ext_tw_video/1256123469747703808/pu/vid/392x360/Vrjt4lsyRUbuGK8R.mp4?tag=10
2020/09/05(土) 02:33:11.09ID:7d8HPhGj
それも有用なのでオブジェクト指向と言って良いでしょう
結局、都合の良いことはすべてオブジェクト指向なんです
2020/09/05(土) 02:35:09.52ID:Rig+HVkc
オブジェクト指向の考え方が現れる以前も
有用なものは実はオブジェクト指向を使っていたんです
2020/09/05(土) 02:36:47.70ID:yxLRF7gq
そもそも関数型はオブジェクト指向の考え方から生まれた概念だったんです
2020/09/05(土) 02:39:27.42ID:LysGX1WG
>>865
さすがあなたは分かっていらっしゃる
信じるものは救われる   かも
ザーメン
2020/09/05(土) 02:43:18.04ID:8p8cEJTs
それは真理に対する冒涜です
オブジェクト指向は幻想だったのです
2020/09/05(土) 02:44:53.71ID:Z6T2tUbK
都市伝説、インチキ、ナンチャッテ工学モドキだったのです
でも、それを言っちゃー、お仕舞よ
2020/09/05(土) 02:58:46.45ID:reBScYEy
https://www.youtube.com/watch?v=40W_hc_q8XU&;hd=1
2020/09/05(土) 03:04:42.31ID:reBScYEy
https://www.youtube.com/watch?v=K-JtRGYbC8w&;feature=youtu.be
872デフォルトの名無しさん
垢版 |
2020/09/05(土) 09:07:55.71ID:D1vNohy2
>>854
オシッコする時は制御型、勃起する時は自律型。
2020/09/05(土) 10:44:21.72ID:pH42N7I+
>>872
あらあら、隠蔽してるわね
これがカプセル化かしら
874デフォルトの名無しさん
垢版 |
2020/09/05(土) 11:09:12.76ID:8SDdoWCb
>>814
思想的にはSICPに書いてるストリームそのものだ
ttps://sicp.iijlab.net/fulltext/x350.html
2020/09/05(土) 11:40:32.92ID:HNHK9ynw
SICPの思想ってダサいんですね
2020/09/05(土) 14:30:58.08ID:OV3VFUME
なんでマキマはパワー殺したんや?

パワーちゃんを返せ!!(´;ω;`)ブワッ
2020/09/06(日) 00:18:58.13ID:EHj/0lhS
結局の所クローズドソース、外部ライブラリ全否定でしかないな
OS、ドライバ、アプリすべてを自分で作れが結論になってしまう歪んだ主張
2020/09/06(日) 02:07:24.98ID:cRkvTnxS
状態を持つかどうか
2020/09/06(日) 04:06:37.81ID:YGBdC9vb
関数型で、状態を持たせなければいい!じゃなくて
関数型で状態をどうやってもたせるかって話をしてくれ
状態っていうのはなくすのは不可能なものなんだ
2020/09/06(日) 05:18:42.56ID:SNogxihD
>>879
レコード作るだけじゃん
2020/09/06(日) 05:53:21.72ID:YGBdC9vb
>>880
関数型言語一般の用語で言ってくれませんか?
2020/09/06(日) 06:01:14.89ID:SNogxihD
>>881
ググってみ
2020/09/06(日) 07:07:15.01ID:YGBdC9vb
ググったけど、F#専用の用語だった
2020/09/06(日) 10:33:46.44ID:SNogxihD
ハスケルでも使うわハゲ
2020/09/06(日) 10:36:37.41ID:SNogxihD
関数型にわかのうえに検索力も無い
関数型に憧れてるだけのアホ
2020/09/06(日) 10:42:40.26ID:JCtY/Fts
関数型言語の「関数型」は
関数を変数として扱える=関数型という変数の型を持っている
ということを表していて、
関数型言語を単純に定義すれば、関数型を持っている言語
ということでいいの?
887デフォルトの名無しさん
垢版 |
2020/09/06(日) 11:03:01.77ID:5MBR0P77
参照透過性があってメモ化が可能で状態の無いピュアな関数だけだから関数型だ
2020/09/06(日) 11:18:28.00ID:JCtY/Fts
>>887
それは関数型言語ないしは関数型言語によるプログラミングの理想形であって
関数型の定義というか要件ではないように思える

定義、要件、理想、本質、それによってもたらされた機能…
そういうのがごちゃ混ぜになって話がまとまらなくなってる気がする
889デフォルトの名無しさん
垢版 |
2020/09/06(日) 11:57:32.78ID:SNogxihD
>>886
〜型言語の「型」はdata typeの訳語ではなくて
ある特徴を持っているという意味だよ

最新型ノートパソコンの「型」と同じ働き
2020/09/06(日) 12:21:24.89ID:gGwX7R3F
>>880
レコードってタプルやコレクションと同列のただのデータ型じゃね?
891デフォルトの名無しさん
垢版 |
2020/09/06(日) 12:25:15.66ID:nDvuYYqI
関数型プログラミングがわからない、
でも勉強したくないし、チュートリアル数ページすら読まない

こういう輩を相手に何言っても無駄
理解出来ないだけでなく、理解しようという気がないから
892デフォルトの名無しさん
垢版 |
2020/09/06(日) 12:28:26.25ID:SNogxihD
>>890
C言語でいうところの構造体だね
2020/09/06(日) 12:32:39.91ID:n2EZq4Ad
privateがなくてpublicしかない構造体
内部データを持てない構造体
2020/09/06(日) 12:46:56.99ID:gGwX7R3F
>>892
じゃあレコードでなければならない理由はないんだよな。
895デフォルトの名無しさん
垢版 |
2020/09/06(日) 12:58:13.53ID:SNogxihD
>>894
なにが?
2020/09/06(日) 13:03:09.55ID:gGwX7R3F
>>880が。
897デフォルトの名無しさん
垢版 |
2020/09/06(日) 13:04:50.70ID:SNogxihD
>>896
ないんじゃね、レコードしかないとは>>880さんは言ってないし
2020/09/06(日) 13:23:08.96ID:cRkvTnxS
関数へのポインタが使えるCは関数型言語
2020/09/06(日) 13:36:39.46ID:F+CgsiXq
ポインタ含む参照型がある言語は関数型ではない
関数型は参照型禁止、値型しか無い
2020/09/06(日) 13:40:27.64ID:gGwX7R3F
>>897
つまり>>880は「値作るだけじゃん」と読み替えても同じということ?
901デフォルトの名無しさん
垢版 |
2020/09/06(日) 13:43:40.01ID:SNogxihD
状態が不変なら参照型も値型も扱い方は同じ
値のコピーを取る値型よりも参照型の方が効率的
902デフォルトの名無しさん
垢版 |
2020/09/06(日) 13:44:34.03ID:SNogxihD
>>900
違うんじゃね、>>880さんはレコードと言ってる
レコードと値は別のもの
2020/09/06(日) 14:03:17.00ID:NTBgE1bF
関数型で状態管理するのは別にそんな複雑な話でもなくて、状態を戻り値にした関数作るだけだぞ。
コネクション管理だったりreduxの作りだったりで見かけたりはする。
別にいいとも悪いとも思わんが。
2020/09/06(日) 14:05:16.32ID:rO2fthBs
問題はその状態がpublicだから誰でも見れちゃうという所
2020/09/06(日) 14:08:22.94ID:NTBgE1bF
>>904
いやそれがパブリックかどうかを気にするようなスコープで使ってることのが問題
2020/09/06(日) 14:09:37.52ID:gGwX7R3F
>>902
>>880はレコード型の値を作ることを言っているかと思ったんだが?
907デフォルトの名無しさん
垢版 |
2020/09/06(日) 14:16:55.47ID:SNogxihD
>>906
>>880さんが言ってるのは「レコード作るだけじゃん」ってことだよ
読み直してごらん、それ以外のことを言ってない

>>906さんが「値作るだけじゃん」と言ったのであって
>>880さんはそんなこと言ってません
2020/09/06(日) 14:33:58.57ID:gGwX7R3F
>>880で作るといっていた「レコード」がレコード型の値のことでなければ何だったんだろうか。
まさかレコード型の方か?
909デフォルトの名無しさん
垢版 |
2020/09/06(日) 14:36:14.18ID:SNogxihD
>>908
レコードを作ると言ってるんだからレコードのことに決まってます
910デフォルトの名無しさん
垢版 |
2020/09/06(日) 14:38:21.85ID:SNogxihD
マリオ「ドラキュラはにんにくが嫌いだ」
ルイージ「にんにくは野菜だからドラキュラはにんにくという野菜が嫌いなんだ」
ルイージ「ドラキュラは野菜が嫌いだとマリオが言っていたので
  僕はとっておきのにんじんをドラキュラに投げつけてやるんです」
2020/09/06(日) 14:54:38.53ID:gGwX7R3F
値でも型でもない「レコード」というと、はて…?
まさかデータベースとか円盤とかではあるまいが。
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。