公式
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のasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
※次スレは原則>>980が立てること
前スレ
Rust part12
https://mevius.5ch.net/test/read.cgi/tech/1629813327/
探検
Rust part13
レス数が900を超えています。1000を超えると表示できなくなるよ。
2021/11/07(日) 10:04:59.35ID:pJhT3MIE
850デフォルトの名無しさん
2022/02/09(水) 23:23:34.30ID:DXyGa46n じゃあ「所有権」って言葉を使うのもやめることを提案してみたら?
851デフォルトの名無しさん
2022/02/09(水) 23:30:03.48ID:kQ1Azr/o852デフォルトの名無しさん
2022/02/09(水) 23:33:43.18ID:Av5orTrB853デフォルトの名無しさん
2022/02/09(水) 23:36:33.39ID:qfxIxGcm >>849
そうすると所有権という情報には、型と値が含まれてるってこと?
その場合、値の変更は所有権の変更を伴うと考えている?
また、型と値が同じものはたくさんありうるけど、それらの所有権を区別するものはなに?
そうすると所有権という情報には、型と値が含まれてるってこと?
その場合、値の変更は所有権の変更を伴うと考えている?
また、型と値が同じものはたくさんありうるけど、それらの所有権を区別するものはなに?
854デフォルトの名無しさん
2022/02/09(水) 23:36:49.81ID:zSJbpp9s リアルな世界では土地もその所有権も複製できないけど
こちらの世界では値も所有権も複製できる
と考えるだけで矛盾なくRustを理解できると思います
そこに矛盾はありません
こちらの世界では値も所有権も複製できる
と考えるだけで矛盾なくRustを理解できると思います
そこに矛盾はありません
855デフォルトの名無しさん
2022/02/09(水) 23:38:50.10ID:IW3Xziq4 こまけえこたあ良いんだよ!! コンパイラ黙らせた奴の勝ち!!
856デフォルトの名無しさん
2022/02/09(水) 23:41:48.23ID:MYXFjZ5a >>852
それぞれ固有の値を持たないのであれば全部同じ「所有権」では?
それぞれ固有の値を持たないのであれば全部同じ「所有権」では?
857デフォルトの名無しさん
2022/02/09(水) 23:48:17.20ID:Th41z547858デフォルトの名無しさん
2022/02/09(水) 23:49:17.89ID:DXyGa46n そもそも発端は入門者向けドキュメント >>486 にて、「所有権の複製(コピー)」とかいう言葉が出てきてこれではダメだ、っていうのが発端だからね
入門者向けドキュメントなんだから、正しい言葉で、正しく伝わる表現をしてほしいのよ
入門者向けドキュメントなんだから、正しい言葉で、正しく伝わる表現をしてほしいのよ
859デフォルトの名無しさん
2022/02/09(水) 23:50:31.60ID:MsecEarl 結局のところ元の記事にあったように
「所有権とは、文字通り変数が値を所有できる権利のことです。」と間違って捉えてるってことだろうな
「所有権とは、文字通り変数が値を所有できる権利のことです。」と間違って捉えてるってことだろうな
860デフォルトの名無しさん
2022/02/09(水) 23:56:24.02ID:pUgNKLbu861デフォルトの名無しさん
2022/02/09(水) 23:57:32.97ID:wC50dlGN >>856
ん、これどういう意味?
ん、これどういう意味?
862デフォルトの名無しさん
2022/02/09(水) 23:59:13.88ID:MYXFjZ5a >>861
Unit型みたいな。
Unit型みたいな。
863デフォルトの名無しさん
2022/02/10(木) 00:04:56.40ID:ERwpat+E 土地は複製できないって主張もよくわからなくて
例えばコピー機は別に原子レベルで複製しているわけでもなく
人間が見て同じに見える程度に見た目を再現してるだけなわけで
同様に土地だって同じ形状に造成できるわけじゃん
だから複製というときにはオリジナルのどこを再現したかが重要で
何が共通部分で何が差異なのかをはっきりしてほしい
例えばコピー機は別に原子レベルで複製しているわけでもなく
人間が見て同じに見える程度に見た目を再現してるだけなわけで
同様に土地だって同じ形状に造成できるわけじゃん
だから複製というときにはオリジナルのどこを再現したかが重要で
何が共通部分で何が差異なのかをはっきりしてほしい
864デフォルトの名無しさん
2022/02/10(木) 00:06:24.62ID:TkQE8lES >>857
複製ってのがそもそも別のものを作ることなんだが
複製ってのがそもそも別のものを作ることなんだが
865デフォルトの名無しさん
2022/02/10(木) 00:39:11.50ID:lkU+MWHi 所有権っていう"もの"がある訳じゃないよ?
866デフォルトの名無しさん
2022/02/10(木) 01:01:15.29ID:ZN2u8Rs1 リソースの所有者はリソースを解放する責務がある
主としては値が変数に束縛されることで所有の関係が作られる
このへんをいろいろひっくるめて所有権の概念になるわけで、こういった概念である「所有権」そのものを複製したり作成するというのは、やはり言葉としておかしい
束縛関係を複製とか言われても意味わからん
主としては値が変数に束縛されることで所有の関係が作られる
このへんをいろいろひっくるめて所有権の概念になるわけで、こういった概念である「所有権」そのものを複製したり作成するというのは、やはり言葉としておかしい
束縛関係を複製とか言われても意味わからん
867デフォルトの名無しさん
2022/02/10(木) 01:05:28.97ID:TkQE8lES ここで"もの"かそうでないかを区別する意味ってある?その場合の"もの"ってなに?
868デフォルトの名無しさん
2022/02/10(木) 02:44:56.84ID:rtSKPHyc 所有権とは所有にまつわるルールのことというのはTRPLに書いてある通りだと思うんだが
take ownership など、所有権という物をやりとりしているように読める文言はどう解釈すれば良いんだ?
take ownership など、所有権という物をやりとりしているように読める文言はどう解釈すれば良いんだ?
869デフォルトの名無しさん
2022/02/10(木) 03:18:42.60ID:748mZL+w 所有権の話はもう禁止してくれ、唾飛ばしながら「ワイが一番所有権分かってるぞ!」とかほんまどうでもいいわ
コンピューターサイエンス学科出でもないのに、もう駄コードを書く仕事に戻れ
コンピューターサイエンス学科出でもないのに、もう駄コードを書く仕事に戻れ
870デフォルトの名無しさん
2022/02/10(木) 04:10:06.01ID:ZV1iYxPB871デフォルトの名無しさん
2022/02/10(木) 05:39:51.83ID:LZ4lXgTU この自演おじさん、そこらじゅうで同じ芸風で荒らし回ってるから本当にタチ悪い。
872デフォルトの名無しさん
2022/02/10(木) 07:56:52.23ID:B7Nnq//K 結論:
「所有権の複製」は根拠の無いオレオレ用語であり
rust公式による定義は今回も一切示されなかった
でオシマイの話
「所有権の複製」は根拠の無いオレオレ用語であり
rust公式による定義は今回も一切示されなかった
でオシマイの話
873デフォルトの名無しさん
2022/02/10(木) 08:16:17.16ID:lkU+MWHi このおじさん普通に統失だと思う
874デフォルトの名無しさん
2022/02/10(木) 09:03:54.77ID:o2ECnsWv >>870
これが正しい
これが正しい
875デフォルトの名無しさん
2022/02/10(木) 10:20:54.50ID:E3cwpb32876デフォルトの名無しさん
2022/02/10(木) 12:39:37.06ID:JVrcL5p7877デフォルトの名無しさん
2022/02/10(木) 12:43:51.26ID:tTxcUdMu unixのファイルシステムの権限周りの継承とかその辺とごっちゃになってんのかね?
どうして所有権をコピーみたいな話が出てきたのかわりと謎
どうして所有権をコピーみたいな話が出てきたのかわりと謎
878デフォルトの名無しさん
2022/02/10(木) 14:41:33.57ID:3wQKSQe5 謎だよな
C++から来てるわけでもないし
どこから来た発想なんだろう?
C++から来てるわけでもないし
どこから来た発想なんだろう?
879デフォルトの名無しさん
2022/02/10(木) 16:06:58.32ID:mDz1Cqyx880デフォルトの名無しさん
2022/02/10(木) 16:38:55.18ID:rtSKPHyc >>879
その説明へのレス番号貼るだけでもいいよ
その説明へのレス番号貼るだけでもいいよ
881デフォルトの名無しさん
2022/02/10(木) 17:36:51.53ID:jQfqixkL 所有権ルールと参照ルールを混同してたり
所有権が複製される構造はBox<T>のcloneと同じと言ってるところに
勘違いのヒントがありそうだか皆目検討がつかない
誰か解読してくれ
所有権が複製される構造はBox<T>のcloneと同じと言ってるところに
勘違いのヒントがありそうだか皆目検討がつかない
誰か解読してくれ
882デフォルトの名無しさん
2022/02/10(木) 18:29:19.19ID:1jbJS/Bn 人格複製ニキの目的って何なんだろな
883デフォルトの名無しさん
2022/02/10(木) 21:15:53.35ID:HYxEyueN 所有権の複製wwwww
884デフォルトの名無しさん
2022/02/10(木) 21:16:13.39ID:lQNRE6Xh はちみつさんに直接聞いてみたら?
885デフォルトの名無しさん
2022/02/10(木) 21:17:20.02ID:lQNRE6Xh886デフォルトの名無しさん
2022/02/10(木) 23:25:06.23ID:3aizDYBf ここまで見てる限りどっちでもOKな話だな
値と所有権が「!Copy型は移動」「Copy型は複製」との説明でもRustの理解に支障がないのも事実
一方で現世界にない「所有権の複製」という表現に違和感を持つ人が存在することも理解できる
ただし後者はあくまでも心の内なる話だから前者を崩せない限り不利っぽい
値と所有権が「!Copy型は移動」「Copy型は複製」との説明でもRustの理解に支障がないのも事実
一方で現世界にない「所有権の複製」という表現に違和感を持つ人が存在することも理解できる
ただし後者はあくまでも心の内なる話だから前者を崩せない限り不利っぽい
887デフォルトの名無しさん
2022/02/10(木) 23:34:31.44ID:o2ECnsWv888デフォルトの名無しさん
2022/02/11(金) 00:20:49.53ID:05KWrNRV 語感には個人差があるからな
個人的には「複製」といえばCopyじゃなくCloneだし、Cloneなら「所有権の複製」もぎりぎり許せる
Copyを無理やり日本語にするなら「複写」かな
Copyの何たるかは
https://doc.rust-lang.org/std/marker/trait.Copy.html
で十分説明されてると思う
>>881
「ファイルの所有権がある⇒ファイルにアクセスできる」
の類推で
「変数(値)の所有権がある⇒変数(値)にアクセスできる」
と誤解されるケースはたまにみかける
これは用語(訳語)の問題でもあるから多少は仕方ない
個人的には「複製」といえばCopyじゃなくCloneだし、Cloneなら「所有権の複製」もぎりぎり許せる
Copyを無理やり日本語にするなら「複写」かな
Copyの何たるかは
https://doc.rust-lang.org/std/marker/trait.Copy.html
で十分説明されてると思う
>>881
「ファイルの所有権がある⇒ファイルにアクセスできる」
の類推で
「変数(値)の所有権がある⇒変数(値)にアクセスできる」
と誤解されるケースはたまにみかける
これは用語(訳語)の問題でもあるから多少は仕方ない
889デフォルトの名無しさん
2022/02/11(金) 00:26:11.55ID:jgApYu5Z Rustの公式ドキュメントを調べると "copy of the value" という表現はたくさん出てくるが、 "copy of the ownership" のような表現は見つけられない
おそらく公式ドキュメントでも "copy of the ownership" みたいな言葉が使われそうになったときは意図的に排除されてるんだろう
もし "copy of the ownership" みたいに変更しても問題ないと思うなら、公式ドキュメントのリポジトリでそういうふうに提案してみてくれよ
Contributionのガイドを参考にコミュニティに書いたり、GithubでPull Requestするだけだからさ
https://rustc-dev-guide.rust-lang.org/contributing.html
おそらく公式ドキュメントでも "copy of the ownership" みたいな言葉が使われそうになったときは意図的に排除されてるんだろう
もし "copy of the ownership" みたいに変更しても問題ないと思うなら、公式ドキュメントのリポジトリでそういうふうに提案してみてくれよ
Contributionのガイドを参考にコミュニティに書いたり、GithubでPull Requestするだけだからさ
https://rustc-dev-guide.rust-lang.org/contributing.html
890デフォルトの名無しさん
2022/02/11(金) 01:40:58.50ID:3Ka4+NQm ownership の take や transfer という言葉が出てくるのは !Copy な値についての説明で、
Copy な値については ownership 絡めて説明されてないよね
ownership rule 自体は全ての値に適用されるから本来は Copy な値の ownership についてとうルールが適用されるかという説明はあった方が良いかもね
元々の初学者向け記事ではTRPL英語版にない部分の説明をするにあたって所有権の複製という用語を発明したわけだけど
どう説明するとわかりやすいんだろうか
Copy な値については ownership 絡めて説明されてないよね
ownership rule 自体は全ての値に適用されるから本来は Copy な値の ownership についてとうルールが適用されるかという説明はあった方が良いかもね
元々の初学者向け記事ではTRPL英語版にない部分の説明をするにあたって所有権の複製という用語を発明したわけだけど
どう説明するとわかりやすいんだろうか
891デフォルトの名無しさん
2022/02/11(金) 01:48:31.89ID:+uMSd1hh892デフォルトの名無しさん
2022/02/11(金) 01:57:15.41ID:Bozzm6u4 >>888
Rust的には「変数(値)の所有権がある」という表現が既におかしいぞ
Rust的には「変数(値)の所有権がある」という表現が既におかしいぞ
893デフォルトの名無しさん
2022/02/11(金) 08:08:57.43ID:pt0GtJjK >>890
> 元々の初学者向け記事では(中略)所有権の複製という用語を発明したわけだけど
オレオレ用語を初学者に平気で刷り込んで平気ならば
> どう説明するとわかりやすいんだろうか
今後一切あらゆる場所で説明などしないでほしい
> 元々の初学者向け記事では(中略)所有権の複製という用語を発明したわけだけど
オレオレ用語を初学者に平気で刷り込んで平気ならば
> どう説明するとわかりやすいんだろうか
今後一切あらゆる場所で説明などしないでほしい
894デフォルトの名無しさん
2022/02/11(金) 08:18:36.04ID:pt0GtJjK 平気すぎた(ノ∀`)アチャー
895デフォルトの名無しさん
2022/02/11(金) 08:49:57.52ID:IHS0l4KB 個人が複製を分かりやすいと思うのは自由だけど
初心者に広めるのはダメだと思うがな
もっと明らかに初心者向けの例え話とわかるような用語ならともかく
いかにも公式の技術用語っぽい見た目をしてるわけで
これを知った初心者がもっと深く知りたいと思ったときに
ググっても全く情報は出てこないし、誰かに質問しても「なにそれ?」ってなる
少なくとも公式の説明に沿った言い方なら、それで理解してる人が
大勢いるから、そういった問題は生じない
初心者に広めるのはダメだと思うがな
もっと明らかに初心者向けの例え話とわかるような用語ならともかく
いかにも公式の技術用語っぽい見た目をしてるわけで
これを知った初心者がもっと深く知りたいと思ったときに
ググっても全く情報は出てこないし、誰かに質問しても「なにそれ?」ってなる
少なくとも公式の説明に沿った言い方なら、それで理解してる人が
大勢いるから、そういった問題は生じない
896デフォルトの名無しさん
2022/02/11(金) 08:58:58.08ID:WRuOVQdn 自分の理解不足を何で公式の落ち度みたいにすり替えてるんだ。間違いを認めたら死んじゃう病なの?
897デフォルトの名無しさん
2022/02/11(金) 10:27:57.19ID:2FzZhGyg898デフォルトの名無しさん
2022/02/11(金) 11:14:45.52ID:zZVxGVeC 勘違い勘違い言うけど>>808以上の話じゃないように思うんだが。
899デフォルトの名無しさん
2022/02/11(金) 11:24:34.62ID:3Ka4+NQm 自分も>>808で良いと思うけど公式の説明と表現が同じになってるかは気になる
900デフォルトの名無しさん
2022/02/11(金) 11:38:14.49ID:MSfgatap901デフォルトの名無しさん
2022/02/11(金) 11:42:56.32ID:UuEYjDqs 複製オジが遂に撤退戦をはじめたかw
なんで所有権が複製可能だと思い込んだのか説明してくれれば
他の人の役に立つのにな
なんで所有権が複製可能だと思い込んだのか説明してくれれば
他の人の役に立つのにな
902デフォルトの名無しさん
2022/02/11(金) 12:01:57.67ID:3Ka4+NQm903デフォルトの名無しさん
2022/02/11(金) 12:06:36.51ID:IlhJUkFw 流れぶった切ってすまんけど質問
「借用」と「参照」の違いってなんなん?
「借用」と「参照」の違いってなんなん?
904デフォルトの名無しさん
2022/02/11(金) 12:07:10.38ID:MSfgatap905デフォルトの名無しさん
2022/02/11(金) 12:14:00.85ID:6AYXkq/G906デフォルトの名無しさん
2022/02/11(金) 12:21:34.19ID:zZVxGVeC ownerに対する所有権があるような話になってよくわからんね。
907デフォルトの名無しさん
2022/02/11(金) 12:25:48.71ID:vAEawTbN >>903
参照は変数の種類で、借用は参照の使い方とか参照同士の関係とか状態のこと。
明確に書かれていないけど、そのへんを意識してThe Bookのreferences and borrowingあたりを見ると良いよ。
参照は変数の種類で、借用は参照の使い方とか参照同士の関係とか状態のこと。
明確に書かれていないけど、そのへんを意識してThe Bookのreferences and borrowingあたりを見ると良いよ。
908デフォルトの名無しさん
2022/02/11(金) 12:44:48.12ID:MSfgatap >>905
C言語のfreeでも入れ物を解放している
入れ物の中にある値を解放しているわけではない
そしてmalloc/freeで対象となる変数は入れ物を指している
つまりその変数自体は一つ階層が異なりポインタである
そのポインタ変数を書き換えても別の入れ物を指すようになるだけ
入れ物の中身が書き換わるわけではない
C言語のfreeでも入れ物を解放している
入れ物の中にある値を解放しているわけではない
そしてmalloc/freeで対象となる変数は入れ物を指している
つまりその変数自体は一つ階層が異なりポインタである
そのポインタ変数を書き換えても別の入れ物を指すようになるだけ
入れ物の中身が書き換わるわけではない
909デフォルトの名無しさん
2022/02/11(金) 13:17:26.35ID:6AYXkq/G >>908
いいえfreeは入れ物にある値を解放しています
入れ物を解放しているわけではありません
そもそもfreeに限らずc言語の関数はすべて値渡しなのでfree(入れ物)と書いたらfreeには入れ物にある値が複製されたのが引数として渡されて入れ物に関する情報は一切渡されません
c言語の関数が操作できるのはこの複製された値です
もし入れ物を関数funcで操作したい場合はfunc(&入れ物)と書きます
この場合も&入れ物という値が操作されます
繰り返しになりますがc言語はすべて値渡しなので決して関数に入れ物を渡して解放するなどと言った操作をすることはできません 解放されるのは値です
入れ物の参照を関数に渡すには&入れ物という表記を使いますが&入れ物も値です これは参照呼びと言われますがただの値渡しです
あなたは明らかにプログラミング初心者なのでこのレスが理解できるようになるまでこのスレには書き込まないでください
いいえfreeは入れ物にある値を解放しています
入れ物を解放しているわけではありません
そもそもfreeに限らずc言語の関数はすべて値渡しなのでfree(入れ物)と書いたらfreeには入れ物にある値が複製されたのが引数として渡されて入れ物に関する情報は一切渡されません
c言語の関数が操作できるのはこの複製された値です
もし入れ物を関数funcで操作したい場合はfunc(&入れ物)と書きます
この場合も&入れ物という値が操作されます
繰り返しになりますがc言語はすべて値渡しなので決して関数に入れ物を渡して解放するなどと言った操作をすることはできません 解放されるのは値です
入れ物の参照を関数に渡すには&入れ物という表記を使いますが&入れ物も値です これは参照呼びと言われますがただの値渡しです
あなたは明らかにプログラミング初心者なのでこのレスが理解できるようになるまでこのスレには書き込まないでください
910デフォルトの名無しさん
2022/02/11(金) 13:27:03.79ID:MSfgatap911デフォルトの名無しさん
2022/02/11(金) 13:43:08.13ID:UrRCo2Y3912デフォルトの名無しさん
2022/02/11(金) 13:45:34.76ID:HZ9j/fjC 次スレはワッチョイ付けたほうが良さそうですね
913デフォルトの名無しさん
2022/02/11(金) 14:02:29.28ID:m8Gesa51 俺は初心者なのでフワッとすら分かっておらず、このスレでは一体何が議論になっているのかよく分からない。
914デフォルトの名無しさん
2022/02/11(金) 14:04:16.80ID:6AYXkq/G >>910
別に抽象的なセマンティクスでもないよ
君が言っている「入れ物」でさえ操作的意味論的にはアドレスを表す単なる「値」として表現されていることを知るべきだね
ちゃんと理論的にはどのように定式化されているのかを知らないで入れ物だとか言った自分の無知を埋め合わすために勝手に導入したオレオレキーワード使って他の人を困らせてる辺り一向に君は初心者から脱却できないと思うよ
「入れ物」(笑)なんかじゃなくて実際に使われているテクニカルタームを使うことから始めれば?
知らないの?
別に抽象的なセマンティクスでもないよ
君が言っている「入れ物」でさえ操作的意味論的にはアドレスを表す単なる「値」として表現されていることを知るべきだね
ちゃんと理論的にはどのように定式化されているのかを知らないで入れ物だとか言った自分の無知を埋め合わすために勝手に導入したオレオレキーワード使って他の人を困らせてる辺り一向に君は初心者から脱却できないと思うよ
「入れ物」(笑)なんかじゃなくて実際に使われているテクニカルタームを使うことから始めれば?
知らないの?
915デフォルトの名無しさん
2022/02/11(金) 14:05:22.34ID:6AYXkq/G 学術的に使われた用語だからテクニカルタームではないな
916デフォルトの名無しさん
2022/02/11(金) 14:28:40.44ID:m8Gesa51 私は何も知らない。
917デフォルトの名無しさん
2022/02/11(金) 14:35:23.81ID:05KWrNRV freeに渡すアドレス値を「入れ物」と呼ぶか「値」と呼ぶかでもめているように見える
918デフォルトの名無しさん
2022/02/11(金) 14:44:41.81ID:6Qn4bKwU >>914
その理解はおかしいよ
例えば
struct S(i32);
struct SS(i32, i32);
let i = 100;
let s = S(200);
let ss = SS(300, 400);
let a = [500, 600, 700];
この時にあなたの理解だと各変数に入っている「値」はアドレスなの?
もちろん生成コードにおいてスタック上のアドレスが用いられるのは事実だけど
Rustというプログラミング言語のレベルではそのアドレスは出てこずに抽象的に捉えるべき話でしょう
その理解はおかしいよ
例えば
struct S(i32);
struct SS(i32, i32);
let i = 100;
let s = S(200);
let ss = SS(300, 400);
let a = [500, 600, 700];
この時にあなたの理解だと各変数に入っている「値」はアドレスなの?
もちろん生成コードにおいてスタック上のアドレスが用いられるのは事実だけど
Rustというプログラミング言語のレベルではそのアドレスは出てこずに抽象的に捉えるべき話でしょう
919デフォルトの名無しさん
2022/02/11(金) 15:04:06.88ID:6AYXkq/G >>918
それらの変数にはすべてそれぞれの実体が入っています
アドレスではありません
全ての「アドレス」は「値」ですがだからといって全ての「値」も「アドレス」であるとは言っていません
まずは読解力を身に着けましょう
もっと正しく理解をしましょう
それらの変数にはすべてそれぞれの実体が入っています
アドレスではありません
全ての「アドレス」は「値」ですがだからといって全ての「値」も「アドレス」であるとは言っていません
まずは読解力を身に着けましょう
もっと正しく理解をしましょう
920デフォルトの名無しさん
2022/02/11(金) 15:18:23.74ID:6Qn4bKwU921デフォルトの名無しさん
2022/02/11(金) 15:28:24.64ID:6AYXkq/G922デフォルトの名無しさん
2022/02/11(金) 15:36:10.19ID:H8NApfSl 所有権を持つのは値じゃなく変数
これはいいよね
オライリー本とかは少し違うけど
少なくとも公式は値が別の値を所有するとか
値が別の値の所有権を持つという考え方は採用していない
で解放のほうだけど
解放する対象はメモリ領域であって値でも変数でも無いよね
便宜的に「変数(の指してるメモリ領域)を解放する」とか
「値(が格納されてるメモリ領域)を解放する」という言い方をすることがあるだけ
これはいいよね
オライリー本とかは少し違うけど
少なくとも公式は値が別の値を所有するとか
値が別の値の所有権を持つという考え方は採用していない
で解放のほうだけど
解放する対象はメモリ領域であって値でも変数でも無いよね
便宜的に「変数(の指してるメモリ領域)を解放する」とか
「値(が格納されてるメモリ領域)を解放する」という言い方をすることがあるだけ
923デフォルトの名無しさん
2022/02/11(金) 15:46:50.29ID:MSfgatap924デフォルトの名無しさん
2022/02/11(金) 15:47:39.62ID:zZVxGVeC925デフォルトの名無しさん
2022/02/11(金) 15:47:44.62ID:6AYXkq/G >>922
私は操作的意味論のモデルに乗っかって表現したまでです
操作的意味論ではメモリ領域を示すアドレスは値として表現されています
ある特殊な操作的意味論で定義された理論をベースにしているRustでメモリ領域のことを値だと表現するのは間違っていないでしょう
逆に入れ物や変数だといった表現をこの文脈で使うのは言語道断かと思われます
私は操作的意味論のモデルに乗っかって表現したまでです
操作的意味論ではメモリ領域を示すアドレスは値として表現されています
ある特殊な操作的意味論で定義された理論をベースにしているRustでメモリ領域のことを値だと表現するのは間違っていないでしょう
逆に入れ物や変数だといった表現をこの文脈で使うのは言語道断かと思われます
926デフォルトの名無しさん
2022/02/11(金) 15:51:44.74ID:6Qn4bKwU >>921
それは違いますよ
そこでアドレスという考え方はしませんし、実装で見ても間違っています
例えばあなたの考えでは以下の4つの変数のうちアドレスとなるのはどれですか?
struct S(i32);
struct SSS(i32, i32, i32);
let i = 100;
let s = S(200);
let sss = SSS(300, 400, 500);
let a = [600, 700, 800];
それは違いますよ
そこでアドレスという考え方はしませんし、実装で見ても間違っています
例えばあなたの考えでは以下の4つの変数のうちアドレスとなるのはどれですか?
struct S(i32);
struct SSS(i32, i32, i32);
let i = 100;
let s = S(200);
let sss = SSS(300, 400, 500);
let a = [600, 700, 800];
927デフォルトの名無しさん
2022/02/11(金) 15:54:42.31ID:6AYXkq/G >>923
すいません
さらに配列の長さも保持しているのならなおさら抽象化のレベルは下がりますよね?
自分が何を言ってるのかわかっておいでですか?
もしかしてRustの抽象化レベルってCよりも下なんじゃないんですか?(笑)
すいません
さらに配列の長さも保持しているのならなおさら抽象化のレベルは下がりますよね?
自分が何を言ってるのかわかっておいでですか?
もしかしてRustの抽象化レベルってCよりも下なんじゃないんですか?(笑)
928デフォルトの名無しさん
2022/02/11(金) 16:01:23.79ID:VlXZAIWT なんでこのスレでは操作的意味論とC言語とRustをちゃんぽんして語ってるの?
みんな器用だね?
みんな器用だね?
929デフォルトの名無しさん
2022/02/11(金) 16:02:15.20ID:6AYXkq/G >>926
変数という用語も正しくはありません
まず第一にRustでは束縛と呼ばれます
正しく理解してください
それができないならばあなたはこれ以上スレに書き込まないでください
ちなみに私がアドレスだと言っているものはあなたが変数だと言っている物です
そもそもアドレスという表現も不適切なものですが悪しからず
変数という用語も正しくはありません
まず第一にRustでは束縛と呼ばれます
正しく理解してください
それができないならばあなたはこれ以上スレに書き込まないでください
ちなみに私がアドレスだと言っているものはあなたが変数だと言っている物です
そもそもアドレスという表現も不適切なものですが悪しからず
930デフォルトの名無しさん
2022/02/11(金) 16:21:36.51ID:MSfgatap >>929
ついに馬脚を現したな
Rustでも変数(variable)と呼ぶことすら知らないのか
もちろん束縛(binding)も狭義の代入(assignment)と区別するために用いるが
そこでも束縛や代入の対象は変数である
ついに馬脚を現したな
Rustでも変数(variable)と呼ぶことすら知らないのか
もちろん束縛(binding)も狭義の代入(assignment)と区別するために用いるが
そこでも束縛や代入の対象は変数である
931デフォルトの名無しさん
2022/02/11(金) 16:32:43.51ID:6Qn4bKwU932デフォルトの名無しさん
2022/02/11(金) 16:36:33.29ID:6AYXkq/G >>930
Rustの用語では束縛の対象は名前です
変数ではありません
Rustが便宜的に変数と使っているのは説明のためにユーザーにRustなりに歩み寄っているからです
あなたが「入れ物」だといったよくわからないキーワードを導入したのと基本的には理由は同じです
操作的意味論では束縛の対象は変数ですが代入の対象は変数ではありません
メモリ上のある位置です
便宜的に言えばアドレスです
再三の忠告になりますが正しい理解が出来ないのであればスレに書き込まないようおすすめします
Rustの用語では束縛の対象は名前です
変数ではありません
Rustが便宜的に変数と使っているのは説明のためにユーザーにRustなりに歩み寄っているからです
あなたが「入れ物」だといったよくわからないキーワードを導入したのと基本的には理由は同じです
操作的意味論では束縛の対象は変数ですが代入の対象は変数ではありません
メモリ上のある位置です
便宜的に言えばアドレスです
再三の忠告になりますが正しい理解が出来ないのであればスレに書き込まないようおすすめします
933デフォルトの名無しさん
2022/02/11(金) 16:45:09.37ID:6AYXkq/G934デフォルトの名無しさん
2022/02/11(金) 16:50:42.53ID:6Qn4bKwU935デフォルトの名無しさん
2022/02/11(金) 16:56:53.29ID:6AYXkq/G >>934
変数i,s,sss,aにアドレスが入っているなどと言ってません
読解力も理解力もないんですね
i,s,sss,aは変数ではなくてアドレスという名の値だって言うことを理解できないとあなたはいつまで立っても初心者のままですよ??(笑)
変数i,s,sss,aにアドレスが入っているなどと言ってません
読解力も理解力もないんですね
i,s,sss,aは変数ではなくてアドレスという名の値だって言うことを理解できないとあなたはいつまで立っても初心者のままですよ??(笑)
936デフォルトの名無しさん
2022/02/11(金) 16:59:09.28ID:6AYXkq/G937デフォルトの名無しさん
2022/02/11(金) 17:02:29.35ID:79iMdFI4 なんなんだよこのスレはw
938デフォルトの名無しさん
2022/02/11(金) 17:03:16.70ID:WRuOVQdn 間違いを認めたくないおじさんが延々と言い訳するスレ
939デフォルトの名無しさん
2022/02/11(金) 17:07:13.91ID:6Qn4bKwU940デフォルトの名無しさん
2022/02/11(金) 17:13:25.21ID:4QDnJV3g 即値とか知らなさそう
941デフォルトの名無しさん
2022/02/11(金) 17:19:13.64ID:6AYXkq/G >>939
Rustを含めアドレスという言語機能を持っている手続き型言語で変数と呼ばれているものはただのアドレスです
Rustでいう値が束縛された名前は操作的意味論における変数に対応していてあなた方がいう変数とは操作的意味論におけるアドレスを表現するものの対応物です
本来変数とアドレスは同義のものでc言語の規格で完全にポインタとアドレスが同じものとして扱われ区別されないのと同様に区別する必要性がないものです
現にポインタもアドレスも変数も操作的意味論では区別されていません
このあたりを理解できない限りID:6Qn4bKwUは永遠に初心者のままのようだ🤣
Rustを含めアドレスという言語機能を持っている手続き型言語で変数と呼ばれているものはただのアドレスです
Rustでいう値が束縛された名前は操作的意味論における変数に対応していてあなた方がいう変数とは操作的意味論におけるアドレスを表現するものの対応物です
本来変数とアドレスは同義のものでc言語の規格で完全にポインタとアドレスが同じものとして扱われ区別されないのと同様に区別する必要性がないものです
現にポインタもアドレスも変数も操作的意味論では区別されていません
このあたりを理解できない限りID:6Qn4bKwUは永遠に初心者のままのようだ🤣
942デフォルトの名無しさん
2022/02/11(金) 17:26:17.96ID:7ybYem6W cのfreeは値「で」解放してるだけなんだけどなw
int *p = malloc(sizeof(int)); // 仮に p = 0x5617ae143260とする
free((int *)0x5617ae143260); // 値でfreeできる
値をfreeしてるわけでもなく
入れ物を解放してるわけでもなく
値をfreeに与えてやってあとはむこうでうまくヒープを解放してくれる
ヒープ解放のきっかけを値で指定してるだけ
int *p = malloc(sizeof(int)); // 仮に p = 0x5617ae143260とする
free((int *)0x5617ae143260); // 値でfreeできる
値をfreeしてるわけでもなく
入れ物を解放してるわけでもなく
値をfreeに与えてやってあとはむこうでうまくヒープを解放してくれる
ヒープ解放のきっかけを値で指定してるだけ
943デフォルトの名無しさん
2022/02/11(金) 17:40:06.20ID:WRuOVQdn 内部的には構造体なんだっけか
944デフォルトの名無しさん
2022/02/11(金) 17:42:17.21ID:VlXZAIWT >>941
横レスだけど
仮にこの世にコンパイラも実行するマシンもなくて、Rustのコードだけが紙に書かれてたとして
それでもi,s,sss,aは変数ではなく、アドレスという名の値だって言い張るの?
具体的にはどういう値なの?
横レスだけど
仮にこの世にコンパイラも実行するマシンもなくて、Rustのコードだけが紙に書かれてたとして
それでもi,s,sss,aは変数ではなく、アドレスという名の値だって言い張るの?
具体的にはどういう値なの?
945デフォルトの名無しさん
2022/02/11(金) 17:45:23.35ID:6AYXkq/G946デフォルトの名無しさん
2022/02/11(金) 17:45:40.46ID:6AYXkq/G 決まっていないなら
947デフォルトの名無しさん
2022/02/11(金) 17:56:17.41ID:VlXZAIWT948デフォルトの名無しさん
2022/02/11(金) 18:02:50.44ID:6AYXkq/G >>947
新しいアドレスにはすでに使われているアドレスの値を使ってはいけないという制約は操作的意味論でも目にするでしょう
あなたが熱心に勉強するタイプの人であったなら私のレスを待たずにして自分で調べて自分で疑問を解決していただろうに残念ながらあなたは受動的にしか学習せず一生初心者のままに留まる人間なんでしょうね
新しいアドレスにはすでに使われているアドレスの値を使ってはいけないという制約は操作的意味論でも目にするでしょう
あなたが熱心に勉強するタイプの人であったなら私のレスを待たずにして自分で調べて自分で疑問を解決していただろうに残念ながらあなたは受動的にしか学習せず一生初心者のままに留まる人間なんでしょうね
949デフォルトの名無しさん
2022/02/11(金) 18:14:14.82ID:6Qn4bKwU >>942
その通りで、単なる識別子としての「値」で解放しているだけだね
そしてアロケーションライブラリによってはその「値」がアドレス自体でないかもしれない、と
C言語では抽象レベルと具体化レベルがほぼ一致のためアドレスが使われアドレスで考えてもいいけど
多くのプログラミング言語ではその部分は実装レベルに隠蔽されているからアドレスで考えてはよくないね
で、話を戻すと、大元の話ではその「『値で』解放している」かどうかではなくて
「『値を』解放している」のか、「なんらか抽象的な『空間を』解放しているのか」の話だったと認識してる
その通りで、単なる識別子としての「値」で解放しているだけだね
そしてアロケーションライブラリによってはその「値」がアドレス自体でないかもしれない、と
C言語では抽象レベルと具体化レベルがほぼ一致のためアドレスが使われアドレスで考えてもいいけど
多くのプログラミング言語ではその部分は実装レベルに隠蔽されているからアドレスで考えてはよくないね
で、話を戻すと、大元の話ではその「『値で』解放している」かどうかではなくて
「『値を』解放している」のか、「なんらか抽象的な『空間を』解放しているのか」の話だったと認識してる
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 [蚤の市★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」 [ぐれ★]
- 【高市リスク】立民・小西洋之参院議員「高市総理がとんでもない安全保障オンチで外交オンチ」 [ぐれ★]
- 『DOWNTOWN+』会員数50万人突破で見えてきた 松本人志の“月収4ケタ万円”驚愕収入 [阿弥陀ヶ峰★]
- 【赤坂ライブハウス刺傷】逃走していた自衛官の男(43)を殺人未遂の疑いで逮捕 警視庁 被害女性とは知人関係 [Ailuropoda melanoleuca★]
- 【芸能】永遠の童顔′ウ「光GENJI」53歳になった山本淳一の近影に「若いな?」「元気パワーもらえるよっ」 [湛然★]
- 安倍晋三「日本よ、世界の真ん中で咲き誇れ」高市早苗「日本外交を咲き誇らせてまいります」 [696684471]
- 日本人「憲法9条があれば侵略されないって叫んでた売国左翼のゴミどもは今どんな気分?😂wwwwww」 [441660812]
- 女死ね
- 【悲報】東京都民さん、20過ぎてるのに自転車に乗っててて大炎上wwwwwwwwwwww女「いい歳した男で自転車に乗るのは知的障がい者だけだよ? [483447288]
- 広島焼きって食いにくくね
- 【悲報】細田守最新作、超絶爆死しそう
