X



Rust part21
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
垢版 |
2023/08/15(火) 22:24:39.45ID:xzxy4cgp
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

公式ドキュメント
https://www.rust-lang.org/learn

Web上の実行環境
https://play.rust-lang.org

※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 part20
https://mevius.2ch.net/test/read.cgi/tech/1677771928/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
0851デフォルトの名無しさん
垢版 |
2024/01/09(火) 16:51:10.28ID:/HMizx3H
それ複オジがよく書いてたやつだけど
そうやって書くと型の違いと変数のmutabilityの違いを混同しちゃうから良くないんだよね
0852デフォルトの名無しさん
垢版 |
2024/01/09(火) 16:57:39.62ID:FRUFivso
fn main() {
let mut foo = String::from("foo");
let mut bar = String::from("bar");

let a1 = &foo;
// a1の値も参照先(foo)も変更できない
// a1.push('o'); // 不可
// a1 = &bar; // 不可
println!("{a1}"); // foo

let a2 = &mut foo;
// a2の値は変更できないが参照先(foo)は変更できる
a2.push('o');
// a2 = &mut bar; // 不可
println!("{a2}"); // fooo

let mut a3 = &foo;
// a3の値は変更できるが参照先(foo)は変更できない
// a3.push('o'); // 不可
a3 = &bar;
println!("{a3}"); // bar

let mut a4 = &mut foo;
// a4の値も参照先(foo)も変更できる
a4.push('o');
a4 = &mut bar;
println!("{foo} {a4}"); // foooo bar
}
0856デフォルトの名無しさん
垢版 |
2024/01/09(火) 23:30:54.91ID:kFOi0b9p
>>847
わかる
0857デフォルトの名無しさん
垢版 |
2024/01/09(火) 23:33:35.76ID:kFOi0b9p
>>850
>可変な不変参照 mut &T
>可変な可変参照 mut &mut T

そこは
mut& T
mut& mut T
のほうが良くないか?
0859デフォルトの名無しさん
垢版 |
2024/01/10(水) 00:26:25.61ID:50jzIioV
変数は不変 参照先も不変
【Rust】 let ptr: &i32 = ...
【C/C++】 const int* const ptr = ...

変数は可変 参照先は不変
【Rust】 let mut ptr: &i32 = ...
【C/C++】 const int* ptr = ...

変数は不変 参照先は可変
【Rust】 let ptr: &mut i32 = ...
【C/C++】 int* const ptr = ...

変数は可変 参照先も可変
【Rust】 let mut ptr: &mut i32 = ...
【C/C++】 int* ptr = ...
0860デフォルトの名無しさん
垢版 |
2024/01/15(月) 07:32:23.77ID:GWa8/EJ0
プログラミングをしていて最も出現頻度が高いのがその4つのうちこのパターンだな

>変数は不変 参照先も不変
>【Rust】 let ptr: &i32 = ...
>【C/C++】 const int* const ptr = ...

したがって可変部分のみmutを付加するRust方式が理に適っている
0862デフォルトの名無しさん
垢版 |
2024/01/15(月) 10:46:44.96ID:6ZDKWey9
C/C++のconstはコンパイル時の定数とは限らない

> 変数は不変 参照先も不変
C++はconst int*で定義した変数経由では参照先を変更出来なくても他から参照先が変更されることがあるので「参照先が不変」とは言えない
0864デフォルトの名無しさん
垢版 |
2024/01/15(月) 11:06:03.10ID:YtourOsv
C/C++のconstはコンパイル時の定数となることもあるのがややこしいところ
constexprはそれを矯正するもの

1対1の単純な比較では抜け落ちるものが多すぎる
0865デフォルトの名無しさん
垢版 |
2024/01/15(月) 18:27:24.64ID:8IhMbXbn
イミュータブルの観点でこの対応は合ってる。
Rust: let foo: &i32 = ...
C++: const int* const foo = ...
ただし違いとしては、
Rustではfooが生きている間は参照先が(内部可変性を除いて)真に書き変わらない保証がある点が異なる。
0866デフォルトの名無しさん
垢版 |
2024/01/17(水) 18:48:37.40ID:6S0S7+zy
この件はC++と比較しても刺激が少ない
mutがない関数型言語と比較するほうがいい
0867デフォルトの名無しさん
垢版 |
2024/01/17(水) 19:39:11.45ID:gS91WelD
ミュータブルを無くすと美しく見える反面
ガベージコレクションが多数発生し効率が悪くなる
アルゴリズムも制約を受けてしまい効率が悪くなる
0871デフォルトの名無しさん
垢版 |
2024/01/17(水) 21:16:06.79ID:gS91WelD
>>870
ミュータブルがない関数型言語との比較の話だから
ミュータブル非導入で起きていることは使い捨て一時ガベージの大量発生
0876デフォルトの名無しさん
垢版 |
2024/01/19(金) 08:43:59.73ID:q7Fi5Auv
>>875
それ日本だけのアンケートじゃん
0879デフォルトの名無しさん
垢版 |
2024/01/19(金) 10:49:32.99ID:Z0EBK6tx
そもそもrustを使う場面があるか?って話
wasmは始まる前からオワコンだし、組み込みシステム開発してる人なんて割合で見ればプログラマの中でごく一部だし
0880デフォルトの名無しさん
垢版 |
2024/01/19(金) 11:13:07.05ID:vjpbBz8R
>>879
ごく一部だというのが仮に事実だとしても、少ないからって要らないってわけでもないだろ。
そこそこの規模だと C よりは Rust のほうがいいわ。
0883デフォルトの名無しさん
垢版 |
2024/01/19(金) 11:34:00.68ID:EoDClT2o
Rustは業務で使用する言語ではない
0884デフォルトの名無しさん
垢版 |
2024/01/19(金) 11:36:55.28ID:arzVgFZ3
使われてる言語ランキング見てると、CやC++、Rustみたいな組み込み開発用言語は全体から見ればもはやプログラミングの中でもマニアックな分類なんやね
ブログラマといえばWebサービス関連の人ってイメージになっちゃった
0885デフォルトの名無しさん
垢版 |
2024/01/19(金) 11:48:30.00ID:vjpbBz8R
とはいえそれを支えるホスト環境 (OS) や処理系は大抵の場合に C とかで書かれてるんだけどな。
0886デフォルトの名無しさん
垢版 |
2024/01/19(金) 11:49:23.47ID:pW7O4nZv
RustがC/C++の代わりになるのは間違いないのだけれどね
富士通さんはRustの普及をもっと頑張ってくれよ
0887デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:01:24.14ID:pW7O4nZv
>>885
C/C++からRustへの書き換え作業は大変だからね
脆弱性の解消のために徐々にRustへの置き換えが進んでるから2030年頃にはだいぶ完了してるっしょ
0889デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:05:22.87ID:vjpbBz8R
デバイスドライバとかは C のほうが楽だけど
言語処理系くらいのレイヤだと大部分は Rust で書いたほうが楽そうだなーとは思う。
0890デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:26:38.25ID:CZFLW0PQ
そろそろ実装に入れそうだけど。Rustを勉強したことを少し後悔ぎみ
オブジェクト指向言語しか触ったことなかったから取得するのにガチで一ヶ月(130時間)かかった
chatgptに聞いた感じだと、これでも割と早い方らしい。おとなしくC/C++を使えばよかった
0891デフォルトの名無しさん
垢版 |
2024/01/19(金) 12:33:55.04ID:3hcnICbb
【AI】Googleの医療面接特化AI「AMIE」は人間よりも正確な診断が可能&患者への印象に優れるという研究結果 [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705583722/l50
【AI】Google DeepMindが数学オリンピックレベルの幾何学問題を解けるAIを発表、人間の金メダリストに近い性能を発揮 [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705583476/l50
【AI】大学入試共通テスト、3つのチャットAIに解かせてみたら? GPT-4はバケモノだった [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705585402/l50
【ナゾロジー】「株価の変動を粒子の振動として理解」量子力学で株式市場の法則を読む! [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705583580/l50
【AI】NTT、自分の分身AIを低コストで作る技術。自分の合成音声を簡単に作れる技術も [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705583313/l50

ボイス・トォ・スカルのコアプログラムの一部は上記を統合している
0892デフォルトの名無しさん
垢版 |
2024/01/19(金) 13:26:04.84ID:eEzmAF9q
>>890
130時間はサンクコストなので0時間の時点における正解は現時点でも正解
ってAIは教えてくれなかったの?
0893デフォルトの名無しさん
垢版 |
2024/01/19(金) 13:41:00.69ID:CZFLW0PQ
C/C++, java, pythonの経験があるから、Rustを取得するのに50時間かからないだろうと思ってた時期が僕にもありました
ヌルポが怖いからRustを使うけど……歯を食いしばって捻出した130時間を投資回収できるかは神のみぞ知る
0894デフォルトの名無しさん
垢版 |
2024/01/19(金) 13:47:10.87ID:vjpbBz8R
C/C++ の経験があってそんなに時間かかるか?
「習得」というのがどの程度の基準で見るかにもよるけど
いわゆる the book を一通り読んだ後なら
コンパイラがあまり助けてくれないところ (unsafe) を除けば
マニュアルを見ながら書けばだいたいなんとかなる程度には使えそうなもんだと思うんだが。
0896デフォルトの名無しさん
垢版 |
2024/01/19(金) 14:12:09.59ID:CZFLW0PQ
>>894
最近はpythonで仕事する機会が多くて、C/C++を4年ほど触ってなかったのと、
仕事の後に疲れた頭で勉強したから体力的にキツかったのと。。。
the bookを読むだけで90時間はかかったわ。検索モジュールを開発しようと思ってるんだけど
いきなり実装に入るより読経した方がマシな感じで、regexのコードを読んでる
既に10時間読経に捧げて、あと10時間は追加の読経が必要な感じ
この後、形態素解析エンジンのコードも読む必要があるから、追加で20時間はお勉強する予定であわせて130時間
……重いです
0898デフォルトの名無しさん
垢版 |
2024/01/19(金) 14:50:46.17ID:tvouuqwU
>>896
the bookでの90時間の中身がわからないので何とも言えないかな
bookだけを読んだのか
それともdocsやreferenceと行き来して読んだのか
サンプルコードくらいのことを書けるようになっただけなのか
それとも各機構や機能を本質的に理解したのでdocsなど見ればbookに書かれてないことも書けるようになったのか
などピンキリだよね
0899デフォルトの名無しさん
垢版 |
2024/01/19(金) 15:08:45.88ID:IG9zAVYP
>>890
一般的にですが、
自分が使いたい新たな言語の学習で、辛いとかキツいとか後悔とか感じる人はプログラマーに向いていません。
プログラマーに向いてる人たちにとっては、新たな学習や会得はワクワク楽しくてその時間を後悔することもありません。
0900デフォルトの名無しさん
垢版 |
2024/01/19(金) 15:23:39.42ID:w30sYh7E
>>899
禿同だな
0901デフォルトの名無しさん
垢版 |
2024/01/19(金) 15:25:17.10ID:1KLWZB9m
件の人は質問がどれもバカっぽかったから習得からは程遠い印象
0902デフォルトの名無しさん
垢版 |
2024/01/19(金) 16:19:14.85ID:vjpbBz8R
Rust の個々の機能が難しいとは感じないけど
綺麗に噛み合うように全体を設計するのは C++ とは違う感覚が要るから
大きいプログラムを綺麗に設計しようとしたら最初はしんどいかも。
ボトムアップ的なスタイルで書いていくのをオススメする。
0903デフォルトの名無しさん
垢版 |
2024/01/19(金) 16:39:45.44ID:8qrrLmZj
逆かな
みんなリファクタリングが機能しないからRustだとボトムアップじゃだめだと分かっかんだよ
0905デフォルトの名無しさん
垢版 |
2024/01/19(金) 17:22:29.33ID:5TL7zSTv
the bookを頭から読むやつなんているんだ
大してわかりやすくもないし
説明が冗長な感じだからChatGPT使った方が良いぞ
0906デフォルトの名無しさん
垢版 |
2024/01/19(金) 17:23:51.53ID:vjpbBz8R
初心者にとって知らんことが書いてあるんだからそんなにスラスラとは読めないのは当たり前だし、文章自体に問題があるようには感じないな。
改善すべき点がゼロなわけではないが、少なくとも C++ を分かっているくらいの人が最初に読むには十分すぎるほどに良書じゃないの。
0907デフォルトの名無しさん
垢版 |
2024/01/19(金) 17:34:10.12ID:vjpbBz8R
説明対象がもつ難易度より分かりやすい説明があったとしたらその説明は嘘であるか不足しているってことだ。
本来の難易度は後にならないと分からないから学習者本人には見分けられない。
0908デフォルトの名無しさん
垢版 |
2024/01/19(金) 17:55:40.81ID:88sLHWJm
ガリ勉完璧主義者ほど隅から隅まで理解しようとするけど
要領よくChatGPTを使いこなすチャラ男に天然GPTとしてカモられている
0909デフォルトの名無しさん
垢版 |
2024/01/19(金) 18:00:19.70ID:88sLHWJm
天然GPT本人はマウントして気持ち良くなりたいから他のみんなと勉強会じゃなくて家でガリ勉なんだ
0910デフォルトの名無しさん
垢版 |
2024/01/19(金) 18:05:32.43ID:5TL7zSTv
作りたいものを決めてそれを実現するための知識をChatGPTで調べるというやり方のほうがはるかに効率が良いよ
多少間違ったこと教えてきたり
古かったりするけどそれはもう気にしてたら仕方がないので
無視してどんどん手を動かすほうが良い
0911デフォルトの名無しさん
垢版 |
2024/01/19(金) 18:15:21.92ID:1hwMDgMT
The Bookは簡潔にまとめるために説明をやや端折り気味
書いてる内容自体が難しいわけじゃないけど深い理解には至らないから腹落ち感を得にくい

あんまり期待しすぎず無料で読める基本チュートリアルとして捉えておくべき
0913デフォルトの名無しさん
垢版 |
2024/01/19(金) 18:38:50.67ID:5qNxVIXw
組み込みは頭おじいちゃんが支配してるからRust使える人いないよ
0918デフォルトの名無しさん
垢版 |
2024/01/19(金) 18:55:15.30ID:Nlxayr7x
>>903
Rustでもリファクタリング前提で書き始めるのがいいよ
早すぎる構造決め打ちや早すぎる最適化などはせずリファクタリングで対応
0919デフォルトの名無しさん
垢版 |
2024/01/19(金) 19:00:48.51ID:SK8TlxrV
>>899
んなアホな。
一般的というなら「石の上にも三年」とも「下手の横好き」とも言うから、嫌いだからと言って不向きとは言えない。
0922デフォルトの名無しさん
垢版 |
2024/01/19(金) 19:10:50.73ID:+7/a4sFt
自分がこうだから他人もこうあれ
って考えは時代にそぐわない老害感がある
0924デフォルトの名無しさん
垢版 |
2024/01/19(金) 19:12:08.48ID:SK8TlxrV
>>896
Rustは絶壁の学習曲線だから、段階的な学習は難しい。少なくともスタックフレームの動きを意識できないとキツイと思う。

Rustを使った開発も、小さく始める段階的開発とかきついんじゃない?ひたすらスクラップ&ビルド繰り返しそう。
0925デフォルトの名無しさん
垢版 |
2024/01/19(金) 20:04:18.16ID:U1u9K+K0
>>924
スタックフレームはコンピュータの基礎知識であってC言語でも必須でありそれをRustの問題にする人はいない
段階的開発がキツいという主張もそんなことはなく根拠もない
0926デフォルトの名無しさん
垢版 |
2024/01/19(金) 21:01:18.97ID:vjpbBz8R
全体を綺麗に構成することはしづらくても小さなモジュール単位でならそれなりに構成できるからそれを繰り返せばいい。
全体の構成を考えてから作るよりは汚いだろうけど、綺麗な全体の構成を考えるなんていう出来もしないことをやるよりはそういうボトムアップ方式のほうが少なくとも途中まではまあまあに出来る。

もちろんちゃんと全部をまともに構成できるだけの能力を身に付けられるならそれに越したことはないよ。
でも実際問題として初心者にはできないじゃんと思ったからボトムアップ方式のほうが(初心者の内は)よさそうと考えてる。
0928デフォルトの名無しさん
垢版 |
2024/01/19(金) 22:20:52.17ID:5TL7zSTv
>>924
意識するのはヒープじゃないか?
スタックフレームは解放されるんだから意識しないで良いんだぞ
0929デフォルトの名無しさん
垢版 |
2024/01/19(金) 22:39:11.81ID:vjpbBz8R
変数の寿命と連動するから意識するよ。
C/C++ の世界だと当たり前のことだから意識してる自覚すらないレベルで自然に考えてるけど。
0930デフォルトの名無しさん
垢版 |
2024/01/19(金) 22:39:43.86ID:eEzmAF9q
人格をもたない書物は効率が悪いという風潮は面白い
人格がなければ報酬とか私刑とかができないってことだろうか
0931デフォルトの名無しさん
垢版 |
2024/01/19(金) 22:43:52.06ID:Hr4uH45j
進行が早くなったのでいつもの
次スレはなしで既存のワッチョイスレにしよう
過疎るのは既定路線なので頃合いでしょ
0932デフォルトの名無しさん
垢版 |
2024/01/19(金) 23:05:04.70ID:Rx8gKVuk
「スタックフレームを意識する」というのはどの程度を指してるんだろう。
どれがスタックに積まれるかとどうスタックに積まれるかは違うわけで。
0933デフォルトの名無しさん
垢版 |
2024/01/19(金) 23:24:13.49ID:LbAGY+B7
>>924
スタックフレームの動きってプログラミング初心者でも何の問題もなく理解できるやろ
学習曲線めちゃ緩やかじゃん
0938デフォルトの名無しさん
垢版 |
2024/01/20(土) 01:10:08.13ID:ppE6WkEJ
都会は進んでるなあー
0939デフォルトの名無しさん
垢版 |
2024/01/20(土) 01:16:50.20ID:zhjwtCng
ミスチルはわかるんだ
ミスター・チルドレンは長いから
サザンもサザンオールスターズは長いからわかる
マクドもマクドナルドは長いからギリわかる

オライリーをオラは無いだろ
たかが2文字略すなと思った

ま、どうでもいいんだがな
0940デフォルトの名無しさん
垢版 |
2024/01/20(土) 01:51:39.52ID:HZE0SdTu
スクリプト言語出身者が増えたせいだよ
スタックフレームやヒープなんてCSやってりゃ習うでしょ
コンパイラかコンピュータアーキテクチャでやる
スクリプト言語はスタックフレームの開放も全てGCがやることになるから
全く意識しないんだよな
0941デフォルトの名無しさん
垢版 |
2024/01/20(土) 01:55:10.81ID:ppE6WkEJ
スクリプト言語に限らず、C/C++を書かなければそこら辺に気を使う機会はないよ
0943デフォルトの名無しさん
垢版 |
2024/01/20(土) 08:33:10.42ID:QXcnqV7m
GCありでパフォーマンスも関係ないなら、スコープだけ気にしていれば困らないしね。
0947デフォルトの名無しさん
垢版 |
2024/01/20(土) 11:38:27.03ID:lE+lj03S
オラは「Rust for Rustaceans」の訳書出さないな
本格的にRustやるなら必読書なんだけどな
0948デフォルトの名無しさん
垢版 |
2024/01/20(土) 11:42:02.65ID:o5qofGYG
スクリプト言語はともかく静的にコンパイルする言語ならGC言語でもスタック/ヒープは意識するけどね
0950デフォルトの名無しさん
垢版 |
2024/01/20(土) 12:23:09.39ID:+uoYRouQ
オンプレミスでも同じ
Rustで書くかスクリプト言語で書くかでサーバーやメモリの必要量が何倍も変わる
電気代も節約できRustはエコにも貢献
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況