Rust part16
レス数が1000を超えています。これ以上書き込みはできません。
俺はずっとJavaメインで、遊びでlispとかHaskellとか触る程度で低レイヤは触ってなかったんだけど、Rustでここまで現代的に書けるならアリだなって触り始めたクチだな。 >>930
まずハロワやれと言われるレベルの初級者ってプログラミング自体初めてやるようなレベルの人でしょ
それならあれこれ教えたところでどうせ理解不能になるだけなのでとりあえず動くものを作らせることには意味がある ただいまんこのあとは
シコシコちんちん シコシコ イソチンチン >>930
何を勘違いしてるんだよw
ハロワはプログラミングの勉強じゃなくて>>932も書いてる通り環境の勉強だぞ
お前の言う必須の要素が何を指してるのか知らんけど例えばif文の勉強したい時に動かせるかどうかは重要だろ >>934
(安全な)参照は所有権の上に成り立っているよ >>940
それも真
しかし>>934のような使い方だと所有権を意識する必要すらないのも真
同様に>>934のような使い方だと参照のライフタイムを意識する必要がないのも真
これは類似なものとしてC言語を使っている時に常に所有権とライフタイムを意識する必要性があるわけではないことも同様に例示される 噛み合ってない理由がわかった
競プロ勢が多いんだな
数値しか扱わないなら
ベターCとして書くことは容易だからね 競プロじゃないけどトレイトとかよく判らないから安定しているCとしてしか使っていないわ >>942
競プロ勢による書き込みが見当たらないこの状況で
妄想により幻覚が見えているのか? 色々書いたうちCLI程度の規模のプログラムだと大半は所有権の移動がなくて所有権の意識が薄いな
オブジェクトをnewするところは厳密には移動と言えるかも知れないが単なる値返しと捉えるだろう
あとはオブジェクトの参照を渡していくだけたから単なる参照渡し 毎日毎日息を吐くように嘘を吐く複オジ
控え目に言っても頭おかしい 数値型だけでは動くものが作れないことに気がついたみたいだな
Rustで所有権を理解せずに動くものを作るなんて柱を使わずに家を建てるようなもの >>946
関数が値返しと引数可変参照渡しへの書き込みだけならプログラムの規模や種類に関係なくそんなもんだろ
所有権が出てくる幕はない
もちろんライフタイムも出てこない そういう点では所有権が出てこなくてもかなりの範囲のプログラムを書けるよ >>949
いくつかの自明な場合にはライフタイムを省略しても暗黙のルールが適用されるから書かなくてもよいだけで、ライフタイムが存在しないわけではないよ。
その暗黙のルールが比較的自然に定義されてるってことなんだろうね。 >>951
それは違うな
>>949のケースは参照返しをしていないのだからライフタイムは出て来ない
ライフタイムの存在を意識する必要もない Rustを使ってると、参照を返すようなコードはだんだん避けるようになるかもしれないな 競プロみたいにmain関数のみ
データ型は数値のみ
データ構造は固定配列のみ
サイズも高々数百から数千程度なのでスタック確保でオッケー
配列への参照のみ必要
結果は固定配列を新しく作ってそこに詰めていく
これなら所有権など一切いらない この件は数値型や競プロは一切関係ない
ヒープを使うVecやStringやそれらを含む構造体を返しても『値返し』となる点がポイント
『参照返し』とならないため『ライフタイム』は登場せず『所有権』を意識する必要もない
そして『値返し』だけでも様々な実用的なプログラムをRustで作ることができる ついにlinux kernelにRustがマージされた模様 >>954
個人的にはdangling pointetとか内部オブジェクトを書き換えられる心配しなくて良くなるから
他の言語より積極的に参照返すようになってる気がする 参照返しの安全性を保証できるRustいいよな
参照返しを使わず値返しだけでもかなり広い範囲のことを処理できる点も同意 値返しとか参照返しなんて言葉をRustで使うなよw 参照を返す時のみ
ライフタイムの概念が登場
だから参照返しと値返しの区別は実質的に重要
もちろんRustでは常に(広義の)値返しとなる
そして参照返しとは参照を(広義の)値返しすること
参照返しの対義語として(狭義の)値返しを使ってもよい 構造体など参照以外の値がlifetime持つ場合もある
参照だけ区別するのはなぜ ここでいうlifetimeはlifetimeパラメーターのこと >>962
それはそのフィールドが参照を返しているね
構造体がライフタイムを持つのはそのような時 > 値返しとか参照返し
これはどこに定義された用語ですか?
それともオレオレ用語ですか?
https://en.wikipedia.org/wiki/Evaluation_strategy
> 3.1 Call by value
> 3.2 Call by reference
値渡し参照渡しは昔からよく聞くけど 最初に言い出したのは
>>952
> >>951
> それは違うな
> >>949のケースは参照返しをしていないのだからライフタイムは出て来ない
これか >>965
それは関数の引数としての渡し方だから返し方とは独立ではないか Return by Referenceも知らんのか・・・ Rustでは参照返しが有る時だけライフタイムパラメータが付くんよ
例えば3つの参照返しが有る時に3つのライフタイムが異なれば3つのライフタイムパラメータが付くんよ
だから参照返しが有るか無いか区別されてしまうんよ 結局Rustにおける値と参照とは何かを知るためには所有権の理解が必須なワケよ >>971
参照を返さない限り所有権の理解は不要
Rustでは配列も構造体も更にはヒープを用いるVecやString等も値として返される
つまり参照を返さなくてもある程度の広範囲のプログラムを書くことができる >>974
ムーブする必要ないよな
参照渡しだけしていれば所有権は出て来ないな 所有権要らないならRust要らないじゃんって思いながらずっと読んでる
どういう結論に持っていきたいの 釣りが目的で書き込んでるひとと、それに付き合ってレスしてるひとがいるからわけわからん 参照渡しだけして参照返しをしなければ
所有権もライフタイムも出てこないからそれらを意識することもない
結果として所有権とライフタイムを理解していなくてもそのスタイルでプログラムを組むことが出来てしまう >>976
rust 学習の話だろ?
未来永劫所有権の理解は不要なんて誰も言ってないと思うが 逆にrustだとどういう時に参照返しが必要になるの? >>980
Rust 特有の事情なんかないよ。
C/C++ でポインタや参照で返すときと同じだよ。 「参照で返す」「参照を返す」って表現する人 ←わかる
「参照返し」と言い続ける人 ←??? 同じだろ
参照を渡すことを参照渡し
参照を返すことを参照返し 値渡し参照渡しで言うと依然として単なる値渡しなのに
ただポインタを渡してるだけでそれを
「ポインタ渡し」とか言い出したり
ひどいやつだと「参照渡し」だと言いはったり
そういうのを過去にC言語界隈で見てきたから気になったんよ
独自解釈による珍妙なワードはこの世に必要ないと思うでしょ
>>983
そうですかボクからはもう何も言うことはありません >>984
それは君が区別すべきことを理解できていないから混乱している
会話や説明では何と何を区別するかが重要
もちろんRustでは常に指定した型そのものが渡され返される
だから区別するとしたら実体を渡したり返したりするのかその参照を渡したり返したりするのかが焦点となる
したがって参照渡しや参照返しという言葉がぴったり適して使われている あとポインタへのポインタを「ダブルポインタ」って呼んじゃう人もいたな
このスレでは「所有権の複製」ってのもあったな >>986
英語でもダブルポインタと言うし何を問題にしているのかわからん
自分勝手な線引きやルールがあってそこから外れると融通が効かなくなるダメな人かね? ゲームの方のRustで、ホロライブのRustのSeason3が終わるから検索汚染も減るかもな 参照で返すことを「参照返し」と言った途端ブチギレするのマジで意味不明なんだがその呼び方を否定するとどんなメリットがあるのだろうか >>984を見るとCでポインタで渡すことをポインタ渡しと言われるだけで発狂するようだからその人はキチガイ 他への参照を持つ実体を返すのは値返しか参照返しかはたまた別の何かか
なんて考えたくない 「ポインタ渡し」がNGなら「ポインタを渡すこと」も日本語でそう表現していいよと言語の開発者がわざわざお墨付き与えなければNGだと思う 今回はRustの段階的学習の話だから、これだけのことではないかい。
参照返しが含まれていなければ、ライフタイムを把握する必要がなく、所有権を学習していない段階でも、そのプログラムを書くことができる。
参照返しが含まれていれば、ライフタイムを把握する必要があり、所有権を学習した以降となる。 ぼくちゃんrust入門者
ライフタイム注釈だけはどうにかならなかったのとか思った
でもいろいろ満足
tauriやるぞう ホント毎日毎日アホなこと書いてるなぁ
釣られちゃうRust入門者は少し不憫 >>995
所有権を学ぶのを後ろへずらすことでRust学習の難易度を大きく下げられそうね このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 101日 13時間 18分 37秒 レス数が1000を超えています。これ以上書き込みはできません。