X



オブジェクト指向はオワコン
レス数が950を超えています。1000を超えると書き込みができなくなります。
0002デフォルトの名無しさん
垢版 |
2023/08/26(土) 23:53:44.68ID:gfADRkkl
オブジェクト指向言語で書きさえすれば勝手にオブジェクト指向になると
勘違いしてるやつが多かったな
0005デフォルトの名無しさん
垢版 |
2023/08/27(日) 10:56:24.10ID:mybkYCXq
そもそもライブラリがオブジェクト指向だし
オブジェクト指向を回避したくても出来ない
0007デフォルトの名無しさん
垢版 |
2023/08/27(日) 12:35:22.13ID:53CZdhI9
コンストラクタに独自のクラスいくつも要求してくるタイプの設計マジで嫌い
0008デフォルトの名無しさん
垢版 |
2023/08/27(日) 14:38:41.20ID:2Rmcg3Nl
この処理は一箇所に集約できるんじゃないかっていう人間の感覚と
型による論理的な整合性がズレてることがあって
継承を使ったオブジェクト指向は思ってるより難しいのよね
作り始めたときはよかったけど修正が入るうちにどうしようもなくなった
なんてことも起こりがち
0009デフォルトの名無しさん
垢版 |
2023/08/27(日) 14:43:49.76ID:EmRb2yD4
プログラム作れない奴注目してほしくてクソスレ立てるムーブ
リアルで犯罪やらかす前に病院行った方がいいぞマジで
0010デフォルトの名無しさん
垢版 |
2023/08/27(日) 15:01:39.11ID:Pba1j/J0
オブジェクト指向じゃなくて継承が諸悪の根源なだけだろ
0013デフォルトの名無しさん
垢版 |
2023/08/27(日) 23:59:58.82ID:xzJBfiva
オブジェクト指向を不適切に使っている人が多いだけ。オブジェクト指向で本当に書くべき所だけ書けばよい。
0014デフォルトの名無しさん
垢版 |
2023/08/28(月) 00:19:04.52ID:I52qKdOk
ペテン師がうそばっかこいて布教
ttps://stat.ameba.jp/user_images/20140429/20/kurosawa-tomoyo/99/73/j/o0800107112924360687.jpg
0015デフォルトの名無しさん
垢版 |
2023/08/28(月) 15:03:35.30ID:FqjmR9MT
継承w
継承なんかフレームワーク構築で使うもの。
アプリでは、委譲、集約を使う。
0016デフォルトの名無しさん
垢版 |
2023/08/28(月) 15:19:41.36ID:V9/6DHRS
アプリは底辺土方の作業なのでどうでも良いじゃん
プログラマはライブラリやフレームワークを作ります
0017デフォルトの名無しさん
垢版 |
2023/08/29(火) 11:18:21.31ID:+HxwobiY
>>16
と底辺土方が申しております
0018デフォルトの名無しさん
垢版 |
2023/08/29(火) 11:52:41.99ID:uTnQ7OpV
そうです、私が底辺土方です
0019デフォルトの名無しさん
垢版 |
2023/08/29(火) 11:59:48.44ID:uTnQ7OpV
土方的にはオブシコは時代遅れっていうかー
オブシコでは複雑さに対処できないことが多くの人の経験から明らかになってるのでー
昔はstaticおじさんとかドメイン貧血症と言われてバカにされていたものが
実は正しかった可能性が高いっていうのがいまの状況でー
データと振る舞いを分離することでシステムがしなやかになると認識してますねー
以上、土方の現場はそんな感じですねー
0020デフォルトの名無しさん
垢版 |
2023/08/29(火) 12:14:34.24ID:uTnQ7OpV
オブジェクト指向最強説が巷間に流布していたのは~2007年くらいまでですね

2007年前後にオブジェクト指向ってなんかおかしくない?と聡明な人たちが気付き始めて
より良い方向を探り出して関数型やデータ指向が再発見されて
その考えが一般の人にまで広がりだしたのが現代ですね

聡明な人はさらにその先まで見えてるのかもしれないですが
俺のような一般土方的にはデータと振る舞いは分けて設計するのがいまの現場のベストプラクティスです
0022デフォルトの名無しさん
垢版 |
2023/08/29(火) 15:17:11.07ID:GZdflYYk
これ会議が負けて、現場が勝ったみたいな話よね
現実は机上で考えるより複雑だったと
0025デフォルトの名無しさん
垢版 |
2023/08/31(木) 19:47:10.22ID:Wp8e5yX6
ちょっと論点ずれるかもだけど、
結局何が良いのだろう。

最近、Goが気になってるのですが、頭いい人教えてください。

下記見て混乱してるところにオブジェクト指向オワコンと来るとどういう時に使い分ける(関数型?)か混乱します。

Goはオブジェクト思考?
https://postd.cc/is-go-object-oriented/

GoとJavaの違い
https://inside.dmm.com/articles/ex-java-engineer-thoughts-about-go/
0026デフォルトの名無しさん
垢版 |
2023/08/31(木) 20:57:44.89ID:xuZfOSNk
混乱するなら関わるな
無理に理解しようとすると頭がおかしくなって死ぬぞ
0027デフォルトの名無しさん
垢版 |
2023/09/01(金) 10:17:00.62ID:8Q6o7DlX
goがオワコン
0028デフォルトの名無しさん
垢版 |
2023/09/01(金) 10:54:12.28ID:z0kX04PW
トップオブトップのPythonさんがオブジェクト指向なんだから安心してついていこうぜ
0029デフォルトの名無しさん
垢版 |
2023/09/01(金) 12:32:14.48ID:YK6A/+tP
コピペするなっていうけどコピペしてクラスメソッドとして実装した方が何かと都合いいよな
0030デフォルトの名無しさん
垢版 |
2023/09/02(土) 01:55:07.77ID:SWd5fs2f
WindowsにしろMacにしろUNIXにしろGUIがオブジェクト指向を根本原理として作られているから
フルスクラッチで刷新されない限り、オブジェクト指向の呪縛からは逃れられない
0031デフォルトの名無しさん
垢版 |
2023/09/02(土) 12:26:53.46ID:TvfRP8L0
フルスクラッチとは言ってもライブラリ使う時点でもうオブジェクト指向なので
0032デフォルトの名無しさん
垢版 |
2023/09/02(土) 15:29:32.20ID:mCX3wjBN
オワコンなのに人気絶大のスレ七不思議
0033デフォルトの名無しさん
垢版 |
2023/09/02(土) 16:04:40.99ID:22jxpZyL
>>32
クソスレで雑談したがるお前みたいなカスがいるからだよ
当たり前のように使うものをオワコンって言うのが異常
0034デフォルトの名無しさん
垢版 |
2023/09/02(土) 20:23:00.00ID:F+VUcEjl
オブジェクト指向は部分的には成功してるんだと思う
よくあるコンテナ類のクラスライブラリとか使いやすいでしょ?
別になんにも文句ないでしょ?
OOPを定義するお題目、カプセル化がどうのとかも、
非常によくマッチして効果を発揮してくれてると思う。

だけどそっから先が盲点。
OOPのコンセプト自体はいいのかもしれん。
OOPで作ったクラスライブラリも、良いのがあるのかもしれん。

でも、クラス設計が難しい。
クラスライブラリの設計が難しい。
OOPを使ってさあ自前の何かを作ろうとしたら難しい。
間違う。間違いをさらなる間違いで補う。
糞の山を糞でラッピングする。

自分でクラスや、関連する一連のクラス群をつくるとき、
そこに最大の困難があり、さらにそれは自覚されない。
プログラマの共通認識とすらされていない。
OOPやOOPLについては語れど、クラス設計の困難さには意識が行かない。
またはその困難さを解決する認識も知識も文化もなにもかもが不足している。
クラス設計の難しさに対して誰もが、とたんに無力に、無自覚になる。
ここにOOPの恐ろしさがある。
0035デフォルトの名無しさん
垢版 |
2023/09/02(土) 21:16:52.73ID:Tv71xRLL
Javaでないならムリに自分でクラスを作らなくても良くない? とりあえず構造体と関数で書いてみて、必要だと思ったらクラスに移行するとか。スクリプト言語とかでもそんな感じだし。
組み込みのクラスライブラリを使うだけでも十分にOOLの恩恵はあると思うけど。
0036デフォルトの名無しさん
垢版 |
2023/09/02(土) 21:28:19.20ID:F+VUcEjl
正解
クラスを書かないほうが正解
標準のクラスライブラリだけを使って済むならそれが正解

ただ、そうもいかないときに徐々にホラーになっていく
0037デフォルトの名無しさん
垢版 |
2023/09/03(日) 02:11:19.15ID:7SLOG4Oq
クラス使わないなら構造体のない言語でデータはどうやって定義すんの
全部辞書型か?
クラス自体が動作を振る舞う必要はないっていうデザインパターン論ならわかるが
それすら人間が歩いたり物を持ったりするという機能から考えると直感に反するけどな
0038デフォルトの名無しさん
垢版 |
2023/09/03(日) 02:58:29.28ID:k3BC+VzT
ここで人間とか動物の話はやめてくれんか
少なくともオブジェクト指向のアプローチは失敗した
その直感とやらは錯覚かもしれん
0039デフォルトの名無しさん
垢版 |
2023/09/03(日) 10:25:05.88ID:bR7Kkxs2
メソッドは成功してると思う
継承と過度なカプセル化は失敗だと思う
0041デフォルトの名無しさん
垢版 |
2023/09/03(日) 13:10:54.52ID:jFAGdbdC
>>34
MFC ω のことですねωω判りますωωω
0042デフォルトの名無しさん
垢版 |
2023/09/03(日) 13:12:09.26ID:jFAGdbdC
>>37
Rustは?
Nimは?
知ってて言ってるのか?
0043デフォルトの名無しさん
垢版 |
2023/09/03(日) 13:25:41.46ID:TVj/CYl9
動物の例も批判されがちだけど
あれもねえ
例えは例えなんだから
そのあとは自力で応用しようよ?
コツだけうまく受け取ろうよ? って思うわ

実装に対するインタフェースだとか
継承時のポリモーフィズムだとか
そこだけ例から読み取って
あとはうまく応用しろよって思うわ

具体例からエッセンスだけを取り出して
うまいこと抽象化してくのは必須よね
0044デフォルトの名無しさん
垢版 |
2023/09/03(日) 16:55:38.75ID:tRta3c8j
>>42
Nimは知らんがRustは構造体あるだろ。
俺はRustはオブジェクト指向で書けると思ってるよ。

俺の考えるオブジェクト指向の中では継承は必須でも何でもないので。
0045デフォルトの名無しさん
垢版 |
2023/09/04(月) 04:29:08.08ID:xgTXgyct
アプリレイヤを記述する際、継承は確かに百害あって一利くらいしかなかったけど
オブジェクト指向の本質的な問題点にちゃんと気が付いている人は
とても少ない
0047デフォルトの名無しさん
垢版 |
2023/09/04(月) 06:56:31.16ID:CodZWLif
向き不向きがあると思う
GUIとかゲーム開発には向いているからスマホアプリ開発やwindowsアプリ開発には向いている

サーバサイドには全く向いていない

GUI、ゲーム開発は動物、犬に当てはめやすいから向いてるけど、サーバサイドは向いてないのよね
0048デフォルトの名無しさん
垢版 |
2023/09/04(月) 14:21:39.02ID:pTWW8n2s
>>45
そもそも問題は無い
はい論破です
0049デフォルトの名無しさん
垢版 |
2023/09/04(月) 17:33:01.25ID:/cuaDPpR
>>37
> 全部辞書型か?
そうなる
型の安全性と引き換えに柔軟性を得るっていうのがデータ指向の考え方

オブジェクトに状態をもたせるオブジェクト指向も使い所によってはあり
人間の場合はたとえば明日人間の機能が変わりますなんてことないし機能が安定しているのよね

オブジェクト指向はスタックやリストといったデータ構造とも相性が良い
一方で仕様がころころ変わる業務要件とはあまり相性が良くない
0050デフォルトの名無しさん
垢版 |
2023/09/04(月) 18:33:09.57ID:UIsGravq
JSONω最強ですねωω判りますωωω
0058デフォルトの名無しさん
垢版 |
2023/09/05(火) 19:45:31.82ID:vQrCTIpk
そもそもオブジェクト指向にとって代われると思うこと自体勘違い甚だしい
0059デフォルトの名無しさん
垢版 |
2023/09/05(火) 20:09:35.92ID:HAOsJdAK
>>58
方法の一つでしか無いものにとって代わるって何言ってんの
コピペでしかプログラムできないバカ消えろ
0061デフォルトの名無しさん
垢版 |
2023/09/06(水) 00:09:58.68ID:H9m3TOIp
>>59
オブジェクト指向こそが至高
0066デフォルトの名無しさん
垢版 |
2023/09/07(木) 23:31:22.59ID:mdRVL8hl
関数型言語ではライブラリどう扱うん?
0071デフォルトの名無しさん
垢版 |
2023/09/08(金) 09:56:43.98ID:U3VyfYkU
>>67
おじいちゃん、ここは若者のスレッドなの老害はでしゃばらないでね
0072デフォルトの名無しさん
垢版 |
2023/09/08(金) 13:33:28.64ID:xvdxrsKm
既存フレームワークはオブジェクト指向かもしれんけど
俺はその書き方では使ってない
これが答えだ
0075デフォルトの名無しさん
垢版 |
2023/09/08(金) 17:39:09.54ID:xhNNQs6H
オブジェクト指向こそ至高だろ?
オブジェクト指向のコード読めなくて負い目感じてるよね?
0077デフォルトの名無しさん
垢版 |
2023/09/09(土) 06:42:18.63ID:L8RTgt6O
>>75
オブジェクト指向の最大の長所は可読性の高さだが、お前はオブジェクト指向の基本からまるで分ってないな
0078デフォルトの名無しさん
垢版 |
2023/09/09(土) 08:47:48.10ID:qG0K3jtD
オブジェクト指向の最大の長所が可読性って、そんなに言われているかな? うまいことブラックボックス化ができたたきにゴチャっとしたコードをクラス内部に閉じ込められる効果はあるけれども、オブジェクト同士の相互関係は、基本的にはオブジェクトの海と言われるスパゲティじゃない?
0079デフォルトの名無しさん
垢版 |
2023/09/09(土) 09:31:35.89ID:5dSlQ8VJ
>>78
スパゲッティの定義次第だからその定義を共有しないと話が噛み合わない。
同じコードをオブジェクト指向以外で書いたらスパゲッティじゃなくなるのか、と。
「私が読みにくいと感じるからスパゲッティ」ならどうとでもなる。
0080デフォルトの名無しさん
垢版 |
2023/09/09(土) 09:33:25.46ID:Cz8dAb+H
OOPのメリットが何なのか未だに分からん
Smalltalkみたいに実行環境からオブジェクトをいろいろいじれるやつのときは
オブジェクトってもんがもっと動的に、マウスで触れるような存在で
なんかそういういじくりやすさ含めて親しみ持ってるんだろうけど
0082デフォルトの名無しさん
垢版 |
2023/09/09(土) 09:45:59.55ID:N/e+EbWm
>>81
自治アスペ😂
0083デフォルトの名無しさん
垢版 |
2023/09/09(土) 12:37:22.79ID:+xOF5xX7
>>80
メリットもなにもコード書いてたら普通にオブジェクト指向型になるものじゃね
「Hello World」をわざわざオブジェクト指向にするようなバカならともかく
クラスや継承を作れとか強制するような宗教でもない
0084デフォルトの名無しさん
垢版 |
2023/09/09(土) 13:35:46.45ID:maTjrzau
>>80
オブジェクト指向のメリットはプログラムを管理しやすいことだと思う

たとえば

・DBからデータを取得する
・データを元にExcelファイルを作成する
・Excelファイルをメールで送信する
・作業完了のメッセージをSlackにPOSTする

という一連の処理がある場合に

・DBにアクセスするオブジェクト
・Excelファイルを作成するオブジェクト
・メールを送信するオブジェクト
・Slackにアクセスオブジェクト

があればそれらを組み合わせることでプログラムを作れるじゃん
そして世の中にはすでにたくさんのオブジェクトがライブラリという形で用意されている
プログラマはそれを利用することでさまざまなことが行えるようになるんだ
既存のライブラリで要件をみたせなければ自分で作ることもできる
便利だよね
0085デフォルトの名無しさん
垢版 |
2023/09/09(土) 13:42:59.05ID:maTjrzau
オブジェクト指向のデメリットはオブジェクトを自由に定義できるがゆえに
簡単な処理さえも抽象化してスパゲティになることがありがちってことかな
Hello World Enterprise Editionはきれいに設計されてはいるけど

System.out.println("Hello, World!");

でいいじゃんみたいな

Hello World Enterprise Edition
https://gist.github.com/lolzballs/2152bc0f31ee0286b722

そして世の中には簡単なの処理なのにオブジェクトがたくさんあって
きれいに設計されてるわけでもなくプログラマがそのときの思いつきだけで
作ったんじゃないかと思われるような正気を疑うようなオブジェクトがたくさんあるんだ
どうだい楽しいだろう
0086デフォルトの名無しさん
垢版 |
2023/09/09(土) 13:54:42.10ID:DPFW/FPV
Rustは面倒
0087デフォルトの名無しさん
垢版 |
2023/09/09(土) 14:25:39.31ID:maTjrzau
DBやExcelなどのようにドメインがはっきりとわかれている場合には
これはDBにしか関与しないデータだからDBオブジェクトの中に閉じ込めるみたいに
考えてオブジェクトを作ればいんだろうけどね

業務のドメインは流動的だからね

・この概念とこの概念は違っていてこのようにわけられる
・でもやっぱりこういう橋渡しは認めておいたがいいからこれは例外
・ユーザからこれができなくて困ってるといわれたからなんとかしてもらいたい
・あの概念とあの概念はじつはこういう切り口でみたときには繋がりがあってそれを計算してほしい

みたいなことが業務ドメインの日常だからね
どこが変わるかを予測して多少流動しても設計を変えなくてすむように作り込んだら
あっというまにHello World Enterprise Editionのできあがり

オブジェクトは固体だけれども業務は液体みたいなところがある
オブジェクトの前段階いわばスライムみたいな状態にあえてとどめておくことで
適応力を高められるんじゃないかと思う

計算によって人間の認知能力が生まれ
人間の認知能力によってオブジェクトが生まれるとするならば
関数はオブジェクトよりも次元の高い抽象化のように思われる

関数はスライムの可能性がある
0088デフォルトの名無しさん
垢版 |
2023/09/09(土) 14:57:10.51ID:xoF7Cm8V
オブジェクト指向もモジュール化の1つの(かなり優秀な)手法だと思うよ。オブジェクトの内部はブラックボックス化され、外部からはオブジェクトのインターフェイスだけを相手にすればよいので、同時に考えなければいけないことが減り、プログラムの見通しが良くなる。
問題は、モジュールとしてのオブジェクトを機能させるためには、「これをオブジェクトとして扱う」というモジュール境界の決定が必要になるところ、オブジェクトの粒度が大きくなると、コードを書いた人の恣意的な決定の要素が増えるために、コードを読む人の理解・把握が難しくなっていくことかな。文字列オブジェクの方がcsv_readerオブジェクトよりできることを把握・イメージするのは簡単だし、より抽象度の高いオブジェクトになると、さらに理解は難しくなる。
オブジェクト指向によって得られる見通しの良さは、ゴチャっとしたコードをブラックボックスの中に閉じ込めることによって得られるものなので、オブジェクトの中に取り込まれないコード(オブジェクト同士の相互関係)の複雑性はそのまま残る。これがオブジェクトの海と呼ばれる問題。
オブジェクト指向は重要な進歩だし、今さらそのメリットを捨てることは難しいと思うけど、オブジェクトの「外」の問題については別の手法による対処が必要になる。
0089デフォルトの名無しさん
垢版 |
2023/09/09(土) 15:55:43.01ID:8RnWRRq5
コード書けない奴が抽象的な御託つらつら並べるのはどこのスレでも出てくるんだよな
バカをさらして何が楽しいのやら
0090デフォルトの名無しさん
垢版 |
2023/09/09(土) 16:36:21.41ID:MNKqZUR3
俺は抽象化自体はどうでもよくてifを減らすために使ってるわ
いくらわかりやすい名前をつけても結局全部読むなら大差ないからな
0091デフォルトの名無しさん
垢版 |
2023/09/09(土) 18:04:29.66ID:LlED4Hp3
> Hello World Enterprise Edition

全部は読んでないけどニヤニヤしながら読んだわ
ただし

> if(code.getStatusCode() != 0){



> if(code.getStatusCode() != IStatusCode.OK) {

とかしてインタフェース側に定義された定数使うほうがオツやと思ったわ
0092デフォルトの名無しさん
垢版 |
2023/09/09(土) 18:21:08.83ID:LlED4Hp3
OOPのメリットとして感じてるのは結局は
モジュール化のメリットなんよね
これはOOPのメリットを矮小化させるものじゃないけど

適度に分割して整理して
それらを適度に組み合わせて使うってことは

まぁそこにOOPLならではのことに焦点を当てるなら
継承っていう軸が発生することにより
クラスライブラリや自前のクラス群を説明するとき
継承関係っていうものでもって説明できる場面が出てくる
0093デフォルトの名無しさん
垢版 |
2023/09/09(土) 18:40:22.54ID:GTFNmrLV
OOPでは演算子を型と関数の間の関係として自然に定義できるけど、Cみたいな手続き型とか関数型ではどうやってるんですか?
0094デフォルトの名無しさん
垢版 |
2023/09/09(土) 21:58:47.70ID:2wCSKfyD
おうおうPの良いところだけを継承したモダンな仕組みを作ればいいんじゃないかな
0095デフォルトの名無しさん
垢版 |
2023/09/09(土) 22:52:32.96ID:XsT3u1d6
>>92
>OOPのメリットとして感じてるのは結局はモジュール化のメリットなんよね
8割方同意する
>>84に列挙されてる「〜するオブジェクト」も「〜するモジュール」にすべて置き換えてもなんら支障がないから

>まぁそこにOOPLならではのことに焦点を当てるなら継承っていう軸が発生する
これには同意しない
オブジェクト指向の根幹は継承じゃなくて
データと振る舞いをオブジェクトという基本構成単位にまとめることにある
関数型のモジュールでは代替できない
また継承のうちインターフェース定義とその実装のような関係は
Haskellのtypeclassをはじめ関数型言語でも広く存在するものなのでOOPLならではのことではない

つまりデータと振る舞いをオブジェクトという基本構成単位にまとめられていることによるメリットというのがOOPLならではのメリットということになる
じゃそれは何なのか?
0097デフォルトの名無しさん
垢版 |
2023/09/09(土) 23:03:34.74ID:LlED4Hp3
>>95
> オブジェクト指向の根幹は継承じゃなくて

根幹とまでは言ってないし思ってもないよw

> また継承のうちインターフェース定義とその実装のような関係は

インタフェースと実装の関係を継承とは言ってないつもり
あくまで
インタフェース間の継承であったり
もっと広義には単に型の継承

ごめんね今相当酒飲んでるから取りこぼしてたり誤解してたりするかもだけど

> つまりデータと振る舞いをオブジェクトという基本構成単位にまとめられていることによる
> メリットというのがOOPLならではのメリットということになる

このへんについてはなんとなく同意
カプセル化だの継承だのお題目色々あるけども
結局はオブジェクトって単位だよね
ってとこに着目すんのはわりと同意できる

要点を外してるレスになっちゃってたらすまぬ
0098デフォルトの名無しさん
垢版 |
2023/09/09(土) 23:19:27.60ID:maTjrzau
>>95
> つまりデータと振る舞いをオブジェクトという基本構成単位にまとめられていることによるメリットというのがOOPLならではのメリットということになる
じゃそれは何なのか?

状態だと思う
0099デフォルトの名無しさん
垢版 |
2023/09/09(土) 23:31:29.55ID:LlED4Hp3
ほどよいフィット感だと思う
データと関数まとめる?
まとめたい?
まとめましたけどどうですか?



ええやんええやん の感
0100デフォルトの名無しさん
垢版 |
2023/09/09(土) 23:46:40.67ID:maTjrzau
ミュータブルなオブジェクトを簡単に作れるっていうのがオブジェクト指向言語の利点な気がする
Haskellだとモナドを使わないといけないからね
0101デフォルトの名無しさん
垢版 |
2023/09/10(日) 08:52:36.11ID:tviBJXty
オブジェクト指向は何かってのはWikipediaでも見ればいい。読んで理解してもプログラム技術は変わらないが
オブジェクト指向のメリットは何かって言うのは「どの部分もオブジェクト指向とは言えない」形に自分のコード書きなおしてみればわかる。逆にすべての部分をオブジェクト指向の形にするのはアホな上にキチガイだが
これだけのことを技術板でグダグダ語ってるのはアホ
0102デフォルトの名無しさん
垢版 |
2023/09/10(日) 09:38:36.81ID:yM7j2B0I
>逆にすべての部分をオブジェクト指向の形にするのはアホな上にキチガイ
Rustですね判ります
0103デフォルトの名無しさん
垢版 |
2023/09/10(日) 13:05:53.86ID:rXl4Y+bN
よく知らないが、Smalltalkとか? 「アホな上にキチガイ」かどうかは意見が分かれそうだが。
0104デフォルトの名無しさん
垢版 |
2023/09/10(日) 15:45:22.64ID:lSoYWiHB
1バイトのデータを1バイトのオブジェクトとして表現でない
スタック上に確保できない

そんな言語は全部ゴミ
0105デフォルトの名無しさん
垢版 |
2023/09/12(火) 19:43:42.93ID:oyXayNX+
クリントン大統領にどんな強大な権限が有っても、自らのチンポがしこしこしてしまうのは止められない!

class チンポ extends クリントン{
     super.不適切な関係;
}

クリントンの再定義、クリントンの拡張された人格ということだ!
0107デフォルトの名無しさん
垢版 |
2023/09/14(木) 22:02:34.97ID:vfXwhook
関数型より遥かに便利だわ
0110デフォルトの名無しさん
垢版 |
2023/09/15(金) 08:47:47.02ID:L1OUTakd
>>107
パイプライン演算子は取り入れてほしいかな
setXXXX系メソッドをそのままつなげられたらと思う
0112デフォルトの名無しさん
垢版 |
2023/09/15(金) 10:30:38.51ID:EIF5vDwi
>>109
それはただのエンジニアの自己満オナニーだよしょうもないw
0114デフォルトの名無しさん
垢版 |
2023/09/15(金) 12:15:45.69ID:EIF5vDwi
いくら頭良くても5chでくだまいてたら意味無いですよね
目糞鼻糞ですよね
0116デフォルトの名無しさん
垢版 |
2023/09/16(土) 08:57:00.62ID:lvjlkleA
T,o,k(迷惑という方は←をあぼーんしてください。)

更に家族友人にも紹介して、加えて¥4000をゲットできます!
https://i.imgur.com/g7fQwmH.jpg
0117デフォルトの名無しさん
垢版 |
2023/09/16(土) 09:57:06.22ID:ZJLR+eYH
>>115
とクソが申しております
0120デフォルトの名無しさん
垢版 |
2023/09/16(土) 12:13:33.72ID:ZJLR+eYH
>>119
とハロワおじさんが申しております
0121デフォルトの名無しさん
垢版 |
2023/09/16(土) 12:20:55.48ID:RATZO/gi
おじ同士チンポを舐め合うスレ
0122デフォルトの名無しさん
垢版 |
2023/09/16(土) 12:28:42.66ID:ZJLR+eYH
>>121
毎日5chでチンポ舐め書き込み続けるゴミ人生でした
オブジェクト指向興味無いやつ来んなよ
暇かよ
0126デフォルトの名無しさん
垢版 |
2023/09/16(土) 23:51:17.00ID:0ao3waxq
そしてあちこち依存が絡んだスパゲティーコードを量産
他人が解読するは難しく
時間がたつと自分でもメンテできない
0128デフォルトの名無しさん
垢版 |
2023/09/17(日) 06:56:06.28ID:gR/F5lVJ
>>127
と顔真っ赤おじさんが申しております
0130デフォルトの名無しさん
垢版 |
2023/09/17(日) 07:04:57.07ID:gR/F5lVJ
関数型ならスパゲッティコードにならないというのはどういう理屈?
0131デフォルトの名無しさん
垢版 |
2023/09/17(日) 09:36:51.67ID:oKDM309U
ここまでのまとめ

オワコンとなったのは「クラス」
オワコンとなった理由は「クラスは継承に基づくため」
オワコンとなった証拠は「最近のプログラミング言語Go、Rust、Nimなどは全てクラスを持たない」

以上
つまりオワコンとなったのは「クラスとその継承」
もっと広い意味の「オブジェクト指向」は有効
0133デフォルトの名無しさん
垢版 |
2023/09/17(日) 11:27:29.99ID:gR/F5lVJ
>>131
いや、クラスもオワコンじゃない
以上
0134デフォルトの名無しさん
垢版 |
2023/09/17(日) 11:48:42.16ID:otEgQUqp
GoにしろRustにしろNimにしろ継承が不要になったわけじゃない
言語機能として直接サポートされないためにより面倒でより暗黙的な方法で継承が行われている
上辺だけ見てる人にはそれがわからない
0135デフォルトの名無しさん
垢版 |
2023/09/17(日) 11:56:48.45ID:JheNutwI
>>131
概ね同意
0136デフォルトの名無しさん
垢版 |
2023/09/17(日) 12:10:38.80ID:A/afT8Dp
クラスや継承は高水準な機能だから
低水準を目的とする言語には向いてない
0137デフォルトの名無しさん
垢版 |
2023/09/17(日) 12:19:05.22ID:cSUabsmI
>>133
クラスの本質は継承にあり
クラスは不要

クラスを必要だと思い込んでいる人はクラスと関係ない部分を必要としている
例えばクラスのメンバー変数はGo、Rust、Nimなどでは構造体のメンバー変数
クラスのメソッドはGo、Rust、Nimなどでは構造体のメソッド
つまりそれらはクラスとは関係なくクラスより小さい概念である構造体でも持っている
一方でクラスの本質は継承である

>>134
継承は害悪であり不要
継承しか知らない人だけが継承に固執している
0138デフォルトの名無しさん
垢版 |
2023/09/17(日) 12:28:37.74ID:gR/F5lVJ
>>137
クラスを使ってもいい。
以上
害悪ではない
以上
0139デフォルトの名無しさん
垢版 |
2023/09/17(日) 12:32:35.53ID:YoGswVKv
ID:gR/F5lVJ
プログラム書けない上にどこに行っても相手してもらえないから板違いのスレで吠えるしかないんだな
0140デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:01:40.88ID:gR/F5lVJ
何故自分は相手してもらえると思うんや
おまえの相手して誰が得するんや
オブジェクト指向興味無いなら来んなよ暇人
0141デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:05:43.12ID:cSUabsmI
オブジェクト指向は非常に重要
しかしクラスは不要
これはプログラミング言語界で結論が出ている
だから最近のプログラミング言語Go、Rust、Nimなどはいずれもクラスを持たない
0143デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:30:45.41ID:gR/F5lVJ
オブジェクト指向は非常に重要
クラスも重要
これはプログラミング言語界で結論が出ている
だから最近のプログラミング言語Swift、kotlinなどはいずれもクラスを持っている
0144デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:47:21.55ID:ySEZfztt
JavaScriptのclass構文はよく使われてる印象だな
オブジェクト指向言語でもないのにわざわざclass名乗るって、よほど需要ありと見えるが
0145デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:48:32.84ID:I/olJ+Ch
javascript ω の object で class less 設計に目覚めた
0147デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:49:35.71ID:I/olJ+Ch
>>144
あれは prototype が理解出来なかった人が多かったから class が後付けされたんだろ
0148デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:50:12.29ID:Tq9Zm9TM
俺は継承よりもカプセル化が重要だと思う
だがカプセル化はクラスの専売特許ではない
0149デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:57:14.58ID:fKvD0+k2
>>143
自ら敗北を認めたようだな
SwiftはAppleがObjective-Cの後継と位置付けた訳ありでクラスを採用
KotlinもJavaの後継と位置付けた訳ありでクラスを採用
つまり二つとも例として出してないけない過去のしがらみのある訳あり言語

一方で過去のしがらみのないGoやRustやNimなどの新たな言語では当然クラスは採用されなかった
いずれも全く異なる方向性の言語であるがクラスは不要なものであるという共通認識がプログラミング言語界にあるためだ
0150デフォルトの名無しさん
垢版 |
2023/09/17(日) 14:24:30.92ID:I/olJ+Ch
まあ構造体も継承出来るんですけどね
0151デフォルトの名無しさん
垢版 |
2023/09/17(日) 14:54:07.42ID:gR/F5lVJ
>>149
そんな共通認識は無い
おまえが勝手に言ってるだけ
新しい、なんてのは何の根拠にもなってない
残念、論破、さよなら
0152デフォルトの名無しさん
垢版 |
2023/09/17(日) 15:11:21.73ID:ENG0J7cr
元々「クラス」という言葉は義務教育の頃から皆馴染みがあり下位層で育った奴には嫌な思い出しかないだろう
クラスという言葉に忌避感を持つ人間は日本だけでなく恐らく世界中にいると推測できる
だからクラスは不要だとかオワコンとか言ってクラスの概念自体を排除した新しい物を模索しようとする
一方、過去にトラウマの無い上位層は特にクラスに忌避感を持たずに有力な1手段として使い続けるだろう
これが悲しい真相ではないかと仮説を立ててみる
0153デフォルトの名無しさん
垢版 |
2023/09/17(日) 15:42:41.52ID:AYgIc0ea
>>150
いわゆるクラス継承は害悪という共通認識が広まり
Go, Nim, Rustなどの新しい言語では排除されている
0154デフォルトの名無しさん
垢版 |
2023/09/17(日) 16:13:46.24ID:PxvF4kv6
複オジこんなところでも自演してまで珍説唱えてんのかよw

>>137,149,153はRustスレ出禁扱いになってる珍説を強弁するだけの複製オジさんなる人物なので相手にするだけ時間の無駄
0156デフォルトの名無しさん
垢版 |
2023/09/17(日) 16:42:40.76ID:L4HC8a7E
ID:gR/F5lVJ はちょっと煽って からかえばポンポン反応してワロスw
沸点低すぎ
0158デフォルトの名無しさん
垢版 |
2023/09/17(日) 17:17:54.06ID:gR/F5lVJ
まあ顔真っ赤おじさんとかどうでもいいんすけど、どう考えてもオブジェクト指向の優勝、圧勝なんすよ、もー話になんないす
0160デフォルトの名無しさん
垢版 |
2023/09/17(日) 17:25:30.93ID:EVA53Rjw
オブジェクト指向はプログラム方法の一つの「説明」でしかないのに勝ち負けって頭悪すぎる
0161デフォルトの名無しさん
垢版 |
2023/09/17(日) 17:50:31.52ID:gR/F5lVJ
>>159
と、また釣れたおじさんが申しておりますw
0162デフォルトの名無しさん
垢版 |
2023/09/17(日) 18:28:12.30ID:YZPhsijr
ポンポン ダボハゼみたいにすぐ釣れて釣りとしては面白くないな。
入門で目にしたオブジェクト志向以外知らない頭の悪い初心者だということはよくわかった
0163デフォルトの名無しさん
垢版 |
2023/09/17(日) 19:25:51.35ID:gR/F5lVJ
>>162
と素人が申しております
0165デフォルトの名無しさん
垢版 |
2023/09/17(日) 20:37:36.54ID:gR/F5lVJ
>>164
と池沼が申しております

おまえには十分だろw
0167デフォルトの名無しさん
垢版 |
2023/09/18(月) 07:00:18.19ID:8fhm6wiI
朝の4時にそのレスできて良かったじゃん
0171デフォルトの名無しさん
垢版 |
2023/09/20(水) 23:29:17.31ID:VBDgfudD
モジュール化の手法として関数がまず考えられた。
共通するまとまったルーチンを実行するにあたって関数は便利であったが、
呼び出しをしてメモリ上に展開されても処理が完了するとメモリ上から消滅してしまう
(それまでの履歴がパァ)という性質のものだった。

simulaの開発者の一人であるダールは、そのせっかくメモリ上に展開したデータであるのに、呼び出しが完了してしまうと制御もメモリ展開ももとに戻ってしまう関数(正確にはブロック)に代わるものとして、
呼び出したとしても制御もメモリ展開も消滅しない、つまり状態をもつ関数(局所変数を持つ関数)を「オブジェクト(object)」と呼んだ。

アラン・ケイは、その関数とは性質が異なる「オブジェクト」を多用するプログラミングを安直にオブジェクト指向と呼んだ(ようだ)。

歴史的に整理すると
構造化プログラミングは、関数を多用するプログラミング(基本3構造は前提)。
オブジェクト指向プログラミングは、ダールのオブジェクトを多用するプログラミング。

と言える。嘘だと思うならダールの論文を読んで見ればいい(と言いつつ本当に読んだら細かい重要なところをバッサリと切り落としているのがバレる)。
0172デフォルトの名無しさん
垢版 |
2023/09/20(水) 23:35:39.69ID:VBDgfudD
オブジェクト指向がわかりにくいのは
ダールの論文がいろんな画期的なアイディアてんこ盛りなせいだ。
オブジェクト(object)という概念が画期的なのに、オブジェクトを生成するクラスやオブジェクトの型概念にも触れていて、何がポイントかわかりにくい。

でも何回か読んでるとダールのいうオブジェクト(object)という概念が画期的なのだと分かる。

要するに関数に代わるモジュール化の手法が(ダールの)オブジェクト。
0173デフォルトの名無しさん
垢版 |
2023/09/21(木) 00:10:08.07ID:H7YqoNcR
今年から流行りだした生成AIはオブジェクト指向と関係ない
数式のように誰にとっても明解でないところが終わってるオブジェクト指向は愚かな人間どもの間違ったアプローチ
その先には何も無さそうな事だけは誰の目にも明解
0174デフォルトの名無しさん
垢版 |
2023/09/21(木) 00:20:33.81ID:0U/PD5XH
状態が可変のオブジェクトはデバッグが難しい
どこで状態が変わるのかわからんようになるわ
業務要件とは独立したデータ構造でさえ多少複雑なことするとそういうことおこる
ミュータブルは最小にしたが良い、マジで
0175デフォルトの名無しさん
垢版 |
2023/09/21(木) 00:22:34.55ID:MHm+UEXg
>>102
あれはオブジェクト指向ではなくて抽象データ型。
インスタンスが状態持たないでしょ?
0176デフォルトの名無しさん
垢版 |
2023/09/21(木) 00:25:05.90ID:MHm+UEXg
オブジェクトは状態持ってるからオブジェクトなんだよ!と強く言いたい。
持ってないならそれはそれは単なる抽象データ型のインスタンス。
0177デフォルトの名無しさん
垢版 |
2023/09/21(木) 00:28:54.33ID:tdxL4aJO
>>172
それはクロージャ
オブジェクト指向に限らず関数型でも使える
つまりオブジェクト指向の本質ではない
0178デフォルトの名無しさん
垢版 |
2023/09/21(木) 00:30:07.90ID:Zhn9cjmN
>>175
Rustでももちろんインスタンスが状態を持つよ
0179デフォルトの名無しさん
垢版 |
2023/09/21(木) 00:31:45.48ID:Zhn9cjmN
Cで書いた抽象データ型のインスタンスでも状態持つものはいくらでもある
0180デフォルトの名無しさん
垢版 |
2023/09/21(木) 00:37:01.04ID:MHm+UEXg
>>177
クロージャからオブジェクトを生成する事もできるから似ていることは認めるが、オブジェクトを生成できるのは関数型でも破壊的変更ができるcommon lispとかschemeだけ。sicpにも書いてある。
純粋関数型のhaskellはクロージャからオブジェクトを生成するのは無理。破壊的変更ができないから。

schemeをもとにしたというjavascriptは実際クラスを使わない場合、クロージャでオブジェクトを生成する。真似するとオブジェクト指向でクラスは本質ではない。
0181デフォルトの名無しさん
垢版 |
2023/09/21(木) 00:39:36.94ID:MHm+UEXg
>>178,179
そら状態じゃなくて値
多分そういうのrustだとlet mutと宣言してるだろ?
0182デフォルトの名無しさん
垢版 |
2023/09/21(木) 02:13:11.73ID:5L348Pt1
【根拠あり】フリーランスエンジニアは年収862万円取れて普通という話【高収入】

【こんな僕が】フリーランスエンジニアで月収100万円を達成した5つの方法

ITフリーランスエンジニアの年収|会社員との違いや独立後の案件の取り方

月収90万のITフリーランスプログラマー・SEが選んでる在宅案件はこんな案件です

フリーランスの年収は平均いくら?年収1000万円以上の割合とは

2021年最新版 エンジニアの平均年収はいくら?全体平均と比べて○○円も高い!
0183デフォルトの名無しさん
垢版 |
2023/09/21(木) 10:11:19.31ID:gdQGfC6C
インスタンスとか面倒くさい
全部グローバルなstaticクラスで良くね?
0184デフォルトの名無しさん
垢版 |
2023/09/21(木) 10:12:39.58ID:eeeUNNfX
ただの置物となった今ではオブジェ指向でいい
0185デフォルトの名無しさん
垢版 |
2023/09/21(木) 12:25:41.73ID:bQKF4ZJD
みんなオブジェクト指向で作ってんだし合わせようよガキじゃないんだからさぁ!
0187デフォルトの名無しさん
垢版 |
2023/09/21(木) 13:38:45.02ID:6kzUrMUc
ガキじゃないんだからさぁ!
0188デフォルトの名無しさん
垢版 |
2023/09/21(木) 14:04:48.18ID:KxLc2ofK
>>181
君だけに通じるご都合主義的な定義で話されても誰も分からんよ
let mutで宣言されたら状態じゃなくて値になるて何のこっちゃ
0189デフォルトの名無しさん
垢版 |
2023/09/21(木) 14:59:44.19ID:kBQIqVu1
オブジェクト指向はイメージが広がる(といえば聞こえはいいが妄想を掻き立てられる)
人がいるからオレオレ定義があちこちで膨らんだり独善が独り歩きして
おかしな慣わしみたいになり弊害が出てきた
0190デフォルトの名無しさん
垢版 |
2023/09/21(木) 23:48:33.39ID:UfkHHyEe
それはおまえの意見、何の根拠もない
残念、はい論破
オブジェクト指向は非常に重要
これはプログラミング言語界で結論が出ている
オブジェクト指向の大勝利
0192デフォルトの名無しさん
垢版 |
2023/09/22(金) 00:14:03.42ID:2pjQfvCi
>>189
わかる
0193デフォルトの名無しさん
垢版 |
2023/09/22(金) 00:24:21.80ID:nZQCXJJN
>>188
ご都合主義はお互いじゃね?

俺が言ってるのは値でもlet mutで宣言したら状態持ってるように見えるから、抽象データ型が状態持ってると言ってんじゃねっと言ってる

極端なこと言うと
let mut x:usize = 0;
x += 1;
こう書いたらxは状態持ってるように見えるけど
単なるデータ型が状態持ってると考えるのはおかしいからこれは単なる可変の変数に入った値と考えるべきじゃないか?
と言っているんだよ。
0194デフォルトの名無しさん
垢版 |
2023/09/22(金) 00:29:47.98ID:nZQCXJJN
単純に状態を持った局所変数環境のオブジェクトって概念が新しいんだよ。
言ってしまうとそれを使えば全部オブジェクト指向と言える。
0195デフォルトの名無しさん
垢版 |
2023/09/22(金) 00:59:30.50ID:pJdskUNF
>>189
ソフトウエアを開発できないくせに薀蓄だけは立派な
宣教師みたいなやついるよな。
あれもマウントの一種、というか飯のタネなんだろう。
悲惨なのは今だに新たな入門者が宣教師の餌食になって
犠牲者が増えつづけていること
0196デフォルトの名無しさん
垢版 |
2023/09/22(金) 01:48:01.87ID:PcXfPQTh
指向という言葉がダサイ
0197デフォルトの名無しさん
垢版 |
2023/09/22(金) 03:06:05.54ID:UufRKzh2
宣教師が最近布教してるのは、アジャイル開発やドメイン駆動だから
オブジェクト指向はオワコンなのかもな
0198デフォルトの名無しさん
垢版 |
2023/09/22(金) 08:48:16.06ID:ghnEkhiW
オブジェクトを信じなさい
オブジェクトこそが唯一無二の真理
0199デフォルトの名無しさん
垢版 |
2023/09/22(金) 09:10:31.15ID:dkRHHNCe
>>196
原語が
Object Oriented Programing
だから日本語で指向って言ってるだけ
あいつらoops!のノリで付けたんであって
Orientedに不快意味は無い
0200デフォルトの名無しさん
垢版 |
2023/09/23(土) 05:00:06.68ID:AGrNs2HH
>>197
そもそもアジャイル開発やドメイン駆動はオブジェクト指向と直交する概念では無い。というかレイヤーが違う
むしろオブジェクト指向はアジャイル開発やドメイン駆動を実現する根幹手法の一つと言って良い
0202デフォルトの名無しさん
垢版 |
2023/09/23(土) 12:51:50.80ID:tQpIWXxa
パトラッシュ、疲れただろう?
ボクもマジメに突っ込むのはもう疲れたよ。
0203デフォルトの名無しさん
垢版 |
2023/09/23(土) 18:54:47.60ID:IJ8IqG3m
  *'``・* 。
  |     `*。
, 。∩∧ ∧     *    これで元気にな〜れ
+ (´・ω・`) *。+゚
`*。 ヽ、  つ *゚*
 `・+。*・' ゚⊃ +゚
 ☆   ∪~ 。*゚
  `・+。*・ ゚


https://i.imgur.com/RFbLlK2.gif
0204デフォルトの名無しさん
垢版 |
2023/09/23(土) 21:15:19.84ID:ChB9aNsl
元気があればオブジェクト指向もわかる
ありがとー!!
0205デフォルトの名無しさん
垢版 |
2023/09/24(日) 09:15:37.08ID:AyCWE2s/
・クラス型オブジェクト指向はオワコン
・プロトタイプ型オブジェクト指向は有用

って考えでいいの?
0206デフォルトの名無しさん
垢版 |
2023/09/24(日) 11:08:15.86ID:jYY1d0Rr
プログラム構造と、開発技法を比較されましても…
0207デフォルトの名無しさん
垢版 |
2023/09/24(日) 11:23:16.51ID:gTj5LbbT
>>205
違う
オブジェクト指向自体は有効

ダメなのはクラスとその本質である継承
プロトタイプ方式によるクラス実装も継承なので当然同じくダメ
0210デフォルトの名無しさん
垢版 |
2023/09/24(日) 23:57:23.50ID:oGK434I1
継承は規模が大きければ使いどころがある
無理に使うと害悪なので、必要に迫られるまで使うな
0211デフォルトの名無しさん
垢版 |
2023/09/25(月) 00:33:21.23ID:OWge9pjh
継承の良いところと悪いところを両方把握して使い所を見極めればいいんだよ
何でもかんでも継承するのがよくないというだけ

クラスベースの継承、プロトタイプ継承、委譲の3つを比較してそれぞれの良いところ悪いところをきちんとおさえること
0212デフォルトの名無しさん
垢版 |
2023/09/25(月) 00:35:49.52ID:HQWAHROu
継承が悪いとかもう何十年も前から言われてるから
それについてはもう語らずに置くけど

クラス化が難しい
クラス化の難しさが悪い
クラス化の難しさの自覚しにくさ語りにくさが悪い
と言いたい

継承関係のないクラスを数個つくる
その時点で難しい
分担、切り分け、依存関係がもう難しい
再利用性のある単位でくくりだすのが難しい
スッキリしたインタフェースを提供するのが難しい

これもっと一般化して言うなら
単に抽象化の難しさってことでもあるけど
0214デフォルトの名無しさん
垢版 |
2023/09/25(月) 01:08:01.38ID:aQ9tHgH2
>>210
大規模アプリケーションで広範囲・多階層に渡る継承を多用してソフトを構築したら地獄やでー
初期CDするときはいいんよ。
やっちゃえやっちゃえって感じでソースベースのメソッドなどの単位で差分プログラミングできるところ
どんどん継承活用して、流用性を高めたとか言って俯瞰せずコード書き進めちゃえばなんとかCDが進む
がしかし、ふと立ち止まり、あるいは時間がたち別の者が全体を見渡しなおすと
もうクロスファイルでソースベースマクロ展開みたいな継承がクチャンクチャンの依存のジャングルを成していて
gotoの嵐とはまた違った混沌に手がつけられなくなるぜ
0215デフォルトの名無しさん
垢版 |
2023/09/25(月) 01:10:18.53ID:aQ9tHgH2
入門書のサンプルコードレベルで一見便利そうに見えても
継承が有用なケースというものはあるにはあるが、
実践では実はあまり多くない
0216デフォルトの名無しさん
垢版 |
2023/09/25(月) 01:17:35.87ID:aQ9tHgH2
>>212
それは抽象化が難しいのではなく、
ソフトウエアプログラムの構造(アーキテクチャー)を
いわゆる迷信のように流布するクラスベースオブジェクト型にはめて現そうとしたけど
うまく現せないことに気が付いたってことだよ
いつまでも気が付かないよりはるかにまし
0217デフォルトの名無しさん
垢版 |
2023/09/25(月) 10:14:44.94ID:fq2bVCra
>>214
それはクラス使わなくても変わらない。
混沌に見えるのは大規模になったことが原因であって継承が原因ではない。
クラスにも継承にも欠点は無い。
理解できない人がアホみたいに欠点欠点言ってるだけ。
0218デフォルトの名無しさん
垢版 |
2023/09/25(月) 10:18:35.43ID:8PlaAgAt
継承があるメソッドは必ずoverrideするって決めたら
ベースクラスの事も思い出されて良いのでは?
まあ、無駄な処理挟むけど、忘れてしまうよりは良いのでは?
0219デフォルトの名無しさん
垢版 |
2023/09/25(月) 10:37:24.49ID:2mEvB720
書けてしまうのが問題
継承使うのはライブラリやフレームワークで留めて
応用では使わんことやね
0220デフォルトの名無しさん
垢版 |
2023/09/25(月) 10:42:26.44ID:PH+ByLf2
継承使うかクラスコードコピペしまくるかの違いなら
継承の方が何万倍マシだろうに
0221デフォルトの名無しさん
垢版 |
2023/09/25(月) 11:40:39.55ID:KK/E8/oR
オブジェクト指向は
コードの再利用のためという建前で余計な文法を追加すること
0222デフォルトの名無しさん
垢版 |
2023/09/25(月) 12:33:16.07ID:2IrvX93h
顕わに目に見えないところでコード展開&マージが起きているのと同じなので
小さくて浅い階層なら把握できるが広範で深い階層に渡る依存のジャングルは
何かどうなっているのかわからなくなってしまう
0224デフォルトの名無しさん
垢版 |
2023/09/25(月) 12:34:57.59ID:IRZWO8eC
>>220
それはもう既に発想がおかしいんだよ
そのままだとコピペになる(同じコードになる)ところはプログラムに当然発生して多くはコピペを回避すべきなんだけど
それを継承という間違ったやり方で解決するのは間違っているという話だよ
その時に継承しか知らないと継承するしかないと思いこんじゃう
だから継承禁止もしくは原則として継承を使わないというプロジェクトや会社があったり指導が入ったりするわけだよ
最近のプログラミング言語は継承自体を無くしたものが増えてるのもその流れだね
0225デフォルトの名無しさん
垢版 |
2023/09/25(月) 12:36:18.97ID:2IrvX93h
>>217
カプセル化と継承と多態
オブジェクト指向を乱用して構築した大規模アプリソフトウエアの目を覆いたくなるような分かりにくさは
単に大規模だからというだけのものではない厄介さがあるぞ
0226デフォルトの名無しさん
垢版 |
2023/09/25(月) 12:58:59.41ID:8PlaAgAt
まあ、フレームワークで継承使わないとかどんだけ縛りだよって話だ罠
0227デフォルトの名無しさん
垢版 |
2023/09/25(月) 13:04:11.51ID:2IrvX93h
>>226
GUIのフレームワークではクラスベースオブジェクト指向の継承が有効な典型だよな。
まぁ、仕様・IFが長年練り上げられてきたことの結実ともいえるが
0228デフォルトの名無しさん
垢版 |
2023/09/25(月) 13:09:20.84ID:zA4g5CbZ
>>225
その大規模アプリをオブジェクト指向じゃなくて何を使えばましになるの?
0229デフォルトの名無しさん
垢版 |
2023/09/25(月) 13:24:45.11ID:2IrvX93h
言語や開発ツールが規模の大きいソフトウエアの構築を支援するために提供しているモジュラリティ―のための
パッケージなどを利用した機能階層・分割設計の方がましだろ
0230デフォルトの名無しさん
垢版 |
2023/09/25(月) 13:27:11.83ID:+N84ygWf
クラスは物とその動作の設計図なんだろうけど
動作だけをうまく整理してまとめて設計図にして、物はその動作によって加工されるだけでよくて、別に物自体が何かしてくれなくていい発想の方が自然なことは多いと思う
だからクラスベースだと頭の中と噛み合わなくて残念な気持ちになる
0231デフォルトの名無しさん
垢版 |
2023/09/25(月) 13:56:58.76ID:8PlaAgAt
動作とか考えるからおかしくなる
役割と考えれば分かりやすい
0232デフォルトの名無しさん
垢版 |
2023/09/25(月) 14:00:54.45ID:dKK05iVY
>>224
継承が不適切な場合もあれば適切な場合もある
それを見極めろよという話

盲目的にあらゆる継承がダメだと思ってんなら
それは盲目的に継承使うやつと同じレベルだぞ
0233デフォルトの名無しさん
垢版 |
2023/09/25(月) 14:01:29.91ID:cH5L00do
右に動かすメソッドが
WindowでもRectでもウンコでもなんでも動かせるのが自然で良いということかな?
0234デフォルトの名無しさん
垢版 |
2023/09/25(月) 14:10:00.64ID:8PlaAgAt
オブジェクト指向より
エージェント指向
0235デフォルトの名無しさん
垢版 |
2023/09/25(月) 15:41:32.02ID:bPtriFyH
>>232
盲目的に継承は必要ないとしても支障はないと思うよ
今時の継承を持たないプログラミング言語も使うようになったけど継承がないことで支障が出たことがない
『継承は不要』の結論でよいと思う
0236デフォルトの名無しさん
垢版 |
2023/09/25(月) 15:45:33.94ID:8PlaAgAt
他言語待ち出してオブジェクト指向言語の作法説いても意味が無いだろw
そんな事言った何でも不用で最後はアセンブラに回帰するわw
0237デフォルトの名無しさん
垢版 |
2023/09/25(月) 15:54:54.23ID:bPtriFyH
>>236
継承を持たない各言語でもオブジェクト指向のプログラミングが自然に行える
継承だけが不要だとはっきりわかった
0238デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:02:29.40ID:1Oz14nin
つまりライブラリ前提で作るくらい設計がしっかりしてるモノ以外、独自クラスを継承させまくるようなコードは難あり?
0239デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:13:29.29ID:zA4g5CbZ
>>235
あなたがどう思うのもあなたの問題なのでそれでよいと思う
0240デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:17:53.44ID:8PlaAgAt
>>237
オブジェクト指向なんて、C言語ですらそれなりに書けるんだが
なんで言語仕様有意義に使おうとしない?
0241デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:19:38.57ID:8PlaAgAt
まあ、ここでマイポリシー語るのもいいが、決めつけたり他人に強要するなよってな
0242デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:28:37.60ID:s0yAomY2
客観的な根拠が一番強い
過去のしがらみのない最近の各プログラミング言語GoやNimやRustなどはいずれも継承を持たない
継承がないという以外の点では全く方向性の異なる各プログラミング言語が継承は不要という同じ結論に辿り着いている
0243デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:31:16.00ID:E8ARCJfk
継承に限ったことではないが Pros/Cons両面理解した上で状況に応じた使い分けがてきないうちはいつまで経っても素人のまま
0244デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:34:24.96ID:8PlaAgAt
else不用論者みたいな奴だなぁ
0245デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:50:14.80ID:zA4g5CbZ
しがらみとか考え方次第でどうとでもなるからそれは客観的じゃないよw
0246デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:52:29.42ID:8PlaAgAt
とある言語仕様に無いから全言語に渡って不用って
極端なw
0247デフォルトの名無しさん
垢版 |
2023/09/25(月) 17:09:03.89ID:F0mcF4FZ
Rustはトレイトのデフォルト実装で継承の一部をまかなってる
それ以上の部分はマクロでコピペコードを生成するかそのままコピペすることで継承相当を実現している
0248デフォルトの名無しさん
垢版 |
2023/09/25(月) 17:11:03.38ID:0g73jH4i
必要と不要ではなく静的と動的で分けるのが、商業的でない中立な見方
継承は不要だから採用されないのではなく
動的ディスパッチだから動的言語に近い言語でしか採用されない
0249デフォルトの名無しさん
垢版 |
2023/09/25(月) 17:11:12.20ID:s0yAomY2
最近のプログラミング言語
【継承がない】Elixir、Go、Julia、Nim、Rust、Zig
【継承がある】Kotlin(Javaの後継)、Swift(Objective-Cの後継)
つまり過去のしがらみで継承を含めざるを得なかったKotlinとSwiftを除いて全ての言語に継承はない
0250デフォルトの名無しさん
垢版 |
2023/09/25(月) 17:12:48.35ID:moYp0tPu
>>247
Derefが継承の代替として使われることもあるよ
0251デフォルトの名無しさん
垢版 |
2023/09/25(月) 17:15:24.44ID:hRr4oOqW
>>249
広く使われてるGUIライブラリのある言語とそうでない言語の分類そのものですね
0252デフォルトの名無しさん
垢版 |
2023/09/25(月) 18:09:35.84ID:8PlaAgAt
GUI処理書くのに継承無いとか嫌過ぎる
0254デフォルトの名無しさん
垢版 |
2023/09/25(月) 19:32:34.54ID:UoPxhUhD
>>227
> まぁ、仕様・IFが長年練り上げられてきたことの結実ともいえるが

彗眼やね
屍の山の上にしか良い設計は無いんよ

>>230
いいとこに着目してると思う
やっぱ関数と値で済んでたときより大げさなんよね
Javaに悪い意味で鍛えられた人は平気なんだろうけど
(FizzBuzzEnterpriseEditionみたいなやつのことね)

>>238
ありなし語る必要ないと思う
やってみればいい
100%失敗するから
クソの山になるから
0255デフォルトの名無しさん
垢版 |
2023/09/25(月) 19:36:58.29ID:FlTLze7i
rust や go だと継承に相当するようなことができるのでいまいちピンとこないんだよね。
0256デフォルトの名無しさん
垢版 |
2023/09/25(月) 22:27:07.39ID:SCrjiBQI
>>247
ちょっと違うので補足するね
Rustのトレイトは機能・性質を示すもので型でもクラスでもなく変数(やその値)を持つこともなく各型に対して横断的な位置付けであり
クラスとその継承を排除したRustでは各型に対して必要な複数のトレイトを実装すなわち合成していくわけだけど
トレイトのメソッドは二種類に分かれていて
必須メソッド(required methods)は各型で実装コードが異なるメソッド
提供メソッド(provided methods)は各型で実装コードが共通にできるメソッドで必須メソッドやトレイト境界となる他のトレイトのメソッドを用いてデフォルト実装している
つまり機能性質を示すトレイトに対して各型固有の実装と各型共通の実装の二種類に整理しているだけにすぎないよ

したがってRustではトレイトとそのメソッドをきちんと設計すればコピペは出て来ない
複数の型でコードが全く同じとなるならば上述のように各型共通の実装となる提供メソッド(provided methods)になりデフォルト実装となる

もしマクロでメソッド実装を自動生成する場合はそれは各型固有の実装となる必須メソッド(required methods)に対してマクロの引数指定部分だけが各型で実装が異なる場合になりコピペではないね
0257デフォルトの名無しさん
垢版 |
2023/09/26(火) 00:48:16.96ID:mW7xEcGz
Rustだとライブラリで定義済みのトレイト実装を少しカスタマイズしたいだけでも
変更の必要ないメソッドやトレイト実装も全て元の構造体に委譲するコードを書かないといけない

継承がないから構造体1つに対して10個や20個トレイト実装があるのは普通なのでマクロ使わないとコピペ地獄でやってられない

一般的OOPならメソッド1つオーバーライドするだけの簡単な作業
0258デフォルトの名無しさん
垢版 |
2023/09/26(火) 01:12:22.03ID:i+iKqNf9
>>257
発想がおかしい
そんなことが必要になることはない
使わないメソッドを生やす必要はない
もし元の型の全てのメソッドを生やす必要があるのならばその時はDerefを使えばよくて自動的に全てのメソッドが生えた形になる
0259デフォルトの名無しさん
垢版 |
2023/09/26(火) 02:37:40.13ID:LjeIbJUy
Derefのそういう使い方はアンチパターンでしょ
Traitをカスタムするという発想がおかしいというのは同意
オーバーライドなんてするな
0260デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:00:17.20ID:HGB+okJ7
世の中、似た様な画面で項目だけ違う処理がたくさんあり過ぎる
0261デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:10:04.28ID:75MGfnhF
型クラス構造を階層的に取り込んで内包していくような設計に
考えが凝り固まっているんじゃねーかな
昨日階層の抽象化は本来そういうものではなく
階層が上がるにつれより抽象的な構造に「昇華」していく筈だと思うが
0262デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:11:41.08ID:HGB+okJ7
まあ、フレームワークくらいにしか使わないけどな
0263デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:32:49.19ID:75MGfnhF
>>261
より複合的な構造に融合していくことで
機能階層の抽象化を現す、というか代用しようとしたところに
どだい無理があったんだ
やりにくいわけだよ
0264デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:36:16.66ID:TLEYFp/r
以前Javaのユーザグループミーティングに出席した際、James Gosling(Javaの生みの親)がメインの講演者として招かれていました。
すばらしいQ&Aセッションの途中に、こんな質問が出ました。
「もう一度最初からJavaを作り直すとしたら、どこを変更したいですか?」
答えは「クラスを除外するでしょうね」というものでした。
笑いが静まった後、彼が説明したのは、本当の問題はクラス自体ではなく実装継承(extendsの関係)なのだということでした。
インターフェースによる継承(implementsの関係)のほうが望ましいのです。できる限り実装継承は避けたほうがよいでしょう。
0265デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:37:57.06ID:75MGfnhF
カプセル化とアクセサーがまたクソなんだよな
ソフトウエアの規模拡大に伴う複雑さをより増長させる
0266デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:45:45.09ID:Pu+bW/hr
だから、エージェント指向だよ
0267デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:49:57.35ID:fxfYOiWX
おっと、明後日の方向から不思議な球が飛んできたw
0268デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:56:26.60ID:Pu+bW/hr
同一マシン内である事すら不用な仕組み
全ての手続きはメッセージでやり取りされる
ゆえにアクセサは各エージェントに1組だけ
0269デフォルトの名無しさん
垢版 |
2023/09/26(火) 09:58:18.98ID:fxfYOiWX
ソフトウエアを作っていない人と見た。
0271デフォルトの名無しさん
垢版 |
2023/09/26(火) 11:27:47.44ID:J0zXOsdf
>>259
>Traitをカスタムするという発想がおかしいというのは同意
なんでおかしいと思うの?
0272デフォルトの名無しさん
垢版 |
2023/09/30(土) 16:53:59.14ID:lIYH5p6r
>>264
そのレスの中に技術的な根拠ある?
誰々が言ってたから、で何使うか決める感じか?
別に好きにすればいいけどそれは素人でもできますよね
0273デフォルトの名無しさん
垢版 |
2023/09/30(土) 16:58:25.69ID:syF3qyzI
なんとか技法とか、なんとか指向とか
宗教みたいなもんだから、別に従う必要も無いんだよなぁ
0274デフォルトの名無しさん
垢版 |
2023/09/30(土) 17:05:11.09ID:nY8APa4N
>>272
変な詭弁だな、玄人でもできるぞ。
そして意見は専門家・元祖だぞ、
技術的根拠的根拠なしに子供みたいに上げ足とってるだけのレスはお前さんだろ
さては論破君だな
0275デフォルトの名無しさん
垢版 |
2023/09/30(土) 17:08:33.49ID:syF3qyzI
頭弱いのバレバレな文章だなぁ
0278デフォルトの名無しさん
垢版 |
2023/09/30(土) 19:22:36.99ID:lIYH5p6r
すみませんね、根拠が要らない人たちと思わなかったんでね。
話にならないよね。
ここでその元祖の名前だけ示して誰得なんすか?
0279デフォルトの名無しさん
垢版 |
2023/09/30(土) 20:06:51.67ID:nY8APa4N
話にならないなら黙てればよい。
まぁ一応謝っているようだから非は認めたわけだな。
今後気を付けるように。
0280デフォルトの名無しさん
垢版 |
2023/09/30(土) 20:25:12.96ID:lIYH5p6r
皮肉だとわからない
権威主義で名前だけでありがたがる
生きてて幸せだよねw
話にならないなら黙てればよいならおまえが黙っとれよw
0281デフォルトの名無しさん
垢版 |
2023/09/30(土) 21:43:39.23ID:lIYH5p6r
性格どうこうというより権威主義「玄人」プログラマーと話噛み合わないの目に見えてるから誰もまともに相手しないよ
実際「ここで元祖の名前だけ出して誰得なのか」は答えられなくて意味不明なレスしか来ないわけじゃん
0282デフォルトの名無しさん
垢版 |
2023/09/30(土) 21:58:03.51ID:nY8APa4N
ちょっと刺激するとすぐむきになって食いつくw
ほんと、ダボハゼ並みだな
0283デフォルトの名無しさん
垢版 |
2023/09/30(土) 22:00:20.54ID:uokmRef0
なんで見当違いの宗教闘争延々とやっているんだ
A「九九は便利だ」
B「九九では足し算引き算に役に立たない」
こんなアホな言い争い続けるのは暇すぎるどころか病院行った方がいい
0284デフォルトの名無しさん
垢版 |
2023/09/30(土) 22:08:25.33ID:nY8APa4N
>>280 頭に血が上ると
〜と申しております
大前こそ〜(単なる言い返し)
はい論破

すぐこういう言い方をする
反応が子供みたいで分かり易い
0285デフォルトの名無しさん
垢版 |
2023/09/30(土) 22:16:19.55ID:lIYH5p6r
いつまで経っても小学生の悪口みたいなことしか出てこない
本当にしょうもない
足し算引き算の役に立たない、という理由が示されているならまだ有益な議論になり得るが、「誰々が九九は役に立たないと言っていました」だけでいけると本気で思ってるんだからマジですごい
0287デフォルトの名無しさん
垢版 |
2023/09/30(土) 22:30:29.98ID:lIYH5p6r
わかりやすい連呼のゴミ人生でした
0288デフォルトの名無しさん
垢版 |
2023/10/01(日) 00:12:42.51ID:KkBb2S1m
良かったら年齢と学歴教えて
0289デフォルトの名無しさん
垢版 |
2023/10/01(日) 09:15:28.15ID:2adgRT7m
別に教えてもらわなくても一人でやったらいいやん、ままごとみたいに
結局同じことなんだからそれで満足すれば済む話だ
0290デフォルトの名無しさん
垢版 |
2023/10/01(日) 09:23:22.48ID:rjZHaWtE
オブジェクト指向って、C++で、
classのコンストラクタとデストラクタが
メモリーの安全な自動解放に簡単に対応できるので
重宝している。
もしそれらが無かったら、メモリーを簡単に自動解放できない。
0291デフォルトの名無しさん
垢版 |
2023/10/01(日) 09:25:58.43ID:jNRKUn/r
道端でも誰も聴いてないのに一人でブツブツ大声で自問自答してるヤバいおっさんおばさんおるけど
ああいう類の人間なんかな
0292デフォルトの名無しさん
垢版 |
2023/10/01(日) 09:28:09.49ID:rjZHaWtE
C++ではclassの概念は、とても重要。
主にメモリーの自動解放のため。それ以外の
言語では余り要らないのでピンとこないのかも。
0294デフォルトの名無しさん
垢版 |
2023/10/01(日) 13:39:28.55ID:cZOrnAr5
classなくても自動解放くらいできるでしょ
interface/trait/protocolを使う
C++にはそれがないからclassで代替してるだけ
0295デフォルトの名無しさん
垢版 |
2023/10/01(日) 13:44:53.34ID:dg4Xcjmo
オブジェクト指向の考え方/やり方だけでなく
オブジェクト指向以前とポストオブジェクト指向での考え方/やり方を把握してないと
オブジェクト指向の良し悪しは評価できない
0296デフォルトの名無しさん
垢版 |
2023/10/01(日) 13:47:35.04ID:dHLzwzhp
メモリに関してはCとC++の違いはブロック終端のトリガの有無だけだから
Cでもコンテナに紐付ける仕掛け作れば問題なかった
アホが多すぎただけ
0298デフォルトの名無しさん
垢版 |
2023/10/01(日) 14:22:51.96ID:h9hU82V+
人に説明することが難しいことは、とても保守性が低い。構成が複雑であるほど、危険である。
要素が独特で実績が少ないと、世間にわかっている人が少ない。そうすると、「誰か助けて」と言ったとき
に人が集まらない。ベンダーも消失するかもしれない。
https://www.orangeitems.com/entry/2022/03/26/164116

オーバーライド(英:override)とは
オブジェクト指向におけるオブジェクトの継承の話で出てくる用語のひとつ
であり
親クラスにあるメソッドを子クラスで再定義することによって、子クラス上で親クラスのメソッドを上書きすること
https://wa3.i-3-i.info/word138.html

チンポは人格メソッドや脳メソッドを上書きする機能が有る!!!

https://mobile.twitter.com/ki45_nisiki/status/1581300043935494145

フローズンぺんぎん@とりゅー
@ki45_nisiki
返信先:
@LunRon5
さん
どんなに教養と勉強で武装しようとも、自身が抱える性癖には逆らえん。チンポが脳や人格にオーバーライドして支配してくる欲求には逆らい難い…だからこそ最低限の慎みと矜持として2次元があるのではないか…デブでもおばさんでも勃起できる人にはこの苦しみはわからんっすね
https://twitter.com/thejimwatkins
0299デフォルトの名無しさん
垢版 |
2023/10/01(日) 14:26:38.26ID:qGfJdqzD
メッセージングを基礎単位として取ることは、より徹底的な遅延束縛を可能にする。というのも、
メッセージそれ自体は意味を持たず、実際にメッセージがオブジェクトに送信されてはじめて、意味が決まるからである。
https://qiita.com/ukyo-su/items/8c861f114809a96d1378

オシッコを出したり止めたりというのは、チンポから力を抜いたりチンポに力を入れたりと、
オシッコはオシッコそれ自体は意味を持たず、オシッコが尿道を介してチンポに送られることによって、
オシッコを出したり止めたりが可能になるということだ。

928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。


929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く
0300デフォルトの名無しさん
垢版 |
2023/10/01(日) 14:28:59.90ID:VTqwMbMD
多態性まとめ
多態性・ポリモーフィズムとは、同じ命令を送ったにも関わらずそれぞれが独立した固有の処理を行うという特性を指す。
多態性・ポリモーフィズムは継承関係の子から親への代入を通じて実現することができる。
多態性・ポリモーフィズムのメリットとして、同一視して配列を利用できたり、同一視して引数を受け取ることができることが挙げられる。
https://engineer-life.dev/polymorphism/

この車、タイヤがパンクしてしまった!
この男クリントン、チンポがシコシコしてしまった!

繋がっているけれども独立している、共有性と独立性!

息子とムスコは、必ずしも親の命令通りには動かない!

立て、立つんだ!

     立 つ ん だ 、 ジ ョ ー !

息子1
起立!
息子2 
勃起!
息子3
立ちくらみ!

https://mobile.twitter.com/yokillme/status/970300973301219328

ヨキ
@yokillme
自分の息子のことを愚息って言うの、現代においては息子を自分とは別人格の一人の人間として尊重してないからやめた方がスマートだと思うんだけど、不意に勃起した自分のチンコを「愚息」と表現するのめっちゃ好きなんですよね。
https://twitter.com/thejimwatkins
0301デフォルトの名無しさん
垢版 |
2023/10/01(日) 14:32:10.64ID:Y7qk5s2j
>>290
それはclassとは全く関係がない
C++の比較としてわかりやすいのRustはclassを持たないがメモリが安全に自動解放される
C++もRustもその機構はRAII機能に基づいておりオブジェクト指向は関係ない
0307デフォルトの名無しさん
垢版 |
2023/10/01(日) 20:10:51.85ID:hX9xjpD8
>>306
オブジェクト指向とは何かについて、他にわかりやすい説明が有るのか?
0309デフォルトの名無しさん
垢版 |
2023/10/17(火) 20:07:11.02ID:iLOamahz
OOPはオワコンにはなりませんよ?
0310デフォルトの名無しさん
垢版 |
2023/10/19(木) 01:30:31.85ID:ReS9VmD8
1996年ころから購読していたのCマガジン雑誌
まだたくさん残っているが、オブジェクト指向とか
また当時の日経プログラミングだったか?雑誌にも

関係ないがLinuxって1996年ころはまだ初期の時代だったんだな
0311デフォルトの名無しさん
垢版 |
2023/10/19(木) 01:31:33.44ID:ReS9VmD8
訂正思い出した日経ソフトウェアだw
当時はCDとかいっぱいおまけがついていた
0313デフォルトの名無しさん
垢版 |
2023/10/31(火) 13:55:10.92ID:wz6hR3A/
継承を使いまくる数学、化学、天文分野があるんじゃないの?
知らないだけかもしれないやん
0315デフォルトの名無しさん
垢版 |
2023/11/01(水) 03:34:28.91ID:5z6NYMjm
継承というか増築だな
間違いを糺す方向なら良いが
臭いものに蓋をしているだけのケースもある
0320デフォルトの名無しさん
垢版 |
2023/11/04(土) 13:00:40.63ID:DZrRJ0p+
C#には20年前からデリゲートがあった

デリゲートはオブシコ的に邪道と言われて
Javaは当時デリゲートを否定してた

それから12年後Javaでラムダ式が使えるようになった

この20年間はオブシコが限界につきあたりそれを関数型で突破する
試行錯誤が行われているように思われる
0322デフォルトの名無しさん
垢版 |
2023/11/04(土) 19:16:33.99ID:T14pQUSp
弾幕系シューティングゲームの敵弾を無限に増やしたり、消したり。
弾幕の軌道の種類を継承で増やす。
とか?
0323デフォルトの名無しさん
垢版 |
2023/11/04(土) 21:06:27.26ID:SYCLubyE
>>5で早々に指摘されてる通りライブラリがすでにオブジェクト指向なんだよなあ。ついでにAPI使うのもそう
こんなスレでごちゃごちゃ書きたがるのは当たり前にライブラリやAPIを使わない人たちかな
0324デフォルトの名無しさん
垢版 |
2023/11/05(日) 10:29:13.93ID:ol9bMVcc
オブジェクト指向と言っても階層がある
フレームワークやライブラリを造る層
中間層
単に利用するだけのクレクレ層
0325デフォルトの名無しさん
垢版 |
2023/11/05(日) 10:30:00.47ID:ol9bMVcc
ちなみに >>323 の視点はどう観てもクレクレ層
0327デフォルトの名無しさん
垢版 |
2023/11/06(月) 02:08:53.26ID:moBvQfOK
ライブラリは使えばいいんよ。
車輪の・・・は時間の無駄だしさ

例えばオワコンだとして、オブジェクト指向に代わる概念ってあるの?かな?
0328デフォルトの名無しさん
垢版 |
2023/11/06(月) 07:20:06.20ID:70OUkfAm
オブシコでもある程度まではうまくいく
オブシコが潰していったパラダイムの中に適切なものがあたかもしれない
0331デフォルトの名無しさん
垢版 |
2023/11/08(水) 01:48:06.76ID:5o5qiXKK
オブジェクト指向は複雑性が増すごとに破綻し易くなるく砂上の楼閣理論
やはりデータに手足を生やすのは間違っていた
祖の争いSmalltalkerはLisperに勝てなかった
それだけのこと
0336デフォルトの名無しさん
垢版 |
2023/11/08(水) 21:03:30.78ID:wwLvTPFi
Javaなんか継承しまくって機能拡張してるからそういった方面で使うのでは?
過去の資産を活用できるように作るか、毎回新規で作るかによるね
0337デフォルトの名無しさん
垢版 |
2023/11/09(木) 01:06:59.85ID:/EissswG
オブジェクト指向でないと、プラグインとかまともなインターフェイスにならんやろ。
0338デフォルトの名無しさん
垢版 |
2023/11/09(木) 11:45:59.07ID:Fo7n9qIp
Rust の trait は oops !
0339デフォルトの名無しさん
垢版 |
2023/11/12(日) 10:46:44.60ID:4vqQNhnm
まだこんなクソスレ立ててるやついるのか
10年くらい前からオワコン言い続けてるけどいつ終わるんだか
0343デフォルトの名無しさん
垢版 |
2023/11/16(木) 08:06:38.29ID:nV/QBQ73
業者に近い香具師のやってることみたいなので、業者と思うのがいい

# ダックテスト
0345デフォルトの名無しさん
垢版 |
2023/11/19(日) 16:25:54.40ID:j9gIHEdT
ORMって便利だと思うが
オブジェクト指向否定するやつはいつも名前SQL叩いてんのか?
0348デフォルトの名無しさん
垢版 |
2023/11/19(日) 23:00:14.66ID:IjgzLSHb
>>345
巷で使われてるORMが便利なのって「DBMS間の差異を吸収してくれる」「クエリを自動で作ってくれる」「結果をオブジェクトに詰めてくれる」あたりだろ
前二つはオブジェクト指向関係ないし、最後もオブジェクト指向言語だからオブジェクトに詰めてるだけで、>>347も書いてるように本質的には構造体でもいいんだよ
オブジェクト指向がなくなったとしても、また別のxRMが出てくるだけだと思うぞ
0350デフォルトの名無しさん
垢版 |
2023/11/20(月) 13:56:42.13ID:MS7hPbOQ
KVSですねわかります
0352i.hidekazu
垢版 |
2023/12/12(火) 05:12:23.87ID:c1pA8kio
オブジェクト指向とは何なのかの前提から分かってないやつが多すぎる

構造化プログラミング=シングルスレッドプログラミング
オブジェクト指向プログラミング=マルチスレッドプログラミング
これが大前提

https://qiita.com/iHdkz/items/3714155bb94a23ca1b9c
0353i.hidekazu
垢版 |
2023/12/12(火) 05:15:57.52ID:c1pA8kio
2つのプログラムを連接したいときにシングルスレッドでは変数名や関数名が衝突して簡単にはできないという困難を、マルチスレッド=オブジェクト指向が解決してくれる
この大前提を書いてない言説が世の中多すぎる
0355デフォルトの名無しさん
垢版 |
2023/12/12(火) 09:22:10.95ID:/OrzPB6P
トンデモ記事だな
0357デフォルトの名無しさん
垢版 |
2023/12/12(火) 10:51:40.65ID:6C/zc+S/
同じ名前が使えるのはネーム空間のおかげだよな?
別にマルチかどうかは関係ないし…
0358デフォルトの名無しさん
垢版 |
2023/12/12(火) 11:49:17.67ID:vNFxkYmY
preview_and_printも普通に組み合わせればいいよね

preview_and_print(data) {
preview(data)
if (ask() == true) {
print(data)
}
}

それぞれ独立したプログラムという前提みたいだから現実的にはpreviewやprintそのものではなく各mainが利用してるlibを再利用することになるけど考え方は変わらない
0360デフォルトの名無しさん
垢版 |
2023/12/13(水) 00:05:09.71ID:2g95gV8C
>>359
いやこれは自警だ。今見てびっくりした。

なんかよくわからんけどwikipediaも関係ないのにまだつきまとわれる。なんか成り済まされるし。
なんなんこの人?
0361デフォルトの名無しさん
垢版 |
2023/12/13(水) 00:13:34.67ID:2g95gV8C
wikipediaにゴミ情報書くなばりに追い出されたからひっそり書いているのに一々突っかかってくる。
この人俺のファンなのか(笑)?なんか変なのに粘着されてすごい面倒なんだけど。
0362デフォルトの名無しさん
垢版 |
2023/12/13(水) 00:30:11.94ID:2g95gV8C
なんで粘着自警の貼った話を俺が回答するのかわからんのだがなんか書くと

>>355
Simulaのクラスは当初プロセスという名称だったんだよ。

>>357
その名前空間をどう実現するの?

>>358
関数型プログラミング的な考え方だが、想定しているのは当時の構造化言語で
その時代にそんなレキシカル・スコープ備えた言語なんてないよ。
ただ、そういう突っ込みの説明が面倒だったので連接(concatenation)でプログラム合成した場合に限ってる。
関数で抽象した場合のケースはよく読むとすっ飛ばしている。
0363デフォルトの名無しさん
垢版 |
2023/12/13(水) 00:49:09.36ID:UEuJAt8H
>関数型プログラミング的な考え方だが、想定しているのは当時の構造化言語で
>その時代にそんなレキシカル・スコープ備えた言語なんてないよ。

>>358はめちゃくちゃ手続き的な考え方だしレキシカルスコープなんて全く必要ない
逆に言えば君は関数型についてもレキシカルスコープについても何も理解していないということがわかる
これだとwikipediaならbanされて当然

でもQiitaならトンデモ記事でもエンタメとして成立するので好きにすればいいと思うよ
俺も>>352の記事は楽しませてもらったから
0364デフォルトの名無しさん
垢版 |
2023/12/13(水) 01:02:37.45ID:2g95gV8C
お前蹴りだな。twitterでも一々突っかかってくるし、生温かく見守ってとかいいつつ喧嘩吹っ掛けてくるとか。いったいなんなん?

レキシカルスコープなんて全く必要ないというのなら全部グローバル変数ってか?それこそ衝突するだろ。
局所環境が無いと関数プログラミングなんてできない。
逆にいえば、局所環境がちゃんとあるならば構造化プログラミングも別方向に進展することができる。
関数型プログラミングを考える上ではそれは必須だ。
逆に構造化プログラミング知らずに関数型プログラミングでござい、なんてありえないだろ。
0365デフォルトの名無しさん
垢版 |
2023/12/13(水) 08:25:46.13ID:NbIWTS6w
キータは関数型プログラミングでも炎上してたし
オブジェクト指向でもトンデモ理論を提唱するかたが現れるとはな
自由であることの証左ではあるだろうけど
0366デフォルトの名無しさん
垢版 |
2023/12/13(水) 12:19:47.44ID:zD6/wvDM
>>364
自意識過剰が過ぎる
twitterとかやってねーしお前が誰かとか知らねーから

レキシカルスコープを理解してないばかりかダイナミックスコープは存在すら知らないんだな
無知や間違いを指摘してくれる友人や同僚はいないのか?
0367デフォルトの名無しさん
垢版 |
2023/12/13(水) 12:25:56.46ID:zD6/wvDM
>その時代にそんなレキシカル・スコープ備えた言語なんてないよ。

当時ダイクストラが主として使っていたALGOL60はレキシカルスコープを備えている
当然それを念頭において構造化プログラミングに関する論文をかいている

お前の妄想だけで嘘八百書くからbanされたんだろ
0368デフォルトの名無しさん
垢版 |
2023/12/13(水) 12:36:24.80ID:sUe1mEvE
自警とか蹴りとか、自分用語を説明もなく使っちゃうのが如何にもアレだなぁ
0369デフォルトの名無しさん
垢版 |
2023/12/13(水) 12:41:50.00ID:NbIWTS6w
糖質っぽさがあるよな
0370デフォルトの名無しさん
垢版 |
2023/12/13(水) 19:07:41.26ID:rYdFb4gI
次回作はSmalltalkやC++でマルチスレッド性がクラスから消滅した理由を書いてください!
0371デフォルトの名無しさん
垢版 |
2023/12/13(水) 19:36:37.23ID:2g95gV8C
>>366,367
お前認知機能障害だろ。
>twitterとかやってねーしお前が誰かとか知らねーから
>お前の妄想だけで嘘八百書くからbanされたんだろ
数分で記憶が無くなってるぞ。それにqiitaでbanされていないぞ。何言ってんだ?

ダイナミック・スコープなんてLispでしか聞いたことない。Funarg問題とかで問題になるやつだろ。
Common Lisp, Schemeでレキシカル・スコープ実装してそれから普及したという認識で、
スコープがはっきり意識されるようになったのはそこからだったはずだが。

Algolは確かにレキシカル・スコープ実装しようとしたが占有修飾子ownの扱いで仕様にあいまいさがあって
スコープまわりは確か不完全なんじゃなかったか?結局staticなメモリ割り付けをすることになると決着して
C言語に継承されたらしいが。

>当然それを念頭において構造化プログラミングに関する論文をかいている
ほうそれは知らんかった。後学のために論文名を教えてもらえないかね。

>>370
Simulaの時点で疑似的なマルチスレッド。
オブジェクトを呼び出してもそのプロセスが消滅しないという特徴がポイント。
0372デフォルトの名無しさん
垢版 |
2023/12/13(水) 19:45:57.78ID:rYdFb4gI
次回作はSmalltalkやC++で疑似マルチスレッド性がクラスから消滅した理由を書いてください!
0373デフォルトの名無しさん
垢版 |
2023/12/13(水) 19:47:13.87ID:2g95gV8C
上の話によれば変数環境のモデルがAlgolの時代にすでにあったらしい。それは知らなかった。ぜひその論文を教えて欲しい。
0374デフォルトの名無しさん
垢版 |
2023/12/13(水) 20:18:16.44ID:rYdFb4gI
C++のクラスは疑似マルチスレッドとかないので、2つのプログラムを合体させようと思ったときにむっちゃ困るわー
0376デフォルトの名無しさん
垢版 |
2023/12/14(木) 00:08:32.08ID:AgoftYrM
友人がPythonでクラスを使うのを頑なに拒んでいたが、時代の先端を行っていたのか…
0380デフォルトの名無しさん
垢版 |
2023/12/14(木) 03:22:53.79ID:uZgQrb0f
まじでやばいやつだった

https://mevius.5ch.net/test/read.cgi/tech/1534260508/357

357 デフォルトの名無しさん 2019/01/22(火) 23:18:43.63 ID:b9p++nKt
上で荒らし行為を行っていた I.hidekazu が降臨!

https://ja.wikipedia.org/wiki/%E5%88%A9%E7%94%A8%E8%80%85%E2%80%90%E4%BC%9A%E8%A9%B1:Monadaisuki#%E6%A7%8B%E9%80%A0%E5%8C%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

>あれは私がコツコツと毎週末に図書館に通ったりして見つけた文献やネット古書店で集めた古書、
>国立国会図書館で複写した文献など(総額費用数十万円)を自分の余暇や日中の仕事時間の合間
>に考えに考えてまとめた内容を、インターネットに接続できる人なら誰でも閲覧できるネット百科
>事典のWikipediaの記事として無料で図まで含めて作成した記事だったんです。

こいつアホすぎるわ。
構造化定理と構造化プログラミングの区別もできないくせに数十万円使って調査ってバカ丸出し。
金かけても内容がクソなら意味ないだろうに。

358 デフォルトの名無しさん 2019/01/22(火) 23:49:00.65 ID:Mi5mcpEM
>>357
その人、かなりおかしいというかキティなのかねえ?
ここを読んでいたら目眩がしてくるよ

Wikipedia:管理者への立候補/i.hidekazu/20141215
https://ja.wikipedia.org/wiki/Wikipedia:%E7%AE%A1%E7%90%86%E8%80%85%E3%81%B8%E3%81%AE%E7%AB%8B%E5%80%99%E8%A3%9C/i.hidekazu/20141215

>結果
>賛成 2 票、反対 13 票、無効票なし。ガイドラインに基づき、今回は見送りとなります。

こんな人が管理者になったらやばすぎる
0381デフォルトの名無しさん
垢版 |
2023/12/14(木) 19:23:24.46ID:AgoftYrM
現代のオブジェクト指向の class の割れ窓化と宣言的プログラミング
https://zenn.dev/mizchi/articles/oop-think-modern

>いいたいのは、 状態コンテナとしての class とメンバーが
>不必要な副作用を生み出す割れ窓になっていて、
>副作用を持つメンバや関数というのは例外的な事項として扱うべきである、ということ。
>class をまったく書くべきではないという話ではなく、
>class は例外的な状態コンテナであるということ。
0382デフォルトの名無しさん
垢版 |
2023/12/14(木) 19:56:10.01ID:9fP1iZpn
3時まで返事待ってる上にキレるメンヘラとは会話できんねー。
会話できる見込みあれば会話しようかと思ったけどこれは無理だわー。
0383デフォルトの名無しさん
垢版 |
2023/12/15(金) 06:19:47.87ID:kFr0jE+D
>>381
ほんとクソ記事だな
間違ったこと最もらしく書き散らかして悦に入ってるポエマー気質が気持ち悪過ぎる
0384デフォルトの名無しさん
垢版 |
2023/12/15(金) 19:50:24.69ID:ztNZIvu0
結局、ALGOLのこと分かってないのがバレて逃げたんかな
もっとエンターテイメントを提供してくれよ
0386デフォルトの名無しさん
垢版 |
2023/12/15(金) 23:39:16.65ID:WfAwrcm4
ホント草生える
0387デフォルトの名無しさん
垢版 |
2023/12/17(日) 22:27:46.28ID:ne4gXust
倫理的には問題ないと思うが
もし生理的に無理だとしたら
倫理より生理的な縛りのほうが自由を制限していることの証左
0391デフォルトの名無しさん
垢版 |
2023/12/19(火) 00:04:12.97ID:Al/MhlSQ
割れ窓理論には対になる六角ボルト理論というものがあってだな、六角ボルトを回す工具はきれいな六角形をしていたら六角ボルトがすり減ったときに噛み合わなくなって空回りするんだよ、六角形を崩してあえて遊びを設けておくことできれいな六角ボルトもすり減った六角ボルトも回せるようになる

これはオブシコも全く同じ、あえてオブシコをすこし崩すことでプログラムコードは柔軟になる
0392デフォルトの名無しさん
垢版 |
2023/12/19(火) 00:34:39.48ID:83kWlVWw
NYとOOPの、風が吹けば桶屋が儲かる的な関係は
法則を崩すのではなく法則に厳密に従ってもカオスになるんじゃないか
0395デフォルトの名無しさん
垢版 |
2023/12/19(火) 10:04:58.31ID:KoTx3gw2
設計なんて後からどんどん崩れて行くんだから
最初は完璧だと思うくらいまでしっかり作らなきゃ
すぐに破綻するだろ
0399デフォルトの名無しさん
垢版 |
2023/12/19(火) 12:24:42.82ID:4wLlcIHm
Webアプリのフロントエンドという文脈ではオブジェクト指向は今や大事にされていないんじゃないか?Reactみたいなのが流行ってるんだし。
結局状態の複雑性はブラウザのdomやcssに丸投げしてるだけだとは感じるが。

GUIにおけるオブジェクト指向は今なお大事なんじゃない?
0400デフォルトの名無しさん
垢版 |
2023/12/19(火) 17:05:45.10ID:efxaZtVJ
GUIのオプション指向、昔作って流行ってしまった資産があるから捨てられないだけってわけじゃないんですかね
今もなにか本質的に重要なことがあるのか?
0402デフォルトの名無しさん
垢版 |
2023/12/19(火) 17:17:18.80ID:efxaZtVJ
>>401
それはCやアセンブラと比べた時の話?
Cやアセンブラと比べて新しい言語がテストしやすいのはそれはそう
だからCやアセンブラやパンチカードと比べて過去に流行ったわけだし
0403デフォルトの名無しさん
垢版 |
2023/12/19(火) 17:19:29.23ID:BDyDehIu
何千とある似た様な画面のコードを継承と少しの個別コードだけ書けば済むんだからやめられない
0404デフォルトの名無しさん
垢版 |
2023/12/19(火) 17:20:56.90ID:efxaZtVJ
それはオブジェクト指向に限らず現代的な言語なら大体そうな気がする
Cやアセンブラと比べてコードの使い回しが効くのはそれはそう
0405デフォルトの名無しさん
垢版 |
2023/12/19(火) 19:35:19.07ID:wgVcYH4r
>>404
おまえの言ってる「オブジェクト指向」は「オブジェクト指向言語」だ
部品を構成してプログラムを組んでいく「オブジェクト指向」はC言語や用語自身が作られる以前からある
0406デフォルトの名無しさん
垢版 |
2023/12/19(火) 19:48:55.04ID:mrSFrPG8
>>405
「オブジェクト指向」じゃなくて「オブジェクト指向言語」の利点を語り出したのは>>401>>403なんだよな

俺はもちろんオブジェクト指向の話をして欲しかったのだが、誰もその話をしてくれなかったのだ
0407デフォルトの名無しさん
垢版 |
2023/12/19(火) 19:52:19.99ID:KoTx3gw2
あら?
継承は言語仕様じゃ無いくても作れるよ?
アセンブラだってC言語だって、関数も変数もテーブル形式にしてオフセット追加するとかだから
0408デフォルトの名無しさん
垢版 |
2023/12/19(火) 21:09:35.13ID:kQgQbwMI
似たようなユーザインターフェースを作るようなプロダクトならオブジェクト指向のが便利
継承やらポリモーフィズムやらが重要になるから
関数型はざっくりに言うと考えたコードをフローチャートのようにそのままコードにしていくっていう考え方でしょ?
そもそもプロダクトによってどちらを採用するかが違うじゃん
0409デフォルトの名無しさん
垢版 |
2023/12/19(火) 21:16:29.72ID:kQgQbwMI
オブジェクト指向だとスパゲティコードになるだぁ?
定期的にリファクタリング点検をすれば問題なしだよ
0410デフォルトの名無しさん
垢版 |
2023/12/19(火) 21:28:51.74ID:L4Ln++vQ
>>396
Webフロント最有力のReact.jsだと
昔はクラスコンポーネントベースだったけど
使いにくいのとクラス継承使うなと言っても使っちゃうバカが出てきたり問題も多く
今は関数コンポーネントベースとなった
0411デフォルトの名無しさん
垢版 |
2023/12/19(火) 21:54:53.91ID:kQgQbwMI
まあ継承、ポリモーフィズムといっても例えばMVVMでのレポジトリ周りに適用されるものでUI部品は関数型になると思うけどね
Java/C#民なので悪しからず
0413デフォルトの名無しさん
垢版 |
2023/12/19(火) 21:59:53.48ID:a+uEBCbM
>>396
どこからどこまでのフロントかで話が180度違ってくるから、そういう言い方はやめてくれ
0414デフォルトの名無しさん
垢版 |
2023/12/20(水) 09:50:15.13ID:pahpwa3/
UPLIFT プレミアム・サービスのお知らせ

https://uplift.5ch.net/

UPLIFT 主な特典
・連続投稿の規制を緩和します。
・スレッド作成時の規制を緩和します。
・5ch.netのスレッド表示画面に表示される広告を除去します。
・5ch.net専用ブラウザで5ch.netの過去ログを閲覧できるようになります。
・海外からのアクセス・ホスト経由からでも書き込みができるようになります。
・書き込みが規制されているプロバイダーからでも書き込みができるようになります。
・5ch.netを安定して利用できるように運営を支援できます。

5ちゃんねるを存続させるためには、皆様のご協力が必要です。

最後まで御精読いただきありがとうございました。
0415デフォルトの名無しさん
垢版 |
2023/12/20(水) 13:51:42.89ID:YNewQeAW
>>410
reactが勝手に禁止したところでそんなの知らんがなw
そもそもただのお気持ち表明しただけで禁止じゃないだろ
0417デフォルトの名無しさん
垢版 |
2023/12/20(水) 16:36:11.78ID:vKsSDJbu
そもそもオブジェクトを使わない言語なんてあんの?
ミュータブルの代わりにイミュータブル使った方がいいよっていうだけの話を誤解してるやついね?
0418デフォルトの名無しさん
垢版 |
2023/12/20(水) 17:29:53.84ID:H2lBJqld
それはオブジェクトの定義次第やろな
例えば構造体はオブジェクトなのか?
0422デフォルトの名無しさん
垢版 |
2023/12/20(水) 23:08:05.65ID:fJBcC8n0
狭義のオブジェクト指向はクラスを持つこととはっきりしている
クラスと他との違いはあるクラスを引き継いで他のクラスを作る継承機能があること
このクラス継承は現在ではできる限り使わないようにするべき派が多数派
そのためモダンなプログラミング言語はクラスとその継承を排除した言語が多数派
0425デフォルトの名無しさん
垢版 |
2023/12/20(水) 23:38:59.80ID:tFUhhQmv
そもそも継承はお前ら土方が使うものじゃなくてライブラリ作成者が使うものだよ
「継承を使うな」と言われた意味を都合よく解釈してるんじゃね?
0428デフォルトの名無しさん
垢版 |
2023/12/20(水) 23:57:46.44ID:F0QZkHoi
土方が作るプログラムとライブラリの違いは何かね?
ビルドしたらライブラリになるでしょうが
0429デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:01:00.80ID:D/j4Xq8a
C++は昔からマルチパラダイム言語って呼ばれてた

オブシコと言ったらJavaでしょ, Javaは関数型の方に舵を切ってるけどね
オブシコではキャストを使うのは邪道中の邪道と言われてキャストが必要な
プログラムは設計が間違ってるなんて言われてたけど最近だと
パターンマッチでキャストこそが正義みたいになってるからねー
0431デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:02:05.69ID:D/j4Xq8a
なりますよ、jarが出来ます
jarっていうのはJavaのライブラリです
0432デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:10:43.28ID:ruORstUY
>>431
jarはアーカイブフォーマット
jarにしたらライブラリになるわけじゃない
JavaアプリケーションとJavaライブラリの違いを勉強してね
0433デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:14:44.62ID:D/j4Xq8a
>>432
Javaのライブラリはjarで提供されます
ライブラリじゃないjarなんてこの世に存在しません
0434デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:15:30.52ID:D/j4Xq8a
JavaアプリケーションなんてものはMainのライブラリを呼び出してるだけ
0435デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:20:05.36ID:D/j4Xq8a
実行ファイルなんてものはライブラリの利用形態の一つでしかない
プログラムはビルドしたらライブラリです
0438デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:34:09.31ID:kKmzSZ/K
>>425
ライブラリというよりフレームワークじゃないかね?
ベースクラス提供するんで継承で拡張して使ってねっていう
0439デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:35:17.42ID:D/j4Xq8a
>>436
それは「-cp ライブラリ メインクラス」のシンタクスシュガーであることはご存知でいらっしゃいますよね
違いますか? 僕がなにか間違ってますか?(間違ってない)
0440デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:38:14.36ID:D/j4Xq8a
ライブラリの話はもう良いじゃないですか、もうやめましょう、二度としないでください不愉快です
0442デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:48:13.97ID:D/j4Xq8a
>>441
あ、アライグマだ! 違うあれはツキノワグマだ!と言ってるようなもので
そこを詳しく言われても僕はどうしたら良いんでしょうかというのがいまの僕の心境です
どっちもクマじゃん…そんなこまかい種別にこだわられても僕はなんて返したら良いんでしょうか
0443デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:49:07.49ID:D/j4Xq8a
もうライブラリの話は良いでしょう、お腹いっぱいです
0445デフォルトの名無しさん
垢版 |
2023/12/21(木) 00:51:26.35ID:tfNR2qJn
アライグマとツキノワグマはだいぶ違うが
クマアンチか?
0448デフォルトの名無しさん
垢版 |
2023/12/21(木) 01:08:02.87ID:D/j4Xq8a
継承はあれば便利だけどなくてもなんとかなるかな
オブシコにとって必須なものではないように思う

属性と操作をまとめることこそがオブシコにとって唯一欠かせない性質だ

オブシコが多くの人を引き付ける理由は人間に近いからだと最近思うようになった
人間は意識という属性を持ち自律して動作する操作を持つ

人間はロボットを作るときにも人間の姿に似せた形にするように
自分に近いものに安心感を覚えてそれを求める本能があるんだろう
その根幹にあるのは慣れだと思う

自分が知っていること慣れていることに近づけることによって危険じゃないことを知って
安心するんだと思う

そのように考えるとオブジェクトは人間にとって慣れたものであるがゆえに
正しいものであるかのようなバイアスを与えるんだと思いました、おやすみなさい
0449デフォルトの名無しさん
垢版 |
2023/12/21(木) 01:13:23.81ID:nuVfr4Ro
アライグマとツキノワグマはJavaScriptとJavaくらい違う
0450デフォルトの名無しさん
垢版 |
2023/12/21(木) 01:56:35.61ID:pJCDDNo9
土方がライブラリを作らないと思ってるやつがアライグマ級だとすれば
何でもjarにすればライブラリだと思ってるやつはミノタウロス級
そのぐらい違う
0451デフォルトの名無しさん
垢版 |
2023/12/21(木) 02:24:01.88ID:e+F4JTTf
ライブラリはほとんどの場合で静的動的リンクライブラリのことを指すはずだけど、jarがライブラリって言ってる人は単にバイナリであるって主張してるのかな
メインクラスを持つ場合もリンクライブラリである場合でも拡張子が同じ.jarで分かりにくいから仕方ないね
0452デフォルトの名無しさん
垢版 |
2023/12/21(木) 04:03:02.26ID:bObiKTRM
特殊なスタブなど経由しなくても他から呼び出し可能かどうかでは?
JVMの世界ではそうなんだから一般化して話をややこしくする必要はない
0453デフォルトの名無しさん
垢版 |
2023/12/21(木) 07:43:22.24ID:RCdGCWyT
オブジェクト指向とか、

データとプロセスを個別に扱わずに、双方を一体化したオブジェクトを基礎要素にし、メッセージと形容されるオブジェクト間の相互作用を重視して、ソフトウェア全体を構築しようとする考え方がオブジェクト指向である。

ぐらいの意味だろ。
0454デフォルトの名無しさん
垢版 |
2023/12/21(木) 08:50:09.44ID:SzXsi8HM
元々オブジェクト指向という言葉ができた当時のプログラミングでオブジェクトというのは「プログラムで扱えるデータ構造」のことだよ
具体的には引数や戻り値として使えるのがオブジェクト
「第一級オブジェクト」を調べてみなよ

手続き指向は手続き中心にプログラミングしてたけどオブジェクト指向はデータ中心にプログラミングする
手続きはデータを扱う主人ではなくデータに付随する従者
それだけのこと

継承はそこから派生した副産物であって本質ではないよ
0455デフォルトの名無しさん
垢版 |
2023/12/21(木) 08:53:06.46ID:SzXsi8HM
あとお前らずっと間違えてるけど関数型とオブジェクト指向は相反するものじゃないぞ
Hskellだってオブジェクトを使う

お前らはミュータブルとイミュータブルの話を関数型とオブジェクト指向の話だと思ってるから話が通じねんだよ

そもそもモダンなプログラミング言語はみんなマルチパラダイムだ
0456デフォルトの名無しさん
垢版 |
2023/12/21(木) 09:01:41.86ID:SzXsi8HM
食肉目クマ科クマ属ツキノワグマ
食肉目アライグマ科アライグマ属アライグマ

食肉目までしか合ってないのにこれの区別がつかないやつはどうかしてる
イヌ科やネコ科も食肉目だがこれら全部区別つかないのかよ
全部「ワンワン」で許されるのは3歳までだぞ
0457デフォルトの名無しさん
垢版 |
2023/12/21(木) 09:18:57.83ID:lsX079Kc
ほらな
「オブジェクト」を使ってればオブジェクト指向だと言い出すやつに話が通じるわけがない

ハンマーしか知らないから全部釘に見えるパターン
0458デフォルトの名無しさん
垢版 |
2023/12/21(木) 09:19:14.99ID:D/j4Xq8a
>>454
調べてみたけど

第一級オブジェクト
https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88

> ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。

これオブシコのオブジェクトとは別人のようですよ
名前が同じだからといって同一人物とは限らないんですよ
0459デフォルトの名無しさん
垢版 |
2023/12/21(木) 09:27:36.96ID:OEmkIdIG
>>453
データとそのデータを扱うための関数群を「モジュール」という単位にまとめて、モジュールを基礎要素としつつモジュール間の相互作用によってソフトウェア全体を構築したら、オブジェクト指向なのか?

import Foo

Foo.doSomething(message)
0460デフォルトの名無しさん
垢版 |
2023/12/21(木) 09:50:14.13ID:QntBsg/Q
関数型とオブジェクト指向は対立するものじゃなくて共存するものなんだよね
0461デフォルトの名無しさん
垢版 |
2023/12/21(木) 09:52:20.95ID:1sVavbR7
>>459
Objective-Cとかが真のオブジェクト指向
独立したオブジェクト間をメッセージで繋げる
インスタンスと言う名のアドレス参照でコールするのは
まだまだナンチャッテの界隈
0462デフォルトの名無しさん
垢版 |
2023/12/21(木) 10:51:21.35ID:P62Wf5t1
ゴールポスト動かし続けるやつばっかり

> ハンマーしか知らないから全部釘に見えるパターン
結局コレだから議論が成立しない
頑張れば全部釘に見えるし頑張れば全部釘ではない何かに見える
0463デフォルトの名無しさん
垢版 |
2023/12/21(木) 11:14:19.53ID:+DVrG7pm
>>458
それ今の話だろ?
454は当時の話をしてね?
用語の流用で意味が変わることなんていくらでもあるだろ
0464デフォルトの名無しさん
垢版 |
2023/12/21(木) 11:26:48.51ID:RCdGCWyT
>>462
みんなバラバラのゴールの話をしているから、ゴールが動いているように見えるだけだろ。

>>459
手法としてはそうじゃない?
言語としてのサポートがあるかどうか(エラーを出すとか)は別の話。
0466デフォルトの名無しさん
垢版 |
2023/12/21(木) 17:52:07.83ID:NW/WZrsd
>>425
と土方が申しております
0467デフォルトの名無しさん
垢版 |
2023/12/21(木) 18:11:39.54ID:vQF/rv5k
>>465
「異世界ビルドの何でもライブラリアン」
〜 ハズレスキル『瓶詰め』で今日も自意識無双中w 〜
0468デフォルトの名無しさん
垢版 |
2023/12/21(木) 18:58:25.48ID:2eN7mUZl
Oops!をもじって適当に作られた昔の言葉なのに変な宗教になってる人がいるな
仕事でこれはオブジェクト指向じゃないからだめとか逆にオブジェクト指向になってるからだめって言うのがいたらキチガイだわ
0469デフォルトの名無しさん
垢版 |
2023/12/21(木) 19:21:10.76ID:dbRmDvt3
メモリ領域を表すオブジェクトとオブジェクト指向のオブジェクトは違うものやろ
英語は日本語と違って普通の名詞を専門用語に割り当てるからかぶってるだけ
それよりも、メソッド呼び出しかメッセージかなんて同じ機能に対して各言語設計者がお気持ちで別の用語を割り当てただけなんだから、メッセージじゃないと真のオブジェクト指向じゃないなんちゃってオブジェクト指向みたいな話は時間の無駄
0471デフォルトの名無しさん
垢版 |
2023/12/21(木) 20:43:25.36ID:YYpWiWf0
オブジェクトにプロパティがいっぱい生えてるのが気持ちいいんやろな
そうやってデータのまとまりとして見てて
構造体的にアクセスするのが気持ちいいんやろな

インタフェースをじっくり吟味して
内部構造を隠したり
想像しにくくしたり
想像させたりしないのがホントは好ましいんだろうけど
0472デフォルトの名無しさん
垢版 |
2023/12/21(木) 21:13:06.66ID:4/eLm8Ov
オブジェクト指向は大したない物にいちいち横文字作り過ぎてて草
関数呼び出しをメソッドとか草
プロパティとか寒いわー草も凍る
0473デフォルトの名無しさん
垢版 |
2023/12/21(木) 21:18:29.16ID:1sVavbR7
>>472
冬季オリンピックの開催地が変わる毎にスキー用語が変わるみたいなもんだろ
0474デフォルトの名無しさん
垢版 |
2023/12/21(木) 21:26:55.87ID:YYpWiWf0
構造体的に
とりあえずいっぱい乗っけたものを
色んな所に持ち回ってなんとかする

ってのがズボラ志向とフィットするんやろな
プロパティは好ましいと思ってるんだろうし
言語でサポートされてるC#が素晴らしいということになるんだろうな
0475デフォルトの名無しさん
垢版 |
2023/12/21(木) 21:30:32.59ID:1sVavbR7
プロパティは副作用あるから使わない方がいいよ
特にプロパティ内に処理を書いちゃう奴
0477デフォルトの名無しさん
垢版 |
2023/12/21(木) 22:21:26.31ID:147F0tGK
オブジェクト指向という用語をオレオレ定義で使うのは別にいいんだけど
その定義におけるオブジェクト指向とオブジェクト指向でないものの境界線くらいは最低限明確にしろよな
じゃなければ誰かさんと同じファンタジーポエムと同じだぞ
0478デフォルトの名無しさん
垢版 |
2023/12/21(木) 23:13:54.99ID:Yx4eEwEY
(例えば継承とコンポジションの) 境界線がなくても困らないのが非OO
境界線がなければ大変なことになると思ってるのがOO
0481デフォルトの名無しさん
垢版 |
2023/12/22(金) 01:41:01.22ID:RkwYtE6a
>>464
i.hidekazuくんさあ上のほうで質問されてるんだから答えてあげようよ
自分も答が気になるんよ

373 デフォルトの名無しさん 2023/12/13(水) 19:47:13.87 ID:2g95gV8C
上の話によれば変数環境のモデルがAlgolの時代にすでにあったらしい。それは知らなかった。ぜひその論文を教えて欲しい。
0484デフォルトの名無しさん
垢版 |
2023/12/22(金) 21:48:42.46ID:warq9eGH
ファンタジーというか無駄な情報をなくすには
勝手に編集するか、情報源を探し出し説き伏せる
普通に考えれば前者が合理的
0485デフォルトの名無しさん
垢版 |
2023/12/22(金) 22:12:16.69ID:2CQplv4e
エンタメ記事を勝手に編集? 説き伏せる??

さすがエンタメ供給側の人は言う事が一味も二味も違うなぁ
0486デフォルトの名無しさん
垢版 |
2023/12/22(金) 23:07:22.94ID:gCgvJEWy
エンタメ記事のやつJavaScriptスレに出没してたぞ
このスレで書いてたのと同じ妄想を書いてるからすぐわかる
0487デフォルトの名無しさん
垢版 |
2023/12/28(木) 22:23:09.59ID:KJfAJ10m
ところで「チンポがシコシコする」という日本語表現は、文法的に正しいのか?

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

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

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
0488デフォルトの名無しさん
垢版 |
2023/12/28(木) 22:27:15.00ID:KJfAJ10m
メッセージングを基礎単位として取ることは、より徹底的な遅延束縛を可能にする。というのも、
メッセージそれ自体は意味を持たず、実際にメッセージがオブジェクトに送信されてはじめて、意味が決まるからである。
https://qiita.com/ukyo-su/items/8c861f114809a96d1378

オシッコを出したり止めたりというのは、チンポから力を抜いたりチンポに力を入れたりと、
オシッコはオシッコそれ自体は意味を持たず、オシッコが尿道を介してチンポに送られることによって、
オシッコを出したり止めたりが可能になるということだ。

>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。

>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く
0490デフォルトの名無しさん
垢版 |
2024/01/05(金) 12:57:58.68ID:UIDPDbad
随意筋 不随意筋
  ↖ ↗
  チンポ

自然言語処理において語の意味は文脈によって変わるので、Pythonのような多重継承が不可欠ね!
0491デフォルトの名無しさん
垢版 |
2024/01/06(土) 09:06:18.77ID:sw3iD0at
ちんぽをシコシコするというのは主体が別に存在する(おそらく右手であろう)
しかし、ちんぼがシコシコするというのはちんぽさんが主体となって別の輪状、もしくは固定された箇所に向かって
往復運動をすることを言う
そしてそれはシコシコと形容される範囲内におけるような物体や部位である必要がある
つまり、日本語でいうところのチンポがシコシコするというのは文法上は正しい
しかしである
ちんぽは主語になってよいものかという問題が残る
ちんぽは思考できるのか、主体的な存在であるのかという疑問んである
我々はちんぽを自由自在に動かす事はできない
「勃つんだ!ジョー!!」などと呼びかけた人もいるであろう
ちんぽは人の付属物であると同時に1本の主体的な存在でもある
思考や意識といったものはないかもしれないし他動的な刺激により、また体調により変化を兆す。
つまり、チンポがシコシコするというのはチンポが主体的な存在かどうかが問われているのであり
勃起に至る過程からそれはまさに肯定されるべきなのである
0492デフォルトの名無しさん
垢版 |
2024/01/06(土) 10:24:21.41ID:Zs30euLJ
>>489
スレッドはメインルーチンとは独立して動くが、これはチンポが本体とは独立して勃起するのと同じ。
0493デフォルトの名無しさん
垢版 |
2024/01/06(土) 17:20:18.38ID:ZkRpwYXP
名前違うだけで中身空っぽ(追加属性や関数のない)クラスを基底から何種類も継承する意味ってあるのか?
同じ使い方出来るなら使いまわせばいいのでは?
0494デフォルトの名無しさん
垢版 |
2024/01/06(土) 17:29:52.71ID:Zs30euLJ
>>493
チンコってのは大統領権限でもどうにもならない、独立した別チン格で勃起したり射精したりするからな

class チンポ extends クリントン{
     super.不適切な関係;
}

つまりクリントンの再定義、クリントンの拡張された別チン格ということ
大統領権限では動かせない別チン格だから、
勃起や射精については「別チン格」として、実装をふくまない抽象クラス(Abstract)にね
0495デフォルトの名無しさん
垢版 |
2024/01/06(土) 17:46:00.75ID:u2dZhvVl
>>493
分類に使える

基底クラスにenum持たせるだけでいい場合もあるけど
enumの代わりにクラス名使うと階層化できるしデータも積める
0496デフォルトの名無しさん
垢版 |
2024/01/07(日) 12:58:47.56ID:LrLpR0DW
(経営者目線で...)
土方コード→一回の動作にかかる費用は数万〜数億
ライブラリコード→一回の動作にかかる費用は数マイクロ円
みな土方やりたがるわけだ....
0497デフォルトの名無しさん
垢版 |
2024/01/11(木) 12:55:45.21ID:IFnDPD7q
>>496
おまえ生まれてから今までずっと

何言うてんねん
0498デフォルトの名無しさん
垢版 |
2024/01/11(木) 14:24:57.98ID:xTl7LgXw
・経営者目線(IT企業?ユーザー企業?)
・土方コード(何の?)とライブラリコード(何の?)の比較
・それぞれの1動作当たりの費用(どんな計算?)
・結論土方やりたがる(使う側?使われる側?)
支離滅裂でほぼ暗号
0499デフォルトの名無しさん
垢版 |
2024/01/13(土) 02:21:05.65ID:s4Zaxjoc
>>454
大型コンピュータ同士がネットワーク化されて単一のプロセスがひとつのマシン内で完結して動いてるという状況が壊れてきて
「あっちのマシンで動いてるプログラムとこっちのマシンで動いてるプログラムの同期がまったく取れない」って未来が見えてきた時点で
要するにプログラムモジュールの単位を切ってそこにコマンドを送って「これこれこういう処理を頼む」って形にしないと人間がコントロールできなくなる。
コマンドも処理A、処理B、処理Cじゃプログラムする“人間側が”わからなくなるから、なにをさせるのか平易なわかりやすい言葉にする。

ってすげぇわかりやすい前提でオブジェクト指向は組み立てられたんだけど、その後のマイクロコンピュータの発達で
「オブジェクトなんとか?いやこの機械の中でやってることすべて把握してるのがウィザード級ハッカーって奴だろ?www」に退化しちゃって
パソコン用言語がすぐに「素人にはわからない記号を多用して人間のタイプ数や数バイトを節約するんだ!デバグ性が上がるけど遅くなる言語仕様は不要!」って
わけのわからないプログラマ文化に毒され続けて、まあその流れが現代まで汚染されたまま残ってるというか。

要するに「ロボットに命令して仕事してもらう感じにしよう!」ってだけで、ロボットのコピー改造も、あのバカが連呼してる関数と命令は同じだろも
大暴投すぎて本質になんにもかすってないという。
0503デフォルトの名無しさん
垢版 |
2024/01/13(土) 07:12:42.40ID:4Gso+Yap
      ハ,,ハ ハ,,ハ
     ( ゚ω゚ )゚ω゚ )  おとこわりします
    /    \  \    おとこわりします
  ((⊂  )   ノ\つノ\つ))
     (_⌒ヽ ⌒ヽ
      ヽ ヘ } ヘ }
  ε≡Ξ ノノ `Jノ `J
0504デフォルトの名無しさん
垢版 |
2024/01/13(土) 10:05:37.96ID:tr75Q/aW
>>499
>「あっちのマシンで動いてるプログラムとこっちのマシンで動いてるプログラムの同期がまったく取れない」って未来が見えてきた時点で

スレッドがメインルーチンとは独立して動くというのは、チンポが本体とは独立して勃起するのと同じ
だからといってスレッドはメインルーチンから制御を受けないわけではない
オシッコを出したり止めたりする時は、本体の制御を受ける
0505デフォルトの名無しさん
垢版 |
2024/01/13(土) 10:06:45.30ID:tr75Q/aW
委譲と継承の違いね!

>>454
>継承はそこから派生した副産物であって本質ではないよ

オシッコするときのチンポは委譲、勃起するときのチンポは継承
前者は本体の意思で動かされるメッセージング、後者は独立したチン格で動くポリモーフィズム

継承との違い
継承は親クラスの内容をすべて引き継ぎ、委譲は委譲元の振る舞いを一部引き継ぐ
https://qiita.com/Y_M27/items/a41b2aa8b49e7c3a1a7f
0506デフォルトの名無しさん
垢版 |
2024/01/13(土) 12:11:14.13ID:9s2lqRWT
プログラム作れずオブジェクト指向が欠片もわかってないのにオブジェクト指向というスレタイに反応してチンポ連呼するだけのキチガイ
0507デフォルトの名無しさん
垢版 |
2024/01/13(土) 14:09:28.21ID:9vPDsFsg
>>502
システムの歴史を簡単に述べる
最初にできたのは1台の大型のコンピュータで処理するシステムだ
それが複数台の大型のコンピュータをネットワーク化してより複雑な処理を行うシステムへと発展した
やがてコンピュータの小型化高性能化が進みかつて複数台の大型のコンピュータを必要としていた処理も1台の小型のコンピュータで処理できるようになった

オブジェクト指向は複数のマシンを協調して動作させるときに管理しやすくする仕組みだ
複数台の大型のコンピュータをネットワーク化して処理を行うために考案されたが
その後のコンピュータの小型化高性能化によってしだいに必要とされなくなっていった

オブジェクト指向は物理的なマシンだけでなくプログラム内の計算モジュールにも適用できる有用な概念だが
メモリを限界ギリギリまで節約することを美学とするプログラマ文化のせいで軽視されている

70年~80年台の話なんかね?

> 要するに「ロボットに命令して仕事してもらう感じにしよう!」ってだけで、ロボットのコピー改造も、あのバカが連呼してる関数と命令は同じだろも
> 大暴投すぎて本質になんにもかすってないという。

この段落は何言ってるのかわからなすぎてあきらめた
0508デフォルトの名無しさん
垢版 |
2024/01/13(土) 14:21:25.96ID:9vPDsFsg
Turbo Pascalの開発者でいまC#を作っているアンダース・ヘルスバーグは
アセンブリ言語でオブジェクト指向のプログラムを書いてたって言ってるから
Turbo Pascalが開発された80年代にもオブジェクト指向は役立ってたみたいだけどね

いまではオブジェクト指向自体の有用性は変わっていないけれども
オブジェクト指向言語と宣伝することの重要性は低くなってるかな
それだけオブジェクト指向が広まった結果だから喜ぶべきことなのかもわからんね
0509デフォルトの名無しさん
垢版 |
2024/01/13(土) 15:00:18.57ID:ffu8qMou
>>499のようなウソを並び立てたクソ長文も
>>508なようなペラっペラな浅い知識も
何の役にも立たないという意味では全くの同類
0510デフォルトの名無しさん
垢版 |
2024/01/13(土) 16:35:51.54ID:tr75Q/aW
>>506
なら「オブジェクト指向」とは何か、誰にでもわかりやすい説明をここで出せ!
0511デフォルトの名無しさん
垢版 |
2024/01/13(土) 16:46:15.72ID:tr75Q/aW
イルカも猫も「哺乳類」には違いないが、こういうところでオブジェクト指向など使うべきでは無い!

イルカはイルカ、猫は猫だ!

>>456
>イヌ科やネコ科も食肉目だがこれら全部区別つかないのかよ

つまり自然言語で容易に「区別」できるものは、オブジェクト指向を使う必要は無い!

>クリントンの「不適切な関係」

オブジェクト指向を使うべきはココ!

クリントンは同じクリントンでも、人格とチン格が別々に存在するからだ!
0512デフォルトの名無しさん
垢版 |
2024/01/13(土) 16:56:56.17ID:tr75Q/aW
チンコの随意筋と不随意筋
http://d.hatena.ne.jp/tottokotokoroten/20130516/1368716650

<俺>
「 部屋の英子がこちらを向いた気配に、彼は勃○した陰○を外から障子に突きたてた。障子は乾いた音をたてて破れ、
それを見た英子は読んでいた本を力一杯障子にぶつけたのだ。本は見事、的に当って畳に落ちた。 」
<チンポ>
「 その瞬間、竜哉は体中が引き締まるような快感を感じた。彼は今、リングで感じるあのギラギラした、
抵抗される人間の喜びを味わったのだ。 」

まさに独立した人格を有したチンポという、もう一人の俺がそこに現れるのである!

【藤子・F・不二雄】「みきおとミキオ」現在と未来、憧れの入れ替わり生活!
https://www.google.com/amp/s/middle-edge.jp/articles/0izbO.amp
0513デフォルトの名無しさん
垢版 |
2024/01/13(土) 16:59:55.05ID:G4fb1XpU
>>507
日本語は通じるようになったけど、相変わらず内容は意味不明だな
オブジェクト指向はネットワークより後なんだろうか?時期的にはわからんけど、ネットワークがオブジェクト指向に影響を与えたとは思えんな
0514デフォルトの名無しさん
垢版 |
2024/01/13(土) 17:01:56.04ID:tr75Q/aW
人間に独立した人格が有るように、チンポにも独立したチン格が有る
これは親クラスと子クラスの継承関係である
チン格とはつまり「愚息」であり、自分にも他人にも成り得る
これがオブジェクトの多態性と表現される
オシッコするときのチンポは随意筋、勃起するときのチンポは不随意筋
このように時と場合によって真逆の性質を併せ持つことができる

随意筋 不随意筋
  ↖ ↗
  チンポ

自然言語処理において語の意味は文脈によって変わるので、Pythonのような多重継承が不可欠ね!
0515デフォルトの名無しさん
垢版 |
2024/01/13(土) 17:12:40.41ID:tr75Q/aW
オシッコを止めたり出したりする時、内尿道括約筋や膀胱平滑筋を意識する必要無いからな

>>88
>オブジェクトの内部はブラックボックス化され、外部からはオブジェクトのインターフェイスだけを相手にすればよいので、

オシッコするときは便器とチンポだけを意識し、オシッコが便器からはみ出さないように気をつけることね

膀胱に尿を溜めているとき(蓄尿)には、交感神経が働いて、膀胱の筋肉(膀胱平滑筋)は緩みつつ、
膀胱の出口の筋肉(内尿道括約筋)はギュッと収縮して尿が外に出ないようにしています。
https://www.kissei.co.jp/urine/about_urine/about.html
0516デフォルトの名無しさん
垢版 |
2024/01/13(土) 18:37:21.02ID:tr75Q/aW
https://twitter.com/YS_GPCR/status/1746099832962605293

YS@GPCR
@YS_GPCR
専門的な知見を探求し、専門家同士で通じる「わかりやすさ」をもって論文を書きセミナーする頭の良さと、一般人に「わかりやすい」物語にする頭の良さは全く別。

この二者を兼ね備えるものもいるだろうが、後者の能力だけを「頭の良さ」だと思っていると、後者だけを語る疑似科学に騙される。
https://twitter.com/thejimwatkins
0517デフォルトの名無しさん
垢版 |
2024/01/13(土) 18:38:27.29ID:tr75Q/aW
『シコシコ』という擬音はどうでもよい。問題は、

自我    チンポ
↑      ↑   チンポ=自我
チンポ   自我

オブジェクト指向では、この三種類が考えられるということだ。
>チンポ=自我
散歩している時、自分もチンポも所在地は同一である。

https://i.imgur.com/4XhBmP3.jpg
https://i.imgur.com/PPFJZqI.jpg

夏目くんの場合は、チンポが自我を圧倒し、体が自然に滝川さんの股間に近づいていったのだ。

『笑ってごまかすな!!』

と言われても、夏目くんは何と言えば良かったのだろう?

    チンポ≫自我

『チンポが自我を超えてしまった』を簡略化して、チンポがシコシコする!

チンポがシコシコしていると(チンポが自我を超越していると)、息もハァハァになる。
チンポがシコシコしている(チンポが自我を超越している)と、顔もアヘ顔になる。
つまりその顔は『チンポの一部』つまりチンポの皮と同じということ。

博士号の肩書きがあっても、STAP細胞のそれは間違いであり科学者として失格。
チンポと自我の関係について、それが間違いということなら、俺も科学者を自称するのを止めよう。
しかしながらあの夏目くんは、笑ってごまかす以外に何と申し上げたら良かったのか。
0518デフォルトの名無しさん
垢版 |
2024/01/15(月) 14:41:51.96ID:/fGKGWr1
>「あっちのマシンで動いてるプログラムとこっちのマシンで動いてるプログラムの同期がまったく取れない」
どういうこと?データベースのトランザクションはネットワーク越しにちゃんと動いてるぞ
0520デフォルトの名無しさん
垢版 |
2024/01/15(月) 15:49:43.80ID:/fGKGWr1
>>519
なら最初から分散コンピューティングって用語を出せば余計な説明はいらないと思う
それから分散コンピューティングのためにオブジェクト指向が必要という話を
聞いたことがないんだけど、よかったらリンクを貼ってもらえないか?
0522デフォルトの名無しさん
垢版 |
2024/01/15(月) 15:59:31.93ID:+Vu40G8E
>>520
>それから分散コンピューティングのためにオブジェクト指向が必要という話を

分散コンピューティング・システムは、数多くのベンダーから提供されるハードウェアで稼動可能で、
さまざまな 標準ベースのソフトウェア・コンポーネントを使用することができます。
このようなシステムは、 土台にあるソフトウェアから独立しています。
https://www.ibm.com/docs/ja/txseries/8.2?topic=overview-what-is-distributed-computing

>このようなシステムは、 土台にあるソフトウェアから独立しています

独立性(クラス化)
独立性とは、外部のオブジェクトのデータを参照せず、自分自身の処理で完結している事です。
独立性が高いプログラムの場合、プログラムを変更しても、他のプログラムに与える影響が少なくなります。
そして外部の依存度を無くし、独立性が高い変数や振る舞いをまとめる事を、クラス化と言います。
https://www.vacslab.co.jp/object-orientation/#:~:text=%E7%8B%AC%E7%AB%8B%E6%80%A7%EF%BC%88%E3%82%AF%E3%83%A9%E3%82%B9%E5%8C%96%EF%BC%89,%E3%82%AF%E3%83%A9%E3%82%B9%E5%8C%96%E3%81%A8%E8%A8%80%E3%81%84%E3%81%BE%E3%81%99%E3%80%82
0523デフォルトの名無しさん
垢版 |
2024/01/15(月) 16:04:30.71ID:+Vu40G8E
>>506
繋がっているけれども独立しているということだが?
0525デフォルトの名無しさん
垢版 |
2024/01/15(月) 16:15:18.12ID:/fGKGWr1
>>521
言われて困るやつに横槍されても

>>522
>このようなシステムは、 土台にあるソフトウェアから独立しています
この文は分散コンピューティング・システムはOSから独立してるということを言ってると思うんだけど、
それがオブジェクト指向のオブジェクトの独立性と共通してるってこと?だから必要になったと?
0526デフォルトの名無しさん
垢版 |
2024/01/15(月) 16:16:35.18ID:+Vu40G8E
>>525
>それがオブジェクト指向のオブジェクトの独立性と共通してるってこと?

そうだ。
0528デフォルトの名無しさん
垢版 |
2024/01/15(月) 16:21:56.16ID:L26ifdR0
分散コンピューティングとオブジェクト指向は全く関係ないわな
オブシコ君はそんな基本的なことも知らずに何年もシコシコ言い続けてるんだな
0529デフォルトの名無しさん
垢版 |
2024/01/15(月) 16:22:56.36ID:+Vu40G8E
クリントンは同じクリントンでも、チンポは本体のクリントンシステムとは独立して動くからな

>このようなシステムは、 土台にあるソフトウェアから独立しています

class チンポ extends クリントン{
     super.不適切な関係;
}

21年前のクリントン弾劾裁判 躊躇した「性的関係」の詳細描写(樫山 幸夫)2020年4月
https://www.jnpc.or.jp/journal/interviews/35171
0530デフォルトの名無しさん
垢版 |
2024/01/15(月) 16:30:44.55ID:tJyBqE8O
CORBAとかDCOMとかオブシコそのものじゃん…
まったく関係ないってそんな自信満々に間違ったこと言われても…
0531デフォルトの名無しさん
垢版 |
2024/01/15(月) 16:33:01.77ID:tJyBqE8O
CORBAもDCOMも大失敗したのは事実だけどさ
REST APIへと形は変わったけどオブシコはまだ生きてる!
0532デフォルトの名無しさん
垢版 |
2024/01/15(月) 16:36:38.36ID:+wOH1ULK
>>530
あーやっぱり区別がついてないんだな
直交した概念を関係あるものと誤認識してるだけだよ
0533デフォルトの名無しさん
垢版 |
2024/01/15(月) 17:03:55.47ID:+Vu40G8E
クリントン大統領の「不適切」というのは、チンポが独立して主体意思でシコシコしてしまったから。
チンポは独立した生き物であり、アメリカ大統領の権限をもってしても、制御することは不可能だ。

クリントンの「不適切な関係」
https://eigo-kobako.blog.so-net.ne.jp/2008-06-21

class チンポ extends クリントン{
     super.不適切な関係;
}



クリントンーーーーーーーーーー
┃             ┃
┃             ┃
┃             ┃
┃             ┃
┃             ┃
ーーーーーーーーーーーーーーー
     ┃チンポ┃
      ̄ ̄ ̄ ̄
『人格を性欲に乗っ取られる』、つまりクリントンはチンポに人格を乗っ取られて、チンポにシコられてしまった!

https://i.imgur.com/WMeTh5O.jpg
0534デフォルトの名無しさん
垢版 |
2024/01/15(月) 18:17:03.84ID:R6kkBDRE
>CORBAとかDCOMとかオブシコそのものじゃん…
これは何でもオブシコに見えてしまう病
誰かが書いてたけどすべてが釘に見えてしまうやつと同じ
0535デフォルトの名無しさん
垢版 |
2024/01/15(月) 19:14:13.08ID:tJyBqE8O
>>534
CORBAのOが何を表してるか知ってるか?
DCOMのOが何を表してるか知ってるか?
それがすべて
0536デフォルトの名無しさん
垢版 |
2024/01/15(月) 19:15:33.47ID:tJyBqE8O
>>532
区別なんてをつける必要なんてないのよ
なぜならオブシコはもっと大きな包括的概念だからね
0537デフォルトの名無しさん
垢版 |
2024/01/15(月) 19:18:39.19ID:tJyBqE8O
お前らはオブシコのことを何もわかってない
その生い立ちその歴史その意味その未来
俺にははっきり見えているWebサービスこそがオブジェクトです
Webサービスの連携によってシステムが形作られるさまはまさにオブジェクト指向なわけですよ
0538デフォルトの名無しさん
垢版 |
2024/01/15(月) 19:19:49.00ID:tJyBqE8O
> 分散コンピューティングとオブジェクト指向は全く関係ないわな

これは完全に間違ってる完全にだ
0539デフォルトの名無しさん
垢版 |
2024/01/15(月) 19:21:01.08ID:tJyBqE8O
現代のWebサービスはいわばまさにアラン・ケイが提唱したオブジェクト指向そのものなわけですよ
0541デフォルトの名無しさん
垢版 |
2024/01/15(月) 19:25:33.23ID:tJyBqE8O
>>540
お前が行けやアホンダラ
0542デフォルトの名無しさん
垢版 |
2024/01/15(月) 19:38:23.27ID:+Vu40G8E
>>90
>俺は抽象化自体はどうでもよくてifを減らすために使ってるわ

抽象化とは、前述の通り大事なとこだけ抜き出して他はポイすることである。
例えば「白米」という項目に「パンの説明」が併記されていたら、「おいおいそれはないだろ」という話になる。いわばこれが白米の抽象化が効いていない状態だ。
逆に、白米の要素を省きつつパンの説明だけを抜き出して一つにまとめられれば、それはパンの抽象化である。
https://qiita.com/0w0/items/2cfaf3ca0b653960f5e9
0544デフォルトの名無しさん
垢版 |
2024/01/15(月) 20:34:14.19ID:/fGKGWr1
それは要約とか抽出じゃね
抽象化はたとえば白米とパンから主食とか穀物みたいな抽象的なグループを作り出すことでしょ
0546デフォルトの名無しさん
垢版 |
2024/01/15(月) 23:43:09.60ID:EcvQXyUD
>>542
まーたすごいw記事見つけてくるな
抽象化を理解できてない上に本人が「白米の抽象化か効いてない」状態を見事に体現しててウケる
0547デフォルトの名無しさん
垢版 |
2024/01/16(火) 09:19:44.52ID:8bIww2fl
複数のカテゴリに重複して分類出来るものを例えに使うから分からなくなる
だいたい多重継承禁止なのに
0549デフォルトの名無しさん
垢版 |
2024/01/16(火) 12:11:50.40ID:GCfW19h4
>>544
要点を抽出して要約するのも抽象化の一種
汎化が伴わない場合は抽象度の変化が小さいので抽象化とは異なると考えがち
0551デフォルトの名無しさん
垢版 |
2024/01/16(火) 13:28:47.91ID:snT60a6r
>>550
プログラミングの役に立たないもとだと認識してしまう人は抽象化能力の低い人なのでそういう人にこそどうでもよくないこと

汎化が伴わない抽象化もプログラミングにおいて日常的に使われるものだけどそれを汎化が伴う抽象化とシームレスに使えない人は抽象度のコントロールが上手くできない

これは>>542の記事がわかりにくい原因の一つでもある
0553デフォルトの名無しさん
垢版 |
2024/01/17(水) 13:31:13.72ID:QHRQ9FyB
>>507
>この段落は何言ってるのかわからなすぎてあきらめた
もともとが「プログラムはひとつの機械の中で順番に処理をするもの」という前提が崩れた時点で
外部のプログラムモジュールに“この仕事を頼む”って非同期的に作業を預けて
モジュール間で「できてる?」「できた」ってやりとりすることで動作する環境を考えなければいけなくなった。
その時イメージされたのがロボットに仕事を頼んでそれぞれが「できました」するイメージ
この前提で考えた時にシステムを人間が管理するためにはロボットに与える命令は
人間側が平易に理解できるコマンドと内容でなければ人間が困るというのが
現代まで続くメッセージ/メソッドという概念の始まり。
またロボットなのだから複製して似た作業させたり、アームや移動装置を付け替えることで
別な作業に使えるように改造するという発想も自然に出てくる。
(ただ後年言われているように基本→改造A→改造Bってできる継承は
バージョン違いで逆に混乱の元にしかならないので、コンポジションをベースにした方がよかった)

こういった前提でプログラムモジュールをオブジェクトと考えるオブジェクト指向は生まれたのだが
この前提が見事にすっこ抜けたC ++が「継承ってのがオブジェクト指向なんだよ
車にタイヤだよ、改造パーツ付け替えだよ」って異端が“ボクがオブジェクト指向ござい”したせいで
いまだに間違った言語の間違った仕様を前提に「あれがオブジェクト指向だった」と思われてる。
そういう話
0554デフォルトの名無しさん
垢版 |
2024/01/17(水) 13:41:41.50ID:QHRQ9FyB
あと、あたりまえの話だけどひとつのプログラムモジュールなんて小さい単位の中では
普通に処理が順番に走ってるんだから、そんな細かい単位の中でマイクロオブジェクト作って
継承だのなんだのする意味がなくて、そういうレベルのマイクロコンピュータプログラミングで
次の時代はC ++だよ!されたのが最大の不幸だったとも言える。
0555デフォルトの名無しさん
垢版 |
2024/01/17(水) 14:40:27.01ID:E+GFYvQx
アラン・ケイの言及
>さながら生物の細胞、もしくはネットワーク上の銘々のコンピュータ、それらはただメッセージによって
>コミュニケーションする存在、僕はオブジェクトをそう考えている

人間が平易に理解できるうんぬんは上のバカが言ってるだけで関係ないのでご注意ください
あとマイクロコンピュータという用語の使い方も間違ってるので無視してください
0556デフォルトの名無しさん
垢版 |
2024/01/17(水) 15:19:46.14ID:yIRtErMp
ネットワークが当たり前になって、複数のサイトで個々の対応をする様になったら、またオブジェクト指向が見直されるってか?
0557デフォルトの名無しさん
垢版 |
2024/01/17(水) 15:29:35.60ID:KgFW7PrH
こいつ、オブジェクト指向にマルチスレッド的な要素があると思ってるところが、なんかiHdkzくさいな
0559デフォルトの名無しさん
垢版 |
2024/01/17(水) 16:10:20.50ID:r71rticC
>>553
>人間側が平易に理解できるコマンドと内容でなければ人間が困るというのが
>現代まで続くメッセージ/メソッドという概念の始まり。

よって我々はモノに着目している場合ではない。機能に着目すべきなのだ。インターフェイスとは機能をユーザー側の視点から記述したものだ。
これによって機能を構成するものの中でユーザーが知る必要のない情報(実装)を隠蔽するのである。
各コンポーネントが自分が知る必要のあることだけを知ることで、現代の複雑かつ大規模なソフトウェア開発が可能になるのである。
https://qiita.com/hush/items/33da14ddf45f45b5ef65
0560デフォルトの名無しさん
垢版 |
2024/01/17(水) 16:17:11.41ID:r71rticC
>>88
>オブジェクトの内部はブラックボックス化され、外部からはオブジェクトのインターフェイスだけを相手にすればよいので、

多くの機能を保有する管理画面は、業務の種類によってメニューが細分化されています。
しかし、ユーザーが利用する機能は限られていることが多く、使うたびにメニューから目的の機能まで辿る作業は面倒です。
https://baigie.me/blog-ui/2020/06/16/ui_design_for_admin_screen/
0562デフォルトの名無しさん
垢版 |
2024/01/17(水) 16:29:39.06ID:r71rticC
必要最低限の機能を、過不足なく抽出するのが抽出化ね!

>>90
>俺は抽象化自体はどうでもよくてifを減らすために使ってるわ

オシッコするときはチンポと便器だけを意識するべきで、内尿道括約筋や膀胱平滑筋を意識する必要無い!
0563デフォルトの名無しさん
垢版 |
2024/01/17(水) 16:38:14.46ID:E+GFYvQx
あーなるほど、ユーザーのことを人間って言ってたのか
こいつ言葉の使い方が無茶苦茶だな
常に>>562みたいな卑猥な表現ならまぎらわしくないんだけどな
0564デフォルトの名無しさん
垢版 |
2024/01/17(水) 16:46:12.65ID:E+GFYvQx
ユーザーを人間に言い換えちゃうと、実装の詳細をすべての人間が平易に理解できちゃいけないことになるけど、
機能を実装した人間は平易に理解できちゃってるからまずいよねえ
そこはユーザーとか利用者とか言わないと意図が伝わらないよねえ
0565デフォルトの名無しさん
垢版 |
2024/01/17(水) 16:49:13.88ID:KgFW7PrH
プログラマのことを人間って書いてるのかと思ってた
利用者のことだとわかるのすげーな
そんな発想みじんもなかった
0566デフォルトの名無しさん
垢版 |
2024/01/17(水) 17:00:54.72ID:E+GFYvQx
>>565
>プログラマのことを人間って書いてるのかと思ってた
それはまあ合ってるんじゃね
ライブラリの提供者と、それを使う利用者っていう文脈ならプログラマだからね

ただし「人間と非人間(機械?)」という構図ではなく、
「提供者と利用者(ユーザー)」という構図だったらしい
それなら片方を指して人間と呼ぶのはまぎらわしすぎる
0568デフォルトの名無しさん
垢版 |
2024/01/17(水) 18:59:47.01ID:E+GFYvQx
まあ、インターフェイスはどっちかというと理解しやすくするためというより、
依存を減らすことで、実装変更の影響が広がらないようにするためだけどな
0569デフォルトの名無しさん
垢版 |
2024/01/17(水) 19:39:24.28ID:CqiMzrNV
>>568
インターフェイスは契約だよ。
依頼人は事前条件の義務を果たせば事後条件の利益が受けられる。請負人は事前条件が揃ったら事後条件を提供する義務がある。
それを契約書みたいに切り離したのがインターフェイス。
0571デフォルトの名無しさん
垢版 |
2024/01/17(水) 23:35:59.37ID:oTV5DNx6
>>557
元々のオブジェクト指向はマルチスレッドだけでなくマルチプロセスでもマルチノード環境でもよくて
それらマルチな環境で動いている独立したオブジェクト同士がメッセージパッシングをするところから始まっている
そのメッセージパッシングの実装の一つのあるインターフェイス切り口の一つがオブジェクトのメソッド呼び出し
0572デフォルトの名無しさん
垢版 |
2024/01/17(水) 23:39:09.32ID:oTV5DNx6
したがってシングルスレッドおよび同期呼び出しという二つの足枷を前提とする極めて特殊な制限された環境を前提とするのは間違い
0573デフォルトの名無しさん
垢版 |
2024/01/17(水) 23:51:51.10ID:KgFW7PrH
>>571
メッセージパッシング?Smalltalkのメッセージはメソッド呼び出しをかっこよく言い換えただけやろ?
0576デフォルトの名無しさん
垢版 |
2024/01/18(木) 00:01:33.25ID:wXOtcPza
なんで、関数呼び出し以外でメッセージを実装してる言語が存在しないの?
オブジェクト指向の始祖はなんでそんな実装しなかったの?
0578デフォルトの名無しさん
垢版 |
2024/01/18(木) 01:24:58.22ID:jl137W3w
ここでの言語がプログラム構築ツールに過ぎないのだから
関数呼び出しとなるのは理にかなってて当然じゃない?
オブジェクトの扱いをもっと大げさに実装しても嬉しくないし
業務フロー構築とか高レベルな領域を扱うためのものはあるけど
汎用的なプログラム言語ではなくなる
0579デフォルトの名無しさん
垢版 |
2024/01/18(木) 01:37:22.52ID:SCJi6kKx
関数呼び出しの意味合いが多義たから噛み合ってないようにみえる
古典的な関数呼び出しだと求める値は関数の返り値として返ってくる
しかし今は当然それだけではなくて
例えばJavaScriptなど継続(continuation)を用いる言語だとその場合は関数の返り値として求める値は返って来ない
さらに今は多くはの言語が非同期呼び出しをサポートしていて関数呼び出しで返ってくるのは求める値ではなくFutureやPromiseが返って来る
さらにそれらを使わずあるいは併用してChannelを使ってメッセージや値を送り合う言語も多い
関数呼び出ししかないと主張する>>576はあまりにも無知すぎるようにみえる
0580デフォルトの名無しさん
垢版 |
2024/01/18(木) 01:49:14.31ID:wXOtcPza
>>579
そんな感じでプリミティブな関数呼び出しを利用してなんでもできるじゃん
それをメッセージパッシングとか名前だけ変える意味ないやろ
0581デフォルトの名無しさん
垢版 |
2024/01/18(木) 01:54:44.12ID:SCJi6kKx
>>580
まずはContinuation、Promise/Future、Channelなど各々を勉強してみたらどうかね
そうすれば関数呼び出しだけではなぜ実現できないのかを理解できる
0583デフォルトの名無しさん
垢版 |
2024/01/18(木) 02:02:13.52ID:wXOtcPza
javaとか関数呼び出し以外に特別なメッセージパッシングの仕組みがないのに、PromissもFutureもあるじゃん…
Continuationはないけどさ
0584デフォルトの名無しさん
垢版 |
2024/01/18(木) 02:05:10.31ID:wXOtcPza
schemeなんて関数呼び出ししかないのに全部あるじゃん…
何が言いたいのかさっぱりわからん…
0585デフォルトの名無しさん
垢版 |
2024/01/18(木) 02:28:53.69ID:SCJi6kKx
屁理屈で言い訳しているだけにみえるが
もし本当に理解できてないなら相手にしてもしかたないな
0586デフォルトの名無しさん
垢版 |
2024/01/18(木) 02:35:03.86ID:wXOtcPza
>>585
実際にjavaやschemeでは関数呼び出しだけで実装できてるって言ってるのに、理由もなく実装不可能とか屁理屈言ってるのはそっちだろ
普通に考えて関数による抽象化はプログラムにおける万能のビルディングブロックなんだけど
0587デフォルトの名無しさん
垢版 |
2024/01/18(木) 02:56:24.95ID:wXOtcPza
むっちゃ話がそれたんだけど、メッセージパッシングなんて関数呼び出しの名前をオシャレに変えただけなので、
>>571
に書いてあるマルチスレッドで独立したオブジェクトがメッセージを送りあうみたいな計算にはならないだろって言いたいんだけど

そういう独立に相互作用しあうような計算が念頭にあるなら、smalltalkみたいな言語にはならんと思う
0589デフォルトの名無しさん
垢版 |
2024/01/18(木) 10:04:53.65ID:YnZ4cQvx
>>571
>それらマルチな環境で動いている独立したオブジェクト同士がメッセージパッシングをするところから始まっている

メッセージングを基礎単位として取ることは、より徹底的な遅延束縛を可能にする。というのも、
メッセージそれ自体は意味を持たず、実際にメッセージがオブジェクトに送信されてはじめて、意味が決まるからである。
https://qiita.com/ukyo-su/items/8c861f114809a96d1378

オシッコを出したり止めたりというのは、チンポから力を抜いたりチンポに力を入れたりと、
オシッコはオシッコそれ自体は意味を持たず、オシッコが尿道を介してチンポに送られることによって、
オシッコを出したり止めたりが可能になるということだ。

>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。

>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く
0590デフォルトの名無しさん
垢版 |
2024/01/18(木) 10:22:05.53ID:YnZ4cQvx
独立したオブジェクト同士が、

>>571
>独立したオブジェクト同士がメッセージパッシングをするところから始まっている

「相互作用しあう」というのがイマイチわかりにくいかもしれない。

>>587
>そういう独立に相互作用しあうような計算が念頭にあるなら、

けれどもチンポは同一の個体であっても別人格または別チン格なので、本体との相互作用に矛盾は無い!

チンコの随意筋と不随意筋
http://d.hatena.ne.jp/tottokotokoroten/20130516/1368716650

<俺>
「 部屋の英子がこちらを向いた気配に、彼は勃○した陰○を外から障子に突きたてた。障子は乾いた音をたてて破れ、
それを見た英子は読んでいた本を力一杯障子にぶつけたのだ。本は見事、的に当って畳に落ちた。 」
<チンポ>
「 その瞬間、竜哉は体中が引き締まるような快感を感じた。彼は今、リングで感じるあのギラギラした、
抵抗される人間の喜びを味わったのだ。 」

まさに独立した人格を有したチンポという、もう一人の俺がそこに現れるのである!

【藤子・F・不二雄】「みきおとミキオ」現在と未来、憧れの入れ替わり生活!
https://www.google.com/amp/s/middle-edge.jp/articles/0izbO.amp
0591デフォルトの名無しさん
垢版 |
2024/01/18(木) 10:32:03.61ID:YnZ4cQvx
オシッコするときのチンポは随意筋、勃起するときのチンポは不随意筋
このように時と場合によって真逆の性質を併せ持つことができる

>>579
>さらに今は多くはの言語が非同期呼び出しをサポートしていて関数呼び出しで返ってくるのは

随意筋 不随意筋
  ↖ ↗
  チンポ

>求める値ではなく

随意筋(本人)である場合と、

>FutureやPromiseが返って来る

不随意筋(他人)である場合がある。
0592デフォルトの名無しさん
垢版 |
2024/01/18(木) 11:05:22.35ID:YnZ4cQvx
意味論上の原則として、メッセージ送信表現が何を意味するかは、メッセージを受けるオブジェクトによって決められる(SEO)。
この考え方の重要なところは次の二点だ。
メッセージはそれ自体でいかなる意味も持たない
メッセージが何を意味するか(システムとして何を起こすか)はオブジェクトが解釈する
https://qiita.com/ukyo-su/items/8c861f114809a96d1378

>>571
>それらマルチな環境で動いている独立したオブジェクト同士がメッセージパッシングをするところから始まっている

「オシッコがしたい」と自分がそう思っていても、体内に入っているうちはオシッコにはならない
そうでは無くてチンポから尿を出すことによって、それはオシッコなのだと意味づけられる
0593デフォルトの名無しさん
垢版 |
2024/01/18(木) 11:16:28.90ID:YnZ4cQvx
随意筋 不随意筋
  ↖ ↗
  チンポ

チンポは本人の意思では動かせない別の生き物だが?

>>580
>そんな感じでプリミティブな関数呼び出しを利用してなんでもできるじゃん

×
俺.オシッコを止める 俺.オシッコを出す

>それをメッセージパッシングとか名前だけ変える意味ないやろ


俺.チンポに力を入れる 俺.チンポから力を抜く
0594デフォルトの名無しさん
垢版 |
2024/01/18(木) 11:26:03.41ID:YnZ4cQvx
俺↔チンポ

相互作用ね!

>>571
>それらマルチな環境で動いている独立したオブジェクト同士がメッセージパッシングをするところから始まっている

https://mobile.twitter.com/ki45_nisiki/status/1581300043935494145

フローズンぺんぎん@とりゅー
@ki45_nisiki
返信先:
@LunRon5
さん
どんなに教養と勉強で武装しようとも、自身が抱える性癖には逆らえん。チンポが脳や人格にオーバーライドして支配してくる欲求には逆らい難い…だからこそ最低限の慎みと矜持として2次元があるのではないか…デブでもおばさんでも勃起できる人にはこの苦しみはわからんっすね
https://twitter.com/thejimwatkins
0595デフォルトの名無しさん
垢版 |
2024/01/18(木) 14:40:55.32ID:ajk+/w34
前も歴史的タイミングがわかってない人が居たけど
大学のデータセンターみたいなのがネットワーク通信できるようになって
処理を外部のコンピュータに委任する状況が当時の最新システムで始まった時に
従来の一つのアドレス空間で結局内部でステップ順に処理しているという
プログラムの常識が通用しなくなって来たから
「もう独立した処理単位(オブジェクト)としてサブルーチンを捉えよう」という
オブジェクト指向が始まったので、結局アドレスで〜というのはお門違い。
0596デフォルトの名無しさん
垢版 |
2024/01/18(木) 15:06:53.52ID:Q62r0xAB
オブジェクト指向うんぬんはあるけど、状態管理まわりのアーキテクチャうんぬんの議論も最近よく見かける
ReduxだのMVVMだのいろいろありすぎる
まあ結局フレームワークで状態管理アーキテクチャを選ぶことになるんだろうが
0598デフォルトの名無しさん
垢版 |
2024/01/18(木) 16:43:01.66ID:ajk+/w34
いろいろ不思議なんだよね
80~90年代のカプセル化や新しいプログラムパラダイムの話題
現代のswift playgroundやunityの実装まで全てがステップバイステップで
プログラマがコントロール“できない”からオブジェクトに処理は任せるという思想で
近代プログラミングは成り立ってるのに、そこの歴史一切無視して
ずーっとCとかアセンブラ脳なんだままっていったいどこで情報科学を学んだの?
0599デフォルトの名無しさん
垢版 |
2024/01/18(木) 17:09:23.81ID:6/8H82z6
むしろデータ型の歴史を無視することで
変数の型を宣言しないことが可能となる
関数がアルゴリズムを隠蔽するのと同様に変数がデータを隠蔽できるようになる
0602デフォルトの名無しさん
垢版 |
2024/01/18(木) 17:35:59.19ID:HYoD398u
オブジェクト指向の最高傑作は依存性注入という考え方だよね
自動テスト最高
0603デフォルトの名無しさん
垢版 |
2024/01/18(木) 17:51:12.10ID:318qGf4h
>>588
じゃあなんで、提唱されてから40年は経ってるのに、我こそは真のオブジェクト指向言語だメッセージは通信で渡すぞオブジェクトはみなスレッドだってやつが現れないの?
0605デフォルトの名無しさん
垢版 |
2024/01/18(木) 18:13:43.69ID:318qGf4h
>>604
わいもそう思うんだけど、
>>571
が言うには元々のオブジェクト指向はオブジェクトが独立したスレッドで動いてるらしいんだよ
だから、なんでそういう「本来のオブジェクト指向」の実装が未だに現れないんだろうねえ不思議だねえって話
0606デフォルトの名無しさん
垢版 |
2024/01/18(木) 18:15:26.58ID:YnZ4cQvx
コントロールできる場合とできない場合が併存するということね!

>>598
>プログラマがコントロール“できない”からオブジェクトに処理は任せるという思想で

随意筋 不随意筋
  ↖ ↗
  チンポ
0607デフォルトの名無しさん
垢版 |
2024/01/18(木) 18:29:06.41ID:YnZ4cQvx
オブジェクト指向=人工知能

>>605
>なんでそういう「本来のオブジェクト指向」の実装が未だに現れないんだろうねえ不思議だねえって話

(第1章 はじめに 2頁)
たとえば、CycはFredという名前の男が朝にひげをそるという話が理解できなかった。
Cycの推論エンジンは、この話の中に矛盾を見つけた。Cycは人間には電気の部品がないことは知っているが、
Fredが電気カミソリを持っていたので、エンティティ「Fredがひげそり中(FredWhileShaving)」
には電気の部品が含まれていると考えた。したがって、CycはFredがひげをそっている間、
Fredはそれでも人間なのかと尋ねた。

『深層学習』
著者:
Ian Goodfellow, イアングッドフェロー,
Yoshua Bengio, ヨシュアベンジオ,
Aaron Courville, アーロンカービル
0608デフォルトの名無しさん
垢版 |
2024/01/18(木) 18:36:42.71ID:YnZ4cQvx
>>131
>つまりオワコンとなったのは「クラスとその継承」

これは継承を使うしか無いでしょ?
>Fredが電気カミソリを持っていたので、
   Fred 
   ↑
電気カミソリ+Fred
0610デフォルトの名無しさん
垢版 |
2024/01/18(木) 19:44:08.60ID:318qGf4h
>>609
わいは
>>571
が言ってる「本来のオブジェクト指向」ってのがおかしいと思ってるから、smalltalkが「本来のオブジェクト指向」に則って実装されてないのはなんでなんって話をしてるつもり
0612デフォルトの名無しさん
垢版 |
2024/01/18(木) 20:15:07.55ID:IdJKbIqV
>>607
昔はエージェント指向というのがあってなぁ。
AIの台頭で復権するかもね。

>>608
オブジェクト指向でも継承じゃなくて集約使う状況じゃない?

継承とか基本的にコンパイラの実装上の都合(性能とか)をプログラムの設計に押し付けているだけだから、安易に使うべきじゃないよ。
0613デフォルトの名無しさん
垢版 |
2024/01/18(木) 20:30:12.28ID:hMwUZ6n+
各種プログラミング言語の継承とかってコンパイル時には解決してるものなんだからコードの可読性が上がるのなら使っていくべきもの
安易に使うべきではないっていうのは、
・コンパイラ任せのプログラムを書くなってこと?
・コンパイル後でボイラーコードが増えてアホコードになるってこと?
・コンパイラに継承とかの解決をさせることが時間の無駄ってこと?
0614デフォルトの名無しさん
垢版 |
2024/01/18(木) 20:33:43.77ID:YnZ4cQvx
「装備品」ということなら集約かな?

>Cycは人間には電気の部品がないことは知っているが、
>Fredが電気カミソリを持っていたので、

<オブジェクト指向の集約について>
クラスが他のクラスの組み合わせで構成されている関係を集約(aggregation)と呼びます。
例えば、学校は生徒を含み注文商品は商品を持ちます。
集約では、含んでいる側が消滅しても、含まれている方はなくなりません。
例えば、生徒が変化しても学校は変わりませんし、注文商品が消滅しても商品は消滅しません。
http://wtar00.seesaa.net/article/438834930.html
0616デフォルトの名無しさん
垢版 |
2024/01/18(木) 20:39:00.79ID:YnZ4cQvx
Pythonは多重継承だが?

>>612
>継承とか基本的にコンパイラの実装上の都合(性能とか)をプログラムの設計に押し付けているだけだから

オントロジーは、情報の親/子関係を表現できます。RDFドキュメントの例でも触れましたが、
オブジェクト指向の継承と同じ概念と理解いただいてもよいと思います。そして、
オントロジーの「継承」の特徴は、次のようにオブジェクト指向と近いものです。
子は親の情報(=設定値)を引き継ぐ
多重継承ができる。(継承した全てのクラスの定義を漏れなく引き継ぐ)
継承の関係は、「subClassOf」と表現します。「子 is a 親」という関係です。
https://qiita.com/mininobu/items/bce0e0ad97ed17e0aff2
0617デフォルトの名無しさん
垢版 |
2024/01/18(木) 20:53:38.83ID:IdJKbIqV
>>613
設計の初期の段階でクラス継承関係みたいな変更しづらい仕様を固めなくてはならないのは「早すぎる最適化」だということ。

継承関係の変更はえてして根底からの設計変更が必要になるけど、設計が熟成する前にクラスの依存関係を確定するのは非常に難しい。
adaptorパターンとかで影響を減らすことはできるけど、それなら最初から継承関係用のadaptorを用意したほうがいい。

c++のコンセプトをそのまま変数の型に使用できればずいぶん楽になるんだけどな。
0618デフォルトの名無しさん
垢版 |
2024/01/18(木) 21:03:06.30ID:bwFEBIOM
モダンなプログラミング言語
Go、Rust、Zig、Nim、Julia、Elixirは
クラスおよびその継承を言語仕様から排除している
クラス継承は悪手であるとプログラミング言語界では結論が出ている
0619デフォルトの名無しさん
垢版 |
2024/01/18(木) 21:07:29.23ID:YnZ4cQvx
クラス継承が大事だつーなら、必ず多重継承も含めなければならなくなるからなw

随意筋 不随意筋
  ↖ ↗
  チンポ

人工知能や自然言語処理なら、文脈によって語の意味が変化するから、多重継承必須ね!

618 デフォルトの名無しさん sage 2024/01/18(木) 21:03:06.30 ID:bwFEBIOM
モダンなプログラミング言語
Go、Rust、Zig、Nim、Julia、Elixirは
クラスおよびその継承を言語仕様から排除している
クラス継承は悪手であるとプログラミング言語界では結論が出ている
0620デフォルトの名無しさん
垢版 |
2024/01/18(木) 21:14:26.20ID:YnZ4cQvx
Javaみたいな多重継承をサポートしていない言語なら、継承そのものを殆ど使わないほうがいいと思う

随意筋 不随意筋
  ↖ ↗
  チンポ

継承を使う場合は、必ず多重継承をもサポートしなければならないのだから!
0621デフォルトの名無しさん
垢版 |
2024/01/18(木) 21:26:58.92ID:XBwDmihy
さまざまなユースケースの必要なUIまわりくらいでしか継承はもはや必須じゃないよね
システムまわりでは継承使うとかえって将来的に保守をしにくくなる
0623デフォルトの名無しさん
垢版 |
2024/01/18(木) 21:47:34.26ID:/z/OLNb0
rustは継承に変わる実装としてトレイトがある。継承はレガシーなゴミ技術だよ。
'''
オブジェクト指向言語の問題は、暗黙の環境を常に持ち歩いていることだ。
欲しかったのはバナナだけなのに、あなたが得たのはバナナを持っていたゴリラと、ジャングル全体だった。
Joe Armstrong
https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53
https://qiita.com/baby-degu/items/ae5777dad23ee6624ce2
'''
0624デフォルトの名無しさん
垢版 |
2024/01/18(木) 21:48:59.95ID:YnZ4cQvx
集約
独立して存在できる何かのコレクションがある場合
P.29
こちらは空港と飛行機で例えられています。
コンポジションのようなAとBの強い結びつきはありません。
https://qiita.com/gatapon/items/5e3292f897ab4f817001

ドラゴンクエストX
【主人公と職業】
・戦士
・僧侶
・魔法使い
・武闘家
・盗賊
・旅芸人

一般的に「オブジェクトの継承」が使われるが、この場合は「集約」でも代用可能だ
空港でどの飛行機を先に飛ばすかは、主人公がどの職業を選択するかに置き換えられる
プレイヤーの意思でコントロールできるからだ

>Cycは人間には電気の部品がないことは知っているが、
>Fredが電気カミソリを持っていたので、

装備品もプレイヤーが自分で選択可能だから、「集約」でも代用可能だ

class チンポ extends クリントン{
     super.不適切な関係;
}

しかしながらクリントンが自分のチンポをコントロールすることは不可能
クリントンは同じクリントンでも、人格とチン格は違うからだ
0625デフォルトの名無しさん
垢版 |
2024/01/18(木) 21:50:12.81ID:p4+mv2Ay
継承は開発者の手腕によって神にも悪魔にもなる
きっちりとした仕様書とノウハウがあれば保守性に長けたプログラムがちゃんと出来上がるよ
0626デフォルトの名無しさん
垢版 |
2024/01/18(木) 21:52:27.18ID:bwFEBIOM
>>622
Rustも他の言語と同様にメソッド呼び出しがあり
内部構造の秘匿もできるため
オブジェクト指向
0627デフォルトの名無しさん
垢版 |
2024/01/18(木) 21:59:50.46ID:YnZ4cQvx
>>611
継承が必須だということなら、多重継承をサポートしていないJavaは欠陥言語となる
多重継承をサポートしていないということは即ち、他のやり方で代用できると考えていい
継承を使いこなしたいのであれば、Pythonのような多重継承をサポートしている言語をマスターすべき
0628デフォルトの名無しさん
垢版 |
2024/01/18(木) 22:22:16.51ID:k9qVbfct
>>623
引用オナニー要らないよw
変態プレイは一人でやってください
0629デフォルトの名無しさん
垢版 |
2024/01/18(木) 22:31:39.02ID:p4+mv2Ay
>>627
継承の継承を使えりゃ十分じゃね?
Kotlinやってるけど多重継承できなくて困ったことはない
あと改善版継承のようなsealed classは優秀
0631デフォルトの名無しさん
垢版 |
2024/01/18(木) 23:16:36.55ID:BMLfw7Fm
ほんとはみんな継承をやりたいんじゃなくて、ポリモーフィズムと情報の隠蔽をやりたいだけなんだよね
0632デフォルトの名無しさん
垢版 |
2024/01/18(木) 23:31:00.54ID:jl137W3w
>>603-605
Erlangとかあるけどね
でもUnixなプロセスモデルに適合させようすると
変数とおなじアドレス空間にオブジェクトを置く
よくあるタイプになってしまう
0633デフォルトの名無しさん
垢版 |
2024/01/18(木) 23:51:38.17ID:6/8H82z6
情報隠蔽は情報不足と見分けがつかない
スクリプトに不足している情報を明示したいだけなのがGo、Rust
0634デフォルトの名無しさん
垢版 |
2024/01/19(金) 01:05:45.75ID:Bxqp/mLl
>>633
まずはこの議論における基礎知識としてRustのトレイト(trait)を学習することをおすすめする
0635デフォルトの名無しさん
垢版 |
2024/01/19(金) 01:09:24.73ID:dQ/RTsAV
>>632
そのへんも自分らが本来のオブジェクト指向を実装してるんだぜなんてことを言ってないことから、 >>571 の主張が出鱈目なのが分かっていいよね
0636デフォルトの名無しさん
垢版 |
2024/01/19(金) 01:19:07.65ID:5qNxVIXw
「本来のオブジェクト志向」、体験するのが無理という難点がある
まさか令和の時代にSmalltalk触れってわけにもいかないし
0637デフォルトの名無しさん
垢版 |
2024/01/19(金) 01:24:17.77ID:dQ/RTsAV
smalltalkのスレッドまわりはjavaとだいたい同じだった記憶があるし「本来のオブジェクト指向」とはきっと違うはず
0638デフォルトの名無しさん
垢版 |
2024/01/19(金) 08:10:41.28ID:iTaoyDeQ
>>636
Smalltalkは多重継承をサポートしていないぞ?
0639デフォルトの名無しさん
垢版 |
2024/01/19(金) 08:49:00.44ID:MC8t1NGB
クラス継承ですらデメリットが大きいためモダンなプログラミング言語では採用されていないのに
クラス多重継承なんてあまりにもダメすぎるため採用しているメジャーな言語はPython Perl C++のダメ言語御三家のみ
クラス多重継承を採用していない言語が正しい
0640デフォルトの名無しさん
垢版 |
2024/01/19(金) 09:04:50.86ID:oSBLpXih
継承は凡人には使いこなせなかった
なので、機能として存在する意味がないし、下手に使うと有害なので廃止された
0641デフォルトの名無しさん
垢版 |
2024/01/19(金) 09:30:06.32ID:iTaoyDeQ
多重継承は曖昧だというが、自然言語処理はその曖昧さが大切になる。チンポは随意筋であり不随意筋である。

>>639
>クラス多重継承なんてあまりにもダメすぎるため

最終的に,クラス階層は最上位クラスを含めた
最大8 階層から構成され,「伝統的な日本の絵画」
に属する用語に対応する 55 クラスと解説文中か
ら抽出した139 クラスが配置された。ただし,そ
のうち 32 クラスが複数の上位クラスをもつとい
う多重継承が示された。例えば,「ngyc:絵巻物」
は「ngyc:伝統的な日本の絵画」と,「ngyc:表具の
形式」の下位クラスである「ngyc:巻子」の 2 つの
クラスを継承する(図 2)。こうした多重継承は,
本質属性をもつ基本概念と機能を表すロール概念
を分離することで,基本概念による属性継承に限
った階層関係に変更するという考え方もあり 10),
「ngyc:伝統的な日本の絵画」がロール概念で,
「ngyc:表具の形式」が基本概念と捉えることもで
きる。しかし,本研究ではテキストからの情報抽
出に即して配置し,多重継承を許容した階層を導
き出した。
http://www.mslis.jp/am2019yoko/05_kobayashi.pdf

随意筋  不随意筋
  ↖   ↗
   チンポ
0646デフォルトの名無しさん
垢版 |
2024/01/19(金) 11:37:19.74ID:iTaoyDeQ
「なぜPythonが人気なのか」を機能性・転職市場・将来性の3視点で調査
Python入門
2023年11月24日
https://www.sejuku.net/blog/108069

>>639
>クラス多重継承なんてあまりにもダメすぎるため採用しているメジャーな言語はPython Perl C++のダメ言語御三家のみ

流行とかパラダイムが全てでは無いにせよ、オブジェクト指向=人工知能ということなら、
自然言語処理における意味解釈は語のルーツを掘り下げるための「多重継承」がメインになる

随意筋 不随意筋
  ↖ ↗
  チンポ

文脈によって同一オブジェクトが真逆の振る舞いをするということね!
0647デフォルトの名無しさん
垢版 |
2024/01/19(金) 11:40:54.55ID:arzVgFZ3
もう継承はゴミってことで結論出てるのになんでそんなに無くてはならないって拘るの?
0648デフォルトの名無しさん
垢版 |
2024/01/19(金) 11:50:05.51ID:iTaoyDeQ
>>647
最新調査でPythonが人気なのと、Pythonが多重継承をサポートしているのは、どう説明するのかな?
0649デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:04:44.60ID:iTaoyDeQ
集約と継承を使い分けることが大切ね!

>>623
>欲しかったのはバナナだけなのに、あなたが得たのはバナナを持っていたゴリラと、ジャングル全体だった。

ジャングルーーーーーーーーーー
┃ ゴリラーーーー     ┃        ┃ ┃ バナナ ┃     ┃    
┃ ーーーーーーー     ┃       
┃             ┃
ーーーーーーーーーーーーーーー

クリントンーーーーーーーーーー
┃             ┃
┃             ┃
┃             ┃
┃             ┃
┃             ┃
ーーーーーーーーーーーーーーー
     ┃チンポ┃
      ̄ ̄ ̄ ̄
0650デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:26:06.50ID:SK8TlxrV
>>631
多態性・情報隠蔽ですら無くて、単にインスタンス間でやり取りするときのインターフェイスとプロトコルを確定しておきたいだけだよ。

継承みたいなコンパイラ都合のお作法はうざったいだけだし、インターフェイスとプロトコルを守っているなら多態かどうかもどうでもいい。結果的に多態になるけど、あくまで結果論。
0651デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:31:42.38ID:arzVgFZ3
>>648
pythonで複雑なシステムは普通の感性を持ってれば組まないし別にいいんじゃない?
継承がゴミだと言われる理由を考えてみて
0652デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:38:25.66ID:SK8TlxrV
オブジェクト指向がオワコンというのは正しくて、よりインスタンス間のルール管理に注力した契約プログラムとかに発展的解消してんじゃないのかね。
0653デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:44:39.23ID:arzVgFZ3
>>650
インスタンス間でやり取りするときのインターフェイスとプロトコルを確定(カプセル化)することがまさしく不要な情報の隠蔽なのでは?
それでカプセル化したらポリモーフィズムに基づいてアクセスさせるか~みたいな感じでしょ?
0654デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:45:36.30ID:arzVgFZ3
そんでカプセル化したものを継承させるのはプログラムが煩雑になるからやめましょうよ、継承の実装を省くならクラスもいらないねってそういう話じゃん
0655デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:52:25.37ID:rg+QtK0B
>>646
多重継承の中でも型継承さえできれば十分ならインターフェースでよくね?
それなら他の言語でもできるぞい✌
0656デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:54:01.11ID:SK8TlxrV
>>653
そう、そう。
実装の結果ついてきた結果論。
スタートはインターフェイスとプロトコル。
0657デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:54:57.24ID:iTaoyDeQ
オンラインゲームのアップデートは「カプセル化したものを継承」では?

>>654
>そんでカプセル化したものを継承させるのはプログラムが煩雑になるからやめましょうよ、

大型アップデート情報 バージョン6.5[後期] (2023/11/21 更新)
https://hiroba.dqx.jp/sc/topics/detail/0e4f5cc9f4f3f7f1651a6b9f9214e5b1/

システムのアップデートは一般的に「継承」と自分は思うが、丸ごと作り直したほうが良いのかな?
0658デフォルトの名無しさん
垢版 |
2024/01/19(金) 13:07:12.61ID:iTaoyDeQ
私見としてはオンラインゲームと言えども、大型バージョンアップ時は丸ごと作り直したほうがいいと思う
ドラクエ10のバージョン7ということなら、すべてを再インストール化でもいい
0659デフォルトの名無しさん
垢版 |
2024/01/19(金) 13:15:20.79ID:arzVgFZ3
>>657
オンラインゲームのアップデートってなに?もっと具体的に頼む
バグ修正?新機能の追加?新キャラの追加?
バグ修正や新機能はカプセル化の対応部分の丸ごと書き換え等いろいろあるだろうね
新キャラ追加はカプセル化したクラスモデルを継承して作り上げて、それをロードしてやれば、ポリモーフィズムに基づいて動いてくれるだろうね
0661デフォルトの名無しさん
垢版 |
2024/01/19(金) 13:25:42.10ID:iTaoyDeQ
>>659
>オンラインゲームのアップデートってなに?もっと具体的に頼む

オンラインゲームというのは、リリース後も次々とアップデートを繰り返し、機能が増えていきます。
よって、一番最初の設計で、どれだけ未来の変化を予測して、準備しておけるかが大事になってきます。
後になって苦しまないために、最初は多少面倒でも、柔軟でわかりやすい、変化に耐えうる設計を心がけたいものです。
https://developer.aiming-inc.com/programming/design-battle-program/

オブジェクト指向を初めて勉強していたころ、クラスの継承は(個人的には)理解しやすかったですが、
インターフェースはいまいち利点が分かりづらい印象がありました。
そこで、デザインパターンのひとつ「Observerパターン」を取り上げて、
継承とインターフェースの使用法を見ていきます。Observerパターンは先ほどの一斉攻撃にも近いパターンになります。
https://qiita.com/kcpoipoi/items/e6c495e7a481e02847d8
0662デフォルトの名無しさん
垢版 |
2024/01/19(金) 14:00:28.63ID:arzVgFZ3
>>661
うん、新キャラ新技はカプセル化の継承だね
そんな表面層の部分を指して継承だ継承だ騒いでたの?
0663デフォルトの名無しさん
垢版 |
2024/01/19(金) 14:14:12.14ID:arzVgFZ3
あ、継承をゴミと言ってるのであって、インターフェースやトレイトは存分に使うべきものだから
勘違いしてもらったら困るぞ
0664デフォルトの名無しさん
垢版 |
2024/01/19(金) 14:21:52.28ID:arzVgFZ3
新キャラ新技くらいならカプセル化の継承でもなくてインターフェースをただ実装するだけで済ませてるか>>661
自分の作品見てたら画面追加は継承を使ってたわ
0665デフォルトの名無しさん
垢版 |
2024/01/19(金) 14:23:53.15ID:2Txscu7W
>>663
継承自体はただの機能なので良いも悪いもない。
継承を理解していない人、不適切な使い方をしている人が存在するだけ。
どんな使い方をしても不具合が出ない機能なんて無い。
0666デフォルトの名無しさん
垢版 |
2024/01/19(金) 14:33:48.49ID:arzVgFZ3
>>665
大いに同意
継承は基底クラスがよほど煩雑にならない程度なら使ってもよい
ただ煩雑に組む輩等が多すぎたから継承を実装しないプログラム言語が生まれた
それだけなんだ
0669デフォルトの名無しさん
垢版 |
2024/01/19(金) 14:59:58.61ID:2Txscu7W
>>667
と暇人が申しております
0670デフォルトの名無しさん
垢版 |
2024/01/19(金) 17:41:08.81ID:wxu2zgr7
>>665
継承は設計を初期の段階で固める「早すぎる最適化」だから避けるべき。

やるなら継承関係の実装だけ切り出したadapter用のholder templateを用意したほうがまだマシ。
0671デフォルトの名無しさん
垢版 |
2024/01/19(金) 18:11:39.79ID:Hi84WC+x
>>670
それは将来の変更可能性が低くない場合。
実際変更可能性が低いケースなんかいくらでもあり、その場合避ける理由にならない。
0673デフォルトの名無しさん
垢版 |
2024/01/19(金) 19:20:32.13ID:iTaoyDeQ
    _w           、...   ョ  ┌┐     ィ     ′  
    ̄+     ヘe、   j「.  .¬气¬''..~''~    ,.ルw、.ーu、す     
  ^^"~~l|~~^'''       ォ′   .,. l| ┐      .√ j|  _~+,.、. 
 .   .,/.      ょ_/    、j「 {  `¬..   〃 .、l|    、  
 ..  ~^.               ~  `          ~^      
 .  ;.                 ョ         __      
 .  j|       ~ラ¬¬+     |.        ̄.   ̄..    
 .  オ                 |..   ォ        ,、  
    k、 ,j〃.   L_.  _ェ    ~'――'~.   ^^^^^^ ̄´    
      ̄′       ̄ ̄                        
0676デフォルトの名無しさん
垢版 |
2024/01/19(金) 19:52:40.51ID:SK8TlxrV
>>672
だいたいインターフェイスで十分だわ。もっと機能強化したのが出てこないかね。

c++のコンセプトをインターフェイスに使いたいところ。
0677デフォルトの名無しさん
垢版 |
2024/01/19(金) 20:09:04.02ID:XrKZZkrv
>>675
超大型建築より普通の一軒家の方が数、つまりニーズが圧倒的に多い
アプリは常にスケールする可能性がある、というのは理論的な話で実際スケールするアプリなんかほんの一握り。結局作ってそのままなんていくらでもある。変更が無いケースで熟練どうたらとか全く無関係。
0678デフォルトの名無しさん
垢版 |
2024/01/19(金) 20:34:16.00ID:SK8TlxrV
>>677
普通の一軒家とか、問題領域の知識が無くて失敗する事例の宝庫だろ。あとになって大抵の人間は「コンセントが足りない」と言うしな。

変更しないままなのは「変更しなくていい」じゃなくて「変更は不可能に近いから不便・危険でも諦める」だからな。
0679デフォルトの名無しさん
垢版 |
2024/01/19(金) 20:49:36.09ID:XrKZZkrv
結局継承で都合が悪いケースなんて極一部というのが現実。
ヤグニの原則に反して嬉しいのは客の金でただで勉強・実験したいエンジニアだけ。
0680デフォルトの名無しさん
垢版 |
2024/01/19(金) 21:05:02.67ID:SK8TlxrV
>>679
まあ、いいんじゃない?
初期に設計したクソ仕様を客に「大したことはないから変更しない」と放置できるなら。
0681デフォルトの名無しさん
垢版 |
2024/01/19(金) 21:27:25.19ID:K5SD+kWD
>>672
インターフェースだけだとコピペ継承が乱立するんだよ
そこでインターフェースのデフォルト実装等クラス継承と同じ実装継承を使うことになる

でもクラス継承はとにかく悪だと思ってる人は実装継承のメリットとデメリットを正しく理解できてないから結局同じ問題を引き起こすだけ
0682デフォルトの名無しさん
垢版 |
2024/01/19(金) 22:05:02.77ID:yy9dhl7c
>>681
インターフェイスと実装は永続性や影響範囲が違うんだから、密に関連づけるのは悪設計。

継承はさらに基底と派生の関係性もガチガチに固めるから、根元になる基底がクソ設計だとどうしようもない。
0683デフォルトの名無しさん
垢版 |
2024/01/19(金) 22:20:13.70ID:XrKZZkrv
>>680
5chで勝手にクソ仕様認定してるクソレスを気にする人はいないw
0685デフォルトの名無しさん
垢版 |
2024/01/19(金) 22:22:17.78ID:EWU8L+d2
>>681
その点ではRustのtraitが最も良いね
Rustのtraitでのデフォルト実装は各型のメンバーや固有メソッドを呼び出せないので実装継承の問題が起きない
そのtrait(とそのtrait制約)のメソッドしか呼び出せないから移譲と合成の形になる
0686デフォルトの名無しさん
垢版 |
2024/01/19(金) 22:54:39.62ID:2Txscu7W
>>685
こういう感じで言語によって前提が違う場合があるから抽象的な議論の有効性はかなり微妙
0687デフォルトの名無しさん
垢版 |
2024/01/19(金) 23:13:57.01ID:k/iqMx14
>>685
はい残念
Traitのデフォルト実装も実装継承だからクラス継承のデメリットの大半を”継承”してる
メリットとデメリットを理解して使い分けられるようにならないうちは結局のところ何使っても同じ
0689デフォルトの名無しさん
垢版 |
2024/01/19(金) 23:28:42.74ID:2Txscu7W
何で堂々と嘘つく?
嘘言った人謝ってください
0691デフォルトの名無しさん
垢版 |
2024/01/19(金) 23:44:00.48ID:jOoBVxG+
インターフェースは継承と違ってインターフェースもとのプロパティをオーバーロードして定義し直すから、継承のわけわからん隠蔽されてないプロパティでごっちゃごちゃにならないのがいい(java民)
0692デフォルトの名無しさん
垢版 |
2024/01/20(土) 02:15:01.44ID:pJVjc8l1
オブシコくんどこいったん?
インターフェイスは人間が理解しやすくするためのものだと力説しなよ
0693デフォルトの名無しさん
垢版 |
2024/01/20(土) 02:28:42.63ID:9SMgv4xr
疑似マルチスレッド君も反応ないんやけど、こないならQiita更新してくれよー
0694デフォルトの名無しさん
垢版 |
2024/01/20(土) 03:07:14.53ID:ppE6WkEJ
>>685 >>687
これはデフォルト実装が同じtrait内メソッドと結合することまで実装継承と言うか話なんじゃないかな
実装継承の定義をtraitに拡張する時に生じた無理が意味の拡散を産んで無意味な争いを招いただけというかなんというか
0695デフォルトの名無しさん
垢版 |
2024/01/20(土) 03:09:43.76ID:ppE6WkEJ
書き途中で「書き込む」ボタンを押しちゃった。てへ

>>685 >>687
これはデフォルト実装が同じtrait内のメソッドと結合することまで実装継承と言うかという話なんじゃないか
実装継承の定義をtraitへ無理やり拡張する時に生じた意味の拡散ですれ違ってるだけに見える
0696デフォルトの名無しさん
垢版 |
2024/01/20(土) 05:41:23.80ID:OqC8H1ED
>>694
そもそもはある具体型A(もしくはクラスA以下同様)の実装が別の具体型Bの実装として継承されることを指すよね

一方でRustのトレイトのデフォルト実装では具体型の実装は全く出て来なくて具体型とは切り離されているよね
したがってある具体型の実装が別の具体型の実装として継承されることは起きないため明確かな
0697デフォルトの名無しさん
垢版 |
2024/01/20(土) 09:43:00.30ID:tKcafxZR
継承用の基底クラスを提供するのはライブラリやフレームワークで、フロント屋はその提供された基底クラスを継承して使う
フロント屋は用意された基底クラスを使う以外はインターフェースやシールドクラスで継承もどきをやるだけで事足りてる
0698デフォルトの名無しさん
垢版 |
2024/01/20(土) 10:27:27.05ID:mMSNo4e1
staticおじさんが結局正しかったね。
0699デフォルトの名無しさん
垢版 |
2024/01/20(土) 10:38:22.56ID:WbtYcj4O
うん、知らんけど
0700デフォルトの名無しさん
垢版 |
2024/01/20(土) 11:13:01.53ID:ppE6WkEJ
>>696
いま思い出したことなんだけど。具体型の継承はできないと思うけど、traitをtraitに実装するということが出来る
traitAにデフォルト実装を書いて、traitBに実装すると、traitBを実装した型はtraitAのデフォルト実装を引き継ぐ
0701デフォルトの名無しさん
垢版 |
2024/01/20(土) 11:29:56.55ID:ppE6WkEJ
trait TraitA {
fn method_a(&self);
}

trait TraitB {
fn method_b(&self) {
println!("Method B called");
}
}

// TraitBをTraitAを実装するすべての型に対して実装する
impl<T: TraitA> TraitB for T {}

struct MyStruct;

// MyStructにTraitAを実装する
impl TraitA for MyStruct {
fn method_a(&self) {
println!("Method A called");
}
}

fn main() {
let my_struct = MyStruct;
my_struct.method_a(); // TraitAのメソッド
my_struct.method_b(); // TraitBのメソッド(TraitAを実装するため自動的に利用可能)
}
0702デフォルトの名無しさん
垢版 |
2024/01/20(土) 11:37:18.66ID:ppE6WkEJ
Rustに多重継承は存在しないという場合、意味的にはフィールドを継承しないことと、
スーパートレイトを使用すれば、トレイトのデフォルト実装を別のトレイトに暗黙では引き継がないことを指すんじゃないかな
かな、というのは、まあここら辺は人によって受け取り方が違うから議論しても仕方のないことなんだけど
0703デフォルトの名無しさん
垢版 |
2024/01/20(土) 12:00:42.41ID:+uoYRouQ
>>700 >>701
それは実装継承ではないよ
なぜならtraitは具体型ではなく、さらにRustの場合はデフォルト実装から具体型の固有フィールド(メンバ変数)や固有メソッドに一切アクセスができない
つまり実装継承における問題が発生しない
0704デフォルトの名無しさん
垢版 |
2024/01/20(土) 12:26:39.60ID:pJVjc8l1
実装継承ではないのか、実装継承における問題が発生しないだけなのか、どっちなんだい?
0705デフォルトの名無しさん
垢版 |
2024/01/20(土) 12:38:21.50ID:+uoYRouQ
>>704
両方
まず実装継承とは具体型の実装が別の具体型に継承されることだから該当しない

次に>>701が例示している件に対して
>// TraitBをTraitAを実装するすべての型に対して実装する
>impl<T: TraitA> TraitB for T {}
これは実装継承ではないだけでなく、類似しているように見えても、実装継承の問題と同じことは発生しない
0706デフォルトの名無しさん
垢版 |
2024/01/20(土) 12:39:32.26ID:BTn7foKi
実装継承ができないと不便じゃない?
リソース管理を一元化したくなったりとかしないの?
0707デフォルトの名無しさん
垢版 |
2024/01/20(土) 12:40:39.50ID:BTn7foKi
Rustにも実装継承はあるんじゃないかな
0708デフォルトの名無しさん
垢版 |
2024/01/20(土) 12:53:48.29ID:UT8XEnd7
>>706
Rustでは異なる型の間でコードを共有一元化するためにトレイト制約を使ってジェネリックにコードを書ける
そのコードは特定の型に対して一切書かれていないため実装継承とならないだけでなく実装継承と類似の問題も発生しない

>>707
Rustに実装継承はない
0710デフォルトの名無しさん
垢版 |
2024/01/20(土) 13:04:04.37ID:BTn7foKi
Structの合成があるじゃないか
実装継承の問題が発生しないのはわかったけど
実装継承の便利さが失われてたら元も子もないじゃん
リソース管理を一元化したくなったりとかしないの?
0711デフォルトの名無しさん
垢版 |
2024/01/20(土) 13:08:56.68ID:BTn7foKi
オブシコは機能とデータを一緒に管理することだけど
それができないRustは不便なのでRustは滅びます
0712デフォルトの名無しさん
垢版 |
2024/01/20(土) 13:16:14.55ID:UT8XEnd7
>>709
Rustはそのためにトレイト制約がありコンパイラは整合性を必ず確認できる

>>710
Rustではトレイト制約を伴うジェネリックコードにより異なる型間でも安全にコードを共有化できる

>>711
Rustでも型(データ)に対してメソッド(機能)を実装できる
0713デフォルトの名無しさん
垢版 |
2024/01/20(土) 13:18:48.25ID:BTn7foKi
>>712
データにメソッドを生やして継承もできるん?
0714デフォルトの名無しさん
垢版 |
2024/01/20(土) 13:20:04.95ID:BTn7foKi
オブシコにおいて実装の継承は正義です
Rustに正義はあるのかを問うています
0715デフォルトの名無しさん
垢版 |
2024/01/20(土) 13:34:19.14ID:UT8XEnd7
>>713
やりたいことの本質は異なる型の間でのコードの共有一元化でしょう
Rustではトレイト制約を用いて特定の型に依存しない形でコードの共有一元化ができます

>>714
オブジェクト指向に実装の継承は必要ありません
0716デフォルトの名無しさん
垢版 |
2024/01/20(土) 13:35:44.30ID:JKkFvgES
誰かさ、適当な文法で単一のC言語ソースファイルを出力するトランスレータ作ってくんない?
仮想関数テーブルとかRTTIとかそれならなんとかなるだろ?
0717デフォルトの名無しさん
垢版 |
2024/01/20(土) 13:36:27.03ID:BTn7foKi
じゃあオブシコはオワコンかも知れませんね
0719デフォルトの名無しさん
垢版 |
2024/01/20(土) 14:51:20.08ID:pJVjc8l1
継承はすべてのオブジェクトに共通のデータと手続きを強制するからな
途中で一部しか共通してないオブジェクトの存在が判明したら、
クラスツリーをがっつり再設計しないといけなくなる
こんなものをオブシコに入れちゃったやつの罪は深い
0720デフォルトの名無しさん
垢版 |
2024/01/20(土) 15:05:28.23ID:UvH2GUkc
>機能とデータを一緒に
カリー化された関数を部分適用すればいい
じゃあ何故カリー化と部分適用はオワコンではないのか
無意味だからだ
意味を見出せないから終わったという判断もできない
0721デフォルトの名無しさん
垢版 |
2024/01/20(土) 15:06:09.94ID:ppE6WkEJ
能力の高いプログラマーしかプロジェクトに参加しないこと前提ならば継承の副作用は目立たないけど
Javaのような大規模開発向けの言語に継承を入れたのは間違ってたなあ
Javaの仕様を考えた時は、親クラスは能力の高いエンジニアが書くという前提だったんだろうね
0722デフォルトの名無しさん
垢版 |
2024/01/20(土) 15:25:38.27ID:WbtYcj4O
>>719
再設計は不要
はい光速の論破
0723デフォルトの名無しさん
垢版 |
2024/01/20(土) 15:56:26.55ID:BTn7foKi
大規模開発向けにはRustを採用すべきだ
0725デフォルトの名無しさん
垢版 |
2024/01/20(土) 16:28:12.97ID:JKkFvgES
もともとアスペクト指向の提唱者たちが言い始めたことだからね
どんなに上手くクラスツリーを設計しても何らかのコードを横断的に埋め込みたくなるニーズがなくならないって
0727デフォルトの名無しさん
垢版 |
2024/01/20(土) 23:20:19.94ID:ppE6WkEJ
Rustは学習コストが重すぎるからねえ
スタックフレームとか、ライフタイムとか、そこら辺の知識は普通のPGには余計だろう
Rustのスクリプト言語版が出たら流行るかなー
0729デフォルトの名無しさん
垢版 |
2024/01/21(日) 08:12:46.78ID:yW5L0zfB
>>723
お前Rustのことわかってない上にプログラムできないじゃん
つかとっとと埋めてしまえよこんなスレタイだけでキチガイがわくスレ
真面目に語りたい人ならマ板でやる
0730デフォルトの名無しさん
垢版 |
2024/01/21(日) 11:29:38.85ID:oaoSrz7+
>>729
俺のことは関係ない、俺は世の中のことを言ってる
そんなことも読み取れない認知能力チンパンジーの分際で
俺様に文句言うなんて100年早えわ
お前はRustだけ頑張ってろアホンダラ
俺は日本の未来を考えとく
0731デフォルトの名無しさん
垢版 |
2024/01/21(日) 11:31:12.83ID:oaoSrz7+
Rustの未来も俺が決める
Rustはもっとオブシコ頑張ったが良い
Rustは学習コストが高すぎると言われている
これはオブシコで解決できるはずだ
0732デフォルトの名無しさん
垢版 |
2024/01/21(日) 13:06:59.82ID:JVSLhHIM
Rustってそんなに学習コストが高いか?
C++11以降のがトチ狂ってると思うんだけど
0734デフォルトの名無しさん
垢版 |
2024/01/21(日) 15:09:59.21ID:LGH4j5ie
>>705
>まず実装継承とは具体型の実装が別の具体型に継承されることだから該当しない
これは間違い
実装継承とは文字通り「実装」が「継承」されること <== この意味を理解できるかどうかが重要
実装継承における問題というのはこれも文字通り「実装」が「継承」されることによって起きる
継承元が具体型扱いかどうかは関係ない

>>704
>実装継承ではないのか、実装継承における問題が発生しないだけなのか、どっちなんだい?
Rustのトレイトデフォルト実装は実装継承の一種でもあるし、実装継承ににおける問題も発生する
C++等一部の言語で発生する実装継承における問題の一つが発生しにくいようになってるだけ
0735デフォルトの名無しさん
垢版 |
2024/01/21(日) 21:44:12.50ID:r/H1GIpX
>>734
Rustに実装継承はない
Rustのトレイトのデフォルト実装では、いわゆるメンバ変数やメンバ関数にアクセスできない
したがってRustでは実装継承と同様の問題は発生しない
0736デフォルトの名無しさん
垢版 |
2024/01/22(月) 00:42:25.64ID:CM1Sn+EA
トレイトはインターフェースとも継承とも違う新しい考え
そこを誤解してはならない
0737デフォルトの名無しさん
垢版 |
2024/01/22(月) 02:11:51.31ID:d/h6/f8z
>>735
実装は継承してるけれども実装継承ではない?
「募ってはいるが募集はしていない」より酷くね?
0738デフォルトの名無しさん
垢版 |
2024/01/22(月) 02:24:04.21ID:WDLNMI9J
>>737
Rustに実装継承はない
Rustのトレイトのデフォルト実装からは、いわゆるメンバ変数やメンバ関数にアクセスできない
メンバ変数やメンバ関数にアクセスできる部分はトレイトのデフォルト実装から分離されている
その部分はトレイトを実装するときに各型で個別に実装する
したがってRustでは実装継承はなく問題も発生しない
0739デフォルトの名無しさん
垢版 |
2024/01/22(月) 12:41:11.25ID:SpT9Xs4x
実装継承は派生側に開放する部分と基底側で閉鎖する部分の管理が難しいから、やはり「早すぎる最適化」になりがち。

開放/閉鎖の原則を守るためには基底側と派生側のインターフェイスとプロトコルを厳密に管理する必要があるけど、そこまでサポートしているオブジェクト指向言語てあったっけ?
0740デフォルトの名無しさん
垢版 |
2024/01/22(月) 12:43:36.23ID:SpT9Xs4x
>>736
トレイトてこのこと?
まずは認識合わせをしないとな。
ja.m.wikipedia.org/wiki/%E3%83%88%E3%83%AC%E3%82%A4%E3%83%88
0741デフォルトの名無しさん
垢版 |
2024/01/22(月) 15:21:25.58ID:eIK4O4RB
最新鋭のRust言語と同等の最小コンパイル単位でよければもっとクリーンなオブジェクト指向言語があり得たって話で、
残念なことに30年前のハードウェアでやんなきゃいけなかった

仮想関数の方がデフォであるようなC++
文字列じゃなくて関数ポインタの配列のインデックスであるようなObjective-C
ガベコレの無いJava

こだわる人は今からでも作ればいい
ソースを一気に引数に取って単一のC言語のソースファイルを出力するトランスレータを作ればいい
0742デフォルトの名無しさん
垢版 |
2024/01/23(火) 22:17:38.84ID:3AfREKFo
オブシコプログラムの難しいところってオブジェクト同士の連携が
オブジェクトに書かれるところだと思うんだよ
全体のフローがよくわからなくなる

オブジェクトには自律的に他のオブジェクトと連携することをやらなくさせて
コーディネートする処理を関数型や手続き型で書くのがいんじゃないかね

昔はオブジェクトが知性を持ってるかのように書くのが良いオブシコだと言われてたけど
スパゲティ製造工場にしかならんかった
0744デフォルトの名無しさん
垢版 |
2024/01/23(火) 22:19:59.28ID:3AfREKFo
フロー制御をオブシコでやりだしたら危険信号、これがぼくの経験から導き出された結論
0745デフォルトの名無しさん
垢版 |
2024/01/23(火) 22:23:03.86ID:PPNQFWhj
おしりがおまんこになっちゃうのがオブジェクト指向
0746デフォルトの名無しさん
垢版 |
2024/01/24(水) 00:11:12.99ID:X/KtyNlm
>>738
基本的な実装継承の問題を理解してないから話噛み合わないね
メンバ変数・メンバ関数の話はFragile Base Class Problem(FBCP)について言及してるつもりなんだろうけど
メンバ変数やメンバ関数にアクセスできるかどうかはFBCPの根本的な発生条件とは関係ないよ
継承元のメソッド実装がオーバーライドされた継承先のメソッドを呼び出せるならFBCPは発生する
当たり前だけどFBCPは実装継承の問題のうちの一つであってすべてではないからね

ちなみにトレイトのデフォルト実装も別のトレイトのメソッド経由でメンバ変数やメンバ関数にアクセスできる
クラス継承でベースクラスのメソッドがオーバーライドされたメソッド経由でメンバ変数やメンバ関数にアクセスするのと同じ
0747デフォルトの名無しさん
垢版 |
2024/01/24(水) 00:14:41.63ID:1XOdKji/
>>744
イベントループをブラックボックス化したのは
「次のイベント」の種類ごとに分岐する際にifならbool値、switchなら整数のようなものしか
使えない言語の問題をライブラリでなんとかしようとした結果だ
0748デフォルトの名無しさん
垢版 |
2024/01/24(水) 00:16:21.62ID:X/KtyNlm
ついでに言っておくとRustのDeref/DerefMutも実装継承の一種なんだけどこっちはFBCPは発生しない
0750デフォルトの名無しさん
垢版 |
2024/01/24(水) 12:30:29.92ID:JqKAHMdE
影響力ゼロの人がどれだけオワコンオワコン繰り返しても全く影響無い。
0752デフォルトの名無しさん
垢版 |
2024/01/24(水) 16:22:26.10ID:XaeHtqc/
妻がダイエットのために乗馬を始めたんだけど一ヶ月で10キロ痩せたよ
馬がね
0753デフォルトの名無しさん
垢版 |
2024/01/27(土) 12:58:37.96ID:mbfTQf92
has a関係は被害者と加害者が別人で、責任の連鎖がある
鎖を切って悪い影響を0にする変更はしやすい
is aは影響力を不変にする
責任の連鎖をなくして自分自身の責任とする
0754デフォルトの名無しさん
垢版 |
2024/01/27(土) 19:38:08.87ID:w8m8MtP7
241 伝説の名無しさん sage 2020/10/13(火) 15:00:15.08
「胸がドキドキする」というのはいわば生理現象であり、抑えることはほぼ不可能だ。
月末のクレジットカードの支払額に、想像以上に可愛かったデリヘル嬢のおマンコにと胸を
突かれるのは悪いことではない。

翻って「チンポがシコシコする」というのは能動的な衝動であり、極めて不埒な責任転嫁である。
シコシコはチンポが勝手にやったことであり、決してチンポの持ち主の意向ではないという、どこぞの
政治家の「秘書が勝手にやったこと」のような言い逃れがしばしば聞かれ、あまつさえそれがまかり
通ってきたことは周知の事実である。

チンポからシコシコを奪取し、各人の掌に戻る日は果たしてやってくるのだろうか……。
0755デフォルトの名無しさん
垢版 |
2024/01/27(土) 22:55:15.08ID:QdyqwSfC
責任という概念自体に違和感を表明する者がよくいるが
馬クラスと動物クラスには責任の擦り合いや利害対立がなさそうなところが共感されるんじゃないか
0756デフォルトの名無しさん
垢版 |
2024/01/27(土) 22:55:50.75ID:BuZgAgXz
令和になっても継承批判は聞きたくないね
手垢ついてるとかいうレベルじゃないぞ
OOPには価値がない
OOPのメリットとやらは無意味だ
というふうな大きい批判が聞きたい
0758デフォルトの名無しさん
垢版 |
2024/01/27(土) 23:08:28.46ID:9xE1RMNT
オブジェクト指向は継承という一つの要素が終わっただけだしなあ
未だ現役すぎる
0759デフォルトの名無しさん
垢版 |
2024/01/28(日) 00:58:58.58ID:stV8Z8Wq
何らかの違和感の解消がオブジェクト指向のメリットだとするなら
元から違和感などなかった奴にとって無価値である
0761デフォルトの名無しさん
垢版 |
2024/01/28(日) 14:48:42.54ID:EVWA08mD
>>756
概念的にはインターフェイスとコンポジションに発展的解消したから、オブジェクト指向はオワコンだろ。
0762デフォルトの名無しさん
垢版 |
2024/01/28(日) 14:56:56.93ID:z8UBzo+x
インターフェイスもコンポジションも人間が簡易に理解するためのものだろ
なめてんのか
0763デフォルトの名無しさん
垢版 |
2024/01/28(日) 15:18:10.03ID:gBYyPSdU
>>761
それオブジェクトの継承が別の概念に変わっただけでカプセル化とポリモーフィズムは健在じゃん…
もっとおもしろいこと言ってくれ…
0764デフォルトの名無しさん
垢版 |
2024/01/28(日) 16:44:30.08ID:nAHL+G+L
オブジェクト指向プログラミングのコアコンセプトは「データと操作をまとめて一つの型として扱うこと」これだけ

オブジェクト指向プログラミングではなくオブジェクト指向言語といった場合は
ブーチの定義が普及したせいでカプセル化、ポリモーフィズム(基本はサブタイプポリモーフィズム)、継承の3点セットを基準にすることが多いが
言語機能としての継承はオブジェクト指向プログラミングに必須のものではないし
ポリモーフィズムもオブジェクト指向言語特有のものではないので両方ともコアコンセプトではない
0765デフォルトの名無しさん
垢版 |
2024/01/28(日) 17:24:51.96ID:EVWA08mD
>>763
オブジェクトのカプセル化はインターフェイスとデータを密結合するけど、インターフェイスによるカプセル化はデータと密結合しない。
オブジェクトのポリモーフィズムはオブジェクト同士が(継承関係とかで)密結合するけど、インターフェイスは継承関係とかの密接な関係を結ぶこと無しに(理想的には)ダックタイピングで多態できる。

まあ、そこまでのダックタイピングをサポートするインターフェイスとか知らんけど。
c++のコンセプトがそのまま型になったらいいんだけどなぁ。
0766デフォルトの名無しさん
垢版 |
2024/01/28(日) 17:54:19.13ID:uVCrPT47
オブジェクトという言葉と同じでカプセル化という言葉は人によって意味が違うので困る
0767デフォルトの名無しさん
垢版 |
2024/01/28(日) 19:52:00.86ID:cMZBK/kO
70 名無しヒーリング 2021/04/26(月) 09:45:57.57 ID:jZDy/LpM
先生、実際にシコシコするのはチンポでなく俺の右手だと思います。

✖チンポがシコシコする
○ 俺の右手がチンポをシコシコする

71 名無しヒーリング 2021/04/26(月) 09:56:38.18 ID:jZDy/LpM
あと、「胸がドキドキする」と「チンポをシコシコする」は比較対象になりません。
「胸がドキドキする」は「チンポがヒリヒリする」のように状態・感覚を擬音語で現しているのであって、
「チンポをシコシコする」は「胸をモミモミする」の様に人間や動物が対象に対して何かを行う行為の表現だと思います。
0769デフォルトの名無しさん
垢版 |
2024/01/29(月) 15:05:39.33ID:oNy2vKqL
>>767
だからシコシコは男性器を擦る擬音で勃起のことではない
君は女性かな?
それともシコシコが勃起を表す地方が日本のどこかにあるのか
どっちにしろいくらがんばってもメジャーなコピペになれないのは大多数の人に表現がピンとこないのが原因だと思うよ
0770デフォルトの名無しさん
垢版 |
2024/02/01(木) 21:11:10.96ID:RS6y7MOu
PHPでアブストラクトやりまくってる
これやってればいい
ここまで来るのに2年かかったわ
0771デフォルトの名無しさん
垢版 |
2024/02/04(日) 19:38:06.66ID:/UMw8Y/Y
再利用しようにもパーツに分解できない大きなプログラムのスパゲッティ化を防ぐために
ひと塊のルーチンを“関数”として入り口出口を決めましょうがカリー化まで続く一方の流れで
その塊をどうやって集団として機能に固めたり制御するのかを考えるのがオブジェクト指向
そういう上位レベルでの制御やメンテナンスの汎用的な考えから出てきた概念を
小さいレベルでのプログラムAの脚を車輪に付け替えるにはとか
プログラムAの塊を継承してプログラムBにするのが“オブジェクト指向”なんだよ!って
鬼子でしかないC++最初に来ちゃったせいで現代に至るまで
あれがオブジェクト指向だと思い込んでるおじいちゃんがですね…
0772デフォルトの名無しさん
垢版 |
2024/02/04(日) 20:30:59.20ID:owhn6I10
おじいちゃん構文丸出しでおじいちゃん批判ww
しかも中身が間違いだらけとかwww
0775デフォルトの名無しさん
垢版 |
2024/02/04(日) 23:11:46.13ID:SuDI4pWX
>ひと塊のルーチンを“関数”として入り口出口を決めましょう
これ現役引退してるような世代の方ですよね?
0777デフォルトの名無しさん
垢版 |
2024/02/05(月) 11:38:56.86ID:iuJxPrpx
横断的関心事の意味が分からんと常々思っていたけど
役割で固めるのをやめるという意味なのかね
固めようと思ったことがない奴にとっては無意味なことだ
0779デフォルトの名無しさん
垢版 |
2024/02/05(月) 17:30:42.79ID:UM+1T8m6
オブジェクト指向はモジュラリティを高めるために考え出されたものだが「どの抽象化階層のモジュラリティを高めるものなのか」という大前提を理解していないと何を見てもオブジェクト指向だと感じるようになる
0781デフォルトの名無しさん
垢版 |
2024/02/07(水) 14:59:43.29ID:LJRNIYaK
1. 簡単な言葉を使う
頭が良い人は、複雑なことや専門知識も「簡単な言葉」で説明することができます。
この能力は、深い理解があるからできること。相手が理解しやすいように情報を整理して伝えることは思いやりでもあります。
https://news.yahoo.co.jp/expert/articles/9bb7a62121796847a941127e3d5040008fedd464

クリントン大統領にどんな強大な権限が有っても、自らのチンポがしこしこしてしまうのは止められない!

class チンポ extends クリントン{
     super.不適切な関係;
}

クリントンの再定義、クリントンの拡張された人格ということだ!
0782デフォルトの名無しさん
垢版 |
2024/02/13(火) 12:31:45.94ID:1UgkqCq+
世界一オブジェクト指向に忠実なメインクラスできたで

class Main():
def do():
pass

m=Main()
m.do()
0784デフォルトの名無しさん
垢版 |
2024/02/13(火) 17:38:57.37ID:TeIoV+iR
Template Methodパターン便利ですよ
0785デフォルトの名無しさん
垢版 |
2024/02/13(火) 18:33:53.66ID:vbRTXFPD
has a関係は抽象度の低いクラスを参照することはマナー違反ではない
is a関係は自分よりも抽象度低いクラスを継承したらマナー違反だよな
0786デフォルトの名無しさん
垢版 |
2024/02/13(火) 19:00:08.50ID:mLNp/E4P
継承を理解してれば問題無い
理解していないけどら問題無く使える道具は存在しない
つまり須く低レベルということ
0787デフォルトの名無しさん
垢版 |
2024/02/13(火) 19:17:02.49ID:022XTqy3
>>786
俺は使えるから問題ないんだが部下や上司に無能がいると困る
全ての言語で機能ごと消去するべき
0788デフォルトの名無しさん
垢版 |
2024/02/13(火) 19:19:14.84ID:cHpLMfgk
C/C++でいいところを無能のためにRustでわざわざメモリ管理を強制的に縛るのと一緒やね
0789デフォルトの名無しさん
垢版 |
2024/02/13(火) 19:54:20.90ID:XGO25OBO
オブジェクト指向って>>1みたいな頭の悪い人でもプログラミングできるようにするためにあるんだよ
難しいのは>>1みたいな馬鹿が>>1みたいな馬鹿のためにオブジェクト指向に則ってプログラミングする行為であり、>>1みたいな馬鹿がオブジェクト指向で設計されたコードを扱うのは難しくない
オブジェクト指向がオワコンな訳が無い
0790デフォルトの名無しさん
垢版 |
2024/02/13(火) 20:27:17.94ID:mLNp/E4P
>>787
無能がいる限り何の解決にもなってない
リスクが下がったと勘違いしてるだけ
0792デフォルトの名無しさん
垢版 |
2024/02/13(火) 21:20:27.36ID:mLNp/E4P
>>791
その無能がrust使ったところでろくなものは生み出せない
包丁で怪我する人がいるから包丁は悪、と言ってるのと同じ。
別に主張するのは自由だがそれで包丁が消滅することはない
0793デフォルトの名無しさん
垢版 |
2024/02/14(水) 03:16:18.02ID:7f34VUqx
頭の悪い人がプログラミングできるためってたまに見るけど疑わしいわ
頭の悪い人がちゃんと設計して、多態性を活用してるのを見たことがない
ただメモリの自動解放とかライブラリに頼ってるだけで、
そういう利便性はオブジェクト指向とあんまり関係なくね?
0794デフォルトの名無しさん
垢版 |
2024/02/14(水) 06:53:24.91ID:1rro2+lE
知らないのか?今は転職ブームのせいで文系出身の頭悪いプログラマが大量発生してる
そいつらのせいで言語が変わらなくては生けない時代になった
0795デフォルトの名無しさん
垢版 |
2024/02/14(水) 08:07:28.98ID:M2AyybwD
言語が変わっても頭悪かったらどうにもならないよw
0797デフォルトの名無しさん
垢版 |
2024/02/14(水) 10:07:41.88ID:M2AyybwD
>>796
無能じゃコンパイル通せないから動かせない
つまり逆に悪くなってる
0800デフォルトの名無しさん
垢版 |
2024/02/14(水) 11:08:35.63ID:t8DY/Tt9
コンパイル通すのが難しいと無能はコンパイル通ったからOKという感覚になるので一長一短

何事も良い面悪い面があるのに無能は片面だけしか見ない
0801デフォルトの名無しさん
垢版 |
2024/02/14(水) 11:22:35.02ID:1xW2DpZI
>>800
最低限コンパイラの通れば多少見れるコードになってるので、有能がコードをレビューしやすい
0802デフォルトの名無しさん
垢版 |
2024/02/14(水) 12:27:44.94ID:M2AyybwD
>>798
それは言語の役割じゃない
全然マシでもなんでもなくて草
0803デフォルトの名無しさん
垢版 |
2024/02/14(水) 12:31:09.06ID:M2AyybwD
>>799
どっちでも一緒
納品できないのに「本番でバグが出るよりは良い」と言い張るのはアタオカ
0804デフォルトの名無しさん
垢版 |
2024/02/14(水) 13:02:59.82ID:qQWVhIbb
現実は納期というものがあるから効率重視でCC++使って適当に作れたほうがありがたいんだよなあ
バグなんてある程度は知らんぷりしていい
わざわざRustを使って完璧を求めるのは無駄
0805デフォルトの名無しさん
垢版 |
2024/02/14(水) 13:03:09.87ID:OE64F1T2
長所も短所も両方知っている知識人を理想とするのは
商売とはあまり関係ない理想だ
商売を重視しないのであれば長所も短所もわりとどうでもいい
0806デフォルトの名無しさん
垢版 |
2024/02/14(水) 13:18:52.38ID:U1pcKTg+
>>801
コンパイルを通しやすいかどうかとコードが見やすくなるかどうかに正の相関関係は無い

加えてコンパイルを通しにくくなればなるほどコンパイルを通すための手助けが当然必要になる

「身の丈に合った言語を」 by 萩豚
0807デフォルトの名無しさん
垢版 |
2024/02/14(水) 13:20:42.45ID:eD+V22zq
Rust習得できない馬鹿が書いたC++コードの保守、やりたくなさすぎる
0808デフォルトの名無しさん
垢版 |
2024/02/14(水) 13:57:57.05ID:Z6/Yikm0
>>803
本番でバグとか酷い炎上案件。
クライアントにとっては悪夢ですなぁ。
納期遅れのほうがまだ見える分マシ。
0809デフォルトの名無しさん
垢版 |
2024/02/14(水) 13:59:03.81ID:AmCG1+WQ
>>806
コンパイルできる人材を確保できるかどうかは中途採用ガチャしまくればいける
コンパイルできねえやつは捨てる、それだけだ
0810デフォルトの名無しさん
垢版 |
2024/02/14(水) 14:56:27.36ID:8lIAACZZ
>>807
だれがあなたを頼るの?
0811デフォルトの名無しさん
垢版 |
2024/02/14(水) 15:03:18.56ID:8lIAACZZ
>>808
都合良く「納品はできる」妄想を前提として話を進められるならどうとでもなる
結局無能でもどうにかなるなんて全く現実的ではない、rust信者の詐欺的妄言なのでどっちでも一緒
0812デフォルトの名無しさん
垢版 |
2024/02/14(水) 16:53:53.91ID:ry67cZRi
>>809
技術者をまともに育成する術も評価する術も持たずガチャするしか脳の無い無能企業には有能なやつほど寄り付かない

そうなると渋いと評判の某ガチャUR排出確率並み(0.3%)になるから100回回しても有能1人雇える確率は3割にも満たない
運良く雇えてたとしても数年以内に転職して抜ける確率は逆に8割以上

身の丈に合わない選択は破滅への近道
0813デフォルトの名無しさん
垢版 |
2024/02/14(水) 17:49:37.27ID:kwXXlBt4
どこまでオブジェクト設計するべきかが良くわからん
例えばトランプゲームを作ろうとした時のカードについて
数字込みの絵柄と表示用の画像くらいしか必要ないと思うけど
わざわざCardクラスCardDeckクラスとかを用意する必要があるの?とか
0814デフォルトの名無しさん
垢版 |
2024/02/14(水) 18:11:12.61ID:J37aOx7P
Deckが内包するデータはCardの配列のみだとしても
シャッフルやドローなんかの操作を配列として外から行うより
Deckとして備えてる方がシンプルに保てそう
0815デフォルトの名無しさん
垢版 |
2024/02/14(水) 18:32:43.17ID:xYPMwtK4
>>813
クラス以外のユーザー定義型がないならオブジェクト指向よりの作り方でなくてもCardクラスやCardDeckクラスくらいは作るんじゃない?

それらにメソッドを生やしてゲームルールを実装していくのか
それともそれらをデータとして扱う関数を別のところに書くことでゲームルールを実装していくのか
それぞれ良い点悪い点があるので一度両方で作ってみるといいと思う
0816デフォルトの名無しさん
垢版 |
2024/02/14(水) 18:36:07.49ID:xYPMwtK4
>>814
DeckモジュールとかGameモジュールにドローやシャッフルなどのDeckを操作する処理をまとめておくってのでも別に不都合ないよね?
0817デフォルトの名無しさん
垢版 |
2024/02/14(水) 18:44:53.20ID:OE64F1T2
enumがオブジェクトではない言語では迷うが
すべてがオブジェクトだったらenum Cardでいいのでは
0818デフォルトの名無しさん
垢版 |
2024/02/14(水) 19:19:39.63ID:g/tbjQoZ
スートが切り札(トランプ)に変わるようなゲームでは
判定で「こいつはいまトランプだから」で例外処理するのか
カード側で「いまトランプです」したらいいのかの設計の話だわな
0819デフォルトの名無しさん
垢版 |
2024/02/15(木) 12:39:33.69ID:q4O0G3u8
>>793
>ライブラリに頼ってるだけで
そのライブラリに頼ってるだけを実現できるのがオブジェクト指向の功績だと思ってる
昔のWin32APIみたいなライブラリとインスタンス生成してからインスタンス.メソッド形式で利用するライブラリと比較したらライブラリの扱いに対するお手軽&簡単度合いがぜんぜん違う
0820デフォルトの名無しさん
垢版 |
2024/02/15(木) 19:49:13.54ID:b088ZsVf
いやwin32apiだろうがapiそのものがすでに「オブジェクト指向」だから
手軽とか簡単とかはオブジェクト指向とっくに通り越してそのように改良された結果ってだけ
このスレ見てると「オブジェクト指向」が特別なナニカだと思ってる人も多くてアランケイも困惑するよw
0821デフォルトの名無しさん
垢版 |
2024/02/15(木) 20:05:57.93ID:Zy70aZMD
「オブジェクト指向」が特別なナニカじゃないのであれば、「オブジェクト指向プログラミング言語」は「プログラミング言語」でよくなってしまう

これまで「オブジェクト指向プログラミング言語」という言葉を使った人間はとんでもないガイジということになる
0822デフォルトの名無しさん
垢版 |
2024/02/15(木) 23:20:24.51ID:ibzEiIzs
20年前のあれは何だった?どいつもこいつもオブジェクトだーと喚いてたくせに。屑どもが
0823デフォルトの名無しさん
垢版 |
2024/02/16(金) 00:12:23.56ID:L7DYjGhm
ここまでくると糖質っぽいな
オブジェクト指向はオワコンと言い続けて何年経過してんだよw
0826デフォルトの名無しさん
垢版 |
2024/02/16(金) 08:49:55.02ID:TCjahJiL
これこれ
オウムみたいな感じ
はなから議論をする気が無い
オワコンオワコン繰り返して気持ちよくなるだけ
0828デフォルトの名無しさん
垢版 |
2024/02/16(金) 23:46:53.13ID:7B7dg9RO
自分がオブジェクト指向で挫折したから
あんなの一時の流行りでしかない!って喚いて溜飲を下げようとしてるけど
そもそも理解しないで挫折してるから「あんなの」が永久に
90年代のC++の時の“自動車の車輪を付け替える”からアップデートしない
0829デフォルトの名無しさん
垢版 |
2024/02/17(土) 01:14:52.71ID:sBa/KHO/
アップデートという目標は分かったが現時点では違う目標を持つ者にとって
ふつうに考えると目標を達成するためには目標を変更しないのが合理的
問題は、どうすれば永久に合理的であり続けるのをやめられるか
0830デフォルトの名無しさん
垢版 |
2024/02/17(土) 11:49:08.21ID:f/G7Vx68
オブシコで挫折してない人なんていません!!
0831デフォルトの名無しさん
垢版 |
2024/02/17(土) 12:25:59.71ID:hmS5aeTe
俺がいる
中途半端ってぶっちゃけ怖いよね

>>826
議論っていうか、使えと言われた言語・ライブラリ(SDK)使うんだからね結局
好き・嫌い、とかって雑談してりゃいいんだよ

俺は、継承を使いこなせるいい漢になりたいぜ
0832デフォルトの名無しさん
垢版 |
2024/02/17(土) 13:09:34.49ID:SNH81JMI
オブジェクト指向だろうがオブジェクト指向言語だろうが語りたいのならマ板でやれ
雑談どころかここで議論とか正気かよ。議論してもプログラム技術の役に立たないくらいわかるよな
0833デフォルトの名無しさん
垢版 |
2024/02/17(土) 13:51:00.19ID:f/G7Vx68
>>831
はっきり言う、お前はオブシコのことを何もわかってない

>>832
お前もだ

オブシコは挫折してからが始まりだ
0834デフォルトの名無しさん
垢版 |
2024/02/17(土) 13:53:44.82ID:f/G7Vx68
intではなくてMoneyだ
Moneyを継承してYenを作れ

stringではなくてAddressだ
Addressを継承してPrefectureを作れ

本物のオブジェクト指向を経験しろ
ぜったい挫折するから
0835デフォルトの名無しさん
垢版 |
2024/02/17(土) 14:31:27.57ID:JQbQK4DF
>intではなくてMoneyだ
当たり前
>Moneyを継承してYenを作れ
意味不明
オブジェクト指向で作るならYenはMoneyの一属性

>stringではなくてAddressだ
当たり前
>Addressを継承してPrefectureを作れ
意味不明

オブジェクト指向だから挫折したのではなく間違ったオブジェクト指向を学ぼうとしたから挫折したんだな
0836デフォルトの名無しさん
垢版 |
2024/02/17(土) 16:18:56.35ID:f/G7Vx68
↑ オブシコ厨ってこんなシロートばかりなんですよ
0840デフォルトの名無しさん
垢版 |
2024/02/17(土) 23:59:55.91ID:RsjvkJW8
>>824
本当にオワコン化したものは話題にすらならんよ
今どきポケベルはオワコンなんてスレ建てる奴なんていないだろ?
つまり、そういうこと
0841デフォルトの名無しさん
垢版 |
2024/02/18(日) 02:06:18.29ID:jMiNlzvA
ポケベルを話題にした自分自身を否定するより
オブジェクト指向にファイティングポーズする方がよっぽどポジティブじゃないか
0842デフォルトの名無しさん
垢版 |
2024/02/18(日) 06:52:31.86ID:AGcN1oEW
APIやライブラリを一切使わず、自分自身で「処理をしてオブジェクトを返す部分」も作らずにどんなプログラムが作れるんだよ
現代でプログラム書いてるやつは意識しなくても使うしか無い手法じゃないか
使わずにHelloWorldすら書くのは超難しい
0844デフォルトの名無しさん
垢版 |
2024/02/18(日) 10:14:36.02ID:5IBLHZNo
API使ってればオブジェクト指向とか頭になんか湧いてるだろ
0846デフォルトの名無しさん
垢版 |
2024/02/18(日) 11:06:51.79ID:18G3CSzu
「APIそのものがオブジェクト指向」だと主張してるやつはいるね>>820
0847デフォルトの名無しさん
垢版 |
2024/02/18(日) 12:13:41.03ID:RIbrKfRB
とりあえず1000行くらいベタ打ちでプログラム書いて
書いたのをリファクタリングついでにクラス分けして
またダーッと書いてって繰り返せばいいよね?
0848デフォルトの名無しさん
垢版 |
2024/02/18(日) 12:17:44.83ID:NoFg1fuK
>>847
今世紀に出てきた様々なプログラミング言語はほとんどがクラスをサポートしていない
クラスは役に立たず害が大きいとの共通認識があるため
0849デフォルトの名無しさん
垢版 |
2024/02/18(日) 13:06:18.47ID:2M17hFnk
>>848
バカの一つ覚え
0850デフォルトの名無しさん
垢版 |
2024/02/18(日) 14:18:51.57ID:jMiNlzvA
APIは今でも関数とグローバル変数
stdinとかstdoutとか
グローバル変数が一番最初にオワコン化し、オブジェクト指向は二番目以降と想定された
0851デフォルトの名無しさん
垢版 |
2024/02/18(日) 16:50:37.61ID:g+lvGDPK
オブシコで書かれたAPIとかライブラリってのならある。ってなら書いた
COMとかね 原理的には、ラッパがあれば、避けることはできる
0854デフォルトの名無しさん
垢版 |
2024/02/19(月) 01:20:09.81ID:nPOSkLxV
>>848
事実認識ができてない
JavaScript、C#、Python、Ruby、C++、Java、Kotlin
クラス扱える言語はいくらでもあるし、そもそもクラスや継承を使えない=オブジェクト指向じゃないって訳では無い
クラスはお前みたいな馬鹿には使いこなせないからクラス以外でオブジェクト指向な書ける方法が模索されたんだよw
0855デフォルトの名無しさん
垢版 |
2024/02/19(月) 01:36:14.67ID:1O4I6mF/
どの言語かに関係なく
クラス継承でプログラミングするやつはバカしかいない
0856デフォルトの名無しさん
垢版 |
2024/02/19(月) 02:23:23.32ID:T5tehfX7
特定のルートクラスに縛られる継承はだいぶむかしにオブジェクト指向のあまり良くない実装として
仕様を残しながら使わない方がベターになってるわな
使うクラスをオブジェクトとして別個にクラスに組み込むコンポジションの方が主流
「継承というのがオブジェクト指向!」とかいつの時代のおじいちゃんだよ
0858デフォルトの名無しさん
垢版 |
2024/02/19(月) 07:21:21.34ID:94Ygw4Cz
あの当時の人なら一度は、オレオレプロジェクトで継承を使いすぎた経験ってあると思うのね
0859デフォルトの名無しさん
垢版 |
2024/02/19(月) 08:07:57.52ID:GOMVHdKw
継承しまくって訳わからん事になるなら新しいクラスにした方がいいと思うけどなあ
File
-◯◯FileBase
--◯◯FileStructure
---◯◯FileModel
----◯◯FileInstance

みたいなのよりFile2を定義し直した方が遥かにマシ
0860デフォルトの名無しさん
垢版 |
2024/02/19(月) 08:13:47.31ID:Y0uHI/e6
ファイル名なんかもそうだが
File_20240219
のようなユニークIDつけておくといくら被っても困らない
0861デフォルトの名無しさん
垢版 |
2024/02/19(月) 09:09:06.20ID:94Ygw4Cz
重複(安易なコピペ)コードはちょっとでもいけませんってきつく言われて、
それを避けるように継承をテキトーに使いすぎた記憶はあるんだよね

is-a 原則を守って、責任者が正しく設計しましょう
0862デフォルトの名無しさん
垢版 |
2024/02/19(月) 09:20:08.17ID:94Ygw4Cz
似たようなコードが出るなら、サブルーチンにすりゃよかったんだけどね
あの頃は名前空間をあんまり使いこなせてなくて、なんでもクラスに押し込みゃいいと思ってた
0863デフォルトの名無しさん
垢版 |
2024/02/19(月) 09:26:15.27ID:5htgrxhu
>>855
と、継承すら理解できない素人が申しております
0864デフォルトの名無しさん
垢版 |
2024/02/19(月) 10:20:44.59ID:stH4FHBR
Rustが重複コードは二度と書かないってポリシーだっけ
最初の一歩踏み出すのにとんでもなく時間かかりそう
0865デフォルトの名無しさん
垢版 |
2024/02/19(月) 10:25:51.91ID:Xye0EN8a
何をもって重複コードとみなすのかなぁ
たまたま別の機能で同じコードになったとかは
まとめると後で痛い目に遭うよな?
0866デフォルトの名無しさん
垢版 |
2024/02/19(月) 10:35:06.92ID:62DfF/9H
>>864
Rustは書かなきゃいけないボイラープレートが多いから重複コードも多い
コピペ継承とマクロ継承がよく使われてる
0867デフォルトの名無しさん
垢版 |
2024/02/19(月) 10:54:32.58ID:VWZKMKLS
c++ コンセプトをそのまま変数のインターフェイスに使えればなぁ、と思う事はある。
0868デフォルトの名無しさん
垢版 |
2024/02/19(月) 11:18:30.32ID:W0+AhDGC
>>864
Rustも他の言語と同様に重複コードがあれば関数として切り出すだけだよ
その時に異なる型に対してもトレイト境界により安全にジェネリック化がしやすく多用されてるね

>>866
Rustは継承ではなく合成と移譲をするためその宣言は増えるけどそれらを重複コードとみなすのはありえないよ
0869デフォルトの名無しさん
垢版 |
2024/02/19(月) 18:18:36.14ID:NzCkUvZW
>>868
どういう構造で作られているかは重複コードとみなすかどうかには一切関係ない
変更をロックステップで適用しなければいけないのならどういうものであれそれらは重複コード
0870デフォルトの名無しさん
垢版 |
2024/02/20(火) 00:04:11.84ID:LUfJNkJd
スマポみたいな機能の重複回避には昔は継承を使った
今はジェネリクスを使う
昔の方法ではスタックのint型とヒープのInt型を統一できない
0871デフォルトの名無しさん
垢版 |
2024/02/20(火) 02:06:05.00ID:u4Uobn3a
すべての型に対して全て同じ実装でよければジェネリクスで良いが一部の型でカスタマイズが必要になるといろんな障害が出てくる
0872デフォルトの名無しさん
垢版 |
2024/02/20(火) 05:49:02.76ID:/gOXQNrB
>>871
それは普通によく起こることだが全く問題ない
その型ごとの差異の機能を合成するだけで対応できる
もちろんジェネリクスのままでよい
0874デフォルトの名無しさん
垢版 |
2024/02/20(火) 10:28:59.91ID:EDso4HRp
一部の型でカスタマイズが必要な場合にジェネリクスを使おうとすると将来を見通したカスタマイズポイントを最初に確定しておく必要があって多くの場合現実的ではない
要はOCPを満たせないので変更に対して弱く保守性の低いプログラムになる

加えてRustではcoherenceの制限だったりspecializationやHKTが未サポートだったりで使える状況がかなり限定されている
0875デフォルトの名無しさん
垢版 |
2024/02/20(火) 10:53:42.40ID:C9p4KSn1
>>873
Rustでも>>872の「その型ごとの差異の機能を合成するだけでジェネリクスのまま対応」できるよ
Rustは必要な機能のトレイト境界を指定することでコンパイル時点で静的にジェネリクスでも安全に呼び出すことが保証されるよ
呼び出し方法は静的ディスパッチによる単相化またはvtable利用の動的ディスパッチどちらも選択できるよ
0877デフォルトの名無しさん
垢版 |
2024/02/20(火) 11:08:20.16ID:C9p4KSn1
>>876
大規模開発もできるように作られたRustについて真逆のウソはよくないよ
既に大規模開発で採用しているGoogle Microsoft Amazonといった大手IT企業たちが
共同でRust Foundationを設立して資金を出して安定した環境でさらなる開発が進められているよ
0879デフォルトの名無しさん
垢版 |
2024/02/20(火) 12:20:44.40ID:ShtLDmLT
既にクラウドやCDNなどネットインフラは次々とRust製へ変わった

ソース
>【クラウド世界トップシェアAWS】
https://japan.zdnet.com/article/35183866/
>Rustで構築されたAWSサービスの例としては、
>コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
>「Amazоn Simple Storage Service(S3)」、
>「Аmazоn Elastic Compute Cloud(EC2)」、
>コンテンツ配信ネットワーク「Аmazоn CloudFront」、
>LinuxベースのコンテナーOS「Bottlerocket」などがある。

>【CDN世界トップシェアClоudflare】
https://www.publickey1.jp/blog/22/cloudflarenginxrusthttppingoracdncpu31.html
>CDNプロバイダのCloudflareは、同社のグローバルなCDNの基盤として長らく利用してきたNGINXに代えて、
>同社自身がRust製のHTTPプロキシである「Pingora」を開発し利 用していることを明らかにしました。
0880デフォルトの名無しさん
垢版 |
2024/02/20(火) 13:22:34.01ID:LUfJNkJd
大規模開発以外はオワコンゆえに構造化プログラミングはオワコン
というのがオブジェクト指向の原点なのでオワコン論法を今更やめられない
0881デフォルトの名無しさん
垢版 |
2024/02/20(火) 13:26:48.23ID:oBR9eIxF
>>877
そのどれもが大規模開発じゃ無いぞ

使われてるがチームは数名だぞ
0883デフォルトの名無しさん
垢版 |
2024/02/20(火) 16:28:18.46ID:ZAWp74Ua
「うちは大規模開発でやってる」という発言が出ないで、他人の情報に反応してそういう結論に切り替えるってことは
つまり自分らでは使ってないってことかいな
0884デフォルトの名無しさん
垢版 |
2024/02/20(火) 16:45:43.34ID:rm//dl54
できるできる詐欺が横行してるな
0885デフォルトの名無しさん
垢版 |
2024/02/20(火) 18:35:02.11ID:pzacWR0B
大規模開発は人数揃えるのが何より大切だからな
COBOLかJava以外ありえない
0887デフォルトの名無しさん
垢版 |
2024/02/21(水) 14:43:22.45ID:Z35fBDP9
MVCで入力処理ってどこにおくべき?
AIとかに聞くとCに置けって言ってくるけど
移植(ライブラリ変更等)時に描画系入力系を
まとめてVに置いておくと楽だと思うんだけど
0890デフォルトの名無しさん
垢版 |
2024/02/21(水) 16:02:41.28ID:IVa7P8gb
>>887
MVCといってもクライアントサイドのMVCとサーバーサイドのMVCで考え方が違う
また入力処理と言っても人によって指すものが違うので具体的にどういう処理を入力処理とみなしているか書かないとわからない
さらに移植とライブラリ変更は一般的に違うものなので想定状況が伝わらない
0892デフォルトの名無しさん
垢版 |
2024/02/21(水) 18:43:28.52ID:1mshJDzd
Mutable
Virtual
C++
0893デフォルトの名無しさん
垢版 |
2024/02/21(水) 20:19:29.17ID:ryHNx0AS
用語や形にこだわるより先に仕様通り動くもの作れ。くだらないこだわりで何も始められないのはただのアホ
0894デフォルトの名無しさん
垢版 |
2024/02/21(水) 21:53:18.35ID:gKvdV+n9
唐突なストローマン論法で草
雑魚味が濃すぎる
0895デフォルトの名無しさん
垢版 |
2024/02/21(水) 21:58:52.64ID:1UKYnLzP
>>887
元々は移植性のためにモデルはそのまんま環境と切り離した処理そのものを
ヴューは人間の目に触れる画面レイアウト周り、そしてコントローラーは
それらを繋ぐインターフェイスとして実装という考え方なので
ゲームをPC、コンシュマー、モバイルと移植します画面周りはVです
操作されるゲームの中身はMです、つなぐ部分はCです
…ん?マウスと十字キーとタッチパネル対応はどこまでがCだ?ってなるけど
AIに聞けばテンプレどおりそら「Cに分けなさい」言われるわな
0896デフォルトの名無しさん
垢版 |
2024/02/21(水) 22:04:57.80ID:Ufq19E/Q
ゲームとビジネスアプリとでは違って来るよな
ゲームなら🎮や⌨はCだが、ビジネスアプリでは単にVの付属物だったりする
0897デフォルトの名無しさん
垢版 |
2024/02/21(水) 22:11:27.33ID:UHHgkSfj
うそやん
マウス対応やタッチパネル対応はViewやぞ
AIに聞いてもそう答えるぞ
0898デフォルトの名無しさん
垢版 |
2024/02/21(水) 23:59:03.36ID:anjrCapC
「入力」の抽象度の違い
ビューに依存した入力とそこから一段階抽象度が上がったビューに依存しない入力がある
それを認識できてればどこに含めるか迷わない
0899デフォルトの名無しさん
垢版 |
2024/02/23(金) 11:08:19.40ID:SaGFiexu
https://twitter.com/mayappy0627/status/1725074809883898273

M a y a ♡🏳‍⚧ヽ(๑╹◡╹)v🏳‍🌈
@mayappy0627
「シスヘテロ男性が女湯に入りたい目的で嘘をついて診断書を取得し性別適合手術を受ける可能性がある」
という言説がいまだに流れている様だが
女湯入ってオカズ目に焼き付けてもチン◯ないからシコれませんのでね。つまり男性的快楽は得られないという結末の一つさえ想定できないんでしょうかね?
午後5:54 · 2023年11月16日
·
https://twitter.com/thejimwatkins
0900デフォルトの名無しさん
垢版 |
2024/02/23(金) 11:14:17.40ID:GPv4EW4D
きんたま切り落とした時点で男性ホルモンは著しく減衰して性欲は無くなるよ🥲
0902デフォルトの名無しさん
垢版 |
2024/02/28(水) 21:12:31.15ID:igsDoIyP
>女湯入ってオカズ目に焼き付けてもチン◯ないからシコれませんのでね

人間に独立した人格が有るように、チンポにも独立したチン格が有る
これは親クラスと子クラスの継承関係である
チン格とはつまり「愚息」であり、自分にも他人にも成り得る
これがオブジェクトの多態性と表現される
オシッコするときのチンポは随意筋、勃起するときのチンポは不随意筋
このように時と場合によって真逆の性質を併せ持つことができる

随意筋 不随意筋
  ↖ ↗
  チンポ

自然言語処理において語の意味は文脈によって変わるので、Pythonのような多重継承が不可欠ね!
0903デフォルトの名無しさん
垢版 |
2024/02/28(水) 21:59:59.89ID:N6In+Wna
機能するかどうかだけが問題で、欲求があるかどうかはあんまり関係無いよな
0904デフォルトの名無しさん
垢版 |
2024/02/29(木) 17:11:51.40ID:lYDtPhZw
オブジェクト指向では、オブジェクトの「機能」を意識することが大切ね!

>>903
>機能するかどうかだけが問題で

オブジェクト指向(OOP) は、データとそれに関連するメソッドを 「クラス」という単位でまとめて管理する開発手法です。
このアプローチにより、開発者は複雑な機能も再利用可能なモジュールとして効率的に構築できます。例えば、
新しい機能を開発する際、既存のクラスから必要なデータを取得し、必要に応じて新しい機能を追加することが可能です。
https://zenn.dev/cloud_ace/articles/29748ac0537c7f
0905デフォルトの名無しさん
垢版 |
2024/02/29(木) 17:34:03.72ID:l9BYiy+8
モダンなプログラミング言語
Go、Rust、Zig、Nim、Julia、Elixirなどは
クラスおよびその継承を言語仕様から排除しておりクラスは存在しない
各々の言語は全く異なる方針を採っている言語だがクラス排除だけは全てが同じ方針である
クラスとその継承は悪手であるとプログラミング言語界では結論が出ている
0906デフォルトの名無しさん
垢版 |
2024/02/29(木) 18:33:41.13ID:j2QgmuXb
むしろ、何段も継承されてわけわからん事になるのが嫌われてるだけなので
swiftなんかはfinalつけてサブサブクラス禁止できるようにしてるな
0909デフォルトの名無しさん
垢版 |
2024/02/29(木) 21:12:27.90ID:zvBPwraZ
>>905
クラスと呼ばれるものがないだけで
メソッドを生やせる構造体も継承も
Elixir以外のすべての言語に存在する
君が無知なだけ
0910デフォルトの名無しさん
垢版 |
2024/02/29(木) 21:41:50.06ID:PlWfF7KT
クラスが存在しないことが最重要だからクラスを採用しない言語が増えてるんだよ
クラスは間違った手法『具象型から具象型への継承』となる禁忌のクラス継承を伴うからね

オブジェクト指向に必要なカプセル化は構造体などでもちろん可能だから
オブジェクト指向にはクラスは不要だよ
そしてインターフェイスや型クラスなどによる正しい手法『抽象型から具象型への継承』が代わりにあればよい
モダンな各プログラミング言語はそれらの方針をとっている

だからクラスが採用されてないんだよ
クラスは悪
0912デフォルトの名無しさん
垢版 |
2024/02/29(木) 22:42:52.64ID:PlWfF7KT
悪い→『具象型から具象型への継承』←クラス
良い→『抽象型から具象型への継承』←インターフェース・型クラスなど
0913デフォルトの名無しさん
垢版 |
2024/02/29(木) 22:58:22.40ID:eayaXhXN
要は個人開発レベル小規模webサイトレベルなら継承の類不要?つうかDIだけでは駄目なん?
0916デフォルトの名無しさん
垢版 |
2024/03/01(金) 08:59:14.79ID:PeOPXftI
そこでダックタイピング(の併用)だな

うん、継承一本ってのは、人類には早かった
0917デフォルトの名無しさん
垢版 |
2024/03/01(金) 09:08:35.51ID:JrOItvM9
クラス継承は具象型からの継承なので多重継承の問題が発生する悪い方法だが
抽象型からの継承は多数あっても合成となり良い方法

>>915
抽象型は各機能毎に細かく多数用意されて合成して使うためそのような問題が起きない
抽象型の改変とは機能を変えることになるため別の抽象型として並行して扱える
0918デフォルトの名無しさん
垢版 |
2024/03/01(金) 10:31:31.13ID:Lv7uqw7J
>>917
なら設計の初期に細かく多数の抽象型を決めなきゃいけない、ということになるわな。
未来を予測できる天才でもなければ厳しいな。
0920デフォルトの名無しさん
垢版 |
2024/03/01(金) 10:56:06.21ID:67BTULI7
>>918
クラスはピラミッド型の階層構造となり改変で他へ影響が大きく出る問題があり
クラスは具象型なのでそれ自体がメンバ変数(フィールド変数)を持ち途中階層のクラスも持つため改変が非常に大変もしくは崩壊となりがち

抽象型でメンバ変数(フィールド変数)を持たないインタフェイスや型クラスではその問題が起きない
それら抽象型による各機能の合成をとるため改変する場合も他機能への影響が限定的となり問題を分離することができる
0922デフォルトの名無しさん
垢版 |
2024/03/01(金) 12:45:52.70ID:FDcCyCi3
>>920
メンバ変数の無い抽象型であっても、分離できるのは実装部分でしかなくて、「機能ではなく型の種類&名前で縛られる」という設計の初期の困難さは回避できていないよ。

まぁ、インターフェイスとかトレイル(Rustの偽物は論外)とかでもモジュール境界とモジュール間連携の問題は解決できていないからなぁ。何かいいアイディア無い?
0924デフォルトの名無しさん
垢版 |
2024/03/01(金) 16:38:06.02ID:gwVYOw6C
>>905
バカの一つ覚え
0926デフォルトの名無しさん
垢版 |
2024/03/01(金) 20:56:33.23ID:KQ1HmSrc
継承には感謝しかないです
0929デフォルトの名無しさん
垢版 |
2024/03/02(土) 07:16:17.19ID:7IvxOyHp
クラスとかメソッド集合としての機能だけあればいい。
その代わりに外延性と集合演算をサポートしてくれ。そうすりゃ継承みたいなクソツールは要らなくなる。
0930デフォルトの名無しさん
垢版 |
2024/03/02(土) 11:56:05.36ID:0RQhliLl
クラスとか継承とかに不満持つのは不思議なんだが、他人の作ったコードやライブラリをうまく流用出来ずに文句言ってるのか?
自分で作る分には言語の機能にあっても使わなきゃいいだけだろうに
他の人が理解できないからだ、ってのならその「他の人」に言え
0932デフォルトの名無しさん
垢版 |
2024/03/02(土) 13:55:18.96ID:ILWRlrIw
>>930
他の人になんて言えば良い?
0933デフォルトの名無しさん
垢版 |
2024/03/02(土) 13:56:06.21ID:pYjRDwip
>>930
クラス継承については全員が問題視している
Javaの生みの親ですらJavaを作り直せるならクラスを除外すると明言している
そして現実にモダンなプログラミング言語
Go、Rust、Zig、Nim、Julia、Elixirなど全てがクラスを除外している

>Javaのユーザグループミーティングに出席した際、
>James Gosling(Javaの生みの親)がメインの講演者として招かれていました。
>すばらしいQ&Aセッションの途中に、こんな質問が出ました。
>「もう一度最初からJavaを作り直すとしたら、どこを変更したいですか?」
>答えは「クラスを除外するでしょうね」というものでした。
>彼が説明したのは、本当の問題はクラス自体ではなく実装継承(extendsの関係)なのだということでした。
>インターフェースによる継承(implementsの関係)のほうが望ましいのです。
>できる限り実装継承は避けたほうがよいでしょう。
0934デフォルトの名無しさん
垢版 |
2024/03/02(土) 13:58:52.73ID:ILWRlrIw
ねえ!他の人になんて言えばいいの!?
0936デフォルトの名無しさん
垢版 |
2024/03/02(土) 14:43:33.20ID:ILWRlrIw
。°(´∩ω∩`)°。
0938デフォルトの名無しさん
垢版 |
2024/03/02(土) 15:01:00.73ID:OiLnCmP5
>>933
バカの一つ覚え乙
0939デフォルトの名無しさん
垢版 |
2024/03/02(土) 15:26:08.25ID:5qddeDE5
>>937
丁寧な説明あって助かったありがとう
実装継承は問題があるためクラス継承を使うのは辞めた方がよさそうね
そうするとクラス自体が不要なので今どきの言語にはクラスが無いわけなのね
0940デフォルトの名無しさん
垢版 |
2024/03/02(土) 17:53:44.47ID:JmA8+V/x
継承すると結合度が高くなり、基底クラスがいじりにくくなるから
implements で名前だけ基底クラスで宣言した方がよい
という経験則なわけね
0941デフォルトの名無しさん
垢版 |
2024/03/02(土) 18:23:50.25ID:C5B9iefL
>>940
違うよ
基底クラスは一切使わずにインターフェース等を使う
インターフェース等を備えていない言語ではやむをえないため抽象クラスで代替する
0942デフォルトの名無しさん
垢版 |
2024/03/02(土) 21:21:19.79ID:6JiP4UcJ
15年ぐらい前はstaticおじさんが馬鹿にされてたけど今じゃオブジェクト指向がオワコン呼ばわりかぁ

Lisp使おう()
0944デフォルトの名無しさん
垢版 |
2024/03/03(日) 12:51:43.47ID:s0HRTEoD
オブジェクト指向に毒されてるpowershwll,python,ruby等も終わりかな
F#に興味出てきたな
0945デフォルトの名無しさん
垢版 |
2024/03/03(日) 13:22:58.46ID:4PUy8wCJ
あたりまえにオブジェクト指向使ってる現代でオブジェクト指向がオワコンって言うのはプログラム作らない人
ここの板のローカルルールくらい見ましょうね
0946デフォルトの名無しさん
垢版 |
2024/03/03(日) 13:49:21.97ID:HJzrw6yi
やたらとオブシコしてたのからの回帰ってならわかる そういう意味なんだろうなと思う
0947デフォルトの名無しさん
垢版 |
2024/03/03(日) 14:11:44.50ID:0VvwZNDM
>>940
何でそんなこと言うん?
0949デフォルトの名無しさん
垢版 |
2024/03/03(日) 17:33:19.72ID:7AiWdEnV
オブジェクト指向を実践してない人ほど継承はダメだといっておられる
現実をまったく見ていない理論でしかないわけです
0950デフォルトの名無しさん
垢版 |
2024/03/03(日) 17:33:33.79ID:m+AYakYE
40年前に構造化プログラミング(いまあたりまえのプログラムをブロックモジュールに分ける概念)についてけなかった人とかも
理解しないまま「構造化プログラミングはオワコン!これからはオブジェクト指向!」ってそもそも構造化プログラミングの
発展系がオブジェクト指向だってわからずこのアホウみたいにウキャウキャしてたのかしら
0952デフォルトの名無しさん
垢版 |
2024/03/03(日) 18:26:34.56ID:zJ/qFUNe
>>951
Pythonは文脈によって意味が変わる多重継承ね!

随意筋 不随意筋
  ↖ ↗
  チンポ
0953デフォルトの名無しさん
垢版 |
2024/03/03(日) 20:11:50.76ID:InukkrXD
ついていけない人間がたくさん出てしまうパラダイムは多くの人間が使えないので自明にオワコン
0955デフォルトの名無しさん
垢版 |
2024/03/03(日) 21:35:56.29ID:9XAeTkis
>>933
Cの生みの親が作ったGoはともかく、Rustにクラスがなかったのはマジびびった。

Haskell覚えたときに、オブジェクト指向プログラミングの再利用性に疑問持って、
(実際にはしないけど)C++でクラス使わずテンプレートだけ使った方が再利用しやすいんじゃ…?とか思った。

そして最近、「スッキリわかるC言語」立ち読みしたら、C言語に(テンプレートとは違ってマクロっぽいが)ジェネリックっぽい機能が取り入れられてるみたい。
(使えないコンパイラがまだ多いのでLinuxのカーネル開発では禁止されてるみたいだけど)

あと、デザインパターンも、関数型言語で普通にしてる事がいくつか書いてて、オブジェクト指向言語だと意識しないと出来ないんだと気づいた。
(例:イテレータ、テンプレート・メソッド、シングルトン、アブストラクト・ファクトリ、ストラテジなど)
0956デフォルトの名無しさん
垢版 |
2024/03/03(日) 22:06:17.23ID:mVaeStz7
広い意味のオブジェクト指向は今でも有用であって
クラスを使ったオブジェクト指向が間違っていただけなので
GoやRustなど新しい言語にはクラスが無いけど(クラスを使わない)オブジェクト指向ですよ
0958デフォルトの名無しさん
垢版 |
2024/03/03(日) 22:27:37.47ID:9RvqtVLq
>>957
俺は「ついていけない人間がたくさん出てしまうパラダイム」の話をしているのに、お前は勝手に「俺がついていけない人がたくさんいると思っているパラダイム」の話を始めたな

俺の話を理解できていないのか、理解した上で関係なくお前のしたい話を始めたのか知らんが、それで俺にレスをつけておいて俺にオワコンと言ってくるなんて、なんてガイジなんだ
回線切って首吊って死んでくれよな
0960デフォルトの名無しさん
垢版 |
2024/03/03(日) 23:01:06.99ID:A1Y/Mibd
つまりプロトタイプベースオブジェクト指向のJSは一歩も二歩も先に行ってたってこと?
0961デフォルトの名無しさん
垢版 |
2024/03/03(日) 23:05:08.39ID:slB98rWU
>>958
おまえ生まれてから今までずっと


何言うてんねん
0962デフォルトの名無しさん
垢版 |
2024/03/03(日) 23:24:09.12ID:9XAeTkis
>>960
まあ、JSは手続き型言語の皮をかぶったLispと言われる事もあるので、
そうとも言える。

ただLLだったので大規模開発に向かなかったのかと。

関数型言語と論理型言語は大きなカテゴリーでは宣言型言語になるんだけど、
オブジェクト指向も宣言的なプログラミングは目指してるんだよね。
メソッドチェーンと関数合成は向きが逆なだけで、やってることは同じだし。


Rust初めて見たときはC系統の文法のだけど、だいぶ関数型言語に寄ったなと思った。
しかも組み込み系の雑誌「interface」でだいぶ推してるし…。(お題を解く連載が続いてる)

何事かと。
0963デフォルトの名無しさん
垢版 |
2024/03/04(月) 00:00:46.80ID:ndPj2VnY
>>962
>メソッドチェーンと関数合成は向きが逆なだけで、やってることは同じだし。
関数型のやり方によっては見た目は似せることができてもやってることは全然違う
関数型とオブジェクト指向で根本的に異なる部分
0964デフォルトの名無しさん
垢版 |
2024/03/04(月) 00:42:55.59ID:vyClhVzf
言われてみれば。
同じは言い過ぎだったね。

print関数と関数合成なんて、オブジェクト指向な人から見たらイミフだろうし。
高階関数に関数合成した関数渡すのも、オブジェクト指向じゃ関数オブジェクト(?)にメソッドチェーン渡すなんて、見たことない。(できるかは知らない)
割とよく使うのに。

あと、オブジェクト指向型言語で関数型プログラミング取り入れました!って言って
ラムダ式を強制するのがウザい。

関数型言語はセクションやら、それこそ関数合成使って、なるべくラムダ式を使わない様に進化してるっちゅーねん。
0965デフォルトの名無しさん
垢版 |
2024/03/04(月) 20:55:11.38ID:OBoWisFX
「継承」についてだが、多重継承をサポートしていない言語ならなるべく使わないほうがよい
0966デフォルトの名無しさん
垢版 |
2024/03/05(火) 14:40:45.25ID:8Aciq0Ni
>>930
不満を解消するために行動しているというのは誤解
ある行動をしなかった理由を考えている
なぜ継承しなかったのか
0967デフォルトの名無しさん
垢版 |
2024/03/06(水) 15:26:14.40ID:7MRZ6H51
>>965
逆だね
あえて逆のこと言ったんだね
0968デフォルトの名無しさん
垢版 |
2024/03/06(水) 16:32:28.41ID:QczblYLZ
>>967
Pythonは多重継承だが?
0969デフォルトの名無しさん
垢版 |
2024/03/06(水) 17:05:29.94ID:0Fz1GTqO
銀の弾丸はなく適材適所なだけなのに
なるべく使わないって判断放棄してへん?
0970デフォルトの名無しさん
垢版 |
2024/03/06(水) 17:58:25.40ID:RxG6QCQE
>>968
Pythonの話ちゃうやん
0971デフォルトの名無しさん
垢版 |
2024/03/06(水) 18:04:07.44ID:OsGV2nia
>>968
おまえそのPythonでどんなアプリ作ったの?
>>937のリンク先から引用
>多重継承の問題の1つは、同一のメソッドが1つ以上の親クラスに存在しているときに、言語がどのメソッドを用いているのかが自明ではなく、あいまいだという点です。
これが絶対悪だというのはありえないにせよ、プログラム保守する上でこの問題はよく理解できるはず
0972デフォルトの名無しさん
垢版 |
2024/03/06(水) 18:42:32.08ID:T1kDuEf9
人間に独立した人格が有るように、チンポにも独立したチン格が有る
これは親クラスと子クラスの継承関係である
チン格とはつまり「愚息」であり、自分にも他人にも成り得る
これがオブジェクトの多態性と表現される
オシッコするときのチンポは随意筋、勃起するときのチンポは不随意筋
このように時と場合によって真逆の性質を併せ持つことができる

随意筋 不随意筋
  ↖ ↗
  チンポ

自然言語処理において語の意味は文脈によって変わるので、Pythonのような多重継承が不可欠ね!
0973デフォルトの名無しさん
垢版 |
2024/03/06(水) 20:32:09.54ID:RxG6QCQE
>>972
継承関係無いやん
レスを投稿する

レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況