公式
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
833デフォルトの名無しさん
2022/02/09(水) 21:52:08.47ID:Sh3dorK1 >>832
正当性を訴えるのはやめたん?w
正当性を訴えるのはやめたん?w
834デフォルトの名無しさん
2022/02/09(水) 21:58:09.12ID:Th41z547 >>824
だからー、値が複製されて所有権が新規にできるんだってば
だからー、値が複製されて所有権が新規にできるんだってば
835デフォルトの名無しさん
2022/02/09(水) 21:58:48.91ID:p5i5ajWp let a = 1; は値1の所有権をaが持つということ
ここでその値1の所有権を複製してしまうと、同じ値の所有権を持つ人が複数存在してしまうことになる
let b = a; で実際に起きるのは、値1のコピーとして値1'を生成し、その所有権をbに割り当てている
値1と値1'は数値としては同じに見えるとしても違う値であって
それぞれ別々に所有権がある
1'の所有権が1の所有権の複製である、という理解は
権利書をコピーして記名欄だけ書き換えるみたいな
イメージなのかもね
実際にはその記名欄が所有権の全てであって、
複製する部分というのは存在しない
ここでその値1の所有権を複製してしまうと、同じ値の所有権を持つ人が複数存在してしまうことになる
let b = a; で実際に起きるのは、値1のコピーとして値1'を生成し、その所有権をbに割り当てている
値1と値1'は数値としては同じに見えるとしても違う値であって
それぞれ別々に所有権がある
1'の所有権が1の所有権の複製である、という理解は
権利書をコピーして記名欄だけ書き換えるみたいな
イメージなのかもね
実際にはその記名欄が所有権の全てであって、
複製する部分というのは存在しない
836デフォルトの名無しさん
2022/02/09(水) 22:01:53.64ID:pUgNKLbu Copy実装型にも所有権はあって借用ルールに従う
そして使われる時に値と所有権は複製されて別々の値と所有権になる
そのため借用中だと複製できない
let mut a = 123;
let a1 = &mut a;
let b = a;
*a1 = 345;
println!("a={a}");
println!("b={b}");
例えばこのコードは借用中のため複製できずコンパイルエラー
そして使われる時に値と所有権は複製されて別々の値と所有権になる
そのため借用中だと複製できない
let mut a = 123;
let a1 = &mut a;
let b = a;
*a1 = 345;
println!("a={a}");
println!("b={b}");
例えばこのコードは借用中のため複製できずコンパイルエラー
837デフォルトの名無しさん
2022/02/09(水) 22:02:09.07ID:p5i5ajWp 複製するという言い方は、複数の権利者が
(一時的にでも)存在し得るという理解につながるので
単に言い方の問題ではなく避けたほうがいいと思う
(一時的にでも)存在し得るという理解につながるので
単に言い方の問題ではなく避けたほうがいいと思う
838デフォルトの名無しさん
2022/02/09(水) 22:06:52.22ID:f/eR1VAb どうでもいいならそれでいいんだけどね
中身の無いどうでもいい話をしましたってことで
中身の無いどうでもいい話をしましたってことで
839デフォルトの名無しさん
2022/02/09(水) 22:10:36.37ID:zSJbpp9s840デフォルトの名無しさん
2022/02/09(水) 22:23:03.85ID:pUgNKLbu その通り
だから「(所有権と関係なく)値が複製されて、その値に新たな所有権が生じる」よりも
「値と所有権が複製されて、別々の値と所有権になる」の方がRustを正しく理解できる
だから「(所有権と関係なく)値が複製されて、その値に新たな所有権が生じる」よりも
「値と所有権が複製されて、別々の値と所有権になる」の方がRustを正しく理解できる
841デフォルトの名無しさん
2022/02/09(水) 22:24:43.45ID:HWZXFj3+ wwww
複製オジのエクストリーム解釈で自演してもモロバレやでwww
複製オジのエクストリーム解釈で自演してもモロバレやでwww
842デフォルトの名無しさん
2022/02/09(水) 22:35:06.54ID:MYXFjZ5a843デフォルトの名無しさん
2022/02/09(水) 22:35:22.01ID:oiWhDOci OwnershipのルールとReferenceのルールが整理できてないんだね
分かった気にならずに一からやり直したほうがよさげ
分かった気にならずに一からやり直したほうがよさげ
844デフォルトの名無しさん
2022/02/09(水) 22:47:52.82ID:RvxtckJm845デフォルトの名無しさん
2022/02/09(水) 22:55:19.94ID:zSJbpp9s846デフォルトの名無しさん
2022/02/09(水) 22:56:27.31ID:qfxIxGcm >>836
それはmut借用中の値は使用禁止(コピーのために値を読み取るのも当然禁止)ってRustの基本ルールに違反してるってだけで
所有権の複製なんて新たな概念を持ち出す必要はないと思うが
実際エラーメッセージもそう書いてあるし
それはmut借用中の値は使用禁止(コピーのために値を読み取るのも当然禁止)ってRustの基本ルールに違反してるってだけで
所有権の複製なんて新たな概念を持ち出す必要はないと思うが
実際エラーメッセージもそう書いてあるし
847デフォルトの名無しさん
2022/02/09(水) 23:03:08.10ID:pUgNKLbu >>846
借用中の値が使用禁止は所有権が伴っているからこそ生じるルール
だから「(所有権と関係なく)値が複製されて、その値に新たな所有権が生じる」よりも
「値と所有権が複製されて、別々の値と所有権になる」の方がRustを正しく理解できる
借用中の値が使用禁止は所有権が伴っているからこそ生じるルール
だから「(所有権と関係なく)値が複製されて、その値に新たな所有権が生じる」よりも
「値と所有権が複製されて、別々の値と所有権になる」の方がRustを正しく理解できる
848デフォルトの名無しさん
2022/02/09(水) 23:11:40.68ID:qfxIxGcm 複製派の人って複製元の所有権と複製先の所有権の
共通部分はなんだと考えているの?
流石に共通部分が全くなければ複製とは言わないよね?
共通部分はなんだと考えているの?
流石に共通部分が全くなければ複製とは言わないよね?
849デフォルトの名無しさん
2022/02/09(水) 23:20:26.95ID:pUgNKLbu >>848
同じ型で複製の直後の値が同じものに対する所有権
全く異なるものに対する所有権が新たに生じるわけではない
所有権も複製されている
ちなみに現実のものに例える話はナンセンス
なぜなら現実世界では土地の所有権だけでなく土地自体も複製できないのだから
同じ型で複製の直後の値が同じものに対する所有権
全く異なるものに対する所有権が新たに生じるわけではない
所有権も複製されている
ちなみに現実のものに例える話はナンセンス
なぜなら現実世界では土地の所有権だけでなく土地自体も複製できないのだから
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/Gレス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★11 [BFU★]
- 高市政権の経済環境、アベノミクスと対極 インフレ・円安・金利上昇 [蚤の市★]
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 ★2 [蚤の市★]
- 【野球】「地上波で放送しないWBC」は2軍選手中心で十分! 今こそネットフリックスに『ノー』を突き付けてほしい 江本氏が提言 [冬月記者★]
- 中国官製報道「日本経済はもうもたない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 ★2 [1ゲットロボ★]
- 国民・榛葉氏「中国焦ってる」 ★2 [ぐれ★]
- とらせん IP
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap599
- 福島競馬3回5日目
- こいせん 全レス転載禁止
- 巨専】
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1806
- 【悲報】鈴木コメ大臣「農協の守護神」だった…消費者でなく農協を向いて働いている模様 [993451824]
- 【悲報】白浜町、パンダを返還しても中国に依存してた事がバレて馬鹿にされる🤭 [616817505]
- 【実況】博衣こよりのえちえちゼルダの伝説 ムジュラの仮面🧪 ★2
- 空き家や廃墟だらけなのに、解体業の倒産が史上最多ペース… この国、一体これからどうなるかワクワクしてくっぞ [452836546]
- ゆず、香港・上海・台北ツアー突如中止wwwwwwwwwwwwwwwwwwwwwwwwwww [329329848]
- 【画像】高市早苗、車のナンバー「37-77」が中国人に見つかる!(盧溝橋事件は1937年7月7日)
