結局C++とRustってどっちが良いの? 5traits

■ このスレッドは過去ログ倉庫に格納されています
2023/06/30(金) 21:56:35.52ID:PDIJ4aZy
「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていう雑談スレ。

結局C++とRustってどっちが良いの? 4traits
https://mevius.5ch.net/test/read.cgi/tech/1686046386/

関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2023/07/08(土) 03:19:59.66ID:Snxto99T
頭のいい人にとって便利な方法と、凡人にとって便利な方法とは異なる。
前者にとっては、後者用の方法はメンドクサく、
利便性が損なわれ、記述が長くなり、コーディングに時間がかかる。
頭がいいので、別にバグも入らない。
道具とはそういうものだ。
2023/07/08(土) 03:20:54.59ID:Snxto99T
>>242
程度問題だ。
利便性が損なわれすぎる場合は、安全性が高くても意味が無い。
2023/07/08(土) 03:21:57.34ID:4uosm6dj
>>241
色んな基礎知識を欠いているだけでなく
まともなプログラミング経験がほとんどなさそう
2023/07/08(土) 03:24:16.15ID:Snxto99T
馬鹿な人は、自分と、自分の周囲に人を基準にしか考えられない。
「人間とは沢山ミスをするものだ」
「ミスするとそれを見つけ出して直すのにとても苦労するものだ」
などと。
実は優秀な人は、ミスもとても少ないし、ミスしても短時間で
根本原因を探り当てて、根本治癒できる能力がある。
凡人はそれが出来ないから、Rustが輝いて見えるらしい。
2023/07/08(土) 03:24:55.50ID:Snxto99T
>>245
俺は実世界ではとても優秀だと評価されている。
248デフォルトの名無しさん
垢版 |
2023/07/08(土) 03:25:04.83ID:VdwsFu6Q
>>244
性善説に頼るあなたは下手くそプログラマー
2023/07/08(土) 03:33:15.30ID:Snxto99T
>>248
そんなことない。
人によって能力に大差があるのに、一律に安全性だけを
重視する方がおかしい。
だから日本はプログラミング産業が大成しなかった。
絵と音楽と運動能力だけが才能だと見なし、
生まれながらの知的能力の差は認めない。
そして実験ばかり重視して理論軽視。
この板も、何かと言えば、測定しろ、ばかり。
測定せずに、イマジネーションを働かせて思考実験する
風土が育ってない。
250デフォルトの名無しさん
垢版 |
2023/07/08(土) 03:35:32.85ID:VdwsFu6Q
性善説に頼るという判断ミスはプログラミング以前の問題
エンジニアとしての資質がない
2023/07/08(土) 03:44:16.18ID:Snxto99T
>>250
むしろ、どんなプログラマも同じ制約やレギュレーションに従わなければ
ならないと考えるのは、まさに左翼的な考え。
左翼は個人差を認めず、みんなが同じ様に低め合おうとする。
能力が高ければ十分に安全に使えるのに、その方法を使ってる
人を軽蔑したりする。
「マシン語を直接使っている人は安全軽視だから能力が低い」
などと考えるのか、ということになる。
それは評価軸が間違っている。
252デフォルトの名無しさん
垢版 |
2023/07/08(土) 03:50:33.97ID:VdwsFu6Q
安全でないのはC++ではなくあなた
経験値が足りないのだろう
2023/07/08(土) 03:59:42.63ID:Snxto99T
>>252
違う。
IQと地頭の良さの違い。
2023/07/08(土) 04:08:07.96ID:Snxto99T
アメリカ生まれの「Security 詐欺」という経営方法が有り、
このスレの人はそれを使っている。
「C++は危ないんだから、それを使ってる人は馬鹿、愚か、無能」
と。
Securityの事を言われるとそれに従わざるを得なくなる人間心理を
悪用し、商売に結びつける詐欺商法。
マイクロソフトがOS Updateしない人を悪人扱いするのは、
UpdateのたびにOSを遅くして、新しいOSを買わせる手段。
255デフォルトの名無しさん
垢版 |
2023/07/08(土) 04:12:16.47ID:VdwsFu6Q
エンジニアは願望ではなく事実に基づいて判断する
これは難しいことではないが、向かない人もいる
2023/07/08(土) 04:44:39.71ID:hz58RfSC
>>229
制約していく点はどちらもほぼ同じ
C++てもRustでもメモリ安全や競合に対応するため自分で律して正しく制約してプログラミングする
自分で律して正しく制約できなかった時に違いが出る
C++はコンパイルが通って実行時にミスに気付くかあるいは気付かないまま完成したと思い込む
Rustはコンパイルエラーとなりすぐに必ず気付くことでこの点でも開発効率が高い
2023/07/08(土) 04:52:36.07ID:mpe+rXny
まあ、使わないのは自由なんだよ

所有権。あれはいいものだ
はよC++にも来い
大げさだなと思うような超小コードには使わなきゃいいだけ
2023/07/08(土) 05:07:23.17ID:Snxto99T
>>256
それで開発効率が高くなるかどうかは人による。
2023/07/08(土) 05:54:00.44ID:hz58RfSC
>>258
C++は実行時デバッグとなるため開発効率が低くなる
さらにレア発生のため気付かぬまま実運用に入ってから発覚するとペナルティコストも大きい
早期にコンパイルエラーとなるRustはそれらのコストが不要となる
2023/07/08(土) 05:56:31.34ID:Snxto99T
>>259
メモリ関連バグ以外のバグはRustでも残り得て、それがレア発生
のため気付かぬまま実運用に入ってから発覚することも有り得る。
2023/07/08(土) 06:26:49.21ID:m4s2ktM0
>>246

> 馬鹿な人は、自分と、自分の周囲に人を基準にしか考えられない。

これを言ってるお前が「自分を優秀だと思い込んでる実は馬鹿な人」だと考えると成立するよな
2023/07/08(土) 07:59:41.56ID:hz58RfSC
>>260
C++とRustで同条件の話を持ち出しても反論になっていないよ
2023/07/08(土) 08:44:23.04ID:knIeRqDp
シープラ使ってるハゲって自己評価高いな
2023/07/08(土) 09:35:05.64ID:M6MMYA5O
>>230
virtual 忘れるなよ
2023/07/08(土) 09:39:11.12ID:M6MMYA5O
>>239
>それらが複雑に組み合わさって全てのケースを細かく人間がミスなく管理しきれるかというと無理だ

これまさに
馬鹿には無理
2023/07/08(土) 09:45:26.32ID:M6MMYA5O
>>254
>アメリカ生まれの「Security 詐欺」という経営方法が有り、
>このスレの人はそれを使っている。
>「C++は危ないんだから、それを使ってる人は馬鹿、愚か、無能」
>と。
ほんそれ

>Securityの事を言われるとそれに従わざるを得なくなる人間心理を
>悪用し、商売に結びつける詐欺商法。
その通り
USO800認証取得で金も時間も掛かるとか能率を下げさせる攻撃がまかり通ってる

>マイクロソフトがOS Updateしない人を悪人扱いするのは、
>UpdateのたびにOSを遅くして、新しいOSを買わせる手段。
これは言い過ぎ(気持ちは判る)
2023/07/08(土) 09:48:22.81ID:ONcKyxOd
>>265
どんなに優秀な人たちでもミスを必ずする

Google&Microsoft「セキュリティ脆弱性バグの70%はC/C++のメモリ管理ミスが原因。それがRustを採用した理由だ。」
https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/
2023/07/08(土) 09:48:50.55ID:M6MMYA5O
>>259
>>258
>C++は実行時デバッグとなるため開発効率が低くなる
うそ
>さらにレア発生のため気付かぬまま実運用に入ってから発覚するとペナルティコストも大きい
判る
>早期にコンパイルエラーとなるRustはそれらのコストが不要となる
言い過ぎ
269デフォルトの名無しさん
垢版 |
2023/07/08(土) 09:50:07.66ID:M6MMYA5O
>>261
お前モナ
2023/07/08(土) 09:51:51.79ID:M6MMYA5O
>>267
それはC/C++の責任ではない
馬鹿プログラマーに描かせてるのが原因
2023/07/08(土) 09:56:21.11ID:z6h9kmb4
>>270
と、これが馬鹿の思考です
2023/07/08(土) 09:57:58.69ID:ONcKyxOd
>>270
C++の欠陥のせいでセキュリティ脆弱性が多発している現実の記事
C++はメモリ管理ミスを検出すらできないためコンパイルエラーにすることができない
致命的な欠陥のあるC++を今後は捨てていこうという話
2023/07/08(土) 10:49:35.84ID:PpTTWe5V
Rustの次の言語に期待
2023/07/08(土) 11:04:17.25ID:fNvohE+k
メモリ確保と開放位置をきっちり考えて書けないような奴がそれをプログラム言語のせいにしてるだけだな
ここからここまでがどうなってとか理論的に構造を考えれない奴に限って言語が悪いと責任転嫁をする
そういう奴がプログラム書くな
メモリ関連だけじゃなくバグだらけのプログラムしかできない
275デフォルトの名無しさん
垢版 |
2023/07/08(土) 11:10:07.92ID:VdwsFu6Q
間違わないやつは間違わない
は論理的ではない
エンジニアの考え方ではない
2023/07/08(土) 11:12:56.26ID:tRB3lUB8
まあ、>>230のコードが即メモリバグを起こすかというと、そうではない
CSomeは自分しか使わない、自分はその使い方を間違えない、という条件ならたしかにおかしなことは起きない

ID:Snxto99TはこのCSomeをどう「誤用」すればメモリバグが起きるか説明できる?
できないならやっぱりザコだよ
2023/07/08(土) 11:14:38.03ID:7APnxgwh
間違う間違わない以前の問題として理論的に構造を考えて書けないでそれ言語せいにする奴
こうい奴はプログラムを書くな
2023/07/08(土) 11:23:49.72ID:gK2vRDVX
話は簡単で
優秀なプログラマーはC++でもRustでも難なく使いこなすことができる

一方で事実として
C++はうっかりメモリ管理やメモリ競合でミスをしてもコンパイラが通してしまう欠陥を抱えた古い言語
Rustはその場合でもコンパイラがエラーにしてくれる点やC++にない様々な高機能を持つ進んだ言語

結論として
優秀な人たちはどちらも使いこなせるので高機能で便利なRustを使っている
高機能な言語を使いこなせない人たちがC++のみに拘る
2023/07/08(土) 11:35:04.80ID:hU6KuhT0
>>232
>馬鹿だからミスや論理間違いを犯すのでnewやdeleteは使うな、
>となる。
make_uniqueとmake_sharedが規格に入ったから
newとdeleteを直接呼ぶ必要がなくなったから
280デフォルトの名無しさん
垢版 |
2023/07/08(土) 11:35:37.79ID:VdwsFu6Q
優秀なエンジニアは間違わないエンジニアではなく、間違わない方法を考え、選択するエンジニア
2023/07/08(土) 11:48:14.94ID:/jSq4Gja
fn clever_choice() {unsafe {...}}
2023/07/08(土) 12:05:38.94ID:EB0iRg5v
優秀な人しか使えないんでは何時までたっても普及しないのでわ
2023/07/08(土) 12:31:12.90ID:0dKdZ1v3
現在の選択肢ベースで考えれば十分普及してるでしょ
米しかなかった時代の米食の普及率でも目指してんの?
2023/07/08(土) 12:33:13.38ID:777Hyqek
オレはアホなのでアホでも使える方を選びます
285デフォルトの名無しさん
垢版 |
2023/07/08(土) 13:41:39.02ID:0jPiV6IB
開放と解放を間違えるような人が「俺は間違えない!」とか言っても無自覚バカ宣言にしか聞こえないわな
2023/07/08(土) 13:56:46.11ID:p+sO9/0D
ある意味あってるな

有名私立は服装も自由でピンク頭金髪可でピアスも開け放題
一方の馬鹿学校は制服で校則も厳しい
2023/07/08(土) 14:11:41.74ID:Gy8EoznK
>>266
>>マイクロソフトがOS Updateしない人を悪人扱いするのは、
>>UpdateのたびにOSを遅くして、新しいOSを買わせる手段。
>これは言い過ぎ(気持ちは判る)
そんなことない。
「計画的陳腐化」や
「薬物売人の経営論()drug buyer business economics」
などを使っていると言われている。
2023/07/08(土) 14:17:48.79ID:Gy8EoznK
>>279
古いコンパイラは対応して無い。
新しいコンパイラをまともな速度で使おうとすると、
最新パソコンに買い替えが必要となり、OSも全入れ替えが必要
となり、今まで便利に使えていたアプリの大部分が動かなくなる。
そしてアプリは廃版になっていて新しいバージョンも出てない
から買い換えることも出来ない。
Win10にすると、WinXP時代のアプリが動かなくなったりする。
もっと古いものも持ってるし。
だから新しいハードウェアは買わない。
2023/07/08(土) 14:21:53.18ID:M4Y1POjO
セキュリティアップデートなんて商売に関係なく
フリーソフトウェアでもあるだろろうがw
リスクがある状況でUpdateしない奴は悪人だよ
2023/07/08(土) 14:25:44.35ID:Gy8EoznK
>>289
パソコンが遅くなる原因の大部分は、Updateにあるんだが。
Updateしなければいつまでも高速なので買い換えないで済む。
そうするとマイクロソフトが倒産する。
2023/07/08(土) 14:31:35.48ID:Gy8EoznK
言葉だけではどっちが本当の事を言っているのか分からない。
実際のRustのコードを見れば、汚さが分かるし、
CやC++と全く似て無いことも分かる。
汚いと言うのは論理では表しにくいので、言葉では表現しにくいので
あたかも言葉だけではRustには欠点が無いかのように見えてしまう。
292デフォルトの名無しさん
垢版 |
2023/07/08(土) 14:32:02.14ID:M4Y1POjO
>>288
踏み台にされたら皆にご迷惑が掛かるとか考えないのね
人と一切関わっては駄目だよ
ネットワークに接続しても駄目
293デフォルトの名無しさん
垢版 |
2023/07/08(土) 14:33:34.46ID:M4Y1POjO
>>291
俺はC++ユーザだが
make_uniqueもmake_sharedもないお前のC++とは一緒にされたくない
2023/07/08(土) 14:34:51.65ID:Gy8EoznK
Rustの本を見てみたら、冒頭のOS環境として
Linux
MacOS
Windows 10
の順序で書いてあった。
まさに、オープンソースカルト左翼であることを目の当たりにした。
295デフォルトの名無しさん
垢版 |
2023/07/08(土) 14:46:14.76ID:M4Y1POjO
>>294
じゃその「カルト」を支援しないように
「カルト」の製品は使わずに生きて下さいね?
2023/07/08(土) 14:49:30.87ID:Gy8EoznK
>>295
個人が望まなくても使わざるを得なくされてる。
個人には実質的な投票権が無い。
2023/07/08(土) 14:56:05.98ID:p+sO9/0D
ある意味この人は保護対象じゃないのかと思った
2023/07/08(土) 15:08:40.55ID:suNzn+84
>>296
40年前くらいの生活をすれば良い
40年前にも人は生活していた
批難するなら依存してはいけない
甘えるな
2023/07/08(土) 15:14:57.62ID:Gy8EoznK
>>298
オープンソースが無かったころの方が日本は豊かだったし、
将来も輝いており、経済も優秀だった。
オープンソースカルトが流行るに従って没落していった。
2023/07/08(土) 15:19:13.13ID:suNzn+84
>>299
だからその日本が輝かしかった時代の水準で
生活してね
それと相関と因果の違いは理解してね
2023/07/08(土) 15:19:27.20ID:/jSq4Gja
俺らと話しても薬物治療の代わりにはならないよ
2023/07/08(土) 15:22:48.26ID:Gy8EoznK
悔しいのお。左翼どもよ。いくら頑張っても
Rustは流行らないと言う事実は変わらないよな。
2023/07/08(土) 15:32:10.56ID:suNzn+84
>>302
お前はC++20の開発環境を用意しろ
304デフォルトの名無しさん
垢版 |
2023/07/08(土) 15:37:47.72ID:409zOGbF
日本はIT技術者が少ないんだから、これからは世の中のOSSではない外国製のソフトからは多めに税金を取るくらいの姿勢でよい。
OSSはIT弱小国家にとっては唯一の活路でしょ。今の中央集権の先駆者総取りのIT業界は残念ながら日本には不利だ。
305デフォルトの名無しさん
垢版 |
2023/07/08(土) 16:06:29.07ID:409zOGbF
Ndarray構造体を全てArcとMutexで書きかえたけどそんなに実行速度が落ちなかった。
2023/07/08(土) 16:08:46.88ID:b8BxfChJ
>>302
大学でちゃんとソフトウェア工学なりプログラミング言語なり勉強した経験はあるん?
2023/07/08(土) 16:14:43.78ID:C0afRZOI
>>305
スレッド間で試した?
2023/07/08(土) 16:18:14.17ID:auRxfwEH
>>306
俺の話は置いとけ。
Rustを作り始めた筆頭プログラマは、大学の専攻はバイオで
真菌を研究しており、真菌の生命力に見せられてRustの名は
真菌の一種から採ったんだそうだぞ。
そしてそのような工学とは縁もゆかりもない人が作った
言語を有りがたそうに崇拝しているのがRust信者なんだぞ。
2023/07/08(土) 16:19:44.04ID:auRxfwEH
Rustの速度の見積もりが間違っているのが前から謎だったが、
数学とは縁が無い人が作ったからだったんだな。
2023/07/08(土) 16:23:14.66ID:auRxfwEH
>>306
俺はそんなpopularな学科には行って無い。
311デフォルトの名無しさん
垢版 |
2023/07/08(土) 16:25:41.23ID:409zOGbF
>>307
まだ、スレッド間は試してない。
とりあえずArcとMutexが単スレの時にオーバーヘッドが出ないかが個人的に懸念だった。
2023/07/08(土) 16:34:49.31ID:auRxfwEH
>>304
しかし、OSSには「水源枯渇問題」が有る。
消費者の財布を水源に見立て、山の上流に置いて有る様に見立てる。
OSSが蔓延すれば、その水源が枯渇するのだ。
313デフォルトの名無しさん
垢版 |
2023/07/08(土) 16:41:49.73ID:aF1ddcQd
水源とは何か良く分からんが、OSSでアメリカの大手ITをぶっ潰せるような仕組みを作れば日本には大きな得がある。出遅れた日本にとれる選択肢は少ない。
ビットコインのような非中央集権型のシステムを日本はITの全分野で押し進めていくべき。
2023/07/08(土) 16:43:47.67ID:gK2vRDVX
優秀でないから様々なオープンソースソフトウェアを使いこなせないのだろう
Rustのアンチ活動をしている人のレベルの低さを知った
2023/07/08(土) 16:44:42.96ID:u2zK5bfH
>>310
大学では何やってたん?
2023/07/08(土) 16:47:18.72ID:svPDr0rA
情報系産業は資本代替性が高いとは言うが殆どそれは資本力勝負となりアメリカには勝てない
なので別の方法で勝負しないといけない
流石にここまでのビッグテック支配は居心地が悪い
2023/07/08(土) 16:49:51.85ID:auRxfwEH
>>316
技術と言うより金の問題になっている気がするな。
金で優秀な人や企業を吸収したり、あるいは、検索エンジン用や
AI用のスパコンみたいなものを持っていたり。
いまのITは大量のプログラマやデータセンターが無いと成り立たない様になってきている。
318デフォルトの名無しさん
垢版 |
2023/07/08(土) 16:56:40.99ID:aF1ddcQd
>>317
パブリッククラウドを国家が無償で日本国民に開放するべきだと思う。日本はアメリカの様に大規模な資本家がいないので政府主導で計算資源を国民に開放してくべきだと思う。
2023/07/08(土) 16:57:28.70ID:svPDr0rA
AIなんかも結局はぶん回し勝負ってことで電気エネルギーを如何に大量に安価に調達出来るかが勝負となってきている
なのでマイクロソフトやGoogleは核融合発電の研究開発に躍起になっている
資本さえあればなんとでもなる世界になってしまった
2023/07/08(土) 16:59:21.48ID:auRxfwEH
左翼がオープンソース化を進めた結果、ソフトウェアを個人で作って
売れる時代が終わってしをいました。
2023/07/08(土) 17:01:20.34ID:auRxfwEH
>>318
沢山の人が使うと一人当りの計算リソースが減ってしまって、
使い物にならなくなる。
2023/07/08(土) 17:01:33.20ID:DfgvMNWU
ID:auRxfwEHは自分で優秀と言うくらいだから
少なくともドクター取ってるんやろね
あれだけ自分で言っててまさか学部生ってことはあるまい

でも
発言からはアカデミックな香りを感じさせないのよね
数学や工学のバックグラウンドが見えないと言うか
文系かまったく畑違いなとこから来てるのかな?
2023/07/08(土) 17:10:00.07ID:p+sO9/0D
NECや銀行とかでメインフレームを触ってた70代のおじいちゃんでしょ
2023/07/08(土) 17:18:52.84ID:DfgvMNWU
なんか山に籠もって一人でPC触ってるアマチュアって感じなんだよ正直

仕事からも学問からも遠いっていうか
自分たった一人でおうちで夢見ながら喋ってるような
批判や競争や責任からすごく遠いところに引きこもってるような
325デフォルトの名無しさん
垢版 |
2023/07/08(土) 17:58:46.48ID:M4Y1POjO
>>320
そもそもゼロコストで無限に複製できるものを
製造個数に比例してコストが掛かる有体物であるかのように
扱っているマネタイズ方法に無理がある
俺は価格が適正値に近づいただけだと思うね
2023/07/08(土) 18:05:27.13ID:C0afRZOI
急にどうした?
発狂してからに
支離滅裂で会話が成立してないぞ
まずは強いお薬を飲め
2023/07/08(土) 18:06:54.48ID:C0afRZOI
>>311
スレッド間じゃないなら最適化されちゃうよ
2023/07/08(土) 18:18:03.03ID:SdplvoMh
Rustのライフタイムの型注釈についてちょっと真面目に資料読んでみたいんだけど「こういう時困る、だからこうしよう」的な文章しか転がってない
ちゃんと論文レベルで解説してる文章とかないですかね?
2023/07/08(土) 18:32:09.99ID:p+sO9/0D
ありませんね
次の患者さんどうぞー
2023/07/08(土) 18:41:14.61ID:Yg5OnBqY
>>328
現状の公式ドキュメントとしてはたぶんNLLのRFCが一番詳しいと思う
2023/07/08(土) 18:43:49.70ID:gK2vRDVX
>>327
確認したことないからわからないけどSendしていないからといってそんな最適化するかな?

まずまったく異なる型のArcをRcへ変えてしまう無茶はしないはず
ではArcの中身のAtomicUsizeをusizeにしてしまう最適化をするだろうか
その両者の速度差はndarrayの計算覧ハと比べて微々bスる誤差にすぎbネい話だと思う
Mutexについても同様で最適化するとしたら丸ごと無くすことになるがそれは考えにくい

一方でスレッド間テストをすれば競合時のlockのwaitが起きるなどで少し遅くなる可能性はあるが
それはどのようにコードを書いても必須で避けられない正しい行為
2023/07/08(土) 18:51:22.44ID:SdplvoMh
>>330
そうなんですか?
探してみます
ともかく“ライフタイム注釈”って“コンパイラが決定(推論)できないライフタイムを注釈する必要がある”というものらしいけど、どんな時は推論できてどんな時は推論できないのかさっぱり分からない
普通のHindley–Milner (HM) type systemとかだと論文レベルで解説文書がネットに転がっててわかるんですけど、ライフタイム注釈についてはどんな範囲では推論が可能なのかとか資料がひとつも見つからない
2023/07/08(土) 18:52:33.75ID:auRxfwEH
日本の工学系は教授ですらIT技術の良し悪しを語る資格は無いのに。
2023/07/08(土) 19:03:14.40ID:x767qEv3
このスレは各言語の特徴的なキーワードだけを参考にしている。
どっちが優れているとかどっちがゴミだとかという話は全く参考にならない。
2023/07/08(土) 19:11:01.12ID:p+sO9/0D
>>332
論文レベルじゃないと理解できないのは困りものですね
2023/07/08(土) 19:11:09.06ID:Yg5OnBqY
>>332
lifetime elisionは別に推論じゃないぞ
borrowckとしてはライフタイムは必ず事前に注釈されなくてはならない
一部のよくあるパターンで省略を許可する、人間のためのルールがelision rules
337デフォルトの名無しさん
垢版 |
2023/07/08(土) 19:11:28.76ID:VdwsFu6Q
Rustについて安全であるということだけを切り取って議論しているのは、現場も現実も知らない阿呆
2023/07/08(土) 19:16:23.21ID:gK2vRDVX
>>332
考え方が逆
ライフタイム注釈はコンパイラにとって常に必要
だからライフタイム注釈するのが基本しかしそれを省略することができる状況が多々あって
その省略された時にコンパイラが省略を補う規則が定められている
https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html#lifetime-elision
lifetime elision rules
The first rule is that
The second rule is that
The third rule is that
2023/07/08(土) 19:18:56.60ID:auRxfwEH
>>337
それ。
2023/07/08(土) 19:19:42.70ID:7vcICBIU
>>332
推論せんよ
だから自分で書く必要がある
2023/07/08(土) 19:32:01.59ID:p+sO9/0D
ここで説明しても無駄だよ
彼は論文レベルじゃないと理解できないんだから
2023/07/08(土) 19:44:44.75ID:SdplvoMh
みなさまありがとうございます
ちょっと私まだ疑問が解決してないです
私の認識書いてみます
私の認識だとrustの“ライフタイム”はコンパイラが確保したメモリを解放するタイミングを決定するために必須のものだと考えています
何故なら効率のためにrustは複数の参照が同じオブジェクトを参照する事を許す“参照の貸与”のシステムを導入してるからです
なので所有権を持ちその参照が切れる前に全ての“貸与”していた全ての参照の“ライフタイム”が切れていなければなりません
コンパイラは貸し出された参照のライフタイムが所有権を持つ参照のライフタイムより長いものが有ればそれを検出し、貸借規定違反としてコンパイル時にそれを検出する事でダングリング参照の発生を防ぐシステムだと認識してます
その“参照のライフタイム”はユーザーが宣言するものではなくて本来ならコンパイラが自動的に拾うべきものだと思ってます
何故ならばrustの参照のライフタイムが「プログラマが好き勝手に自由に設定していい」ものなら結局それは“コンパイラがダングリング参照の発生を未然に検出する”システムになど到底ならないからです
少なくともユーザーが“この関数の返り値のライフタイムは引数のこのライフタイム以前に切れる”と宣言してもその宣言の妥当性をコンパイラが検証しないなら意味がありません、もちろん検証すると思います、具体的には返り値として用意された値のライフタイムがその値を作成した右辺値に現れる参照のライフタイムより長ければその時点で不当なライフタイムの宣言を検出できてそれでコンパイラは不適切なライフタイム注釈を検出できると思います
分からないのはそれなら結局コンパイラはライフタイムをやろうと思えば自分で推論できるのではないかという事です、実際rustの初期のコンパイラでは必須だったライフタイム注釈はいくつかの推論可能なケースでは省略可能になっているようです
じゃあいつダメなのか?いつどんな時なら推論がうまくいかないのかの基本的な理論がよく分からないんです
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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