[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/06 23:02 / Filesize : 283 KB / Number-of Response : 1027
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

オブジェクト指向はオワコン



1 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 22:00:53.85 ID:H4l7y46b.net]
最近の言語には採用されないことが増えている

175 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 09:43:43.01 ID:Y1JfaYii.net]
非表示にしとけよ拘りつよつよアスペくん😅
>>169

176 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 23:29:17.31 ID:VBDgfudD.net]
モジュール化の手法として関数がまず考えられた。
共通するまとまったルーチンを実行するにあたって関数は便利であったが、
呼び出しをしてメモリ上に展開されても処理が完了するとメモリ上から消滅してしまう
(それまでの履歴がパァ)という性質のものだった。

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

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

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

と言える。嘘だと思うならダールの論文を読んで見ればいい(と言いつつ本当に読んだら細かい重要なところをバッサリと切り落としているのがバレる)。

177 名前:デフォルトの名無しさん [2023/09/20(水) 23:35:39.69 ID:VBDgfudD.net]
オブジェクト指向がわかりにくいのは
ダールの論文がいろんな画期的なアイディアてんこ盛りなせいだ。
オブジェクト(object)という概念が画期的なのに、オブジェクトを生成するクラスやオブジェクトの型概念にも触れていて、何がポイントかわかりにくい。

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

要するに関数に代わるモジュール化の手法が(ダールの)オブジェクト。

178 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 00:10:08.07 ID:H7YqoNcR.net]
今年から流行りだした生成AIはオブジェクト指向と関係ない
数式のように誰にとっても明解でないところが終わってるオブジェクト指向は愚かな人間どもの間違ったアプローチ
その先には何も無さそうな事だけは誰の目にも明解

179 名前:デフォルトの名無しさん [2023/09/21(木) 00:20:33.81 ID:0U/PD5XH.net]
状態が可変のオブジェクトはデバッグが難しい
どこで状態が変わるのかわからんようになるわ
業務要件とは独立したデータ構造でさえ多少複雑なことするとそういうことおこる
ミュータブルは最小にしたが良い、マジで

180 名前:デフォルトの名無しさん [2023/09/21(木) 00:22:34.55 ID:MHm+UEXg.net]
>>102
あれはオブジェクト指向ではなくて抽象データ型。
インスタンスが状態持たないでしょ?

181 名前:デフォルトの名無しさん [2023/09/21(木) 00:25:05.90 ID:MHm+UEXg.net]
オブジェクトは状態持ってるからオブジェクトなんだよ!と強く言いたい。
持ってないならそれはそれは単なる抽象データ型のインスタンス。

182 名前:デフォルトの名無しさん [2023/09/21(木) 00:28:54.33 ID:tdxL4aJO.net]
>>172
それはクロージャ
オブジェクト指向に限らず関数型でも使える
つまりオブジェクト指向の本質ではない

183 名前:デフォルトの名無しさん [2023/09/21(木) 00:30:07.90 ID:Zhn9cjmN.net]
>>175
Rustでももちろんインスタンスが状態を持つよ



184 名前:デフォルトの名無しさん [2023/09/21(木) 00:31:45.48 ID:Zhn9cjmN.net]
Cで書いた抽象データ型のインスタンスでも状態持つものはいくらでもある

185 名前:デフォルトの名無しさん [2023/09/21(木) 00:37:01.04 ID:MHm+UEXg.net]
>>177
クロージャからオブジェクトを生成する事もできるから似ていることは認めるが、オブジェクトを生成できるのは関数型でも破壊的変更ができるcommon lispとかschemeだけ。sicpにも書いてある。
純粋関数型のhaskellはクロージャからオブジェクトを生成するのは無理。破壊的変更ができないから。

schemeをもとにしたというjavascriptは実際クラスを使わない場合、クロージャでオブジェクトを生成する。真似するとオブジェクト指向でクラスは本質ではない。

186 名前:デフォルトの名無しさん [2023/09/21(木) 00:39:36.94 ID:MHm+UEXg.net]
>>178,179
そら状態じゃなくて値
多分そういうのrustだとlet mutと宣言してるだろ?

187 名前:デフォルトの名無しさん [2023/09/21(木) 02:13:11.73 ID:5L348Pt1.net]
【根拠あり】フリーランスエンジニアは年収862万円取れて普通という話【高収入】

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

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

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

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

2021年最新版 エンジニアの平均年収はいくら?全体平均と比べて○○円も高い!

188 名前:デフォルトの名無しさん [2023/09/21(木) 10:11:19.31 ID:gdQGfC6C.net]
インスタンスとか面倒くさい
全部グローバルなstaticクラスで良くね?

189 名前:デフォルトの名無しさん [2023/09/21(木) 10:12:39.58 ID:eeeUNNfX.net]
ただの置物となった今ではオブジェ指向でいい

190 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 12:25:41.73 ID:bQKF4ZJD.net]
みんなオブジェクト指向で作ってんだし合わせようよガキじゃないんだからさぁ!

191 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 13:32:02.03 ID:kBQIqVu1.net]
悪いことは少しでも改善しないと進歩がない。

192 名前:デフォルトの名無しさん [2023/09/21(木) 13:38:45.02 ID:6kzUrMUc.net]
ガキじゃないんだからさぁ!

193 名前:デフォルトの名無しさん [2023/09/21(木) 14:04:48.18 ID:KxLc2ofK.net]
>>181
君だけに通じるご都合主義的な定義で話されても誰も分からんよ
let mutで宣言されたら状態じゃなくて値になるて何のこっちゃ



194 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 14:59:44.19 ID:kBQIqVu1.net]
オブジェクト指向はイメージが広がる(といえば聞こえはいいが妄想を掻き立てられる)
人がいるからオレオレ定義があちこちで膨らんだり独善が独り歩きして
おかしな慣わしみたいになり弊害が出てきた

195 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 23:48:33.39 ID:UfkHHyEe.net]
それはおまえの意見、何の根拠もない
残念、はい論破
オブジェクト指向は非常に重要
これはプログラミング言語界で結論が出ている
オブジェクト指向の大勝利

196 名前:デフォルトの名無しさん mailto:sage [2023/09/22(金) 00:01:25.05 ID:J2JYhUeP.net]
aiもだいたいオブジェクト指向でかくしなぁ

197 名前:デフォルトの名無しさん [2023/09/22(金) 00:14:03.42 ID:2pjQfvCi.net]
>>189
わかる

198 名前:デフォルトの名無しさん [2023/09/22(金) 00:24:21.80 ID:nZQCXJJN.net]
>>188
ご都合主義はお互いじゃね?

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

極端なこと言うと
let mut x:usize = 0;
x += 1;
こう書いたらxは状態持ってるように見えるけど
単なるデータ型が状態持ってると考えるのはおかしいからこれは単なる可変の変数に入った値と考えるべきじゃないか?
と言っているんだよ。

199 名前:デフォルトの名無しさん [2023/09/22(金) 00:29:47.98 ID:nZQCXJJN.net]
単純に状態を持った局所変数環境のオブジェクトって概念が新しいんだよ。
言ってしまうとそれを使えば全部オブジェクト指向と言える。

200 名前:デフォルトの名無しさん mailto:sage [2023/09/22(金) 00:59:30.50 ID:pJdskUNF.net]
>>189
ソフトウエアを開発できないくせに薀蓄だけは立派な
宣教師みたいなやついるよな。
あれもマウントの一種、というか飯のタネなんだろう。
悲惨なのは今だに新たな入門者が宣教師の餌食になって
犠牲者が増えつづけていること

201 名前:デフォルトの名無しさん [2023/09/22(金) 01:48:01.87 ID:PcXfPQTh.net]
指向という言葉がダサイ

202 名前:デフォルトの名無しさん mailto:sage [2023/09/22(金) 03:06:05.54 ID:UufRKzh2.net]
宣教師が最近布教してるのは、アジャイル開発やドメイン駆動だから
オブジェクト指向はオワコンなのかもな

203 名前:デフォルトの名無しさん [2023/09/22(金) 08:48:16.06 ID:ghnEkhiW.net]
オブジェクトを信じなさい
オブジェクトこそが唯一無二の真理



204 名前:デフォルトの名無しさん [2023/09/22(金) 09:10:31.15 ID:dkRHHNCe.net]
>>196
原語が
Object Oriented Programing
だから日本語で指向って言ってるだけ
あいつらoops!のノリで付けたんであって
Orientedに不快意味は無い

205 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 05:00:06.68 ID:AGrNs2HH.net]
>>197
そもそもアジャイル開発やドメイン駆動はオブジェクト指向と直交する概念では無い。というかレイヤーが違う
むしろオブジェクト指向はアジャイル開発やドメイン駆動を実現する根幹手法の一つと言って良い

206 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 10:10:00.44 ID:i9fpyxKg.net]
いやいや

207 名前:デフォルトの名無しさん [2023/09/23(土) 12:51:50.80 ID:tQpIWXxa.net]
パトラッシュ、疲れただろう?
ボクもマジメに突っ込むのはもう疲れたよ。

208 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 18:54:47.60 ID:IJ8IqG3m.net]
  *'``・* 。
  |     `*。
, 。∩∧ ∧     *    これで元気にな〜れ
+ (´・ω・`) *。+゚
`*。 ヽ、  つ *゚*
 `・+。*・' ゚⊃ +゚
 ☆   ∪~ 。*゚
  `・+。*・ ゚


https://i.imgur.com/RFbLlK2.gif

209 名前:デフォルトの名無しさん [2023/09/23(土) 21:15:19.84 ID:ChB9aNsl.net]
元気があればオブジェクト指向もわかる
ありがとー!!

210 名前:デフォルトの名無しさん mailto:sage [2023/09/24(日) 09:15:37.08 ID:AyCWE2s/.net]
・クラス型オブジェクト指向はオワコン
・プロトタイプ型オブジェクト指向は有用

って考えでいいの?

211 名前:デフォルトの名無しさん [2023/09/24(日) 11:08:15.86 ID:jYY1d0Rr.net]
プログラム構造と、開発技法を比較されましても…

212 名前:デフォルトの名無しさん mailto:sage [2023/09/24(日) 11:23:16.51 ID:gTj5LbbT.net]
>>205
違う
オブジェクト指向自体は有効

ダメなのはクラスとその本質である継承
プロトタイプ方式によるクラス実装も継承なので当然同じくダメ

213 名前:デフォルトの名無しさん mailto:sage [2023/09/24(日) 11:25:26.13 ID:Cw9+et/n.net]
javascriptのカオス具合からして失敗だろうプロトタイプは



214 名前:デフォルトの名無しさん mailto:sage [2023/09/24(日) 16:23:52.68 ID:3YxY27wg.net]
jsのエコシステムはoopどころじゃない邪悪じゃろ

215 名前:デフォルトの名無しさん mailto:sage [2023/09/24(日) 23:57:23.50 ID:oGK434I1.net]
継承は規模が大きければ使いどころがある
無理に使うと害悪なので、必要に迫られるまで使うな

216 名前:デフォルトの名無しさん [2023/09/25(月) 00:33:21.23 ID:OWge9pjh.net]
継承の良いところと悪いところを両方把握して使い所を見極めればいいんだよ
何でもかんでも継承するのがよくないというだけ

クラスベースの継承、プロトタイプ継承、委譲の3つを比較してそれぞれの良いところ悪いところをきちんとおさえること

217 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 00:35:49.52 ID:HQWAHROu.net]
継承が悪いとかもう何十年も前から言われてるから
それについてはもう語らずに置くけど

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

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

これもっと一般化して言うなら
単に抽象化の難しさってことでもあるけど

218 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 00:57:40.87 ID:aQ9tHgH2.net]
>>212
なんでそれが抽象化なんだよ
クラスベースオブジェクト指向ごときが何を抽象化したとw

219 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 01:08:01.38 ID:aQ9tHgH2.net]
>>210
大規模アプリケーションで広範囲・多階層に渡る継承を多用してソフトを構築したら地獄やでー
初期CDするときはいいんよ。
やっちゃえやっちゃえって感じでソースベースのメソッドなどの単位で差分プログラミングできるところ
どんどん継承活用して、流用性を高めたとか言って俯瞰せずコード書き進めちゃえばなんとかCDが進む
がしかし、ふと立ち止まり、あるいは時間がたち別の者が全体を見渡しなおすと
もうクロスファイルでソースベースマクロ展開みたいな継承がクチャンクチャンの依存のジャングルを成していて
gotoの嵐とはまた違った混沌に手がつけられなくなるぜ

220 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 01:10:18.53 ID:aQ9tHgH2.net]
入門書のサンプルコードレベルで一見便利そうに見えても
継承が有用なケースというものはあるにはあるが、
実践では実はあまり多くない

221 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 01:17:35.87 ID:aQ9tHgH2.net]
>>212
それは抽象化が難しいのではなく、
ソフトウエアプログラムの構造(アーキテクチャー)を
いわゆる迷信のように流布するクラスベースオブジェクト型にはめて現そうとしたけど
うまく現せないことに気が付

222 名前:いたってことだよ
いつまでも気が付かないよりはるかにまし
[]
[ここ壊れてます]

223 名前:デフォルトの名無しさん [2023/09/25(月) 10:14:44.94 ID:fq2bVCra.net]
>>214
それはクラス使わなくても変わらない。
混沌に見えるのは大規模になったことが原因であって継承が原因ではない。
クラスにも継承にも欠点は無い。
理解できない人がアホみたいに欠点欠点言ってるだけ。



224 名前:デフォルトの名無しさん [2023/09/25(月) 10:18:35.43 ID:8PlaAgAt.net]
継承があるメソッドは必ずoverrideするって決めたら
ベースクラスの事も思い出されて良いのでは?
まあ、無駄な処理挟むけど、忘れてしまうよりは良いのでは?

225 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 10:37:24.49 ID:2mEvB720.net]
書けてしまうのが問題
継承使うのはライブラリやフレームワークで留めて
応用では使わんことやね

226 名前:デフォルトの名無しさん [2023/09/25(月) 10:42:26.44 ID:PH+ByLf2.net]
継承使うかクラスコードコピペしまくるかの違いなら
継承の方が何万倍マシだろうに

227 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 11:40:39.55 ID:KK/E8/oR.net]
オブジェクト指向は
コードの再利用のためという建前で余計な文法を追加すること

228 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 12:33:16.07 ID:2IrvX93h.net]
顕わに目に見えないところでコード展開&マージが起きているのと同じなので
小さくて浅い階層なら把握できるが広範で深い階層に渡る依存のジャングルは
何かどうなっているのかわからなくなってしまう

229 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 12:33:41.40 ID:2IrvX93h.net]
>>220
委譲使いなよ

230 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 12:34:57.59 ID:IRZWO8eC.net]
>>220
それはもう既に発想がおかしいんだよ
そのままだとコピペになる(同じコードになる)ところはプログラムに当然発生して多くはコピペを回避すべきなんだけど
それを継承という間違ったやり方で解決するのは間違っているという話だよ
その時に継承しか知らないと継承するしかないと思いこんじゃう
だから継承禁止もしくは原則として継承を使わないというプロジェクトや会社があったり指導が入ったりするわけだよ
最近のプログラミング言語は継承自体を無くしたものが増えてるのもその流れだね

231 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 12:36:18.97 ID:2IrvX93h.net]
>>217
カプセル化と継承と多態
オブジェクト指向を乱用して構築した大規模アプリソフトウエアの目を覆いたくなるような分かりにくさは
単に大規模だからというだけのものではない厄介さがあるぞ

232 名前:デフォルトの名無しさん [2023/09/25(月) 12:58:59.41 ID:8PlaAgAt.net]
まあ、フレームワークで継承使わないとかどんだけ縛りだよって話だ罠

233 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 13:04:11.51 ID:2IrvX93h.net]
>>226
GUIのフレームワークではクラスベースオブジェクト指向の継承が有効な典型だよな。
まぁ、仕様・IFが長年練り上げられてきたことの結実ともいえるが



234 名前:デフォルトの名無しさん [2023/09/25(月) 13:09:20.84 ID:zA4g5CbZ.net]
>>225
その大規模アプリをオブジェクト指向じゃなくて何を使えばましになるの?

235 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 13:24:45.11 ID:2IrvX93h.net]
言語や開発ツールが規模の大きいソフトウエアの構築を支援するために提供しているモジュラリティ―のための
パッケージなどを利用した機能階層・分割設計の方がましだろ

236 名前:デフォルトの名無しさん [2023/09/25(月) 13:27:11.83 ID:+N84ygWf.net]
クラスは物とその動作の設計図なんだろうけど
動作だけをうまく整理してまとめて設計図にして、物はその動作によって加工されるだけでよくて、別に物自体が何かしてくれなくていい発想の方が自然なことは多いと思う
だからクラスベースだと頭の中と噛み合わなくて残念な気持ちになる

237 名前:デフォルトの名無しさん [2023/09/25(月) 13:56:58.76 ID:8PlaAgAt.net]
動作とか考えるからおかしくなる
役割と考えれば分かりやすい

238 名前:デフォルトの名無しさん [2023/09/25(月) 14:00:54.45 ID:dKK05iVY.net]
>>224
継承が不適切な場合もあれば適切な場合もある
それを見極めろよという話

盲目的にあらゆる継承がダメだと思ってんなら
それは盲目的に継承使うやつと同じレベルだぞ

239 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 14:01:29.91 ID:cH5L00do.net]
右に動かすメソッドが
WindowでもRectでもウンコでもなんでも動かせるのが自然で良いということかな?

240 名前:デフォルトの名無しさん [2023/09/25(月) 14:10:00.64 ID:8PlaAgAt.net]
オブジェクト指向より
エージェント指向

241 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 15:41:32.02 ID:bPtriFyH.net]
>>232
盲目的に継承は必要ないとしても支障はないと思うよ
今時の継承を持たないプログラミング言語も使うようになったけど継承がないことで支障が出たことがない
『継承は不要』の結論でよいと思う

242 名前:デフォルトの名無しさん [2023/09/25(月) 15:45:33.94 ID:8PlaAgAt.net]
他言語待ち出してオブジェクト指向言語の作法説いても意味が無いだろw
そんな事言った何でも不用で最後はアセンブラに回帰するわw

243 名前:デフォルトの名無しさん mailto:sage [2023/09/ ]
[ここ壊れてます]



244 名前:25(月) 15:54:54.23 ID:bPtriFyH.net mailto: >>236
継承を持たない各言語でもオブジェクト指向のプログラミングが自然に行える
継承だけが不要だとはっきりわかった
[]
[ここ壊れてます]

245 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 16:02:29.40 ID:1Oz14nin.net]
つまりライブラリ前提で作るくらい設計がしっかりしてるモノ以外、独自クラスを継承させまくるようなコードは難あり?

246 名前:デフォルトの名無しさん [2023/09/25(月) 16:13:29.29 ID:zA4g5CbZ.net]
>>235
あなたがどう思うのもあなたの問題なのでそれでよいと思う

247 名前:デフォルトの名無しさん [2023/09/25(月) 16:17:53.44 ID:8PlaAgAt.net]
>>237
オブジェクト指向なんて、C言語ですらそれなりに書けるんだが
なんで言語仕様有意義に使おうとしない?

248 名前:デフォルトの名無しさん [2023/09/25(月) 16:19:38.57 ID:8PlaAgAt.net]
まあ、ここでマイポリシー語るのもいいが、決めつけたり他人に強要するなよってな

249 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 16:28:37.60 ID:s0yAomY2.net]
客観的な根拠が一番強い
過去のしがらみのない最近の各プログラミング言語GoやNimやRustなどはいずれも継承を持たない
継承がないという以外の点では全く方向性の異なる各プログラミング言語が継承は不要という同じ結論に辿り着いている

250 名前:デフォルトの名無しさん [2023/09/25(月) 16:31:16.00 ID:E8ARCJfk.net]
継承に限ったことではないが Pros/Cons両面理解した上で状況に応じた使い分けがてきないうちはいつまで経っても素人のまま

251 名前:デフォルトの名無しさん [2023/09/25(月) 16:34:24.96 ID:8PlaAgAt.net]
else不用論者みたいな奴だなぁ

252 名前:デフォルトの名無しさん [2023/09/25(月) 16:50:14.80 ID:zA4g5CbZ.net]
しがらみとか考え方次第でどうとでもなるからそれは客観的じゃないよw

253 名前:デフォルトの名無しさん [2023/09/25(月) 16:52:29.42 ID:8PlaAgAt.net]
とある言語仕様に無いから全言語に渡って不用って
極端なw



254 名前:デフォルトの名無しさん [2023/09/25(月) 17:09:03.89 ID:F0mcF4FZ.net]
Rustはトレイトのデフォルト実装で継承の一部をまかなってる
それ以上の部分はマクロでコピペコードを生成するかそのままコピペすることで継承相当を実現している

255 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 17:11:03.38 ID:0g73jH4i.net]
必要と不要ではなく静的と動的で分けるのが、商業的でない中立な見方
継承は不要だから採用されないのではなく
動的ディスパッチだから動的言語に近い言語でしか採用されない

256 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 17:11:12.20 ID:s0yAomY2.net]
最近のプログラミング言語
【継承がない】Elixir、Go、Julia、Nim、Rust、Zig
【継承がある】Kotlin(Javaの後継)、Swift(Objective-Cの後継)
つまり過去のしがらみで継承を含めざるを得なかったKotlinとSwiftを除いて全ての言語に継承はない

257 名前:デフォルトの名無しさん [2023/09/25(月) 17:12:48.35 ID:moYp0tPu.net]
>>247
Derefが継承の代替として使われることもあるよ

258 名前:デフォルトの名無しさん [2023/09/25(月) 17:15:24.44 ID:hRr4oOqW.net]
>>249
広く使われてるGUIライブラリのある言語とそうでない言語の分類そのものですね

259 名前:デフォルトの名無しさん [2023/09/25(月) 18:09:35.84 ID:8PlaAgAt.net]
GUI処理書くのに継承無いとか嫌過ぎる

260 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 18:33:50.47 ID:0g73jH4i.net]
jsにはラムダがあるからGUI目的の継承をしなくなった

261 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 19:32:34.54 ID:UoPxhUhD.net]
>>227
> まぁ、仕様・IFが長年練り上げられてきたことの結実ともいえるが

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

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

>>238
ありなし語る必要ないと思う
やってみればいい
100%失敗するから
クソの山になるから

262 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 19:36:58.29 ID:FlTLze7i.net]
rust や go だと継承に相当するようなことができるのでいまいちピンとこないんだよね。

263 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 22:27:07.39 ID:SCrjiBQI.net]
>>247
ちょっと違うので補足するね
Rustのトレイトは機能・性質を示すもので型でもクラスでもなく変数(やその値)を持つこともなく各型に対して横断的な位置付けであり
クラスとその継承を排除したRustでは各型に対して必要な複数のトレイトを実装すなわち合成していくわけだけど
トレイトのメソッドは二種類に分かれていて
必須メソッド(required methods)は各型で実装コードが異なるメソッド
提供メソッド(provided methods)は各型で実装コードが共通にできるメソッドで必須メソッドやトレイト境界となる他のトレイトのメソッドを用いてデフォルト実装している
つまり機能性質を示すトレイトに対して各型固有の実装と各型共通の実装の二種類に整理しているだけにすぎないよ

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

もしマクロでメソッド実装を自動生成する場合はそれは各型固有の実装となる必須メソッド(required methods)に対してマクロの引数指定部分だけが各型で実装が異なる場合になりコピペではないね



264 名前:デフォルトの名無しさん [2023/09/26(火) 00:48:16.96 ID:mW7xEcGz.net]
Rustだとライブラリで定義済みのトレイト実装を少しカスタマイズしたいだけでも
変更の必要ないメソッドやトレイト実装も全て元の構造体に委譲するコードを書かないといけない

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

一般的OOPならメソッド1つオーバーライドするだけの簡単な作業

265 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 01:12:22.03 ID:i+iKqNf9.net]
>>257
発想がおかしい
そんなことが必要になることはない
使わないメソッドを生やす必要はない
もし元の型の全てのメソッドを生やす必要があるのならばその時はDerefを使えばよくて自動的に全てのメソッドが生えた形になる

266 名前:デフォルトの名無しさん [2023/09/26(火) 02:37:40.13 ID:LjeIbJUy.net]
Derefのそういう使い方はアンチパターンでしょ
Traitをカスタムするという発想がおかしいというのは同意
オーバーライドなんてするな

267 名前:デフォルトの名無しさん [2023/09/26(火) 09:00:17.20 ID:HGB+okJ7.net]
世の中、似た様な画面で項目だけ違う処理がたくさんあり過ぎる

268 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 09:10:04.28 ID:75MGfnhF.net]
型クラス構造を階層的に取り込んで内包していくような設計に
考えが凝り固まっているんじゃねーかな
昨日階層の抽象化は本来そういうものではなく
階層が上がるにつれより抽象的な構造に「昇華」していく筈だと思うが

269 名前:デフォルトの名無しさん [2023/09/26(火) 09:11:41.08 ID:HGB+okJ7.net]
まあ、フレームワークくらいにしか使わないけどな

270 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 09:32:49.19 ID:75MGfnhF.net]
>>261
より複合的な構造に融合していくことで
機能階層の抽象化を現す、というか代用しようとしたところに
どだい無理があったんだ
やりにくいわけだよ

271 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 09:36:16.66 ID:TLEYFp/r.net]
以前Javaのユーザグループミーティングに出席した際、James Gosling(Javaの生みの親)がメインの講演者として招かれていました。
すばらしいQ&Aセッションの途中に、こんな質問が出ました。
「もう一度最初からJavaを作り直すとしたら、どこを変更したいですか?」
答えは「クラスを除外するでしょうね」というものでした。
笑いが静まった後、彼が説明したのは、本当の問題はクラス自体ではなく実装継承(extendsの関係)なのだということでした。
インターフェースによる継承(implementsの関係)のほうが望ましいのです。できる限り実装継承は避けたほうがよいでしょう。

272 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 09:37:57.06 ID:75MGfnhF.net]
カプセル化とアクセサーがまたクソなんだよな
ソフトウエアの規模拡大に伴う複雑さをより増長させる

273 名前:デフォルトの名無しさん [2023/09/26(火) 09:45:45.09 ID:Pu+bW/hr.net]
だから、エージェント指向だよ



274 名前:デフォルトの名無しさん [2023/09/26(火) 09:49:57.35 ID:fxfYOiWX.net]
おっと、明後日の方向から不思議な球が飛んできたw

275 名前:デフォルトの名無しさん [2023/09/26(火) 09:56:26.60 ID:Pu+bW/hr.net]
同一マシン内である事すら不用な仕組み
全ての手続きはメッセージでやり取りされる
ゆえにアクセサは各エージェントに1組だけ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<283KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef