No.1257
Rust のことは随分わかってきました。大雑把に括るとC言語と同じです。Python や .NET 系のようにマネージが強くて自由度が狭いってことは無いっぽいです。
「所有権」や「ライフタイム」が取り出させられますが方言程度の違いでした。両方ともC言語ではコードを書く側が注意を払ってきたことを自動的に処理するためにコードへの明示とある程度の制限を設けたものです。アルゴリズムの中に埋もれるバグを予防出来るので、難しいというより手間をかけるのが先か後かってだけでした。
「所有権」は変数の読み書きの不整合や二重処理を防止するための対策です。その対策の意味を理解するには変数の処理構造を知っていた方がいいと思うのですが、その説明をすっ飛ばして「所有権がぁ~」と話をする教科書が多くて読んでいるこちらが混乱します。C言語におけるポインタが理解出来ていればそれほど難しいことではないので、ポインタがわかっている前提で説明をしてくれる教科書があってもいいんぢゃないのかなぁ~って思います。「所有権」によって制限されることはC言語のコードを書く上でも注意しなければならないことなので、だったら前提として管理・制限しときゃいいんぢゃね?ってことなのでしょう。C言語のポインタは自由度が高い反面コードを書く側が管理・制限してきましたが、これをコンパイラが厳密にチェックしてくれるのですからある意味楽です。
「ライフタイム」は変数のコード上での有効範囲のことです。変数の有効時間の設定・管理ではありません。変数の有効範囲はC言語とほぼ同じですが、変数の有効無効をコード上でチェックで出来ます。関数で用いる変数が有効かをチェックしたり、この関数の処理が済むまで変数を維持するように指示をする機能が追加されたと思えばよさそうです。
どちらも、ややこしい規定を追加して意地悪のように手数を増やした話ではないようです。
#Rust
「所有権」や「ライフタイム」が取り出させられますが方言程度の違いでした。両方ともC言語ではコードを書く側が注意を払ってきたことを自動的に処理するためにコードへの明示とある程度の制限を設けたものです。アルゴリズムの中に埋もれるバグを予防出来るので、難しいというより手間をかけるのが先か後かってだけでした。
「所有権」は変数の読み書きの不整合や二重処理を防止するための対策です。その対策の意味を理解するには変数の処理構造を知っていた方がいいと思うのですが、その説明をすっ飛ばして「所有権がぁ~」と話をする教科書が多くて読んでいるこちらが混乱します。C言語におけるポインタが理解出来ていればそれほど難しいことではないので、ポインタがわかっている前提で説明をしてくれる教科書があってもいいんぢゃないのかなぁ~って思います。「所有権」によって制限されることはC言語のコードを書く上でも注意しなければならないことなので、だったら前提として管理・制限しときゃいいんぢゃね?ってことなのでしょう。C言語のポインタは自由度が高い反面コードを書く側が管理・制限してきましたが、これをコンパイラが厳密にチェックしてくれるのですからある意味楽です。
「ライフタイム」は変数のコード上での有効範囲のことです。変数の有効時間の設定・管理ではありません。変数の有効範囲はC言語とほぼ同じですが、変数の有効無効をコード上でチェックで出来ます。関数で用いる変数が有効かをチェックしたり、この関数の処理が済むまで変数を維持するように指示をする機能が追加されたと思えばよさそうです。
どちらも、ややこしい規定を追加して意地悪のように手数を増やした話ではないようです。
#Rust