次世代言語28 TypeScript Swift Go Kotlin Rust Nim

レス数が950を超えています。1000を超えると書き込みができなくなります。
2022/08/29(月) 11:22:16.48ID:5dAad4gs
スレタイ以外の言語もok

前スレ
次世代言語27 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1659655598/
2022/09/16(金) 22:26:31.57ID:EVJZN8ya
>>861
アプリの実装の善し悪しの話と実装言語の善し悪しを意図的に混同させるのはよくないよ
2022/09/16(金) 22:34:26.05ID:TcXL+FD0
>>865 Chrome by C++の場合について聞かせて
2022/09/16(金) 22:44:06.52ID:67q+IuG6
>>864
それソースある?
必ず再利用するにあたって領域を書き換えてんだから、直前にfreeしたかどうかに関わらず書き換え直後にキャッシュに乗るのは当たり前じゃないの?
チープな環境でスワップインを回避する効果はあるかもしれんが
2022/09/16(金) 22:47:07.20ID:W9x6+yw/
>>858
曲解してるかなとは我ながら思った。
けど、GCが勝つというほどインパクトある伸び代が挙げられた項目にこれ以上あると感じないんだよね。
2022/09/16(金) 22:47:38.62ID:aq1cgc5a
>>876 スワップインて。。>>864はまっとうな意見だと思うよ。
2022/09/16(金) 22:54:48.64ID:aq1cgc5a
>>868
>GCが勝つという
そんな場合もある、程度では。

GraalVMでNativeにした場合で
Native Java(+GC) vs Native other(no GC)は気になる
2022/09/16(金) 23:06:36.63ID:yQqW5GbJ
escapeするかしないか、静的と動的でそんなに違うもんかね。
むしろエラー以外はescapeする・しないは静的で相当範囲カバー出来てそう。データはないけど。
2022/09/16(金) 23:12:50.46ID:lW11Z1GI
>>864
これはそう。ただ投機的実行(と昨今のその去勢)とかを考えると結構難しいかなとは。
2022/09/16(金) 23:22:07.28ID:rsr6X2sj
GCを止めたら速いという話は藁人形論法なのでやめませんか?
2022/09/16(金) 23:25:00.60ID:lW11Z1GI
どこが藁人形なの?
2022/09/16(金) 23:26:02.22ID:3cBZTpx6
>>872 vulnerability詳しくないけど、mitigationでfree->mallocがどの程度影響するのか気になるな。
876デフォルトの名無しさん
垢版 |
2022/09/16(金) 23:34:42.72ID:ATWJ//93
>>853
>GCを使うプログラムは、メモリリークの積み重ねで次第にパフォーマンスが悪化、 という事態に縁がありません。

嘘言うな
2022/09/16(金) 23:42:23.80ID:n2V9aTfB
GCは解放の実タイミングは調整するけど「メモリリーク」とは見なしてないのでは。

むしろ Rust「メモリリークはメモリ安全性保障の範囲外」 の方なんとかして
2022/09/16(金) 23:44:19.41ID:EVJZN8ya
>>867
GCはそもそもfreeから再利用まで間が開くのでその間にキャッシュから外れる可能性が高くなるし、
再利用に当たって領域を書き換えるなら、キャッシュに載ってない場合書き換え処理に時間がかかるのでは
スワップインはよくわからない
2022/09/16(金) 23:45:28.20ID:EVJZN8ya
>>877
メモリリークを静的に検知するのはプログラムに対する制限が相当大きくなってしまうのでは
2022/09/16(金) 23:53:17.42ID:MTo4LOAu
>>879 動的にでも検知する仕組み/試みがあったりするのかな。テスト、プロファイル、そりゃあるかな。
2022/09/17(土) 00:04:48.75ID:Qv9rB708
>>880
valgrindとかAddressSanitizerとかmallocをhookするやつとかいろいろあるよ
2022/09/17(土) 00:05:17.29ID:guSBFHBz
GCはいわばメモリ管理の専門家に幅広い裁量を持たせて仕事させているわけで、
それに比べるとアプリケーションコード内でのメモリ管理はCenter of Excellence的な意味では原理的にどうしても不利よね
メモリ管理の専門家が十分な裁量を持って仕事できるのはせいぜいアロケータの実装くらいで、ほかは高水準のプログラミングモデルやプログラマの能力の制約を強く受けることになる
883デフォルトの名無しさん
垢版 |
2022/09/17(土) 00:13:57.81ID:WaM/gYIx
Javaは実行時最適化によりRustの3倍速い。
2022/09/17(土) 00:21:14.46ID:Qv9rB708
>>883
(場合もある)
885デフォルトの名無しさん
垢版 |
2022/09/17(土) 00:44:08.92ID:wgXFenVD
スパイクの出ないGC出たら即乗り換える予定
2022/09/17(土) 01:02:29.41ID:HP4MaZ5C
それ以来30年間GC技術が進んだ結果の現状が既出のこれ

>>200
>> https://pbs.twimg.com/media/EmYvG8aVkAMdfFG.jpg

全く対等に同条件で多くの人々が同じ問題に対して様々な言語で記述した結果の各実行時間
速く実行できた言語はRustとCとC++の3つでいずれもGCなし
GCする言語は軒並み遅い
一部をGC対象とならないよう回避の努力をしているGoがGC言語の中で最も速い
そうでない普通のGC言語は遅すぎる
2022/09/17(土) 01:35:11.26ID:Qv9rB708
>>886
これってGC性能が支配的になる問題なの?
888デフォルトの名無しさん
垢版 |
2022/09/17(土) 01:41:35.46ID:wgXFenVD
pythonさん
2022/09/17(土) 01:47:29.96ID:5sn184WB
>>887
(1) GCが発生している場合
  → GC性能が改善された現在でもGC言語は遅い

(2) GCが発生していない場合
  → GC性能と関係なくGCが起きない段階でもGC言語は遅い

どちらのケースであってもGC言語はダメな存在になってしまいますね
2022/09/17(土) 01:50:03.67ID:6EmGuQEd
あれ、D言語はかなり早いイメージだったけど、Goに負けることもあるのか
891デフォルトの名無しさん
垢版 |
2022/09/17(土) 01:52:02.97ID:WaM/gYIx
>>884
無いよ(笑
2022/09/17(土) 01:53:36.44ID:6EmGuQEd
LDCじゃなくてGDC使ってんのかな
2022/09/17(土) 01:57:29.45ID:5J0Fty65
Goは速いよ。

アンチGCはGC言語じゃなければ速い、と思い込みすぎでは?

ミッション車みたいなもんで、自分の設計力の無さがパフォーマンス劣化に直結するというか、いわゆるベンチのスペックは素直には出ないよ。
Rustアンチじゃないけど、これはRustの目的でもない(あくまで安全が目的)

GC言語みたいにだれでも80点が取れます、エンストしませんよ、みたいなもんじゃないんよ。

コンパイラが叱ってくれるからハイパフォーマンスとか、書いてて言ってんのかほんとに謎。
2022/09/17(土) 01:58:13.17ID:g4Vhwu4S
ゲハでやれ
895デフォルトの名無しさん
垢版 |
2022/09/17(土) 01:59:07.17ID:WaM/gYIx
>>886
そいつの読み方は「C++とPyPy3圧倒的じゃないか」ですよ。
新参者から熟練者まで数と質すべてが圧倒的。
C++は熟練すると、黒魔術を含め、やりたいことが全てできる言語なので、突き詰めていく性質の企業におすすめ。
逆に、手数で勝負の乱打スタイル企業には、PythonやRoRがお勧め。
896デフォルトの名無しさん
垢版 |
2022/09/17(土) 02:01:08.18ID:WaM/gYIx
>>893
Javaも速いですよ。
Rustの3倍は冗談だけど。
欠点はメモリーを使いすぎること。
一般的なパソコンはメモリーが少し足りない。
だから、Javaは遅いと思われてる。
ミスマッチです。
897デフォルトの名無しさん
垢版 |
2022/09/17(土) 02:04:15.85ID:WaM/gYIx
ハードウェアを売りたい言語だから、ハードウェアに対する要求が少し厳しかったですね。
2022/09/17(土) 02:25:11.61ID:YHpfxvp6
>>886
やはりGCの言語はいずれも遅いな
GCのせいで遅くなるのではなく
ヒープでメモリ確保するからGCの言語は遅くなる
2022/09/17(土) 03:31:52.64ID:5J0Fty65
>>896
Java速いよね。あんまり適切なXmx知られてないだけだと思う。

>>898
少なくとも知ってる範囲だとGoもc#も取れるときはスタックを確保するぞ。
2022/09/17(土) 03:42:09.24ID:o0T2dyfd
>>899
Javaは遅いです
どのベンチマークでもC/C++/Rustの2倍~数倍はJavaが遅いです
>>886の例でもJavaは数倍遅くなっています
2022/09/17(土) 03:53:04.00ID:5J0Fty65
>>900
abc 182-eはakariって問題なんだけど、読んだ?
Javaで雑に書くとパフォーマンスでない類の問題だよ。

このグラフは言語オタ勢には有名かと思ってたけど、ベンチマークのグラフではなくて、あくまで競技者が書いた言語毎の統計のグラフなので、ポンコツが多ければそれが表現される。
言語人口が多いものの箱ひげが偉いことになってるでしょ。
2022/09/17(土) 04:54:39.17ID:1eeK5YMC
>>901
なるほど
しかしJavaで書いて最も速くできた人でも遅くて
Rustで書いた平均的な人たちにすら負けているな>>886
どんなに優れた人であってもJavaを使った時点で遅いと確定してしまうのは辛いな
2022/09/17(土) 07:28:28.63ID:8assD4qG
>>877
これ訳わからんよね。
そこまでして「GC不要でメモリ安全」を売りにしたかったのか、と思うわ。
c++とかだとメモリリークも普通にバグ扱いされるのに、それを「メモリ安全」と言い切るのは詐欺臭い。
2022/09/17(土) 07:39:14.89ID:8assD4qG
>>902
そもそもRust使える人間は他の言語に詳しい人間しか居ないだろ。

他の言語に詳しく無い人間がRustの絶壁の学習曲線をクリアできるとは思えん。
「Rustしか使えません」なんて人間は存在するのかね?
2022/09/17(土) 07:46:13.48ID:TM5e0HO7
>>903
それは常識
一般的に循環参照の安全な解放を静的に記述したり静的にチェックすることは不可能
デッドロックも同じで静的に発生をチェックして防止することは不可能
だからコンパイラ(=静的にチェックする存在)がそれらを防ぐことは対象外となる
2022/09/17(土) 07:50:22.53ID:XDvVGFlj
>>904
バカは遅い言語や危険な言語を使い続ければよい
時代の要請は高速で安全でプログラミング効率の良い言語でありそれはRust
使えないバカがついていけずに切り捨てられていくことは業界にとっても朗報だ
2022/09/17(土) 08:47:42.31ID:+hLuAY/P
早い言語は適当に書いても2秒の時間制限に間に合うけど
遅い言語は問題の想定解法じゃないと通らないから結果的に早い言語は上髭多くなるだけ
2022/09/17(土) 09:18:54.40ID:vRd8nzJr
>>902
execution timeの単位はミリ秒だぞ
ベンチヲタは気にするが1000000回ループして1秒か2秒しか差がつかないのに現実的に問題になることってないぞw
現実のループは多くてもせいぜい1000回程度だろ
2022/09/17(土) 09:57:15.90ID:BhE3E6/v
>>908
あんたには遅くてダメな言語で十分なのだから他を気にせず不満を持たずそのままでいいじゃないか
あんたには無縁だが世の中には速くて安全で保守性も良い言語が求められているだけの話だ
2022/09/17(土) 10:21:27.92ID:ktSmkMDB
Rustの他の言語と比べた速度向上って、俺にじゃなく世のほとんどのプロジェクトにとって五十歩百歩の微々たるものなんですわw
2022/09/17(土) 10:29:26.87ID:KEhwIc0k
前に、rustでtsc実装した人、さらにgoで作り直すって、理由がrustには向いてないからって。翻訳記事だからニュアンス違うのかもしれないけれど。
2022/09/17(土) 10:29:40.60ID:8assD4qG
>>905
プログラマサイドにそんな「常識」は無い。プログラマ視点なら「メモリリークはバグ。メモリを圧迫してトラブルになる危険がある」の方が常識。Rust関係者はそういうことを説明の奥の方に隠して「メモリ安全」とか誇大広告するから詐欺だと指摘しているわけで。

常識とかけ離れた俺俺定義を使うならちゃんと注意書きしろよ。
「メモリ安全*」
*メモリリークを除きます。
みたいに。
2022/09/17(土) 10:35:04.81ID:xfq0iQEs
Amazonの>>9の記事にもあるけど
Rustへ書き換えるだけだけでリソースコストや電気代それに伴うCo2排出量などが少なくとも50%は削減できる
さらにセキュリティの要請から安全性も求められている
土方でないまもともなプログラマーならばJavaでもRustでも他の言語でもプログラミングに支障なく書ける
それらの状況から選ぶべき言語がRust一択になっているだけでしょう
2022/09/17(土) 10:39:04.61ID:ktSmkMDB
https://stackoverflow.com/questions/55553048/is-it-possible-to-cause-a-memory-leak-in-rust
> Is it possible to cause a memory leak in Rust?
> You can also leak memory if you create a cycle of shared references:
> You can also use Box::leak to create a static reference, or Box::into_raw in an FFI situation.
> You might've forgotten about Box::leak and Box::into_raw which are pretty common in ffi situations for passing around states.

https://doc.rust-lang.org/book/ch15-06-reference-cycles.html#reference-cycles-can-leak-memory
> Reference Cycles Can Leak Memory
2022/09/17(土) 10:46:39.42ID:vRd8nzJr
RustでなくVBAを使うことでエネルギー削減になることもあるな
2022/09/17(土) 10:55:22.36ID:8assD4qG
>>913
Rustを学習した人間の感想の多くが「Rustは難解」と言っているのに、「まともなプログラマなら支障なく書ける」とする根拠は?
根拠が個人の感想なら、「まともなドライバーならマニュアル車を支障なく運転できる」と言うくらい傲慢だと思うがね。
2022/09/17(土) 10:55:41.70ID:gI44iNXP
>>912
それはちょっと知識不足じゃないかしら
もし循環参照を作っちゃった場合はそれを安全に解放する局所的な方法は理論的に存在しないんですよ
GCでも局所的に解決できる参照カウント方式では循環参照を解放できないため
GCの中でも全体のマークスイープ方式や全体の使用中分コピー方式でようやく解放されます
そららは非常にコストが重いだけでなく発動までに時差もあります

したがってプログラミング言語界ではそんなコストがかかるものに依存するのではなく
最初から循環参照を作らない方向で進んでいます
そのため最近は多くの言語で弱参照がサポートされており循環参照の発生を防ぐことができます

今回の話のJavaでももちろん弱参照が用意されていて最初から循環参照を作らないようにプログラミングします
そのほうが有利だからです
2022/09/17(土) 11:04:35.77ID:ktSmkMDB
>>917
C#では参照はツリーで管理されるから循環参照も問題なく一瞬で開放される
2022/09/17(土) 11:12:08.51ID:/Lpl+zOG
>>917
Wikipediaですら「メモリ安全性」の解説でメモリリークをメモリエラーとしているのに、実装側の都合で一般に使われている用語の意味をひん曲げて「常識」とな?

そういうのが詐欺だと指摘しているだけだけどなぁ。

今度からちゃんと
「メモリ安全*」
*メモリリークを除きます。
と注釈付けろよ。
2022/09/17(土) 11:17:11.83ID:gI44iNXP
>>918
それはC#でもJavaでもRustでも他の言語でも全て同じ方法です
どの言語も弱参照を併用して参照はツリー状のみにすることで循環参照の発生を防ぎます
もちろんそこには弱参照による弱い循環参照がありますが通常の参照はツリー状なので
おっしゃる通りに一瞬で解放することが可能です
2022/09/17(土) 11:20:08.51ID:Qv9rB708
>>919
wikipediaのメモリ安全性のメモリリークで挙げられてる項目は循環参照によるリークは含まれてないっぽいが
https://ja.m.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E3%83%AA%E5%AE%89%E5%85%A8%E6%80%A7
2022/09/17(土) 11:32:35.56ID:yVMylSLT
ところで所有権は複製されるってことでいいの?
2022/09/17(土) 11:33:28.06ID:8assD4qG
>>921
リンク先にある「メモリリーク」の項ぐらい読めよ。
2022/09/17(土) 11:34:17.29ID:ktSmkMDB
今時循環参照くらいでメモリリークするような言語でよく安全を名乗れたもんだ
退化してるやん
2022/09/17(土) 11:39:26.07ID:/MEkW9dR
昔は保守的GCというGCに人気があった
本当はゴミなのにゴミではないと判断することはバグではなく安全、という注釈つきのGCだった

この注釈は嘘だったという見方の方が今は優勢
2022/09/17(土) 11:42:22.70ID:yVMylSLT
予想される次の手:
・循環参照の矮小化
 循環参照なんてめったに起こらないし
 普通に書いてたら発生しようがない
・問題の転嫁
 循環参照なんて書くほうが悪い
 循環参照によるメモリリークなんかを問題視するほうが悪い
・飛躍した結論
 とにかくRustは素晴らしい
2022/09/17(土) 11:43:45.86ID:5J0Fty65
>>902
「この設問は」ね。だから競プロは複数言語できると面白い。
2022/09/17(土) 11:45:32.10ID:bMZyj00L
今は強い循環参照を作ってしまったら負けの世界
Pythonですら強い循環参照を避けるために弱参照が用意されていて回避できる
もちろんC#やJavaにKotlinやSwiftにも弱参照が当然あって回避できる
Rustなどのように強い循環参照が自然には発生しない言語仕様だと更に良い
2022/09/17(土) 11:46:24.15ID:w5Ud45eS
メモリ安全とは何なのがまとまってるページとかは作れないんだろうか
2022/09/17(土) 11:48:55.60ID:5J0Fty65
>>925
Bohemとかもそうだっけ?

循環参照に関しては、確かにメモリリークだけど、危険ではないんでは?
Dangling pointerにならんかったら良いんじゃ無いかなあ。

循環参照で放置されているものの解放に時間がかかっても、別に問題ないと思うんだけどな。メモリに極端な制約がある環境下でなければ。

最初から循環参照を作らないというのは一つなんだけど、そういうわけにもいかんのよ。
最近書いたけど、グラフなオブジェクトなんかは循環参照するじゃん。
2022/09/17(土) 11:49:36.37ID:5J0Fty65
>>929
Rustの話ならこれかな?
https://doc.rust-jp.rs/rust-nomicon-ja/meet-safe-and-unsafe.html
2022/09/17(土) 11:57:30.35ID:w5Ud45eS
ようやくわかってきたよ
C 言語 に大量にある 未定義な挙動が ないことをsafeって言ってんのか
ならメモリリークっていう現象事態はたしかにsafeだ
2022/09/17(土) 12:01:39.81ID:Qv9rB708
>>923
単にメモリリークと言ったら含まれるけど、
メモリ安全性に関わるメモリリークの文脈では循環参照は言及されてなさそうなんだよね
メモリ安全性という言葉の定義だけの問題で、実用上問題になるという点ではよろしくないとは思うけど
2022/09/17(土) 12:02:36.48ID:rp+oVngt
循環参照はコールバック等で普通に発生する
トレーシングGCでは全く何の問題にもならないから弱参照なんか使わんよ
2022/09/17(土) 12:05:32.37ID:w5Ud45eS
ttps://doc.rust-jp.rs/book-ja/ch15-06-reference-cycles.html
循環参照は、メモリをリークすることもある

ここか
なるほど
2022/09/17(土) 12:06:42.34ID:ktSmkMDB
>>928
強い弱いの意味がわかってなくて草
2022/09/17(土) 12:07:05.26ID:8assD4qG
>>931
今まである「メモリ安全性」の常識を無視して『メモリ安全性』という言葉を使わなきゃいいんだけどねぇ。
「プログラムの安全性にこだわった」くらいの宣伝ならまだわかる。

Rustはわざわざ「メモリ安全性」という言葉を使って宣伝しているんだからダメだろ。
2022/09/17(土) 12:24:51.56ID:J+gZaL34
確定的なタイミングでトレーシングGCしてくれるようなスマートポインタって実現不可能なの?
2022/09/17(土) 12:27:39.54ID:bwIIEGYu
勘違いしてる人がいるようなので正しい知識をまとめておきます

C++やRustのような非GC言語やリファレンスカウント方式のGC言語では(強い)循環参照の解放は原理的に不可能です
これらの言語ではデッドロック等と同様に(強い)循環参照は発生させてはいけない禁忌として扱われ発生自体を避けます
対処方法としては弱い参照を用いた弱い循環参照を用いるのが主流ですが
プログラムが自分で管理する範囲内で循環参照を作ってまとめて解放したり範囲内GCなどを用いる方式もあります

マーク&スイープ方式やコピー方式のGC言語ならば(強い)循環参照も解放することができます
ただしそれらの方式は全体空間を全てマークしたり辿ったりコピーしたりとコストが重いことの裏返しでもあります
さらにGCが起こるまで無駄にメモリを専有してしまう問題もあります
そのためこれらの方式のGC言語でも弱参照が用意されて(強い)循環参照を作らないようにすることが一般化しつつあります
2022/09/17(土) 12:35:09.02ID:w5Ud45eS
>>939
ちなみに誰が勘違いしてんの?
2022/09/17(土) 12:37:10.60ID:8assD4qG
>>940
>>939
2022/09/17(土) 12:39:43.66ID:vRd8nzJr
>>939
ちょっと本垢でQiitaにでも書いてくれマサカリ投げに行くから
2022/09/17(土) 13:12:35.27ID:5J0Fty65
>>937
Rustのメモリ安全性、というのを先に定義しとるからなぁ。
そこはまぁ定義次第なのはその通りだと思う。
2022/09/17(土) 13:18:40.25ID:Ct2ljdlf
>>938
無理だよ
だから各言語は現実的な対応をとってる
例えばC++のshared_ptrでも循環参照を起こしたらメモリ解放できない
回避策は強い循環参照を作らないようにweak_ptrを使う
Rustでは意図的に頑張らない限り循環参照が勝手に作られることはないけど
同様に参照をWeakにできるからメモリ解放可能な弱参照を用いた循環参照にして扱う
これはARC方式のSwiftでも同様で循環参照を起こしたらメモリ解放できない
Swiftでもweak宣言で弱参照にできるので解放できない循環参照を避けられる
いずれの言語もほぼ同じ仕組み
2022/09/17(土) 13:55:15.51ID:Dua3tl/G
>>944 >Rustでは意図的に頑張らない限り循環参照が勝手に作られることはない
よくわからないので聞くけど、
Rustでは意図的に頑張れば、Weakにせずに循環参照データ構造を定義してzeroじゃない実データ構築をするコードがコンパイル通るの?
2022/09/17(土) 13:59:18.77ID:8assD4qG
>>943
ならトップページに「Rustにおけるメモリ安全性」として「*メモリリークは除く」くらいはやらないと優良誤認だろ。
2022/09/17(土) 14:14:04.83ID:Qv9rB708
>>945
https://doc.rust-jp.rs/book-ja/ch15-06-reference-cycles.html
2022/09/17(土) 14:16:59.16ID:Dua3tl/G
>>947 ありがとう
2022/09/17(土) 14:26:47.74ID:Dua3tl/G
>>945

https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=0d4932743de9a2d3f91b215fe3a4757b

>最後のprintln!のコメントを外してプログラムを実行したら、aがbを指して、bがaを指してと、 スタックがオーバーフローするまでコンパイラはこの循環を出力しようとするでしょう。

確かに
thread 'main' has overflowed its stack
fatal runtime error: stack overflow
timeout: the monitored command dumped core
2022/09/17(土) 14:30:22.04ID:Qv9rB708
>>937
循環参照によるリークを含むようにメモリ安全性を定義してる文献ってある?

Wikipediaの定義ではメモリリークという分類はあるけど、
"メモリ使用量が追跡されていない又は誤って追跡されている場合"
と説明されていて、前者は当てはまらないし、後者はダングリングポインタなどを意図しているようで、循環参照は含まないように読める

SwiftやChromeやAOSPやDのメモリ安全性に関するドキュメントでもメモリリークについては触れられていないようだった
2022/09/17(土) 14:33:34.46ID:Dua3tl/G
>>949
[BUILD]にしてみたが「循環しるよ」的なwarningはないのね
2022/09/17(土) 14:37:56.61ID:Dua3tl/G
>>951
>>944 >Rustでは意図的に頑張らない限り循環参照が勝手に作られることはない
warningがないし、当該データの使い方次第で実行時エラーにもならないので
意図しなくても、「偶発的に」循環参照が作られることはありそうだ。
2022/09/17(土) 14:42:00.12ID:Dua3tl/G
潜伏した循環参照が後々深刻な事態になるかどうかは別の話だが
Rustだからと言って、コンパイル通ったからと言って、油断は禁物で
2022/09/17(土) 14:43:28.60ID:Dua3tl/G
「常識」でしょw
2022/09/17(土) 14:44:11.19ID:EEEbWrXO
>>937
> 今まである「メモリ安全性」の常識
お前の脳内の話じゃないなら具体的にどういう事なのか示してみそ
2022/09/17(土) 15:27:41.65ID:lGXhfZzC
すげーくだらないことで盛り上がってんなw
さすが次世代w言語wwスレwww
2022/09/17(土) 15:28:08.55ID:5J0Fty65
メモリリークだけでは安全性には差し障らんでしょ。一般的に。
スタック、ヒープが枯渇することはメモリ安全性に差し障るけど。

リークしてるけど走りきった、とか、GCがまとめて解放した、はセーフだと思うよ。
2022/09/17(土) 15:58:19.63ID:8assD4qG
>>950
そんなことよりもまず
「メモリ安全性は(プログラムによる)メモリエラーを許容するのか、しないのか」
はどちらだと思うのか考えてもらいたいね。Rustは「メモリエラーが発生するけどRustはメモリ安全」て言っている。
>>955も同じな。お前もRustみたいに断言するのかね。

まぁ、「c++よりもメモリ安全」というならまだ正確だが、それならそうと正直に言うべきだと思うがね。俺俺メモリ安全をwebページの奥の方に置かないで。
2022/09/17(土) 16:03:03.55ID:37/3YRxM
>>957
いやメモリリークはDoS攻撃に対する脆弱性になりうるから安全性に差し障るよ
2022/09/17(土) 16:11:02.02ID:Qv9rB708
>>958
「メモリ安全性」という用語の定義の話に変な造語持ち込んで話題そらすのやめてよ

Rustによるメモリ安全性の定義が俺俺というなら、ちゃんとした定義を示して欲しいな
「常識だから分かるでしょ?」というのは自分の思いの表明にしかならないよ
2022/09/17(土) 16:15:15.87ID:EEEbWrXO
>>958
だからお前の思う「メモリー安全性」の定義を示せよ
まあ示せないからぐだぐだはぐらかすしか無いんだろうけどw
2022/09/17(土) 16:22:09.35ID:8assD4qG
>>957
だとするとRustで常駐系のプログラムの開発をするのは安全では無いですな。
常駐系プログラムがメモリを食い潰すのは良くあるバグだけど、Rustだとそれは「仕様」で「メモリ安全の対象外」なんだから。
まぁ、Rcの循環参照だけの話だから、外部のコードを含めてRc使っていないor循環参照していないことを検証できれば安全なんだろうけど、Rustファンが言うような「Rustを使えば安全」というようなことは無い。

>>960
素直にWikipediaの「RAMアクセス時に発生するバグやセキュリティホールなどから保護されている状態のこと」でいいだろ。
Rust公式はなんて定義しているの?>>931は定義じゃないよな。
2022/09/17(土) 17:12:30.63ID:Y2R7c2nA
「定義」や「常識」「一般的に」の話とは別だが、このスレ見てる個人的印象だと、
Rustで宣伝商売したい人たちは、Rustを知らない人(意思決定者)が「メモリ安全性」を「優良誤認」(自己責任)するのを密かに期待してそう
Rustプログラマーはそうじゃないと言い切れるのか
2022/09/17(土) 17:14:19.56ID:d1cxOtJi
>>962
あんさんキチガイやな
それはRustの問題じゃない
>>939の説明が一番わかりやすいが言語全般における問題で原理的に解決できない問題やで
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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