探検
オブジェクト指向はオワコン
■ このスレッドは過去ログ倉庫に格納されています
2023/08/26(土) 22:00:53.85ID:H4l7y46b
最近の言語には採用されないことが増えている
652デフォルトの名無しさん
2024/01/19(金) 12:38:25.66ID:SK8TlxrV オブジェクト指向がオワコンというのは正しくて、よりインスタンス間のルール管理に注力した契約プログラムとかに発展的解消してんじゃないのかね。
653デフォルトの名無しさん
2024/01/19(金) 12:44:39.23ID:arzVgFZ3 >>650
インスタンス間でやり取りするときのインターフェイスとプロトコルを確定(カプセル化)することがまさしく不要な情報の隠蔽なのでは?
それでカプセル化したらポリモーフィズムに基づいてアクセスさせるか~みたいな感じでしょ?
インスタンス間でやり取りするときのインターフェイスとプロトコルを確定(カプセル化)することがまさしく不要な情報の隠蔽なのでは?
それでカプセル化したらポリモーフィズムに基づいてアクセスさせるか~みたいな感じでしょ?
654デフォルトの名無しさん
2024/01/19(金) 12:45:36.30ID:arzVgFZ3 そんでカプセル化したものを継承させるのはプログラムが煩雑になるからやめましょうよ、継承の実装を省くならクラスもいらないねってそういう話じゃん
655デフォルトの名無しさん
2024/01/19(金) 12:52:25.37ID:rg+QtK0B656デフォルトの名無しさん
2024/01/19(金) 12:54:01.11ID:SK8TlxrV657デフォルトの名無しさん
2024/01/19(金) 12:54:57.24ID:iTaoyDeQ オンラインゲームのアップデートは「カプセル化したものを継承」では?
>>654
>そんでカプセル化したものを継承させるのはプログラムが煩雑になるからやめましょうよ、
大型アップデート情報 バージョン6.5[後期] (2023/11/21 更新)
https://hiroba.dqx.jp/sc/topics/detail/0e4f5cc9f4f3f7f1651a6b9f9214e5b1/
システムのアップデートは一般的に「継承」と自分は思うが、丸ごと作り直したほうが良いのかな?
>>654
>そんでカプセル化したものを継承させるのはプログラムが煩雑になるからやめましょうよ、
大型アップデート情報 バージョン6.5[後期] (2023/11/21 更新)
https://hiroba.dqx.jp/sc/topics/detail/0e4f5cc9f4f3f7f1651a6b9f9214e5b1/
システムのアップデートは一般的に「継承」と自分は思うが、丸ごと作り直したほうが良いのかな?
658デフォルトの名無しさん
2024/01/19(金) 13:07:12.61ID:iTaoyDeQ 私見としてはオンラインゲームと言えども、大型バージョンアップ時は丸ごと作り直したほうがいいと思う
ドラクエ10のバージョン7ということなら、すべてを再インストール化でもいい
ドラクエ10のバージョン7ということなら、すべてを再インストール化でもいい
659デフォルトの名無しさん
2024/01/19(金) 13:15:20.79ID:arzVgFZ3 >>657
オンラインゲームのアップデートってなに?もっと具体的に頼む
バグ修正?新機能の追加?新キャラの追加?
バグ修正や新機能はカプセル化の対応部分の丸ごと書き換え等いろいろあるだろうね
新キャラ追加はカプセル化したクラスモデルを継承して作り上げて、それをロードしてやれば、ポリモーフィズムに基づいて動いてくれるだろうね
オンラインゲームのアップデートってなに?もっと具体的に頼む
バグ修正?新機能の追加?新キャラの追加?
バグ修正や新機能はカプセル化の対応部分の丸ごと書き換え等いろいろあるだろうね
新キャラ追加はカプセル化したクラスモデルを継承して作り上げて、それをロードしてやれば、ポリモーフィズムに基づいて動いてくれるだろうね
660デフォルトの名無しさん
2024/01/19(金) 13:17:20.00ID:2+AapLKd さすがにアプデを継承と考えるのはややこしくなるからやめたほうがいい
661デフォルトの名無しさん
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
>オンラインゲームのアップデートってなに?もっと具体的に頼む
オンラインゲームというのは、リリース後も次々とアップデートを繰り返し、機能が増えていきます。
よって、一番最初の設計で、どれだけ未来の変化を予測して、準備しておけるかが大事になってきます。
後になって苦しまないために、最初は多少面倒でも、柔軟でわかりやすい、変化に耐えうる設計を心がけたいものです。
https://developer.aiming-inc.com/programming/design-battle-program/
オブジェクト指向を初めて勉強していたころ、クラスの継承は(個人的には)理解しやすかったですが、
インターフェースはいまいち利点が分かりづらい印象がありました。
そこで、デザインパターンのひとつ「Observerパターン」を取り上げて、
継承とインターフェースの使用法を見ていきます。Observerパターンは先ほどの一斉攻撃にも近いパターンになります。
https://qiita.com/kcpoipoi/items/e6c495e7a481e02847d8
662デフォルトの名無しさん
2024/01/19(金) 14:00:28.63ID:arzVgFZ3663デフォルトの名無しさん
2024/01/19(金) 14:14:12.14ID:arzVgFZ3 あ、継承をゴミと言ってるのであって、インターフェースやトレイトは存分に使うべきものだから
勘違いしてもらったら困るぞ
勘違いしてもらったら困るぞ
664デフォルトの名無しさん
2024/01/19(金) 14:21:52.28ID:arzVgFZ3 新キャラ新技くらいならカプセル化の継承でもなくてインターフェースをただ実装するだけで済ませてるか>>661
自分の作品見てたら画面追加は継承を使ってたわ
自分の作品見てたら画面追加は継承を使ってたわ
665デフォルトの名無しさん
2024/01/19(金) 14:23:53.15ID:2Txscu7W666デフォルトの名無しさん
2024/01/19(金) 14:33:48.49ID:arzVgFZ3667デフォルトの名無しさん
2024/01/19(金) 14:51:07.26ID:2+AapLKd お勉強発表会はたのちいね
668デフォルトの名無しさん
2024/01/19(金) 14:54:55.85ID:arzVgFZ3 >>667
むちゃくちゃ楽しい
むちゃくちゃ楽しい
669デフォルトの名無しさん
2024/01/19(金) 14:59:58.61ID:2Txscu7W >>667
と暇人が申しております
と暇人が申しております
670デフォルトの名無しさん
2024/01/19(金) 17:41:08.81ID:wxu2zgr7671デフォルトの名無しさん
2024/01/19(金) 18:11:39.79ID:Hi84WC+x672デフォルトの名無しさん
2024/01/19(金) 18:21:46.43ID:9QtN1Vnk >>670
つまりinterfaceで十分ってことだな
つまりinterfaceで十分ってことだな
673デフォルトの名無しさん
2024/01/19(金) 19:20:32.13ID:iTaoyDeQ _w 、... ョ ┌┐ ィ ′
 ̄+ ヘe、 j「. .¬气¬''..~''~ ,.ルw、.ーu、す
^^"~~l|~~^''' ォ′ .,. l| ┐ .√ j| _~+,.、.
. .,/. ょ_/ 、j「 { `¬.. 〃 .、l| 、
.. ~^. ~ ` ~^
. ;. ョ __
. j| ~ラ¬¬+ |.  ̄.  ̄..
. オ |.. ォ ,、
k、 ,j〃. L_. _ェ ~'――'~. ^^^^^^ ̄´
 ̄′  ̄ ̄
 ̄+ ヘe、 j「. .¬气¬''..~''~ ,.ルw、.ーu、す
^^"~~l|~~^''' ォ′ .,. l| ┐ .√ j| _~+,.、.
. .,/. ょ_/ 、j「 { `¬.. 〃 .、l| 、
.. ~^. ~ ` ~^
. ;. ョ __
. j| ~ラ¬¬+ |.  ̄.  ̄..
. オ |.. ォ ,、
k、 ,j〃. L_. _ェ ~'――'~. ^^^^^^ ̄´
 ̄′  ̄ ̄
674デフォルトの名無しさん
2024/01/19(金) 19:28:18.36ID:r1TqRAYd 一人で書き込みお疲れ様。
675デフォルトの名無しさん
2024/01/19(金) 19:43:32.99ID:SK8TlxrV >>671
熟練の設計者が慣れた問題領域やるんでもなければ無理だろ。
熟練の設計者が慣れた問題領域やるんでもなければ無理だろ。
676デフォルトの名無しさん
2024/01/19(金) 19:52:40.51ID:SK8TlxrV677デフォルトの名無しさん
2024/01/19(金) 20:09:04.02ID:XrKZZkrv >>675
超大型建築より普通の一軒家の方が数、つまりニーズが圧倒的に多い
アプリは常にスケールする可能性がある、というのは理論的な話で実際スケールするアプリなんかほんの一握り。結局作ってそのままなんていくらでもある。変更が無いケースで熟練どうたらとか全く無関係。
超大型建築より普通の一軒家の方が数、つまりニーズが圧倒的に多い
アプリは常にスケールする可能性がある、というのは理論的な話で実際スケールするアプリなんかほんの一握り。結局作ってそのままなんていくらでもある。変更が無いケースで熟練どうたらとか全く無関係。
678デフォルトの名無しさん
2024/01/19(金) 20:34:16.00ID:SK8TlxrV >>677
普通の一軒家とか、問題領域の知識が無くて失敗する事例の宝庫だろ。あとになって大抵の人間は「コンセントが足りない」と言うしな。
変更しないままなのは「変更しなくていい」じゃなくて「変更は不可能に近いから不便・危険でも諦める」だからな。
普通の一軒家とか、問題領域の知識が無くて失敗する事例の宝庫だろ。あとになって大抵の人間は「コンセントが足りない」と言うしな。
変更しないままなのは「変更しなくていい」じゃなくて「変更は不可能に近いから不便・危険でも諦める」だからな。
679デフォルトの名無しさん
2024/01/19(金) 20:49:36.09ID:XrKZZkrv 結局継承で都合が悪いケースなんて極一部というのが現実。
ヤグニの原則に反して嬉しいのは客の金でただで勉強・実験したいエンジニアだけ。
ヤグニの原則に反して嬉しいのは客の金でただで勉強・実験したいエンジニアだけ。
680デフォルトの名無しさん
2024/01/19(金) 21:05:02.67ID:SK8TlxrV681デフォルトの名無しさん
2024/01/19(金) 21:27:25.19ID:K5SD+kWD >>672
インターフェースだけだとコピペ継承が乱立するんだよ
そこでインターフェースのデフォルト実装等クラス継承と同じ実装継承を使うことになる
でもクラス継承はとにかく悪だと思ってる人は実装継承のメリットとデメリットを正しく理解できてないから結局同じ問題を引き起こすだけ
インターフェースだけだとコピペ継承が乱立するんだよ
そこでインターフェースのデフォルト実装等クラス継承と同じ実装継承を使うことになる
でもクラス継承はとにかく悪だと思ってる人は実装継承のメリットとデメリットを正しく理解できてないから結局同じ問題を引き起こすだけ
682デフォルトの名無しさん
2024/01/19(金) 22:05:02.77ID:yy9dhl7c683デフォルトの名無しさん
2024/01/19(金) 22:20:13.70ID:XrKZZkrv >>680
5chで勝手にクソ仕様認定してるクソレスを気にする人はいないw
5chで勝手にクソ仕様認定してるクソレスを気にする人はいないw
684デフォルトの名無しさん
2024/01/19(金) 22:21:58.98ID:sTJV5iPD 顧客に設計なんか分からないから突き進むだろ
685デフォルトの名無しさん
2024/01/19(金) 22:22:17.78ID:EWU8L+d2 >>681
その点ではRustのtraitが最も良いね
Rustのtraitでのデフォルト実装は各型のメンバーや固有メソッドを呼び出せないので実装継承の問題が起きない
そのtrait(とそのtrait制約)のメソッドしか呼び出せないから移譲と合成の形になる
その点ではRustのtraitが最も良いね
Rustのtraitでのデフォルト実装は各型のメンバーや固有メソッドを呼び出せないので実装継承の問題が起きない
そのtrait(とそのtrait制約)のメソッドしか呼び出せないから移譲と合成の形になる
686デフォルトの名無しさん
2024/01/19(金) 22:54:39.62ID:2Txscu7W >>685
こういう感じで言語によって前提が違う場合があるから抽象的な議論の有効性はかなり微妙
こういう感じで言語によって前提が違う場合があるから抽象的な議論の有効性はかなり微妙
687デフォルトの名無しさん
2024/01/19(金) 23:13:57.01ID:k/iqMx14 >>685
はい残念
Traitのデフォルト実装も実装継承だからクラス継承のデメリットの大半を”継承”してる
メリットとデメリットを理解して使い分けられるようにならないうちは結局のところ何使っても同じ
はい残念
Traitのデフォルト実装も実装継承だからクラス継承のデメリットの大半を”継承”してる
メリットとデメリットを理解して使い分けられるようにならないうちは結局のところ何使っても同じ
688デフォルトの名無しさん
2024/01/19(金) 23:19:40.83ID:EWU8L+d2689デフォルトの名無しさん
2024/01/19(金) 23:28:42.74ID:2Txscu7W 何で堂々と嘘つく?
嘘言った人謝ってください
嘘言った人謝ってください
690デフォルトの名無しさん
2024/01/19(金) 23:32:10.71ID:EWU8L+d2 >>687はコードを書いたことがないのか
あるいは意図的に嘘ついているのか
あるいは意図的に嘘ついているのか
691デフォルトの名無しさん
2024/01/19(金) 23:44:00.48ID:jOoBVxG+ インターフェースは継承と違ってインターフェースもとのプロパティをオーバーロードして定義し直すから、継承のわけわからん隠蔽されてないプロパティでごっちゃごちゃにならないのがいい(java民)
692デフォルトの名無しさん
2024/01/20(土) 02:15:01.44ID:pJVjc8l1 オブシコくんどこいったん?
インターフェイスは人間が理解しやすくするためのものだと力説しなよ
インターフェイスは人間が理解しやすくするためのものだと力説しなよ
693デフォルトの名無しさん
2024/01/20(土) 02:28:42.63ID:9SMgv4xr 疑似マルチスレッド君も反応ないんやけど、こないならQiita更新してくれよー
694デフォルトの名無しさん
2024/01/20(土) 03:07:14.53ID:ppE6WkEJ695デフォルトの名無しさん
2024/01/20(土) 03:09:43.76ID:ppE6WkEJ696デフォルトの名無しさん
2024/01/20(土) 05:41:23.80ID:OqC8H1ED >>694
そもそもはある具体型A(もしくはクラスA以下同様)の実装が別の具体型Bの実装として継承されることを指すよね
一方でRustのトレイトのデフォルト実装では具体型の実装は全く出て来なくて具体型とは切り離されているよね
したがってある具体型の実装が別の具体型の実装として継承されることは起きないため明確かな
そもそもはある具体型A(もしくはクラスA以下同様)の実装が別の具体型Bの実装として継承されることを指すよね
一方でRustのトレイトのデフォルト実装では具体型の実装は全く出て来なくて具体型とは切り離されているよね
したがってある具体型の実装が別の具体型の実装として継承されることは起きないため明確かな
697デフォルトの名無しさん
2024/01/20(土) 09:43:00.30ID:tKcafxZR 継承用の基底クラスを提供するのはライブラリやフレームワークで、フロント屋はその提供された基底クラスを継承して使う
フロント屋は用意された基底クラスを使う以外はインターフェースやシールドクラスで継承もどきをやるだけで事足りてる
フロント屋は用意された基底クラスを使う以外はインターフェースやシールドクラスで継承もどきをやるだけで事足りてる
698デフォルトの名無しさん
2024/01/20(土) 10:27:27.05ID:mMSNo4e1 staticおじさんが結局正しかったね。
699デフォルトの名無しさん
2024/01/20(土) 10:38:22.56ID:WbtYcj4O うん、知らんけど
700デフォルトの名無しさん
2024/01/20(土) 11:13:01.53ID:ppE6WkEJ >>696
いま思い出したことなんだけど。具体型の継承はできないと思うけど、traitをtraitに実装するということが出来る
traitAにデフォルト実装を書いて、traitBに実装すると、traitBを実装した型はtraitAのデフォルト実装を引き継ぐ
いま思い出したことなんだけど。具体型の継承はできないと思うけど、traitをtraitに実装するということが出来る
traitAにデフォルト実装を書いて、traitBに実装すると、traitBを実装した型はtraitAのデフォルト実装を引き継ぐ
701デフォルトの名無しさん
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を実装するため自動的に利用可能)
}
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を実装するため自動的に利用可能)
}
702デフォルトの名無しさん
2024/01/20(土) 11:37:18.66ID:ppE6WkEJ Rustに多重継承は存在しないという場合、意味的にはフィールドを継承しないことと、
スーパートレイトを使用すれば、トレイトのデフォルト実装を別のトレイトに暗黙では引き継がないことを指すんじゃないかな
かな、というのは、まあここら辺は人によって受け取り方が違うから議論しても仕方のないことなんだけど
スーパートレイトを使用すれば、トレイトのデフォルト実装を別のトレイトに暗黙では引き継がないことを指すんじゃないかな
かな、というのは、まあここら辺は人によって受け取り方が違うから議論しても仕方のないことなんだけど
703デフォルトの名無しさん
2024/01/20(土) 12:00:42.41ID:+uoYRouQ704デフォルトの名無しさん
2024/01/20(土) 12:26:39.60ID:pJVjc8l1 実装継承ではないのか、実装継承における問題が発生しないだけなのか、どっちなんだい?
705デフォルトの名無しさん
2024/01/20(土) 12:38:21.50ID:+uoYRouQ706デフォルトの名無しさん
2024/01/20(土) 12:39:32.26ID:BTn7foKi 実装継承ができないと不便じゃない?
リソース管理を一元化したくなったりとかしないの?
リソース管理を一元化したくなったりとかしないの?
707デフォルトの名無しさん
2024/01/20(土) 12:40:39.50ID:BTn7foKi Rustにも実装継承はあるんじゃないかな
708デフォルトの名無しさん
2024/01/20(土) 12:53:48.29ID:UT8XEnd7709デフォルトの名無しさん
2024/01/20(土) 12:58:32.97ID:S3QqAIL4 ジェネリックで書いてコンパイラに整合性を取らせる
うむ、完璧だ
うむ、完璧だ
710デフォルトの名無しさん
2024/01/20(土) 13:04:04.37ID:BTn7foKi Structの合成があるじゃないか
実装継承の問題が発生しないのはわかったけど
実装継承の便利さが失われてたら元も子もないじゃん
リソース管理を一元化したくなったりとかしないの?
実装継承の問題が発生しないのはわかったけど
実装継承の便利さが失われてたら元も子もないじゃん
リソース管理を一元化したくなったりとかしないの?
711デフォルトの名無しさん
2024/01/20(土) 13:08:56.68ID:BTn7foKi オブシコは機能とデータを一緒に管理することだけど
それができないRustは不便なのでRustは滅びます
それができないRustは不便なのでRustは滅びます
712デフォルトの名無しさん
2024/01/20(土) 13:16:14.55ID:UT8XEnd7713デフォルトの名無しさん
2024/01/20(土) 13:18:48.25ID:BTn7foKi >>712
データにメソッドを生やして継承もできるん?
データにメソッドを生やして継承もできるん?
714デフォルトの名無しさん
2024/01/20(土) 13:20:04.95ID:BTn7foKi オブシコにおいて実装の継承は正義です
Rustに正義はあるのかを問うています
Rustに正義はあるのかを問うています
715デフォルトの名無しさん
2024/01/20(土) 13:34:19.14ID:UT8XEnd7716デフォルトの名無しさん
2024/01/20(土) 13:35:44.30ID:JKkFvgES 誰かさ、適当な文法で単一のC言語ソースファイルを出力するトランスレータ作ってくんない?
仮想関数テーブルとかRTTIとかそれならなんとかなるだろ?
仮想関数テーブルとかRTTIとかそれならなんとかなるだろ?
717デフォルトの名無しさん
2024/01/20(土) 13:36:27.03ID:BTn7foKi じゃあオブシコはオワコンかも知れませんね
718デフォルトの名無しさん
2024/01/20(土) 13:44:22.78ID:tKcafxZR さすがRust有識者だ😳
トレイトへの理解度が高い
トレイトへの理解度が高い
719デフォルトの名無しさん
2024/01/20(土) 14:51:20.08ID:pJVjc8l1 継承はすべてのオブジェクトに共通のデータと手続きを強制するからな
途中で一部しか共通してないオブジェクトの存在が判明したら、
クラスツリーをがっつり再設計しないといけなくなる
こんなものをオブシコに入れちゃったやつの罪は深い
途中で一部しか共通してないオブジェクトの存在が判明したら、
クラスツリーをがっつり再設計しないといけなくなる
こんなものをオブシコに入れちゃったやつの罪は深い
720デフォルトの名無しさん
2024/01/20(土) 15:05:28.23ID:UvH2GUkc >機能とデータを一緒に
カリー化された関数を部分適用すればいい
じゃあ何故カリー化と部分適用はオワコンではないのか
無意味だからだ
意味を見出せないから終わったという判断もできない
カリー化された関数を部分適用すればいい
じゃあ何故カリー化と部分適用はオワコンではないのか
無意味だからだ
意味を見出せないから終わったという判断もできない
721デフォルトの名無しさん
2024/01/20(土) 15:06:09.94ID:ppE6WkEJ 能力の高いプログラマーしかプロジェクトに参加しないこと前提ならば継承の副作用は目立たないけど
Javaのような大規模開発向けの言語に継承を入れたのは間違ってたなあ
Javaの仕様を考えた時は、親クラスは能力の高いエンジニアが書くという前提だったんだろうね
Javaのような大規模開発向けの言語に継承を入れたのは間違ってたなあ
Javaの仕様を考えた時は、親クラスは能力の高いエンジニアが書くという前提だったんだろうね
722デフォルトの名無しさん
2024/01/20(土) 15:25:38.27ID:WbtYcj4O723デフォルトの名無しさん
2024/01/20(土) 15:56:26.55ID:BTn7foKi 大規模開発向けにはRustを採用すべきだ
724デフォルトの名無しさん
2024/01/20(土) 16:02:56.24ID:JKkFvgES アスペクト指向との統一解ってことなのかな
ろくに勉強してないんだけど
ろくに勉強してないんだけど
725デフォルトの名無しさん
2024/01/20(土) 16:28:12.97ID:JKkFvgES もともとアスペクト指向の提唱者たちが言い始めたことだからね
どんなに上手くクラスツリーを設計しても何らかのコードを横断的に埋め込みたくなるニーズがなくならないって
どんなに上手くクラスツリーを設計しても何らかのコードを横断的に埋め込みたくなるニーズがなくならないって
726デフォルトの名無しさん
2024/01/20(土) 17:05:53.11ID:pJVjc8l1 >>722
つまんねーのに無理すんな
つまんねーのに無理すんな
727デフォルトの名無しさん
2024/01/20(土) 23:20:19.94ID:ppE6WkEJ Rustは学習コストが重すぎるからねえ
スタックフレームとか、ライフタイムとか、そこら辺の知識は普通のPGには余計だろう
Rustのスクリプト言語版が出たら流行るかなー
スタックフレームとか、ライフタイムとか、そこら辺の知識は普通のPGには余計だろう
Rustのスクリプト言語版が出たら流行るかなー
728デフォルトの名無しさん
2024/01/21(日) 00:07:59.00ID:bASnz3O7 RustじゃなくてもGoくらいでちょうどいい
729デフォルトの名無しさん
2024/01/21(日) 08:12:46.78ID:yW5L0zfB730デフォルトの名無しさん
2024/01/21(日) 11:29:38.85ID:oaoSrz7+ >>729
俺のことは関係ない、俺は世の中のことを言ってる
そんなことも読み取れない認知能力チンパンジーの分際で
俺様に文句言うなんて100年早えわ
お前はRustだけ頑張ってろアホンダラ
俺は日本の未来を考えとく
俺のことは関係ない、俺は世の中のことを言ってる
そんなことも読み取れない認知能力チンパンジーの分際で
俺様に文句言うなんて100年早えわ
お前はRustだけ頑張ってろアホンダラ
俺は日本の未来を考えとく
731デフォルトの名無しさん
2024/01/21(日) 11:31:12.83ID:oaoSrz7+ Rustの未来も俺が決める
Rustはもっとオブシコ頑張ったが良い
Rustは学習コストが高すぎると言われている
これはオブシコで解決できるはずだ
Rustはもっとオブシコ頑張ったが良い
Rustは学習コストが高すぎると言われている
これはオブシコで解決できるはずだ
732デフォルトの名無しさん
2024/01/21(日) 13:06:59.82ID:JVSLhHIM Rustってそんなに学習コストが高いか?
C++11以降のがトチ狂ってると思うんだけど
C++11以降のがトチ狂ってると思うんだけど
733デフォルトの名無しさん
2024/01/21(日) 13:40:55.67ID:FqjwRk5K スマポより生ポのが気持ちいい
だからわたしは生ポインタ
だからわたしは生ポインタ
734デフォルトの名無しさん
2024/01/21(日) 15:09:59.21ID:LGH4j5ie >>705
>まず実装継承とは具体型の実装が別の具体型に継承されることだから該当しない
これは間違い
実装継承とは文字通り「実装」が「継承」されること <== この意味を理解できるかどうかが重要
実装継承における問題というのはこれも文字通り「実装」が「継承」されることによって起きる
継承元が具体型扱いかどうかは関係ない
>>704
>実装継承ではないのか、実装継承における問題が発生しないだけなのか、どっちなんだい?
Rustのトレイトデフォルト実装は実装継承の一種でもあるし、実装継承ににおける問題も発生する
C++等一部の言語で発生する実装継承における問題の一つが発生しにくいようになってるだけ
>まず実装継承とは具体型の実装が別の具体型に継承されることだから該当しない
これは間違い
実装継承とは文字通り「実装」が「継承」されること <== この意味を理解できるかどうかが重要
実装継承における問題というのはこれも文字通り「実装」が「継承」されることによって起きる
継承元が具体型扱いかどうかは関係ない
>>704
>実装継承ではないのか、実装継承における問題が発生しないだけなのか、どっちなんだい?
Rustのトレイトデフォルト実装は実装継承の一種でもあるし、実装継承ににおける問題も発生する
C++等一部の言語で発生する実装継承における問題の一つが発生しにくいようになってるだけ
735デフォルトの名無しさん
2024/01/21(日) 21:44:12.50ID:r/H1GIpX736デフォルトの名無しさん
2024/01/22(月) 00:42:25.64ID:CM1Sn+EA トレイトはインターフェースとも継承とも違う新しい考え
そこを誤解してはならない
そこを誤解してはならない
737デフォルトの名無しさん
2024/01/22(月) 02:11:51.31ID:d/h6/f8z738デフォルトの名無しさん
2024/01/22(月) 02:24:04.21ID:WDLNMI9J >>737
Rustに実装継承はない
Rustのトレイトのデフォルト実装からは、いわゆるメンバ変数やメンバ関数にアクセスできない
メンバ変数やメンバ関数にアクセスできる部分はトレイトのデフォルト実装から分離されている
その部分はトレイトを実装するときに各型で個別に実装する
したがってRustでは実装継承はなく問題も発生しない
Rustに実装継承はない
Rustのトレイトのデフォルト実装からは、いわゆるメンバ変数やメンバ関数にアクセスできない
メンバ変数やメンバ関数にアクセスできる部分はトレイトのデフォルト実装から分離されている
その部分はトレイトを実装するときに各型で個別に実装する
したがってRustでは実装継承はなく問題も発生しない
739デフォルトの名無しさん
2024/01/22(月) 12:41:11.25ID:SpT9Xs4x 実装継承は派生側に開放する部分と基底側で閉鎖する部分の管理が難しいから、やはり「早すぎる最適化」になりがち。
開放/閉鎖の原則を守るためには基底側と派生側のインターフェイスとプロトコルを厳密に管理する必要があるけど、そこまでサポートしているオブジェクト指向言語てあったっけ?
開放/閉鎖の原則を守るためには基底側と派生側のインターフェイスとプロトコルを厳密に管理する必要があるけど、そこまでサポートしているオブジェクト指向言語てあったっけ?
740デフォルトの名無しさん
2024/01/22(月) 12:43:36.23ID:SpT9Xs4x741デフォルトの名無しさん
2024/01/22(月) 15:21:25.58ID:eIK4O4RB 最新鋭のRust言語と同等の最小コンパイル単位でよければもっとクリーンなオブジェクト指向言語があり得たって話で、
残念なことに30年前のハードウェアでやんなきゃいけなかった
仮想関数の方がデフォであるようなC++
文字列じゃなくて関数ポインタの配列のインデックスであるようなObjective-C
ガベコレの無いJava
こだわる人は今からでも作ればいい
ソースを一気に引数に取って単一のC言語のソースファイルを出力するトランスレータを作ればいい
残念なことに30年前のハードウェアでやんなきゃいけなかった
仮想関数の方がデフォであるようなC++
文字列じゃなくて関数ポインタの配列のインデックスであるようなObjective-C
ガベコレの無いJava
こだわる人は今からでも作ればいい
ソースを一気に引数に取って単一のC言語のソースファイルを出力するトランスレータを作ればいい
742デフォルトの名無しさん
2024/01/23(火) 22:17:38.84ID:3AfREKFo オブシコプログラムの難しいところってオブジェクト同士の連携が
オブジェクトに書かれるところだと思うんだよ
全体のフローがよくわからなくなる
オブジェクトには自律的に他のオブジェクトと連携することをやらなくさせて
コーディネートする処理を関数型や手続き型で書くのがいんじゃないかね
昔はオブジェクトが知性を持ってるかのように書くのが良いオブシコだと言われてたけど
スパゲティ製造工場にしかならんかった
オブジェクトに書かれるところだと思うんだよ
全体のフローがよくわからなくなる
オブジェクトには自律的に他のオブジェクトと連携することをやらなくさせて
コーディネートする処理を関数型や手続き型で書くのがいんじゃないかね
昔はオブジェクトが知性を持ってるかのように書くのが良いオブシコだと言われてたけど
スパゲティ製造工場にしかならんかった
743デフォルトの名無しさん
2024/01/23(火) 22:19:52.82ID:lLzKFCPg ObjectiveCの[]←こんな奴でメッセージ送ると幸せになれるよ
744デフォルトの名無しさん
2024/01/23(火) 22:19:59.28ID:3AfREKFo フロー制御をオブシコでやりだしたら危険信号、これがぼくの経験から導き出された結論
745デフォルトの名無しさん
2024/01/23(火) 22:23:03.86ID:PPNQFWhj おしりがおまんこになっちゃうのがオブジェクト指向
746デフォルトの名無しさん
2024/01/24(水) 00:11:12.99ID:X/KtyNlm >>738
基本的な実装継承の問題を理解してないから話噛み合わないね
メンバ変数・メンバ関数の話はFragile Base Class Problem(FBCP)について言及してるつもりなんだろうけど
メンバ変数やメンバ関数にアクセスできるかどうかはFBCPの根本的な発生条件とは関係ないよ
継承元のメソッド実装がオーバーライドされた継承先のメソッドを呼び出せるならFBCPは発生する
当たり前だけどFBCPは実装継承の問題のうちの一つであってすべてではないからね
ちなみにトレイトのデフォルト実装も別のトレイトのメソッド経由でメンバ変数やメンバ関数にアクセスできる
クラス継承でベースクラスのメソッドがオーバーライドされたメソッド経由でメンバ変数やメンバ関数にアクセスするのと同じ
基本的な実装継承の問題を理解してないから話噛み合わないね
メンバ変数・メンバ関数の話はFragile Base Class Problem(FBCP)について言及してるつもりなんだろうけど
メンバ変数やメンバ関数にアクセスできるかどうかはFBCPの根本的な発生条件とは関係ないよ
継承元のメソッド実装がオーバーライドされた継承先のメソッドを呼び出せるならFBCPは発生する
当たり前だけどFBCPは実装継承の問題のうちの一つであってすべてではないからね
ちなみにトレイトのデフォルト実装も別のトレイトのメソッド経由でメンバ変数やメンバ関数にアクセスできる
クラス継承でベースクラスのメソッドがオーバーライドされたメソッド経由でメンバ変数やメンバ関数にアクセスするのと同じ
747デフォルトの名無しさん
2024/01/24(水) 00:14:41.63ID:1XOdKji/ >>744
イベントループをブラックボックス化したのは
「次のイベント」の種類ごとに分岐する際にifならbool値、switchなら整数のようなものしか
使えない言語の問題をライブラリでなんとかしようとした結果だ
イベントループをブラックボックス化したのは
「次のイベント」の種類ごとに分岐する際にifならbool値、switchなら整数のようなものしか
使えない言語の問題をライブラリでなんとかしようとした結果だ
748デフォルトの名無しさん
2024/01/24(水) 00:16:21.62ID:X/KtyNlm ついでに言っておくとRustのDeref/DerefMutも実装継承の一種なんだけどこっちはFBCPは発生しない
749デフォルトの名無しさん
2024/01/24(水) 02:14:43.30ID:fgSFyL+S750デフォルトの名無しさん
2024/01/24(水) 12:30:29.92ID:JqKAHMdE 影響力ゼロの人がどれだけオワコンオワコン繰り返しても全く影響無い。
751デフォルトの名無しさん
2024/01/24(水) 13:30:09.74ID:1XOdKji/ それなら人の力ではなく天変地異の影響を主に想定したほうがいい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★5 [BFU★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【ローソン】ロゴの「L」で誤解生んだコーヒーカップ、デザイン変更へ 在庫使い切る3か月後にリニューアル [ぐれ★]
- 【悲報】SANA、発言撤回拒否 [769931615]
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 日本「中国製品買うの辞めます。中国旅行辞めます。」 中国「あぁ、そう…」
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
- 「遺体、安倍、会いたい」👈逆から読んでみて [175344491]
- お前らの知能指数教えてや
