「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていう雑談スレ。
・C/C++ <=> Rust いまさら聞けない移行質問なども適当にどぞ
・レスバはじめんのは勝手だけど、面白いこと・へぇなこと書いたヤツが優勝
・マな話は、マのスレもご活用ください↓
前スレ: 結局C++とRustってどっちが良いの? 7traits
http://mevius.5ch.net/test/read.cgi/tech/1693451813/
関連スレ(マ板): Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理ミス。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
結局C++とRustってどっちが良いの? 8traits
■ このスレッドは過去ログ倉庫に格納されています
2023/10/28(土) 13:45:00.38ID:fh9BWjjr
534デフォルトの名無しさん
2023/11/20(月) 03:25:10.93ID:m3TC6/PX クラスの切り替えとはキャストのことか
だがダックタイピング界隈には「キャストする」という振る舞いがない
templateなら引数を変えることが切り替えでありキャストは重要ではない
重要ではないものを重要と思ってたなら問題だ
だがダックタイピング界隈には「キャストする」という振る舞いがない
templateなら引数を変えることが切り替えでありキャストは重要ではない
重要ではないものを重要と思ってたなら問題だ
535デフォルトの名無しさん
2023/11/20(月) 03:52:37.02ID:Uh0cT6mQ だからさ、独自用語で煙に巻いてないでTaPL読んだうえで共通語彙で話しようぜって
536デフォルトの名無しさん
2023/11/20(月) 07:37:53.49ID:kv+dmWMk >>521
親クラスを継承できないクラスはポリモーフィズムできないねぇ。
後から「読み取り専用のIFが欲しい」「書き込み専用が欲しい」となったらどうすんの?
「なるケースはインターフェイスなど使えばいいだけ」なら、途中で継承からIFに切り替える?
「早すぎる最適化」だなぁ
親クラスを継承できないクラスはポリモーフィズムできないねぇ。
後から「読み取り専用のIFが欲しい」「書き込み専用が欲しい」となったらどうすんの?
「なるケースはインターフェイスなど使えばいいだけ」なら、途中で継承からIFに切り替える?
「早すぎる最適化」だなぁ
537デフォルトの名無しさん
2023/11/20(月) 08:24:47.95ID:dEVryb2p さすがにその例だと、「モード切替するメソッドを足す。所有権管理もさせる。旧クラスは廃止」とかだろ
538デフォルトの名無しさん
2023/11/20(月) 08:49:37.76ID:Gc8IZzjG539デフォルトの名無しさん
2023/11/20(月) 09:03:13.39ID:07sj62mg >>499
俺もそう思う
俺もそう思う
540デフォルトの名無しさん
2023/11/20(月) 10:54:06.11ID:NElbrJwW 何で君達は最小のサンプルコードも書かずに俺様用語で議論してるの?
プログラマじゃないのかな?
プログラマじゃないのかな?
541デフォルトの名無しさん
2023/11/20(月) 11:26:53.92ID:6jnK0Jj8 今朝のGoogleニュースで米の求人報酬だかでRustが2位とか見たわ
人事的にはRustで沼る人材が欲しいらしいぞ
良かったな
人事的にはRustで沼る人材が欲しいらしいぞ
良かったな
542デフォルトの名無しさん
2023/11/20(月) 12:00:36.92ID:ZwEoOGmm >>536
そこら辺は言語によって違うからせめて言語くらい前提として共有しないと議論にならない。
親クラスを継承できないクラス、意味不明。
そもそもサンプルコード見せれば確実なところを自然言語で議論しようとする発想が意味わからない
そこら辺は言語によって違うからせめて言語くらい前提として共有しないと議論にならない。
親クラスを継承できないクラス、意味不明。
そもそもサンプルコード見せれば確実なところを自然言語で議論しようとする発想が意味わからない
543デフォルトの名無しさん
2023/11/20(月) 12:49:28.44ID:aVFf8Qq7 >>542
さすがに出先スマホでコード打ち込みたくないわな。
コードで言うなら>492みたいなのが欲しいというだけだし。
>親クラスを継承できないクラス、意味不明。
例えばライブラリが返すインスタンスのクラス。普通はクラスを直接弄ることはできないし、final宣言されてたら派生も無理。クラスを直接弄くれるとしても、ライブラリをメンテナンスするとか面倒臭いからやりたくない。
普通はAdoptor作るけど、それなら>492みたいなIF側で自動的にやる機能が欲しい。
さすがに出先スマホでコード打ち込みたくないわな。
コードで言うなら>492みたいなのが欲しいというだけだし。
>親クラスを継承できないクラス、意味不明。
例えばライブラリが返すインスタンスのクラス。普通はクラスを直接弄ることはできないし、final宣言されてたら派生も無理。クラスを直接弄くれるとしても、ライブラリをメンテナンスするとか面倒臭いからやりたくない。
普通はAdoptor作るけど、それなら>492みたいなIF側で自動的にやる機能が欲しい。
544デフォルトの名無しさん
2023/11/20(月) 12:49:42.01ID:JpnTJcOA githubの2023年成長率でもRustが40%増でTOPだったな。
でもまだ人気言語TOP10には食い込んでなかったけど。
でもまだ人気言語TOP10には食い込んでなかったけど。
545デフォルトの名無しさん
2023/11/20(月) 12:53:05.42ID:PG0EBfXZ546デフォルトの名無しさん
2023/11/20(月) 13:32:31.99ID:NElbrJwW >>541
1位はpython?
1位はpython?
547デフォルトの名無しさん
2023/11/20(月) 13:42:54.45ID:IjnmMF1h そりゃ1位はPHPだよ
548デフォルトの名無しさん
2023/11/20(月) 13:54:03.53ID:SNQO1x/A549デフォルトの名無しさん
2023/11/20(月) 14:04:35.58ID:NElbrJwW >>547
PHPを書けるより市場価値がないの?
PHPを書けるより市場価値がないの?
550デフォルトの名無しさん
2023/11/20(月) 14:38:31.00ID:dEVryb2p Rustが出せるのは高い信頼性だが、日本で何か作っても、それ信頼できんの?ってなるから
だったりして
だったりして
551デフォルトの名無しさん
2023/11/20(月) 14:44:00.93ID:NElbrJwW >>550
求められている信頼性って「Rustが出せる信頼性」とは違うんだと思うよ
求められている信頼性って「Rustが出せる信頼性」とは違うんだと思うよ
552デフォルトの名無しさん
2023/11/20(月) 15:09:31.41ID:MS7hPbOQ 日本だけに限らないかも知れないけど
ソフトウェアの利用者ってそもそも
何の言語で造ってるかなんて気にしてないし知ろうともしない
ソフトウェアの利用者ってそもそも
何の言語で造ってるかなんて気にしてないし知ろうともしない
553デフォルトの名無しさん
2023/11/20(月) 15:36:03.59ID:JXHwx0JF Rustが使われる理由は高速省メモリで開発効率や保守性が良いため
554デフォルトの名無しさん
2023/11/20(月) 15:41:32.66ID:NElbrJwW >>553それはRustプログラマの視点
それまでの話は発注者側からの話
それまでの話は発注者側からの話
555デフォルトの名無しさん
2023/11/20(月) 15:49:44.16ID:JXHwx0JF 発注者側の視点でも
高速省メモリで安全性も高いのはRustとなる
高速省メモリで安全性も高いのはRustとなる
556デフォルトの名無しさん
2023/11/20(月) 15:55:24.47ID:NElbrJwW 鶏と卵の関係になるけどプログラマが確保できなく保守性が悪い
557デフォルトの名無しさん
2023/11/20(月) 16:02:14.85ID:N43MAaAU558デフォルトの名無しさん
2023/11/20(月) 16:18:06.96ID:JXHwx0JF559デフォルトの名無しさん
2023/11/20(月) 16:27:04.23ID:NElbrJwW560デフォルトの名無しさん
2023/11/20(月) 17:04:51.35ID:aPv5cKlG コントリビューター増加「率」はミスリードかも、レポ増加「数」は
github 2023年新規レポジトリ10KB以上
JavaScript 2.1M results
Java 767k results
Python 749k results
TypeScript 627k results
C# 338k results
C++ 244k results
C 174k results
PHP 152k results
Kotlin 147k results
Dart 109k results
Go 84.4k results
Ruby 64.3k results
Swift 59.3k results
Rust 39.4k results
Lua 22.1k results
HCL 16.4k results
github 2023年新規レポジトリ10KB以上
JavaScript 2.1M results
Java 767k results
Python 749k results
TypeScript 627k results
C# 338k results
C++ 244k results
C 174k results
PHP 152k results
Kotlin 147k results
Dart 109k results
Go 84.4k results
Ruby 64.3k results
Swift 59.3k results
Rust 39.4k results
Lua 22.1k results
HCL 16.4k results
561デフォルトの名無しさん
2023/11/20(月) 18:15:53.85ID:1QHH6HXV クローズ開発案件が含められないから意味が無い件
562デフォルトの名無しさん
2023/11/20(月) 18:32:56.66ID:Tq0YX8uR563デフォルトの名無しさん
2023/11/20(月) 20:50:45.51ID:NElbrJwW >>561
ある程度は相関してるでしょ
ある程度は相関してるでしょ
564デフォルトの名無しさん
2023/11/20(月) 21:15:52.04ID:ojqzhkRS >>562
お前がレスに使ってる端末は悪いものなんだな~。
お前がレスに使ってる端末は悪いものなんだな~。
565デフォルトの名無しさん
2023/11/20(月) 21:47:51.39ID:Tq0YX8uR566デフォルトの名無しさん
2023/11/20(月) 21:56:32.85ID:Ygoo/zhh567デフォルトの名無しさん
2023/11/20(月) 21:59:46.43ID:1QHH6HXV568デフォルトの名無しさん
2023/11/20(月) 22:02:12.48ID:SNQO1x/A569デフォルトの名無しさん
2023/11/20(月) 23:27:57.05ID:/Ubqd6b6 >>530
Reactはクラスコンポーネント時代も
開発元のFacebookが様々なケースで継承を使うとよいケースは存在していないことを確認しているとReact公式に書いていたもんな
もちろん今はクラスコンポーネントすら捨てて関数コンポーネント
Reactはクラスコンポーネント時代も
開発元のFacebookが様々なケースで継承を使うとよいケースは存在していないことを確認しているとReact公式に書いていたもんな
もちろん今はクラスコンポーネントすら捨てて関数コンポーネント
570デフォルトの名無しさん
2023/11/21(火) 08:57:03.65ID:CeBFd4j1 GitHubで最も使われている言語はJavaScript、最も利用者が増加したのはRust。AIプロジェクト数はこの1年で3倍増GitHubが年次調査「Octoverse 2023」発表
https://www.publickey1.jp/blog/23/githubjavascriptrustai13githuboctoverse_2023.html
AI関連のプロジェクトを国別に見ると米国が突出していますが、日本はインドに次いで3位となっており、日本のオープンソース開発者は世界的に見て積極的にAI関連のプロジェクトに関わっていることが分かります。
プログラミング言語別にコントリビュータの増加率を見ると、1位がRust、2位がRua、3位がTypeScript、4位がHCL(HashiCorp Configration Language)、4位がTSQL、5位がPythonとなります。
https://www.publickey1.jp/blog/23/githubjavascriptrustai13githuboctoverse_2023.html
AI関連のプロジェクトを国別に見ると米国が突出していますが、日本はインドに次いで3位となっており、日本のオープンソース開発者は世界的に見て積極的にAI関連のプロジェクトに関わっていることが分かります。
プログラミング言語別にコントリビュータの増加率を見ると、1位がRust、2位がRua、3位がTypeScript、4位がHCL(HashiCorp Configration Language)、4位がTSQL、5位がPythonとなります。
571デフォルトの名無しさん
2023/11/21(火) 09:29:05.70ID:WJ7yrtvk React本体のJavaScriptコードで継承が使われてるという事実は嘘つきオジがいたので指摘しただけで重要な事ではない
JavaScriptの継承を理解してる人ならリポジトリ見れば誰でもわかる
重要なのはReactやReact Nativeが依存しているHTML/CSS/JavaScriptなどのホスト環境が提供するGUIライブラリやそれに類するものは全て実装継承モリモリで作られているということ
それはなぜなのか?
JavaScriptの継承を理解してる人ならリポジトリ見れば誰でもわかる
重要なのはReactやReact Nativeが依存しているHTML/CSS/JavaScriptなどのホスト環境が提供するGUIライブラリやそれに類するものは全て実装継承モリモリで作られているということ
それはなぜなのか?
572デフォルトの名無しさん
2023/11/21(火) 09:48:09.93ID:meOGGGPH573デフォルトの名無しさん
2023/11/21(火) 10:52:34.98ID:TIZNoRj+ 増加<率>だからねw
574デフォルトの名無しさん
2023/11/21(火) 10:53:27.83ID:TIZNoRj+ つまり分子が大きいというより分母が少ない
575デフォルトの名無しさん
2023/11/21(火) 10:56:46.75ID:fyFN08Ef ヒント非公開
576デフォルトの名無しさん
2023/11/21(火) 11:02:46.10ID:ZX3v40di >>571
GitHubのコードに対するリンク一行貼るくらいやってよ
GitHubのコードに対するリンク一行貼るくらいやってよ
577デフォルトの名無しさん
2023/11/21(火) 11:06:40.20ID:ZX3v40di >>571
gtkはCだね
gtkはCだね
578デフォルトの名無しさん
2023/11/21(火) 11:07:36.25ID:HSO31doi >>557
ほんそれ
ほんそれ
579デフォルトの名無しさん
2023/11/21(火) 11:18:07.78ID:Lmp19CDx580デフォルトの名無しさん
2023/11/21(火) 11:27:49.20ID:j31CN6Yb >>569
とFacebookの犬が申しております
とFacebookの犬が申しております
581デフォルトの名無しさん
2023/11/21(火) 12:12:04.36ID:Vub9wpCB >>571
嘘つきはお前だよ
嘘つきはお前だよ
582デフォルトの名無しさん
2023/11/21(火) 12:25:12.17ID:MyNMYruR583デフォルトの名無しさん
2023/11/21(火) 12:27:03.76ID:vP2RupFQ 特定のレスに妙に攻撃的な単発ちょくちょく湧いてくるのってやっぱりアイツ?
584デフォルトの名無しさん
2023/11/21(火) 12:50:14.72ID:j31CN6Yb >>583
いや、あいつとは別
いや、あいつとは別
585デフォルトの名無しさん
2023/11/21(火) 12:50:16.11ID:j31CN6Yb >>583
いや、あいつとは別
いや、あいつとは別
586デフォルトの名無しさん
2023/11/21(火) 13:37:07.13ID:f4244eke アイツじゃねーかw
587デフォルトの名無しさん
2023/11/21(火) 13:52:02.24ID:Lmp19CDx 質問する側は基本的に無力で、答える側に生殺与奪の権を握られる
一発逆転するには攻撃力か何かで優位に立たなければ
一発逆転するには攻撃力か何かで優位に立たなければ
588デフォルトの名無しさん
2023/11/21(火) 18:59:23.42ID:E3kr56i/ 勝ったところで、所詮クソvsクソだぞ
面白いことを書け
面白いことを書け
589デフォルトの名無しさん
2023/11/21(火) 19:14:06.76ID:MyNMYruR 攻撃的なこと言われて大人しくなってるの草
590デフォルトの名無しさん
2023/11/21(火) 22:22:25.20ID:3Y9OZVuh591デフォルトの名無しさん
2023/11/21(火) 22:23:49.29ID:3Y9OZVuh592デフォルトの名無しさん
2023/11/21(火) 22:43:10.96ID:Q9pynku3593デフォルトの名無しさん
2023/11/21(火) 23:11:04.07ID:Lmp19CDx Cはスマポ<T>を作れない
C++でもtemplateを使わない主義ならばスマポのようなものをTが実装継承するかも
C++でもtemplateを使わない主義ならばスマポのようなものをTが実装継承するかも
594デフォルトの名無しさん
2023/11/21(火) 23:15:06.85ID:x0TxAGsF >>592
論点は実装継承は不要なのかどうか
常にコンポジションを使うべきかどうか
GTKは言語機能によらない実装継承を使っているというだけ
コンポジションで実装する事も技術的には当然可能だがその選択をしてないことに意味がある
特に言語が提供してないにもかかわらずGTKのためだけに継承機能をわざわざ作り上げるほど実装継承を欲した理由を理解するべき
論点は実装継承は不要なのかどうか
常にコンポジションを使うべきかどうか
GTKは言語機能によらない実装継承を使っているというだけ
コンポジションで実装する事も技術的には当然可能だがその選択をしてないことに意味がある
特に言語が提供してないにもかかわらずGTKのためだけに継承機能をわざわざ作り上げるほど実装継承を欲した理由を理解するべき
595デフォルトの名無しさん
2023/11/21(火) 23:35:36.54ID:LOJe+P0r Reactが依存しているHTMLのボタン要素を例に話をするとボタン要素は次のような型階層を取ることがDOM APIの仕様で決められている
EventTarget <- Node <- Element <- HTMLElement <- HTMLButtonElement
上位の型のパブリックなメソッドやプロパティはや下位の型でも使えるようにする必要がある
これは実装継承だけでなくコンポジション+インターフェースでもRustのenumのような代数データ型を使っても実現可能なんだが知る限り全てのブラウザが実装継承を使って実装している
EventTarget <- Node <- Element <- HTMLElement <- HTMLButtonElement
上位の型のパブリックなメソッドやプロパティはや下位の型でも使えるようにする必要がある
これは実装継承だけでなくコンポジション+インターフェースでもRustのenumのような代数データ型を使っても実現可能なんだが知る限り全てのブラウザが実装継承を使って実装している
596デフォルトの名無しさん
2023/11/21(火) 23:45:35.68ID:Q9pynku3597デフォルトの名無しさん
2023/11/21(火) 23:49:00.55ID:5SU8rUzf なぜかというと
例えば仕様変更でNodeに新しいメソッドが追加されたとしても実装継承なら一箇所変更すればいいだけだから
コンポジション+インターフェースの場合はNode以下の数百個のクラスや構造体にメソッドを追加して委譲するコードを書いて回らないといけない
実装継承というのはサブタイピングとコードの再利用を同時に行うことだが、その2つを同時に行えるという点が最大のメリットであり存在理由なわけ
例えば仕様変更でNodeに新しいメソッドが追加されたとしても実装継承なら一箇所変更すればいいだけだから
コンポジション+インターフェースの場合はNode以下の数百個のクラスや構造体にメソッドを追加して委譲するコードを書いて回らないといけない
実装継承というのはサブタイピングとコードの再利用を同時に行うことだが、その2つを同時に行えるという点が最大のメリットであり存在理由なわけ
598デフォルトの名無しさん
2023/11/22(水) 00:08:02.11ID:h68LLJ0S >>596
問題がないわけではないんだよ
GTKの実装継承は言語機能のそれと比べてクソ面倒臭い上に言語に組み込まれた型システムではないからこその弱さがある
Rustでも実装継承をマクロで模倣することもできるがだからといってそれに何の問題ないわけではないというのと同じ
他のやり方があったとしてもより楽に安全に開発できるようになるなら言語機能としてあった方がいいってことになるよね?
問題がないわけではないんだよ
GTKの実装継承は言語機能のそれと比べてクソ面倒臭い上に言語に組み込まれた型システムではないからこその弱さがある
Rustでも実装継承をマクロで模倣することもできるがだからといってそれに何の問題ないわけではないというのと同じ
他のやり方があったとしてもより楽に安全に開発できるようになるなら言語機能としてあった方がいいってことになるよね?
599デフォルトの名無しさん
2023/11/22(水) 00:19:05.87ID:i7dbnQQ2 >>1-10
乗り遅れるな!
いつまでも待ってはくれませんよ
https://note.com/nukatiktok/n/nfbb66b3b3d3e ←4000円貰えます
この機会にぜひ
https://i.imgur.com/eWEQ3eT.jpg
(毎日動画見てるだけでお金貰えるんだぞ💰)
乗り遅れるな!
いつまでも待ってはくれませんよ
https://note.com/nukatiktok/n/nfbb66b3b3d3e ←4000円貰えます
この機会にぜひ
https://i.imgur.com/eWEQ3eT.jpg
(毎日動画見てるだけでお金貰えるんだぞ💰)
600デフォルトの名無しさん
2023/11/22(水) 00:33:52.03ID:SCjy6MJ9 >>597
それは仕様変更前のクラス数百個を捨てさせ変更後の数百個で置き換えるには都合が良い
一箇所変更するだけで古いクラス数百個が消滅する
だが古いクラスに依存していた資産が消滅するのは本当にお得なのか?
それは仕様変更前のクラス数百個を捨てさせ変更後の数百個で置き換えるには都合が良い
一箇所変更するだけで古いクラス数百個が消滅する
だが古いクラスに依存していた資産が消滅するのは本当にお得なのか?
601デフォルトの名無しさん
2023/11/22(水) 01:12:20.99ID:uxQX1dJD602デフォルトの名無しさん
2023/11/22(水) 01:26:34.89ID:uxQX1dJD603デフォルトの名無しさん
2023/11/22(水) 16:32:36.94ID:Ky8NVDmM 「GCは嫌い。だけどC++は苦手。
噂だとRustがそれを解決するらしいから」
ということでRust票が入っているだけ。
噂だとRustがそれを解決するらしいから」
ということでRust票が入っているだけ。
604デフォルトの名無しさん
2023/11/22(水) 18:06:32.01ID:VuMm7++t GoogleもMicrosoftもAmazonもCloudflareも
そんな理由でRustを採用して使っている?
そんな理由でRustを採用して使っている?
605デフォルトの名無しさん
2023/11/22(水) 18:40:30.34ID:I05HGQ1N 結局windows11 10.0.22631.2715 (23H2)にRust製モジュール入らなかったが
606デフォルトの名無しさん
2023/11/22(水) 19:20:29.71ID:zUxnYc1v MSの使ってるコンパイラは何だろう?
607デフォルトの名無しさん
2023/11/22(水) 20:23:02.05ID:BBiTeKwa608デフォルトの名無しさん
2023/11/22(水) 20:29:20.42ID:ltxaInSK609デフォルトの名無しさん
2023/11/22(水) 21:18:08.59ID:+UnlqW3r 関数名の重複を許す仕組みは信用できる
クラスは名前がかぶったらたいてい古い方が無かったことにされるのが信用できない
クラスは名前がかぶったらたいてい古い方が無かったことにされるのが信用できない
610デフォルトの名無しさん
2023/11/22(水) 21:25:34.99ID:zUxnYc1v なにそれ?
611デフォルトの名無しさん
2023/11/22(水) 21:26:35.97ID:5rDf7evN612デフォルトの名無しさん
2023/11/22(水) 21:47:18.27ID:+UnlqW3r intは信用できないのでi32やi64になったのはまあいい
実装継承の祖先の名前がずらりと並ぶのは嫌だ
実装継承の祖先の名前がずらりと並ぶのは嫌だ
613デフォルトの名無しさん
2023/11/22(水) 22:42:24.09ID:+dkhSESN >>612
それは実装継承による設計をする古い頭のままの駄目プログラマーの典型例
それは実装継承による設計をする古い頭のままの駄目プログラマーの典型例
614デフォルトの名無しさん
2023/11/22(水) 22:48:19.59ID:F4GGzYS9 >>611
いるよワイ
とにかくC++はコピーを正しく扱うのがあまりにも難しいのよ
C++の弱点はこの一点に尽きる
もちろんCとの互換性を保つためなのだが本当に難しい
そこにコピーやめたろ!って英断したRustは本当にC++使いの人が設計したんだなと感じる
この部分に手を入れかつ速度を落とさない実装もできる方法を突き詰めるとこうなる
いるよワイ
とにかくC++はコピーを正しく扱うのがあまりにも難しいのよ
C++の弱点はこの一点に尽きる
もちろんCとの互換性を保つためなのだが本当に難しい
そこにコピーやめたろ!って英断したRustは本当にC++使いの人が設計したんだなと感じる
この部分に手を入れかつ速度を落とさない実装もできる方法を突き詰めるとこうなる
615デフォルトの名無しさん
2023/11/22(水) 22:59:48.09ID:Lo22StDU >>614
Firefoxはservoで行き詰ったよ
Firefoxはservoで行き詰ったよ
616デフォルトの名無しさん
2023/11/22(水) 23:05:36.01ID:F4GGzYS9 Effective C++の初版はほぼこのコピーをいかにうまくやるかを解説した本だった
あらゆる手段でコピーが発生してもオブジェクトの整合性が取れるように注意点を書きまくった
しかしその内容はあまりにも普通の人には難し過ぎた
そして一つのクラスを作るたびにこんなに気をつけて実装しないといけないのか!やってられん!となって
その結果、もう全部ヒープにとって生ポインタでいいじゃんとなってしまった
そのおかげでコピー問題は無くなったが
メモリリークや二重開放、ヌルポの山を産んだ
あらゆる手段でコピーが発生してもオブジェクトの整合性が取れるように注意点を書きまくった
しかしその内容はあまりにも普通の人には難し過ぎた
そして一つのクラスを作るたびにこんなに気をつけて実装しないといけないのか!やってられん!となって
その結果、もう全部ヒープにとって生ポインタでいいじゃんとなってしまった
そのおかげでコピー問題は無くなったが
メモリリークや二重開放、ヌルポの山を産んだ
617デフォルトの名無しさん
2023/11/22(水) 23:09:46.91ID:EF2LJjbV ポインターをメンバーに持つと言うのがコピーの問題になってるだけやん?
アドレスをコピーするのか、実体を複製して新しいポインターとして格納するのか
用途によってはどちらかが不都合だったりするからなぁ
アドレスをコピーするのか、実体を複製して新しいポインターとして格納するのか
用途によってはどちらかが不都合だったりするからなぁ
618デフォルトの名無しさん
2023/11/22(水) 23:14:04.80ID:F4GGzYS9 >>617
実態を持っても同じだよ
そのオブジェクトが内部にポインタを持ってたら同じ問題が発生
さらにそのオブジェクトが(ry
というわけで地獄のような連鎖になることがわかる
そして厄介なのは自分が作っていないクラスだった場合お手上げということ
いかにやばいか分かっていただけただろうか
だから一時期はあらゆるオブジェクトがヒープ割り当てをしていた
実態を持っても同じだよ
そのオブジェクトが内部にポインタを持ってたら同じ問題が発生
さらにそのオブジェクトが(ry
というわけで地獄のような連鎖になることがわかる
そして厄介なのは自分が作っていないクラスだった場合お手上げということ
いかにやばいか分かっていただけただろうか
だから一時期はあらゆるオブジェクトがヒープ割り当てをしていた
619デフォルトの名無しさん
2023/11/22(水) 23:21:57.25ID:F4GGzYS9 スマートポインタによって状況はだいぶ改善されたとは思うが
しかしこのコピー問題というのは常に残っているのだ
そのオブジェクトを安全にコピーできるようにするという本質的な難しさは変わっていない
そしてムーブかコピーかみたいなものをライブラリ提供者が決めなければならず
それを使う側が意識することはかなり難しい
ドキュメントを読み込んで使い方を熟読するしかない
数百個のクラスがあった場合その全てのクラスの性質を暗記しないといけないのである!
しかも一個のミスで全てが崩壊する
こんなことは不可能に近い
しかしこのコピー問題というのは常に残っているのだ
そのオブジェクトを安全にコピーできるようにするという本質的な難しさは変わっていない
そしてムーブかコピーかみたいなものをライブラリ提供者が決めなければならず
それを使う側が意識することはかなり難しい
ドキュメントを読み込んで使い方を熟読するしかない
数百個のクラスがあった場合その全てのクラスの性質を暗記しないといけないのである!
しかも一個のミスで全てが崩壊する
こんなことは不可能に近い
620デフォルトの名無しさん
2023/11/22(水) 23:27:21.33ID:F4GGzYS9 その結果全てのオブジェクトをヒープにとってそのポインタだけを持ち回る、という実装がほとんどとなったのである
こうすればとりあえずコピーに関する問題はなくなる
俺はその時期にC++を仕事で書いていた
全てのオブジェクトがヒープにあった
コピーに関して悩んだことがなかったので
Effective C++を読んでもこの本は何でこんな「不整合が起きないオブジェクト」の作り方の解説ばっかりやってるんだろうと思っていたぐらいだ
こうすればとりあえずコピーに関する問題はなくなる
俺はその時期にC++を仕事で書いていた
全てのオブジェクトがヒープにあった
コピーに関して悩んだことがなかったので
Effective C++を読んでもこの本は何でこんな「不整合が起きないオブジェクト」の作り方の解説ばっかりやってるんだろうと思っていたぐらいだ
621デフォルトの名無しさん
2023/11/22(水) 23:30:42.74ID:F4GGzYS9 ちなみにこの全てのオブジェクトをヒープに取ればいいじゃんの思想をデフォルトにした言語がJavaである
メモリの解放漏れはGCにより問題なくなったがヌルポを量産したのは言うまでもない
メモリの解放漏れはGCにより問題なくなったがヌルポを量産したのは言うまでもない
622デフォルトの名無しさん
2023/11/22(水) 23:32:00.30ID:UBOPkQxC ChatGPTとまでは言わんが、IDEも仕事しろ、っていう世の中ではある
623デフォルトの名無しさん
2023/11/22(水) 23:37:47.47ID:Rf3A/fx6 >>615
金がなくなっただけでスポンサーついたら復活した
金がなくなっただけでスポンサーついたら復活した
624デフォルトの名無しさん
2023/11/23(木) 00:06:01.85ID:KrVwEhLS625デフォルトの名無しさん
2023/11/23(木) 00:11:54.90ID:mLPybMZb Javaにはポインタしかない
ゆえにコンポジションを繰り返せばリンクリストのようになる
でも実装継承なら
という風に二つの問題は一つにつながる
ゆえにコンポジションを繰り返せばリンクリストのようになる
でも実装継承なら
という風に二つの問題は一つにつながる
626デフォルトの名無しさん
2023/11/23(木) 01:52:03.12ID:FMewW6Qw >>616
Effective C++がコピーの話ばっかりという印象はないけどな
あるのはもともとCにあるコピー問題をいかにC++で解決するかというスタンスの解説
あとコピー問題を解決するためヒープを使うってのも謎理論
それは因果関係逆でしょ
ポインタをメンバーに持つデータ構造のコピーをいかに安全に実現するかでしょ
STLコンテナによりそこに厳密な意味定義が必要となった
Effective C++がコピーの話ばっかりという印象はないけどな
あるのはもともとCにあるコピー問題をいかにC++で解決するかというスタンスの解説
あとコピー問題を解決するためヒープを使うってのも謎理論
それは因果関係逆でしょ
ポインタをメンバーに持つデータ構造のコピーをいかに安全に実現するかでしょ
STLコンテナによりそこに厳密な意味定義が必要となった
627デフォルトの名無しさん
2023/11/23(木) 07:44:46.73ID:N5SmR8A3 >>568
と負け犬が申しております
と負け犬が申しております
628デフォルトの名無しさん
2023/11/23(木) 09:38:23.37ID:jt92Atwz >>621
ヌルポは型無しnullpointerによる型の制約に違反する問題だろ。
スタックだろうがヒープだろうが型無しインスタンスを使う限り発生する。
c++もポインタを排除して参照のみにできれば随分違うだろうけど。
ヌルポは型無しnullpointerによる型の制約に違反する問題だろ。
スタックだろうがヒープだろうが型無しインスタンスを使う限り発生する。
c++もポインタを排除して参照のみにできれば随分違うだろうけど。
629デフォルトの名無しさん
2023/11/23(木) 10:31:50.34ID:mLPybMZb 中途半端に浅いコピーは、深い方が正しい可能性を否定できない
これがコピー問題
ヒープを使えば極端に浅いコピーになる
これはバグではなく意図的にしか見えないから問題が解消する
これがコピー問題
ヒープを使えば極端に浅いコピーになる
これはバグではなく意図的にしか見えないから問題が解消する
630デフォルトの名無しさん
2023/11/23(木) 10:37:31.57ID:mHKDjsht >>597
そこはRust最低だよな
そこはRust最低だよな
631デフォルトの名無しさん
2023/11/23(木) 10:57:07.78ID:KmXfNFgK 機能追加が常に善なら後発言語は機能お化けに
なる一方のはずだがそうはなってないので
〇〇言語には△△機能が無いからゴミという
論法はあまり意味がない
なる一方のはずだがそうはなってないので
〇〇言語には△△機能が無いからゴミという
論法はあまり意味がない
632デフォルトの名無しさん
2023/11/23(木) 12:06:15.18ID:gaANDpVB633デフォルトの名無しさん
2023/11/23(木) 12:33:56.71ID:cJqQ5Mzl634デフォルトの名無しさん
2023/11/23(木) 13:07:39.51ID:mHKDjsht C++のtemplateは失敗
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 【DAZN】ワールドカップ欧州予選総合 ★5
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【ATP】テニス総合実況スレ2025 Part 211【WTA】
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 自閉症が「んなっしょい」と連呼するお🏡
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 両手でフレミングの法則やってくれ [577451214]
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
