オブジェクト指向ってクソじゃねぇかよPart4
■ このスレッドは過去ログ倉庫に格納されています
無理やりオブジェクト指向にしたから出てきた問題を解決して凄い凄い言ってるだけ。 単なるマッチポンプ。 カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、 オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、 オブジェクトの実際の型を隠蔽したりすることをいう。 偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。 一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として 「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。 オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で 縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」 という概念はない。 https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96 前前前スレ オブジェクト指向ってクソじゃね? https://mevius.5ch.net/test/read.cgi/tech/1535085129/ 前前スレ オブジェクト指向ってクソじゃねぇよ? Part2 https://mevius.5ch.net/test/read.cgi/tech/1539872441/ 前スレ オブジェクト指向ってクソじゃねぇかよPart3 https://mevius.5ch.net/test/read.cgi/tech/1542884872/ 関数型をやらない自由があったから関数型の損失は出なかった 対案を出す義務を植えつけようとしても対案が全然出てこないのも自由だからだな FP is great! Invest some time into learning functional programming, and you will be ahead of most of your peers. リンク先見たけど 関数型なら直ぐに大丈夫みたいに 最初に思わせる様に書いて有るけど 結局どうすればいいのか? という点に全く答えてない ただオブジェクト指向プログラミングの現在の問題点は上手く突いているとは思う 動物の例えも 本来知らなければいけない要素とは関係無い物を持ち出して来て 混乱している というのは確かにそうだ オブジェクト指向プログラミングは 上手く使えるとかなり効果的だけど その効果的を得る為に必要な 手法 方法論 教育教科課程 これ等が無いのが現状一番問題でそれを 生涯学習だ 等と言っている様だね オブジェクト指向プログラミングを活用する説明が何らかの形でそのうち出てくるだろう と思っていたけど 現状ですら出てこないのが一番の問題で 各種言語がオブジェクト指向プログラミングから離れていっている 関数プログラミングについては知らないけど 感覚的には多くの人(プログラムする人の8割くらい)にはオブジェクト指向プログラミングより更に 使う事は出来ない と思うな オブジェクト思考プログラミングは活用方法の習得方法が開発されれば多くの人が使えるようになると思う 関数型とオブジェクト指向型の差はそこにあると自分は見ている ダメなヤツはmainだけで書かれたコードを関数に分割することもできない C言語でそれすら出来ないヤツは思った以上にいる 構造体の使いどころも分からんやつもいる ベースの脳みそがそんなのなんだから教育方法の有無は幻想だ オブジェクト指向って作りやすいクラス設計と使いやすいクラス設計が対立しない? 両立させようとすると泥沼にはまる 作りやすいが何を意味して言ってるのか分からないよな。 コピペで乱立出来るから作りやすいのか、コード量が少なくて済むから作りやすいのか。はたまた 作りやすいクラスは、抽象クラスのことを言っているのかな? 他人が作ったものをあれこれ言っても仕方ない。 作りやすいクラスなんかくそくらえ 使いやすいクラスを作ってこそのオブジェクト指向 そのためのコストは安くない オブジェクト指向はユーザーに機能の実現以上のことを提供する データを保護し抽象依存を押し付け ユーザー、つまりオブジェクト利用者の誤りを防ぐんだ だが一度きりの使い捨てプログラムや時間に追われた日々の開発で そんなこと考えてる暇が、テストしてる暇があるか? オブジェクト指向が防ぐのはプログラマの誤りだ 悪意からシステムを守る力はそんなにない 配列と一緒に長さを別引数で渡さなきゃいけなかった時代のことを忘れない 今思えば0ターミネートよりマシだったのかもしれない そら、配列に0入れることもあるんだから 0ターミネートなんてできるわけないやろ ゼロに意味があるバイナリデータが正しく扱えない仕様はいかがなものかと。 クライアントサーバの業務アプリをよく受託するけど、 15年前にVB6で作っていた頃の生産性と 今のVB.NETの生産性を比べても 実際よくなってはないというかむしろ生産性落ちてる気がする 優秀な人がたくさん集まれば生産性上がるのかねえ? >>616 マイクロソフトの.NET Frameworkはクラスを継承して作るというより、ライブラリを使用して作るものになっているからね。 >>616 生産性が上がらないって…どんな環境で作ってるわけ? >>610 そりゃ単なるqueueとかstackなら使い方間違うことないだろうが、 オブジェクト指向マンセー厨がやると変に恣意的かつ複雑なインターフェイスを やり始める。 オブジェクト指向の問題ってのはそういう詰め込みすぎなクラスを作る傾向が強くなる点だな。 >>618 どちらもやりなれていれば同じということだと思うよ。VB6.0は止まっているからやりやすい部分もある。 > オブジェクト指向マンセー厨がやると変に恣意的かつ複雑なインターフェイスを > やり始める。 そうか?ちょっとRubyかJavaScriptで例を見せてよ >>621 一般に出回ってる枯れたコードはそういう部分は少ない。 まあそれでもpythonのpandasとかでも十分インターフェイスの統一感はないし、 結果が副作用なのか戻り値なのかわかりにくい。 オブジェクト指向信者が考えるほどこの辺のAPI設計てのは楽じゃない。 業務アプリ屋さんにとっては、同じことをやるにしても VB.NETになってコードが膨らんだだけだもんな .NET Frameworkが出たころはセンセーショナルに宣伝されたり、 したり顔の人がマンセー記事書いたり、そんなに凄いのかと思ったよ でも、VB6.0の参照設定やポトペタで十分だったよ、平均的な開発者にとっては あくまでもライブラリ「利用者側」の意見だけど >>618 今も昔もVisual Studioでしょ?違うの? 優秀じゃない人にかぎって、オブジェクト指向言語を変に持ち上げるんだよね 職業でやってるんだから、同じことが簡単にできればそれでいいんだよ できないのに、さもエレガントに開発できるよ、できないのは勉強不足だとか いいだすバカがたくさん沸いて困るよな そいつが有名なライブラリでも開発してるんならともかく >>622 オブジェクト指向は素晴らしい。 作る時間がない人は、使うだけでもいい。 使うだけなら作る問題は一切関係ない。 使うだけでオブジェクト指向はのすばらしさが分かるだろう。 >>625 > 優秀じゃない人にかぎって、オブジェクト指向言語を変に持ち上げるんだよね 罠かな?w (優秀な人 + 優秀じゃない人)=すべての人がオブジェクト指向言語を持ち上げてる っていうのが正解だろ? >>616 > 実際よくなってはないというかむしろ生産性落ちてる気がする 生産性が上がらないっていうのはこういうことだよ。 例えば、パソコンを使えば電卓よりも遥かに生産性が上がるだろ? だがパソコンを使えない人にとってはどうか?電卓のほうが速いだろう? 生産性っていうのは単に道具を入れたら、それだけであがるってものじゃない。 生産性を上げるには使う側の能力もあげなければいけない。 電卓でもなんとか検定があるように使う側が能力を上げれば生産性はあがるが 限界ってのが存在する。どんなに頑張っても限界以上あがらない。 優れた道具はその限界を引き上げる。ただし限界を引き上げるだけなので 使ってる人間が頑張らなければ、今と変わらない。 だから能力があるプロ集団の生産性は著しく向上し、 能力がない素人集団は道具を使えずに生産性が落ちることになる。 出来るところと出来ない所で差がどんどん広がってるんだよ。 責任を人が無能なせいしにして 生産性が上がらないという事実に目をつぶろうとする究極無能 この手の無能は本当に厄介 自分だけ破綻すればいいのに周囲を道連れにする 生産性を上げるにはどうするかの話やで? 道具を入れたら生産性が上がると勘違いしてるのは誰や? どんだけVSに良い機能が追加されたとしても、 それを使わないなら、なんの生産性も上がらないのは当たり前だな 具体的にどの機能が良いの? 個人的には非接続型のADO.NETとか、メリットがよくわからないわ 昔のADOでも非接続が必要なら手段はあったし 日本の平均的なプログラマーには高度でメリットが享受できないんじゃね? 欧米は知らんけど . , ャ ィE5!.. .. ,,.e;〆 .、 w===|====!. π .e、x& .. ^~ ! ``= π ,, カ. _ _ ̄オ⌒|! `ヘ . fラ⌒ ̄l「~~~^. ,.タ. .ル .ll ~\_ 〃 〃. ^.. . .オ.. ,...__,xf~. ^ f! 、 . '^´  ̄ ̄.. .. l|.. r=キ'⌒.. . `!、 ~~~~~~⌒... l} ⌒heィ~. .+s_、_e. .^+--w=f `ヲse、._ _、... ′ チンポがシコシコするのは、チンポ自身が独立した生き物であり、チンポ自身の意思であり自己決定である。 機械語やアセンブリ言語から副作用はあれど式を導入して(x = x + 1)手続き型言語が誕生したと考えると、 手続き型言語も機械語から数学に寄ってきた言語で、関数型言語はそれを推し進めた言語とも言える。 (手続き型言語やOOP言語は式と命令が混ざっていると考えれば、純粋手続き型言語はアセンブリ言語?) ただ、無限ループに関しては遅延評価を取り入れた言語(Haskellなど)がさらに数学に寄った極端な例で、 OCamlやSMLみたいな先行評価な関数型言語は無限ループに関しては手続き型言語と大差無い。 以下のHaskellコードはcycleのみが無限ループの構造だが、他のコードは線形。 (先行評価では無限ループの局所化は無理) import Data.List import System main = mapM_ put $ zip hellos marks hellos = (cycle.tails) "Hello World!!" marks = cycle ["/","|","\\","--"] put (x,y) = do putStrLn (x ++ "\n" ++ y) mapM_ (\_ -> putStr "") [1..50000] system "clear" cyycleは組込だが、定義はこんな感じ。 cycle xs = xs ++ mycycle xs そして関数型言語に足りないのは構造の記述力 手続き的なものはかけるが、それを分割構成するための 構造の記述力が欠けている。 だから大型アプリには適さない。 そして構造の技術力に強いオブジェクト指向言語は その内部の手続の記述に矛盾なく関数型言語を 取り入れることが出来ている。 Haskellが基にした圏論はまさしく構造を記述する為に生まれた数学だが。。。 大規模開発とかはimportとかのパッケージの話じゃ無いかな? だったら、別に言語に差異は感じないが。。。 推し進めたんじゃあなくて関数型のラムダ計算が一番最初に出来上がったんじゃあないの? . , ャ ィE5!.. .. ,,.e;〆 .、 w===|====!. π .e、x& .. ^~ ! ``= π ,, カ. _ _ ̄オ⌒|! `ヘ . fラ⌒ ̄l「~~~^. ,.タ. .ル .ll ~\_ 〃 〃. ^.. . .オ.. ,...__,xf~. ^ f! 、 . '^´  ̄ ̄.. .. l|.. r=キ'⌒.. . `!、 ~~~~~~⌒... l} ⌒heィ~. .+s_、_e. .^+--w=f `ヲse、._ _、... ′ haskellのようなオブジェクト指向じゃない言語でも結局オブジェクト指向と同等のことをできるようにするために四苦八苦してる >>644 >haskellのようなオブジェクト指向じゃない言語でも オブジェクト指向は俺の股間に付いているのだからな!!! 最近クラス名で悩むことが増えた 仕事や責務でクラス分けするとうまい名前がなかなか出てこない 単なるデータクラスならこんなに悩まないのに . , ャ ィE5!.. .. ,,.e;〆 .、 w===|====!. π .e、x& .. ^~ ! ``= π ,, カ. _ _ ̄オ⌒|! `ヘ . fラ⌒ ̄l「~~~^. ,.タ. .ル .ll ~\_ 〃 〃. ^.. . .オ.. ,...__,xf~. ^ f! 、 . '^´  ̄ ̄.. .. l|.. r=キ'⌒.. . `!、 ~~~~~~⌒... l} ⌒heィ~. .+s_、_e. .^+--w=f `ヲse、._ _、... ′ >>627 いや優秀な人は「オブジェクト指向を変に持ち上げない」ねたしかにw キーワードを妙に大事する時点で文系脳というか (+) 1 2 だけどこれって、むしろアセンブラっぽいような でもカラムが整然と並ぶ形式の方がすっきりしていい気もする カラムが整然と並んでると、式をデータ化できる 式をマスタ登録してSQLを動的発行するシステムを作ったことがある 当然、演算子は全部同じ列に記述 ( 表1 項目1 + 表1 項目2 ) みたいな こうすると、項目を仕様変更する際に、影響先を瞬時に抽出できる 業務用語が膨大にある場合は業務用語をそのまま使うな 言語開発者は膨大な業務要件と格闘する立場にないからね さっきの式のデータ化みたいに、実装と要件を分離する言語がほんとは必要 OSも要件が膨大で、管理しきれてない様子… オブジェクト指向は好きだけどプリミティブ型禁止ルールだけは受け入れられない >>647 適切に命名して適切に分類したら設計の大半は終わりじゃないの >最近クラス名で悩むことが増えた ってのは難しい仕事を任されるようになったんでしょ むしろそうじゃないとプログラマの価値が減衰してることになる 要するに分析するのが難しい複雑な仕事を任されてんだよ 書くのが仕事じゃなくて分析するのが仕事、そこが「変数名が難しい」として現れてるだけ 子供の頃に 読み聞かせや 余り親に話し掛けてもらえなかったりすると 長文を読むのが苦痛になるそうだ 弱育児放棄みたいな感じ 長文嫌悪は職業病でしょw なんでこんな糞の山になってんの、っていうコード見たこと無い? そういうのはじっくり眺めるともっと単純に素朴に表現できて コードの行数も半分以下になったりするんだよね つまり、弱育児放棄された人間=オブジェクト指向を使いこなせない、と 恵まれた生育環境にあるとオブジェクト指向を使いこなせる、っていうわけか 育ちの良さを測るのにも使えるな C++なんだが、必要なクラスだけ 追加で作って 使わないと思われるクラスは放置しておいて 直すという方法が手っ取り早いので、 外人さん(英国のチーム)が直すと、 あいつらドキュメント絶対に一文字も 書いてくれないでどんどん追加するから、 すぐに数十万ステップのグロテスクな ソースになる。 今見ているのはデバッガーのソースだが、 おそらく整理すればせいぜい1万ステップ。 なのに20万ステップもある。 ソースいくら追いかけても不明だが ひと月で直さないといかん。 首吊ろうか退職しようか どちらかになると思ってたが、 仮病使って当分休むことにした。 懇意にしてる主治医に事情話して 診断書書いてもらった。 外人はダメ。 覚えておいて! 仕様書があるならコメントなんて書かなくてもいいじゃん 作業指示書が曖昧でゴミなのを相手のせいにしてるだけじゃねえの . , ャ ィE5!.. .. ,,.e;〆 .、 w===|====!. π .e、x& .. ^~ ! ``= π ,, カ. _ _ ̄オ⌒|! `ヘ . fラ⌒ ̄l「~~~^. ,.タ. .ル .ll ~\_ 〃 〃. ^.. . .オ.. ,...__,xf~. ^ f! 、 . '^´  ̄ ̄.. .. l|.. r=キ'⌒.. . `!、 ~~~~~~⌒... l} ⌒heィ~. .+s_、_e. .^+--w=f `ヲse、._ _、... ′ >>658 外人がどうのとかそういう問題じゃなくて 単に金払いが悪いからそれなりの奴しか入ってこないってだけだろ。 安直に外注に○投げてりゃ、仕事の質もそれなりだって。 単純に払った金額に応じた仕事してもらえりゃ、そりゃ苦労ないわ それにオブジェクト指向とかAIとかバズワードふんだんに営業かけてくる口は なおさら、それなり ところでだ。「チンポがシコシコする」という日本語表現は、文法的に正しいのか? チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。 オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンボ)が繋がっている場合と、 全体(俺)と部分(チンボ)が別々になっている場合とが考えられる。けれども「チンボ」はそれ自体 が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。 例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。 違うか? 「胸がドキドキする」は良いが、「チンボがシコシコする」はダメな理由を、50字以内で述べろ! 文法的には正しいだろ 意味的にはおかしいが 俺あるいは手がちんぽをシコシコするのであって、ちんぽがシコシコするわけではない ちんぽ.シコシコしろ() ではなく 手.シコシコしろ(俺のちんぽ) とするのが意味的に正しい 集約云々は前者でモデリングするべき 即ち俺とちんぽが繋がってる ちんぽが自立して動き回ったりしない 主人が死ねばちんぽも死ぬ、即ちライフサイクルが一致する そういった集約は特にコンポジションと呼ばれる 611 名無し三等兵 (ワッチョイ 7fe7-t9Bb) sage 2018/11/22(木) 12:46:59.97 ID:vFEoyYoC0 >>587 「ちんちん」の語源の1つの説に、 支那の娼婦が幼児語で「入れて入れて」と言った言葉を 当時の出羽守が有難がって日本に広めたという かなり眉唾物な故事がある。 その説に依るなら「チンポがシコシコする。」は 当然のように入れた側の所感とその転用じゃな。 591 名無し三等兵 (スッップ Sd1f-hEn1) sage 2018/11/22(木) 12:26:55.61 ID:9IvK1JXqd >>587 シコシコするは他動詞なので、所有者の意思とは無関係にチンポが自立行動するのであれば「イライラする」「ムラムラする」という自動詞を用いるのが正しい 555デフォルトの名無しさん2019/06/14(金) 18:40:23.68ID:at4G39ge ちんぽがしこしこ、そんな言語表現あるのか? クリントンの「不適切な関係」 https://eigo-kobako.blog.so-net.ne.jp/2008-06-21 不適切な関係、そんな言語表現あるのか? ちんぽがしこしこしてしまったのが、不適切な関係なのか? ジンジンするやヒリヒリするは痛みを表現する言葉として、 ちんぽがジンジンするとか、ちんぽがヒリヒリするとか使うだろ? 多分シコシコも何らかの刺激を形容した言葉と捉えれば、 別に何の不都合も無い。 ではシコシコするとはどういう感覚を言うのか、そこが問題だ。 ジンジンヒリヒリは擬音語? シコシコパコパコは擬態語? このうどん、シコシコしてますね? みたいな感じだろ? きっとまんこ側の挿入感覚なんだ。 >>660 チームでやってるとレビューとかメンテの際にコメントないとまじで面倒 いらないとかいうやつはチーム開発をしたことないか、糞優秀なメンバーしかいないところなんだろうな オブジェクト指向を否定する人って普段、どんなフレームワークを使って開発しているのか知りたい。てか、フレームワークという概念すらなさそう。 >>674 オブジェクト指向とフレームワークに何の関係が? >>675 最近のスマホアプリにせよ、組み込みにせよ、web開発にせよ、今時のフレームワークはオブジェクト思考を意識して設計がされているからね。まぁ、フレームワークに限った話でもないけど。 それはおまえの使うフレームワークがオブジェクト指向になっているだけの話で、フレームワーク自体は何らオブジェクト指向の制約は課されて無いんだがなぁ まるで自己中な独りよがりな奴だって事だけは理解した。 オブジェクト指向ぶっ壊したDSL持ってるフレームワークとか結構あると思う >>677 何が言いたいのかさっぱりだが、 「フレームワークの設計がオブジェクト指向」ってことは オブジェクト指向の有用性の実例の一つって話なんだが 「俺が使ってないからオブジェクト指向は使われてない!」は 間違いだって理解できるよね? >>678 いやいや、DSLが云々じゃなくて、 フレームワークの設計の話だから >>679 俺が言おうとしたことを言ってくれてありがとう。察しが良くて助かります。 >>677 ちょっと煽られたくらいで発狂しないでくれよ...。別板だったら更にからかってやりたい気分だが、ム板民同士、仲良くしよーぜ。 オブジェクト指向ってここの人達が思っている以上に世の中のソフト開発に貢献している技術なんだよって言いたかっただけ。 >>670 >ではシコシコするとはどういう感覚を言うのか、そこが問題だ。 では質問するが、チンポは随意筋なのか不随意筋なのかどっちなんだ? オブジェクト同士は常に二人称で、「俺」←対話(メッセージング)→「チンポ」。 つまりチンポは独立し自ら考えて行動する別の生き物なのである。 この考え方に至ってからは、オブジェクト指向の理解もすんなり進みました。 上手くオブジェクトを定義して、上手く会話させてやるのがオブジェクト指向 での設計なんだなーと今でも思っています。 https://blog.mah-lab.com/2014/03/18/object-oriented/ チンコの随意筋と不随意筋 http://d.hatena.ne.jp/tottokotokoroten/20130516/1368716650 <俺> 「 部屋の英子がこちらを向いた気配に、彼は勃○した陰○を外から障子に突きたてた。障子は乾いた音をたてて破れ、 それを見た英子は読んでいた本を力一杯障子にぶつけたのだ。本は見事、的に当って畳に落ちた。 」 <チンポ> 「 その瞬間、竜哉は体中が引き締まるような快感を感じた。彼は今、リングで感じるあのギラギラした、 抵抗される人間の喜びを味わったのだ。 」 まさに独立した人格を有したチンポという、もう一人の俺がそこに現れるのである! 【藤子・F・不二雄】「みきおとミキオ」現在と未来、憧れの入れ替わり生活! https://www.google.com/amp/s/middle-edge.jp/articles/0izbO.amp >>683 ちんぽは俺の意思に逆らって、勃ったりり勃たなかったりするから、不随意だろ? オブジェクト指向って構造体なんだって ふーんなるほどね 新入社員の胸に丸いおっぱいが2つ付いてた 俺は「お、オブジェクト指向だね」そう言って乳首の先に両手の人差し指を当てた するとその娘は「もっと手続き的にしてください」と言った 俺はC++をやめてCを書くことにした >>685 >ちんぽは俺の意思に逆らって、勃ったりり勃たなかったりするから、不随意だろ? トイレでオシッコを出すのとオシッコを止めるのはどうなんだ? 928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1 >>922 >ナンチャッテメッセージングスタイルになったのは チンポ.オシッコを出す チンポ.オシッコを止める さっきトイレでやってきた。 929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1 >>915 >単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを >ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。 × 俺.オシッコを止める 俺.オシッコを出す ○ 俺.チンポに力を入れる 俺.チンポから力を抜く おしっこのコントロールはちんぽ関係ないだろ? 女だっておしっこのコントロール出来るんだからさ。 C++のオブジェクトは、構造体と関数の集まりだけどな。 これって実装依存になるのか? >>690 オシッコをするときのチンポは随意筋、勃起するときのチンポは不随意筋。 これがオブジェクトの多重継承というものだ。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる