- 1 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:17:03.45 ID:gDlfKP6u.net]
- 公式
https://www.rust-lang.org/ https://blog.rust-lang.org/ https://github.com/rust-lang/rust Web上の実行環境 https://play.rust-lang.org 日本語の情報 https://rust-jp.rs/ ※Rustを学びたい人はまず最初に公式のThe Bookを読むこと https://doc.rust-lang.org/book/ ※Rustを学ぶ際に犯しがちな12の過ち https://dystroy.org/blog/how-not-to-learn-rust ※Rustのasyncについて知りたければ「async-book」は必読 https://rust-lang.github.io/async-book/ ※次スレは原則>>980が立てること 前スレ Rust part15 https://mevius.5ch.net/test/read.cgi/tech/1652347700/
- 138 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 01:01:44.47 ID:zU5p2DDn.net]
- >>129
あなたは理解できてない。
- 139 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 01:54:43.58 ID:3k8jHKP2.net]
- >>135
たとえば?
- 140 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 02:12:28.58 ID:WMds9h9Q.net]
- rustには定義されたメモリモデルはないわけだが何を比較してCと違うと言っているの?
https://doc.rust-lang.org/reference/memory-model.html
- 141 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 03:21:25.34 ID:zU5p2DDn.net]
- >>135
「メモリモデル」という言い方は、PC-9801のような16BIT MS-DOS時代に 別の意味で使っていたから混乱を招くが、言いたいことは分かる。
- 142 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 04:54:10.56 ID:086teQVY.net]
- 言いたいことが分かるなら説明すればいいのに...
- 143 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 07:57:34.42 ID:aE2+UZrf.net]
- >>139
結局のところ>>129で合っているわけか
- 144 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 09:03:48.35 ID:tfDB1jS/.net]
- >>138
そんな真面目な用語じゃなくて プログラマがメモリに対して持つメンタルモデルとかそのくらいの意味ではないかと思われる
- 145 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 09:23:30 ID:YSvCn/0F.net]
- メンタルモデルw
- 146 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 09:24:13 ID:WMds9h9Q.net]
- >>142
そのレベルの話だとしてもスタックやヒープの使い方はrustもcも同じだよね 何をもって違いすぎると言っているのかがわからん
- 147 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 11:11:40 ID:1aJxC781.net]
- >>129
>unsafeとは他の言語と同じ状態ということ unsafeでもRust特有のメリットもあればデメリットもある 特にC/C++とは担保されてるsafetyのレベルが根本的に違うので「unsafeなら他の言語と同じ」とか言ってる人はunsafeをまるで理解してないので騙されないように
- 148 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 11:57:37 ID:DrP+xMl0.net]
- そこはあまり本質的じゃないな
Rustは機能的にも速度的にもC言語の代替となれる点が本質だろう そのうえでRustは非常に大きなプラスαがあるからC/C++は不要となった
- 149 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 12:04:57 ID:RBYxpWsA.net]
- Rustの側で書き換えないから
let a=99; とかした奴をCに渡してC側で書き換えるのってアウトだよね?
- 150 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 12:06:52 ID:qOfLavvD.net]
- >>146
何の本質??
- 151 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 12:45:51.46 ID:rY6uXQUu.net]
- >>142
メンタルモデルなんて言葉ねーよ、ハゲ
- 152 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 12:48:07.99 ID:RggUqH9I.net]
- Rustの登場でC/C++が要らなくなったのは当然
>>147 まずはRustの初歩を学習必須 Rustではlet mut a = 99; とmutを指定すればその変数が書き替え可能 呼び出し先で書き替えたいならば まずRustの関数を呼び出す時は &mut a と可変参照を渡せば呼び出し先で書き替え可能 Cの関数を呼び出す時はそれを *mut とポインタにして渡せば呼び出し先で書き替え可能
- 153 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 12:51:14.14 ID:iNsmlcex.net]
- >>146
全てunsafeにでもしない限り、効率を落とさずには代替になれない例が有ると言っている。 ポインタ値をアプリ全体でLinkedListのノードを識別するための id 値として 利用している場合だ。 index 番号では効率が劇的に下がるケースが多い。
- 154 名前:デフォルトの名無しさん [2022/07/04(月) 13:07:11.60 ID:EPYowFm9.net]
- >>151
その件に限らず全てのケースで以下が成立する 基本事項: RustではCと同じ速度&同じ安全度で常に全ての実装が可能 追加事項: RustではCと同じ速度&完全に安全なインタフェースで多くの実装が可能 したがってCが不要となったとの話はもちろん正しい
- 155 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 13:15:16.22 ID:tfDB1jS/.net]
- &a as *const _ as *mut _
- 156 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 13:24:41.08 ID:iNsmlcex.net]
- >>152
あなたの理解は浅い。
- 157 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 13:39:33.82 ID:Lyc/Sj1E.net]
- >>153
それはmut宣言していない変数を(先のC関数もしくはRust unsafeで)書き換えてしまうことになるためあまりよろしくない 書き替えるならばmut変数のmut参照を直接*mutにした方が良いのでは let mut a: 型名 = 初期値; c_func( & mut a as *mut _ ) >>154 それは>>152で正しい
- 158 名前:デフォルトの名無しさん [2022/07/04(月) 13:43:31 ID:NdI05vlq.net]
- すべての言語にunsafeがあればいいよね
- 159 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 14:00:59 ID:WMds9h9Q.net]
- >>151
ベンチマークください
- 160 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 14:07:26.39 ID:V2xsx4Ai.net]
- >>147
FFI呼び出しに要求されるsafetyを満たしてないと言う意味ではアウトだけどそれがどうかした?
- 161 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 14:13:33.00 ID:hjCO09br.net]
- まーた複オジ vs 100点オジの低レベルな言い争いになってるから
隔離スレ復活させたほうがいいな
- 162 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 15:40:19.20 ID:iNsmlcex.net]
- >>155
頭の悪い人は黙ってろ。
- 163 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 16:04:58.57 ID:ttcTbGc1.net]
- >>160
>>155に間違いは無いようだし 君はさっきから的外れなことばかり書いてるような
- 164 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 17:29:54.81 ID:3k8jHKP2.net]
- >>151
それがどうしたというんだ? 何を言いたいのかわからん。
- 165 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 18:02:37.22 ID:iNsmlcex.net]
- >>162
馬鹿には何を言っても理解できない。
- 166 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 18:07:12.10 ID:3k8jHKP2.net]
- > 全てunsafeにでもしない限り
誰も問題にしてないところを勝手に取り上げるのはストローマン論法っていうんだぜ!
- 167 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 18:46:54.41 ID:tF6z07pc.net]
- >>151
なにを問題にしてるのかよくわからんが必要なら全てunsafeにすればいいやん それでもCとかと同じでそれ以外のケースではRustの方がより安全なんだし
- 168 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 19:49:32.85 ID:FTPm+Svf.net]
- リーナスがこのスレを見ていたらLinuxに採用されることはなかっただろうね
- 169 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 19:55:55.02 ID:7t9P5Iu7.net]
- みたらそっ閉じするだろw
- 170 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 19:58:11.73 ID:VzaqPz19.net]
- >>143
センチメンタルな用語ですね!
- 171 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 20:06:09.66 ID:WMds9h9Q.net]
- メンタルモデルってプログラマー界隈ではよく知られた言葉だと思ってたんだけど通じない人もいるのね
- 172 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 20:26:03.13 ID:rP4GYYNg.net]
- プログラマー界隈で言ってる奴を見たことないしそもそも違い云々の時にそんなもん出されても困惑するだけ
- 173 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 20:26:54.96 ID:55lLLVgr.net]
- >>169
普通は通じるからご心配なく
- 174 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 21:09:07.84 ID:LgYZqAbq.net]
- >>169
自分の周りでも普通に通じるけど、よく考えるとどこで知った用語か謎かも… なんか有名なプログラミング系の本とかに書いてあったっけ?
- 175 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 21:22:26 ID:k0bSAJLz.net]
- 適当な造語をさも常識のように語るのはやめようね
そもそもそんな言葉使わなければいい話
- 176 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 21:31:48.17 ID:rrB3dRAB.net]
- >>172
プログラミングのコンテキストでよく使われるようになったのはUI/UXデザイン分野でよく使われてたからじゃないかな ドン・ノーマンの「誰のためのデザイン?」とかかなり昔の本から使われてるよ
- 177 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 21:34:43.82 ID:tfDB1jS/.net]
- そもそも拾う必要すら無かったレスを拾ったばっかりによく分からん論争に
なんかすんませんな
- 178 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 21:35:54.46 ID:WMds9h9Q.net]
- >>172
元々は認知心理学の用語でユーザーインターフェイスとか分野から広まって広く知られるようになったんじゃないかと思う 初出は1943年とのこと https://ja.m.wikipedia.org/wiki/%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E3%83%A2%E3%83%87%E3%83%AB
- 179 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 21:44:59.75 ID:Xyf5Vl2i.net]
- 複オジ大先生がそんな言葉ないとおっしゃってるんだぞ!
スーパー自宅開発者の複オジ大先生が間違ってるとでも言うのか!!
- 180 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 21:56:46.09 ID:UzLOsPAb.net]
- もはやここが隔離スレ状態
- 181 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 02:12:03.31 ID:WHTTcdQX.net]
- >>165
「全てunsafe」だぞ。 アプリ全体をunsafeということだ。 なら、C/C++で十分。
- 182 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 04:52:44.77 ID:86ZbPeAT.net]
- だから
> ポインタ値をアプリ全体でLinkedListのノードを識別するための id 値として利用している場合だ。 の場合だけだろ お前はそんな特殊なアプリしか作らないのかよw そもそもノードの識別を全体にばらまいてるとか設計がタコなんじゃね?
- 183 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 05:08:33.40 ID:WHTTcdQX.net]
- >>180
RubyやJava、オブジェクトの「識別番号」が取得できることがあるが、 それはポインタ値だ。通し番号ではない。 つまり、C言語では伝統的に、リンクトリストのノードを識別するために ポインタ値が使われている。そしてそれこそがリンクリストの本来の使い方。 だれかが間違えて、通し番号で識別する習慣が生まれてしまったが、それは 集団幻覚みたいなもので、誤った使い方だ。
- 184 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 05:22:06.16 ID:b2cot2gP.net]
- で、何が言いたいんだ?
Linked Listをアプリ全体にばらまいてるアホ設計を正当化しようとしてるのか?w
- 185 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 06:08:27.82 ID:8LqsNmpu.net]
- >>177
気に入らないやつを片っ端から複おじ認定するのは荒らしなんだろうか
- 186 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 06:20:58.64 ID:Nla2AFrI.net]
- >>183
その子はキチガイ >>159でも気に入らない二人だけが書き込みしてるように見えてる
- 187 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 07:54:16.72 ID:n+I8xvZo.net]
- >>181
GC言語では、ポインタと言ってもコストの高いポインタとなっていて、コストの高いガベージコレクションで回収する。 それに加えて、データ競合を防ぐには更に何らかの競合回避コストも加わってくる。 一方で、C/C++ではリンクされたノードリストからノードを外す時に、そのライブラリがノードを解放してしまうと、そこへのポインタを保持していた場合にダングリング発生。 それを回避するためにはshared_ptrなどのコストの高いポインタを使わざるを得ない。 ちなみにC++のshared_ptrはスレッドセーフだからマルチスレッド時でも大丈夫だが、逆に言えばシングルスレッド時には無駄なコストがかかっている。 Rustでは、そこはRcとArcの2種類が提供されており、シングルスレッド時にはコストの低いRc使用、マルチスレッド時にはRcだとコンパイルエラーとなってくれてArc使用と、最小限のコストで済む。 このようにノード解放の観点だけ見ても、考慮すべきことをRustコンパイラは適切に指摘してくれる。
- 188 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 10:29:00 ID:1zzLwZyb.net]
- なんでずっとRustスレでRustのセールストークやってるんだ?
- 189 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 10:43:19 ID:XxVp5yEy.net]
- RustスレでRustのネガキャンやってるやつよりマシだろ
- 190 名前:デフォルトの名無しさん mailto:sae [2022/07/05(火) 11:28:42.85 ID:UQspXvq+.net]
- >>182
C言語が速い秘密はLinkedListとそのノードをアプリ全体でポインタ値で識別している ことにある。先頭を0として1,2,3と割り振った通し番号を使っていたと したら、全然速度が出ない。 そしてその証拠が、JavaやRubyなどで「識別番号」が8桁の16進数で表示できる ことだ。その識別番号とは生ポインタ値のことであり、それがそのオブジェクトを 唯一に特定できる最も効率的な方法である。 他の方法では効率が落ちる。
- 191 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 11:29:55.08 ID:UQspXvq+.net]
- >>185
あなたは、理解が浅い。 RustのRcやArcには欠陥がある。 そんなもので済むならとっくにCやC++でも採用されている。 C/C++の歴史の長さを舐めてはいけない。
- 192 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 12:22:07.18 ID:KaO4bask.net]
- >>188
同じ話を何度も繰り返すなよ、ボケ爺か? そうであってもそのアプリがCと同じでそれ以外のアプリならRustの方が安全って書いてあるだろ
- 193 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 12:28:00.80 ID:1zzLwZyb.net]
- >>187
他人に説明できるだけの合理的理由が無いことは自覚してるんだな……
- 194 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 12:32:52.81 ID:84q7aSs+.net]
- えっ、なにか説明が欲しかったのか?
スレ読んでりゃわかると思うがw
- 195 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 13:04:52.14 ID:n+I8xvZo.net]
- >>189
欠陥があると主張するならば、その理由を示さなければならない。 さらにC++でも採用されていることを知らないのは無知ではないか? C++のshared_ptr = RustのArc = SwiftのARC が同じ機能であり、スレッドセーフなリファレンスカウンタ利用の共有ポインタ方式。 それらのスレッドセーフでないコストの安いバージョンがRustのRcである。 これらは、安全にポインタを共有しつつ即時解放を行なうために、必須の機能である。
- 196 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 13:13:39.59 ID:Fs2kh1Em.net]
- >>188
ここでいう効率ってなんの効率?
- 197 名前:デフォルトの名無しさん [2022/07/05(火) 13:19:57.09 ID:MoDZ63yv.net]
- ラスタシアンは何故算数おじさんに触れずにいられないのか
- 198 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 16:10:20.98 ID:UQspXvq+.net]
- >>193
いや、RustのRcなどは、C++とshared_ptrと同じじゃない。 全然違うと言っても過言ではない。
- 199 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 18:30:15.50 ID:Fs2kh1Em.net]
- >>195
なぜか自分のレスには反応してくれないんだよね >>196 具体的になにが違うの
- 200 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 23:09:51.67 ID:n+I8xvZo.net]
- >>196
違いがあると主張するならば、この議論で意味のある違いがあることを示さなければならない。 さらに前述の、欠陥があると主張した件についても、その欠陥を示さなければならない。
- 201 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 23:19:42.19 ID:I5LuZ1z+.net]
- >>197
>具体的になにが違うの 平日の昼ひまでこのスレにくるおじさん・じじいは C++のshared_ptrと同じじゃないということを知ってさえいれば激十分なんだよ。 だから、具体的になにが違うかは(知らないから)答えられない。 C++とRustの深い知識あるようなすごい奴が平日の昼暇でここで遊んでいる なんてことはないだろう。
- 202 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 11:32:12.50 ID:jpnjV9Mh.net]
- Full Stack Rust App Template using Yew + Actix!
https://youtu.be/oCiGjrpGk4A
- 203 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 11:45:22.14 ID:UGbPogY6.net]
- UIフレームワークはスレチだよしんどけ
- 204 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 12:20:02.69 ID:b0Oxubv9.net]
- ここRustプログラミングに関することならば何でも歓迎
各々の関心がないことの和集合を取ると全体集合になる 特定の人にとって関心がないからと言って排除してはいけない
- 205 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 14:24:50.14 ID:oR52wNCu.net]
- 違いが大きすぎるとどこが違うとかいうのを説明するのが難しくなる。
織田信長とオムライスの違いを説明できるか? まあ shared_ptr と Rc の違いはさすがにそこまで大きくはないけども、 前提となる C++ と Rust の違いも小さくはないので比較する意味を感じないな。 shared_ptr は shared_ptr だし Rc は Rc としか言いようがないだろう。
- 206 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 16:11:44.19 ID:rco22hfx.net]
- リファレンスカウント方式の複製可能なスマートポインタという点では類似のものと言って良いのでは
元々はc++とrustで実行効率に差があるという話だがその観点でどういう差があるのかね そもそも実行効率が何のことを言っているのかがよくわからんから議論しても仕方ないか
- 207 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 18:50:47 ID:cl7AdtI8.net]
- 原理と詳細を区別できない人はちょっと……
- 208 名前:デフォルトの名無しさん [2022/07/06(水) 23:39:03.25 ID:DBl9eUwS.net]
- >>203
全く別物の比較なら、信長は人間、オムライスは食べ物、というようなザックリした説明で良くなるのでは?
- 209 名前:デフォルトの名無しさん [2022/07/06(水) 23:45:15.32 ID:DBl9eUwS.net]
- Arcとstd::shared_ptr<>が似てるという人に対して、「いや、std::shared_ptr<>とRcは全然違う」と反論するのがおかしいのでは?
- 210 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 00:18:57.43 ID:6JbvD3+y.net]
- >>206
そうだよ。 それを適用するなら shared_ptr は C++ のスマートポインタ、 Rc は Rust のスマートポインタということしか言えなくなる。
- 211 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 00:49:54.35 ID:Sq6Pkb7P.net]
- >>208
俺らのレベルではその程度の知識で十分だろ で、スマートポインタでもなんか違いあるの?と質問されても具体的に答えられなくても 全く問題ないからな。 一方、すごい人からすれはstd::shared_ptr<>とRcは全然違うとなるんだろうが (すごい人敵にはそれらは例えばstd::shared_ptrは信長で人間、一方、Rcはオムライスで食べ物ぐらい違う! でも、俺らは人間だって餌として食べることができるから同じだろ)
- 212 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 05:04:39.45 ID:WPmCyDkS.net]
- >>196
>>193 は > C++のshared_ptr = RustのArc = SwiftのARC が同じ機能であり、スレッドセーフなリファレンスカウンタ利用の共有ポインタ方式。 って書いてるんだから同じじゃないとか全然違うとかフワフワしたこと言ってないで ・機能 ・スレッドセーフ ・リファレンスカウンタを利用 の各項目について違いを書きなよ
- 213 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 08:43:50 ID:M+xvnEsX.net]
- 共有ポインタって何?
- 214 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 10:54:08.79 ID:LNwVrqhE.net]
- shared pointerじゃね?
- 215 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 11:14:16.23 ID:xmv5m6Ag.net]
- 結局参照カウント方式なのは一緒なんでしょ
- 216 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 12:48:02.98 ID:kuHYrppG.net]
- >>212
だとするとshared pointer方式ってどんな方式?? リファレンスカウンタを利用しないshared pointer方式もあるってことだよね?
- 217 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 14:09:00.32 ID:1csywUpz.net]
- >>214
shared pointerはc++のが有名すぎるからなんとも言えないなぁ。 参照カウント以外でポインタを共有するのはリンクリスト方式とかあるよ。
- 218 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 15:30:16.82 ID:jjCeBJbE.net]
- ARCで管理してる時点でRustはガベコレじゃないからすごい!って理論は破綻してるんじゃありませんかね?
- 219 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 15:41:53.87 ID:6JbvD3+y.net]
- >>216
誰がそんなこと言ってんの? 静的に管理できるものは静的に管理するし、実行時にしかわからないものは実行時に管理するってだけのことだ。 参照カウンタの適用範囲を間違えてるプログラマがいるならそれはそいつが無能。
- 220 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 16:01:25.39 ID:HUExG/fK.net]
- Rust公式の日本語意訳にはしっかりRustはガベコレじゃないから高速って書いてあるね
- 221 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 16:16:37 ID:I5wN0SQd.net]
- >>216
Objective-C/SwiftのARCとRustのArcは同じ3文字略語だけど別のものだよ それを理解した上で言ってるのなら別にいいんだけどさ
- 222 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 18:43:04.02 ID:u5IGnUan.net]
- >>216
そもそもRust公式が「メモリリークはメモリ安全の範疇」と言っているしな。
- 223 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 18:52:31.81 ID:pAImJ0Xg.net]
- >>220
それはRustの定義がおかしい 一般的にはメモリリークがあるとメモリ安全だとは言わない
- 224 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 18:55:30.53 ID:V91F8QUY.net]
- 流れぶった切りだけど単純にRustの人たちはGUIどうしてんの?
- 225 名前:デフォルトの名無しさん [2022/07/07(木) 19:11:09.29 ID:Efq0h4+x.net]
- なんだ、じゃあ、バグはセーフティと定義したら、Rustは安全高めなのか。
- 226 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 19:29:21.10 ID:webRw0a6.net]
- rust にクラスはないのですか?
- 227 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 19:39:16.69 ID:6JbvD3+y.net]
- >>221
Rust が言語の仕組みによって防ごうと努力する範囲にメモリリークは含まないという定義だよ。 それを表すのに「Rust の仕様の中では」メモリ安全という用語を使っているのであって、 定義におかしいもクソもない。 定義なんだから。
- 228 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 19:46:35.34 ID:6JbvD3+y.net]
- >>224
クラスと名付けられている概念はない。 あなたにとってクラスとは何のこと? 何が出来ればクラス?
- 229 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 19:48:37.87 ID:UC7ZSmFv.net]
- 型クラスの事を聞いてるんじゃない?
- 230 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 19:49:32.87 ID:idvDnT2E.net]
- >>216
ARCで管理しているのはSwift RustはC++と同じくRAIIなので高速 どうしても共有メモリを使いたい時のみshared_ptrやRc/Arcを用いる
- 231 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 20:00:40.75 ID:pAImJ0Xg.net]
- >>225
そのRustの仕様の中でメモリ安全性を達成できていないんだから Rustの仕様の中でメモリ安全性という用語を使うのは不適切 Rustの謳うメモリ安全性は世間一般のメモリ安全性とは異なる概念なんだからそれを表すには他の用語を使うのが適当かと
- 232 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 20:06:09.82 ID:idvDnT2E.net]
- >>224
クラスはその根幹の継承がデメリットだらけと結論が出ているためGoやRustなどでは採用されていない メンバー変数やメンバーメソッド等とは構造体で使えるため困ることはない Rustでは構造体を含む任意の型に対して横断的に共通適用可能なトレイトがあり非常に強力で利便性がよい
- 233 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 20:09:54.71 ID:6JbvD3+y.net]
- >>229
知らんがな。 大抵の専門用語は一般名詞に (その分野における) 明確な定義を与えることで成り立ってるのはごく普通のことだろ。
- 234 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 20:25:04.56 ID:idvDnT2E.net]
- >>229
世間一般なんてものはなくそれぞれがそれぞれの定義域に依る そしてそれが明確になっていればよい 例えばRustではメモリ競合は防止可能と明確化しつつ、より一般的な競合状態は対象外と明確化している 原理的に無理なものは無理なのだからそこは明確化してあればそれでよい
- 235 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 21:01:30.61 ID:0wlfNyVX.net]
- >>228
aliasingの話してるところにRAIIが来るのもよくわからないがRAIIだと高速という理屈はさらにわけわかめ
- 236 名前:フ名無しさん mailto:sage [2022/07/07(木) 21:12:46.12 ID:PQWZgdhj.net]
- >>222
windows-rsでunsafe祭りになりながら書いたよ。オススメはしないが。
- 237 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 21:39:23.64 ID:pHkHW2c/.net]
- SwiftのARCとRustのArcの区別がつかない人は論外なので発言を控えてほしい
ただでさえしょうもないのにしょうもなさが倍増するからね・・・ SwiftのARCはAutomatic Reference Counting https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html RustのArcはAtomically Reference Counted https://doc.rust-lang.org/std/sync/struct.Arc.html
- 238 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 22:03:40.09 ID:webRw0a6.net]
- >>230
継承をやめて委譲にすれば割とまともになると思います https://mevius.5ch.net/test/read.cgi/tech/1434079972/51 https://mevius.5ch.net/test/read.cgi/tech/1434079972/84
|

|