[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 16:35 / Filesize : 259 KB / Number-of Response : 1020
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rust part21



1 名前:デフォルトの名無しさん [2023/08/15(火) 22:24:39.45 ID:xzxy4cgp.net]
公式
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/

2 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 22:25:26.48 ID:6mJ3MaUL.net]
なんか埋めちゃったので建てた

3 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 22:33:01.40 ID:UyhNItTq.net]
Rust The Book (日本語版)
https://doc.rust-jp.rs/book-ja/
Rust edition guide (日本語版)
https://doc.rust-jp.rs/edition-guide/
Rust by example (日本語版)
https://doc.rust-jp.rs/rust-by-example-ja/
Rust cookbook (日本語版)
https://uma0317.github.io/rust-cookbook-ja/
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
Rust nomicon book (日本語版)
https://doc.rust-jp.rs/rust-nomicon-ja/
Rust async book (日本語版)
https://async-book-ja.netlify.app/
Rust WASM book (日本語版)
https://moshg.github.io/rustwasm-book-ja/
Rust embeded book (日本語版)
https://tomoyuki-nakabayashi.github.io/book/
Rust enbeded discovery (日本語版)
https://tomoyuki-nakabayashi.github.io/discovery/
Rust Design Patterns (日本語版)
https://qiita.com/Yappii_111/items/4ccc3a846

4 名前:1cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
[]
[ここ壊れてます]

5 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 22:36:07.33 ID:UyhNItTq.net]
Rust Reference Book
https://doc.rust-lang.org/reference/
Rust Standard Library
https://doc.rust-lang.org/std/
Rust rustc Book
https://doc.rust-lang.org/rustc/
Rust rustdoc Book
https://doc.rust-lang.org/rustdoc/
Rust rustup Book
https://rust-lang.github.io/rustup/
Rust Cargo Book
https://doc.rust-lang.org/cargo/
Rust unstable Book
https://doc.rust-lang.org/nightly/unstable-book/
Rust macro Book
https://danielkeep.github.io/tlborm/book/
Rust CLI (Command Line Interface) apps Book
https://rust-cli.github.io/book/
Rust Future Book
https://cfsamson.github.io/books-futures-explained/
Rust async-std Book
https://book.async.rs/
Rust tokio Book
https://tokio.rs/tokio/tutorial
Rust serde Book
https://serde.rs/

6 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 23:05:42.66 ID:p9PV6jOQ.net]
同じドメイン内の資料を個々に列挙する必要はなさそうな気がするが

7 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 23:11:13.20 ID:2JG3bBzc.net]
前スレでも>>3>>4はやめろと言われてた

8 名前:デフォルトの名無しさん [2023/08/15(火) 23:15:53.78 ID:/RhbmbFi.net]
某オジが健在なうちはなくならんやろな
非公式日本語訳への導線を死守したいらしいから

9 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 23:28:44.61 ID:VMFxj0+I.net]
>>6
あると困るやつおるんか?

10 名前:デフォルトの名無しさん [2023/08/15(火) 23:39:08.27 ID:DA+GIfRF.net]
>>8
日本語訳のみを参照して質問したり議論するやつが多々いて日本語訳の精査や日本語訳の不味さの議論に発展するから「このスレでは非公式日本語訳については扱わずドキュメント参照時は公式ドキュメント(英語のみ)を参照すること」という結論に至った

Rustの中身と関係ないレスが必要になるから
善良なスレ民みんなが迷惑する話



11 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 23:46:57.38 ID:Ca5zhGlT.net]
所有権を複製できるってことは
あるものへの所有権が同時に二個以上存在しうるってこと?

12 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 23:50:55.02 ID:TUo/JpC+.net]
>>6
アンチが妨害してるだけだぜ
それらは役に立つRustリンク集

>>9
妄想はやめとけ
問題が実際に起きたことがない

13 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 23:54:35.01 ID:hKkJ4KUI.net]
>>10
所有権は値の複製と同時に複製されるから
複製されたそれぞれの値の所有権になるよ
常に一対一の関係

14 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 23:58:35.36 ID:VMFxj0+I.net]
>>9
そんな結論は出ていない
リンクがあって困るやつもいない

15 名前:デフォルトの名無しさん [2023/08/16(水) 00:09:44.98 ID:j24XJeH2.net]
また複オジの自演が始まった
隔離スレで大人しくしとけよ
こっち来んな

16 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 00:25:33.09 ID:Wd6XOYTc.net]
隔離スレができてから、多少S/N比が改善することを期待して様子見してたけど
やっぱり一度去った人が戻ってくることはないし、どうしようもないんやなあって

まだ見てる物好きなRustaceanはワッチョイスレにも是非来てくれや

17 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 03:56:50.52 ID:1NDN9ysp.net]
>>15
前スレ
> 1000 名前:デフォルトの名無しさん[sage] 投稿日:2023/08/15(火) 22:12:55.30 ID:6mJ3MaUL
> rustupが動かないので手動でクロスビルド環境を構築したいんだが
> rustup target add 〜
> って具体的に何やっているの?ターゲットはとりあえずthumbv7em-none-eabihfとriscv32imac-unknown-none-elfの2つ
> ネイティブビルド環境は公式にあるプレビルドファイル一式を適当な場所に手動で展開すれば構築できるけど(構築済み)
の回答をもらえるならワッチョイスレに行こう

18 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 04:11:40.66 ID:N5bIbKLx.net]
rustupが動かない、というのが理解できない
rustupはクロス環境関係ない
クロス環境用には実行バイナリだけ生成すればいい

rustupはそのままネイティブ自環境でのみ動けばよく
rustup target add xxxでクロス用のtoolchainを指定
そのあとはシンプルにまずはrustc --target xxx test.rsが動くかどうか

19 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 04:35:41.91 ID:N5bIbKLx.net]
例えばrustup target add wasm32-unknown-unknownすると
rustupのhomeが ~/.rustup のとき
~/.rustup/toolchains/*/lib/rustlib/ の下にできる

20 名前:デフォルトの名無しさん [2023/08/16(水) 10:47:04.56 ID:tgyEZLGb.net]
>>5
同意はするが
Rustの資料って体系化されずにとっ散らかってるイメージがあるから
手っ取り早くアクセスできるようにまとめてくれてるのは有難い



21 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 14:44:41.59 ID:1NDN9ysp.net]
>>17
rustupがリンクが使えるファイルシステム?じゃないと動かないっぽい
ノートPCでNTFSパーティションがカツカツなのでSDカード(FAT32)上にインストールしたいがリンクできないとか怒られる
rustcやcargoはリンクできないから動かないようには見えないしよくわからない制限
この現象は公式フォーラムにも書かれていたがパーティションを変更するみたいな回答しかなかった
現状はネイティブビルド環境は公式からプレビルドのバイナリを落としてきて解凍すれば構築できるが
そのような代替手段がない?クロスビルド環境は構築できない状態

22 名前:デフォルトの名無しさん [2023/08/16(水) 15:31:51.82 ID:Qm23kCGE.net]
ここは素人相手のサポートセンターじゃないんだから「動かない」とか「動かないっぽい」とかじゃよっぽどの暇人以外には相手にされないぞ

23 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 15:45:31.11 ID:1NDN9ysp.net]
現象は
ttps://users.rust-lang.org/t/can-t-install-rust/56019/15 ←exFATパーティションにインストールしようとして失敗している
これと同じだと思う

24 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 18:15:04.82 ID:Wd6XOYTc.net]
ワッチョイスレに書いといたんでよろしゃっす

25 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 18:52:12.16 ID:tBfVLS+Q.net]
>>20
rustupをターゲット先で動かす必要ある?
例えばターゲット先がWasmだとそこにrustupもcargoもないけど
それらがある手元でWasmバイナリを生成できるよね
リンクが使えるファイルシステムでコンパイルできない状況がわからないので教えて

26 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 22:31:03.77 ID:o5ZiEkHD.net]
>>24
exFat ではシンボリックリンクを作れないって話が明瞭に書いてあるだろ。
ファイルシステムの機能として無いものは無い。

27 名前:デフォルトの名無しさん mailto:sage [2023/08/16(水) 23:07:47.05 ID:tBfVLS+Q.net]
>>25
クロスビルドは任意の環境で行なえるのに
なぜFATしか使えない環境でビルドするのか不思議に思ったのです
すみません

28 名前:デフォルトの名無しさん mailto:sage [2023/08/17(木) 00:30:25.16 ID:IFnR6C6t.net]
ポータブルメディアだとFATをつかうのはそれなりにあることだからなあ。
買った時点でフォーマット済みなのも普通だし。
さすがにSDカードに開発環境を構築するのは想定外と言えるにしても外付けハードディスクくらいなら事情によっては無いこともないんじゃないか。

29 名前:デフォルトの名無しさん [2023/08/23(水) 15:46:36.91 ID:89z/H8g7.net]
let hoge = "もとの文字列";
let hoge = hoge.replace("なんか1を", "別のなんか1に変換");
let hoge = hoge.replace("なんか2を", "別のなんか2に変換");
let hoge = hoge.replace("なんか3を", "別のなんか3に変換");
...
みたいなのが連続して実行したいとき
まとめてやってくれるような関数とかありますか?
また変換表がVecとかMapとかDBみたいなのに対応してるものもありますか?

30 名前:デフォルトの名無しさん mailto:sage [2023/08/23(水) 17:55:57.94 ID:JDxfEBUZ.net]
>>28
単に連続して実行したいだけなら自分でループさせる関数作れば十分だと思う
効率的なアルゴリズム実装を探してるならとりあえずaho-corasick
regexを使ってるようなプロジェクトならregexでもいいと思う



31 名前:デフォルトの名無しさん mailto:sage [2023/08/23(水) 18:02:34.00 ID:JDxfEBUZ.net]
もとの文字列が大きくなればなるほどstr::replaceを繰り返し実行する方法は効率が悪くなる
もとの文字列が小さいならあんまり気にする必要無い
少なくともベンチマークとってから考えるべき

32 名前:デフォルトの名無しさん mailto:sage [2023/08/23(水) 23:32:44.32 ID:J9iaXSyF.net]
その前に変換された部分を後続の変換の対象にするのかしないのかを決めないと
「まとめてやる」だから対象にしないっぽいけど
文字列リテラルのエスケープを本来の文字に置換するイメージでいいのかな

変換前の文字列を簡単なパターンで表現できるなら正規表現のライブラリがいいと思う
余分にひっかけた場合は変換せずにそのまま通す感じで
マッチした文字列→変換する文字列の処理を自前の関数で書くとよさそう

33 名前:デフォルトの名無しさん mailto:sage [2023/08/23(水) 23:46:47.50 ID:1keD1dOe.net]
aho使うのが楽
入力がimpl std::io::Readで出力がimpl std::io::Writeを指定できるからファイルでもなんでも楽

34 名前:デフォルトの名無しさん [2023/08/24(木) 07:02:22.08 ID:2mbJt/0N.net]
thx

35 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 21:30:29.95 ID:gjVHse6A.net]
constな再帰関数で以下のエラーが出てその対処方法を知りたいのですが

error[E0080]: evaluation of constant value failed
| foo(n)
| ^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)

const_eval_limitで検索しても削除された(?)らしい情報しかわかりませんでした
どう指定するとリミットを増やせますか?

36 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 22:02:13.69 ID:ONdb/hN6.net]
>>34
古いバージョン使ってない?

37 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 22:23:39.67 ID:hWWrh3fN.net]
1.72での変更みたいだね

38 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 08:31:30.86 ID:lrONLN4Y.net]
一昨日リリースの1.72にこう書いてあるな
https://blog.rust-lang.org/2023/08/24/Rust-1.72.0.html
you can allow(const_eval_long_running) to permit especially long const evaluation.

ところがこう指定してもエラーになる
#[allow(const_eval_long_running)]

正解はこれ
#[allow(long_running_const_eval)]

39 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 19:53:52.23 ID:Aks4ymi6.net]
>>37
リリースを読む奴はほとんどいないだろってことでいい加減でも良いやといことだろうな
Rust野郎にしてみれば手を抜を抜けるところは手を抜くって良いこと

40 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 21:39:30.30 ID:/o9fKn5S.net]
コンパイルエラーで正しいほうが表示されるから問題ないわな

const_eval_limitのほうは↓
#![feature(const_eval_limit)]
#![const_eval_limit = “10000000”]



41 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 23:07:34.85 ID:F9w6FdF5.net]
レビューすり抜けちゃったんだな
PRでも出してあげたら

42 名前:デフォルトの名無しさん [2023/08/28(月) 03:13:40.15 ID:gISZWwhM.net]
英単語のスペルチェックはしなくて良いから
関数や変数のスペルチェックに力を入れてくれ > Codeエディタさん

43 名前:デフォルトの名無しさん mailto:sage [2023/08/29(火) 03:19:51.47 ID:UVGH3K1M.net]
VSCodeの余計なお世話機能外しのサイトないかな?とにかく邪魔

44 名前:デフォルトの名無しさん mailto:sage [2023/08/29(火) 09:29:50.39 ID:ud/hz0aH.net]
let hoge = "hoge".to_string();
let v = hoge.as_bytes().to_vec(); // ← ここでデータのコピーは発生しますか?

45 名前:デフォルトの名無しさん mailto:sage [2023/08/29(火) 09:40:59.22 ID:ud/hz0aH.net]
あー
let v = hoge.into_bytes(); // これか

46 名前:デフォルトの名無しさん [2023/08/29(火) 10:07:33.54 ID:ud/hz0aH.net]
let v = hoge.as_bytes().into(); // これも等価なんか?

47 名前:デフォルトの名無しさん [2023/08/29(火) 10:08:22.27 ID:ud/hz0aH.net]
>>43>>45 が等価で
>>44 だけ違うんか?

48 名前:デフォルトの名無しさん mailto:sage [2023/08/29(火) 10:28:52.72 ID:hbocgPIY.net]
>>43
コピーを発生せずに別の型へ変換するには「消費してxxxへ変換」(into_xxx)するしかないため元が所有権を持たなければならない
つまり単なるスライス参照&[T]をto_vec()するのはコピーが発生する
一方で所有権を持つスライスBox<[T]>ならばinto_vec()でコピーを発生させずにVecにできる
このto_xxxとinto_xxxに注意

>>44
互いに消費してコピーを発生せずに行き来できる
let vec = string.into_bytes();
let string = String::from_utf8(vec).unwrap();
前者は特にVec<u8>になるためinto_vecではなくinto_bytesと名付けられている
後者はutf8保証チェックが入るためResultが返る
その保証を人が与えるならチェックを省略できる
let string = unsafe { String::from_utf8_unchecked(vec) };

49 名前:デフォルトの名無しさん mailto:sage [2023/08/29(火) 11:53:16.22 ID:j8lLGaij.net]
>>46
リファレンス見ればすぐわかるよ
もし見方や調べ方がわからないならそれを質問するといい

50 名前:デフォルトの名無しさん mailto:sage [2023/08/29(火) 14:58:40.58 ID:0ZJbGVqi.net]
>>42
VSCodeの邪魔な機能で最初に思い浮かぶのはinlay hintsだな

[File > Preferences > Settings]の[Editor › Inlay Hints: Enabled]を
offかoffUnlessPressedに変えると消える

offUnlessPressedだとCtrl + Altを押してる間だけ表示される



51 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 11:49:10.17 ID:2xM9XyZu.net]
unsafeを使ったコードで
有効な参照ではないことを確認する方法はありますか?

52 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 15:30:33.41 ID:OpkUn9pD.net]
miriやaddress sanitizerやloomのようなツールとテストの組み合わせで検知するくらいじゃないかな
もちろん100%の検知は不可能

53 名前:デフォルトの名無しさん [2023/08/30(水) 15:37:47.00 ID:jEaVNaFL.net]
日本人は100%とか完璧とか絶対とか求めるの好きだよね。
やる側が志すのはいいんだけど、たいていはやらない側が求めてくる。

54 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 17:42:42.30 ID:Pm5h7iVu.net]
そういう理にかなわないことをしているから原発がぶっ飛ぶんやで

55 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 17:57:48.34 ID:DO1AbTsl.net]
address sanitizerじゃなくてmemory sanitizerだった

56 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 20:21:44.39 ID:y+HDByBG.net]
無効な参照は即UBじゃなかったけ
なので正しく書かれたRustプログラムの参照はすべて有効

57 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 21:05:03.06 ID:7wIq4Piv.net]
正しく書かれてるかどうかを確かめる方法を聞いてるんだろ

58 名前:デフォルトの名無しさん [2023/08/30(水) 22:02:55.54 ID:zbgAoZ7n.net]
rustでdll造ってCから使うとき
rust側で勝手に捨てられるのは困るな

59 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 22:17:03.68 ID:kn7H0YN4.net]
そのためにforgetとかleakみたいな謎関数がある
存在は知ってるけどまだ使う機会に恵まれない

60 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 00:43:59.43 ID:gbA1Jwq2.net]
Cに所有権ごと渡すなら使うのはinto_rawかfrom_rawじゃね



61 名前:デフォルトの名無しさん [2023/08/31(木) 11:31:08.47 ID:qE8kvwKZ.net]
Rustしばらく使ってるとC/C++描けなくなってくる

62 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 16:56:03.45 ID:8Q6o7DlX.net]
sqlite3 用の crate って sqlite3 という名前のがあるけど
rusqlite 使うのとどっちが良い?

63 名前:デフォルトの名無しさん [2023/09/02(土) 07:37:58.97 ID:v3EBZAej.net]
失礼します

Rustは制約の厳しい言語だから(環境さえ整えば)他言語にトランスパイルしやすい言語
という認識は合ってるでしょうか?

64 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 08:12:23.91 ID:bvTG+KAn.net]
Rustは制約がほとんどなく自由な裁量の大きな言語の一つ
楽に書ける方法の一方で色んな観点を極めることにより書き手によってメモリ利用法や実行速度もピンキリになりうる
色んな環境で動かせることもできてOSの無い環境やstdライブラリを使わない方法など自由が大きい
プログラミングパラダイムやスタイル指向の見地からも書き手によって様々な方針をとることができる

65 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 08:29:19.99 ID:bvTG+KAn.net]
ランタイムが必須かどうかも制約として重要になってくる
C/C++やRustはそのような制約がないため他の言語のライブラリ作成にも用いることができる
WebAssemblyでの実行についても同様でそのような制約のないRustが有利なため最も使われている

66 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 11:00:44.98 ID:YkB2gBn6.net]
>>62
トランスパイル先言語との機能的互換性の高さやや元言語のコンパイラが単純なほうがトランスパイルしやすいと思う
例えばOwnership/Borrow/Lifetimeあたりのトランスパイルが楽かどうか

67 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 11:44:04.91 ID:g76m2OPt.net]
>>65
壮大な勘違いしてるな
実行時に所有権やライフタイムは一切出て来ないぞ

68 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 11:48:36.47 ID:l2r0UsPx.net]
>>66
壮大な勘違いしてるな
トランスパイル時は実行時ではないぞ

69 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 11:50:40.77 ID:l2r0UsPx.net]
一口にトランスパイルといっても、元言語にあった属性をどこまで先言語に引き継ぐかは目的に応じた取捨選択がなされるものです
前例がないので>>62に対する答えは「未知数」としか言えないですね

あるいは言語自体に「トランスパイルのしやすさ」という属性があるとすれば、それは「言語自体がトランスパイルされることを前提として設計されているか」と同義でしょう
その側面から言えば答えは「いいえ」です

70 名前:デフォルトの名無しさん [2023/09/02(土) 12:05:15.52 ID:f2x52juV.net]
ライフタイムは妥当かどうかの静的なチェックに使われるもの
トランスパイル先に持ち込まれることはない



71 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:06:33.37 ID:euHMK3ab.net]
短絡思考 + 自己弁護 = 複オジ

72 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:21:18.64 ID:gZ7bGKIm.net]
トランスパイルというとTypeScript→JavaScriptみたいにシンタックスをほぼ保ったまま変換することを意図してる?
それともRustで書いたコードをトランスパイル先のランタイムなり処理系なりで動かせれば良い?
後者ならトランスパイル先言語でWASMランタイム用意すればRustで書いたコードは動かせるよね

73 名前:デフォルトの名無しさん [2023/09/02(土) 14:30:38.26 ID:mCX3wjBN.net]
NimはCにトランスパイルされる

74 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:59:18.30 ID:dPTTZbJb.net]
コンパイルする話じゃなくトランスパイルする話をしてるのにその区別すらできないオジ

75 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 15:01:52.18 ID:Ng1Dtdjk.net]
一般にトランスパイルは同程度に高級な言語の間で
(なるべく)変換後の言語として自然な形で変換するものを言う。

コードジェネレータ、または実行エンジンとして他言語を
経由するものは含んだり含まなかったりするけど
表面上は同じことをやってるので境界が曖昧なんだよ。

76 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 16:08:00.76 ID:LNeShMZN.net]
境界があいまいだからRustコードからWASMバイナリを生成することをトランスパイルと呼んでもおかしくないと?

77 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 16:25:56.23 ID:Ng1Dtdjk.net]
>>75
そう呼んで欲しくはないが呼んでるかもしれないという想定で
すり合わせるプロセスは必要かもしれない。

78 名前:デフォルトの名無しさん [2023/09/02(土) 16:37:50.73 ID:aKZIxXWD.net]
>>65 がトランスパイル先にまでOwnership/Borrow/Lifetimeあたりの機能あったほうが良さそうなこと匂わすトンチンカンなこと書いてるからだろ

79 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:46:31.63 ID:3Onl8i9L.net]
>>77
そんな頓珍漢な勘違いをするのはおまえだけだろw

80 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 18:52:34.01 ID:l2r0UsPx.net]
どうせ>>62も複おじなんだろうね

なぜRustからトランスパイルしようなどと思ったのか?
その動機が出ないならこの話は終わりです



81 名前:デフォルトの名無しさん [2023/09/02(土) 19:16:20.22 ID:v3EBZAej.net]
>>62です。ぼんやりとした質問ですみませんでした

例えばRustが読めない人向けにPython等に変換してPython読める人ならなんとか読めるものに変換できないかなという想定でした。
あとはLLVM以外の環境で動かしたいとか。それなら確かにWASMで良かったみたいですね。
Rustは型が厳格とかデフォでimmutableだったりムーブだったり制約が強いイメージでしたが前提からして間違ってたみたいですね

皆さま事細かにありがとうございました

82 名前:デフォルトの名無しさん [2023/09/02(土) 19:32:06.11 ID:aKZIxXWD.net]
だから言っただろうがよ

83 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 19:33:02.08 ID:EvLWL1zC.net]
これは違うな
疑って失礼しました

84 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 19:34:44.69 ID:GzMi3EqG.net]
>>67
お前が勘違いしてんだろガイジ
実行時に所有権やライフタイムは出てこないからこそトランスパイル先の言語にもこれらの機能が言語機能として備える必要がないわけでこのスレでお前だけが1人だけ勘違いしている
頭悪そう

85 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 19:51:23.24 ID:Wl+8+V5g.net]
おじ、キレた!!

86 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 20:07:34.22 ID:x+ZOYO9b.net]
複数ID全員おじとか糖質患者やろ
お前のたった1人だけの発言の方がすべておじに似つかわしいんやけど自覚できない?

87 名前:デフォルトの名無しさん [2023/09/02(土) 20:45:16.67 ID:f2x52juV.net]
おじ使いはいつも病気

88 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 23:40:40.30 ID:lMQqG2Zb.net]
的外れなレス(>>63-64)からの
恥ずかしい壮大な勘違い(>>66)
そしてなぜかドヤる(>>81)

控えめに言って頭オカシイ
さすが複オジ

89 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 23:56:54.98 ID:v0MnUUsV.net]
オジオジ言ってる人は書き込みに中身がなくて全方位叩きだからスレ荒しが目的なのかな
反応せず無視するのがいいんだろうけど反応しちゃった失礼

90 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 00:03:56.01 ID:cm8T2pY+.net]
どうでもいいし面倒だしもうここ潰してワッチョイありスレに一本化してほしいんだけど



91 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 00:09:50.96 ID:HRiHoELW.net]
「自演認定は頭おかしい」論法
「おじ連呼厨」の強調

いつものやつですね
自演認定糖質論法は久しぶりに聞いた気がする

92 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 00:16:07.67 ID:HRiHoELW.net]
ID:bvTG+KAn
ID:g76m2OPt
ID:f2x52juV
ID:GzMi3EqG
ID:x+ZOYO9b
ID:v0MnUUsV

93 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 00:20:28.54 ID:cZTMAPOv.net]
議論でバトルが盛り上がるのは歓迎
オジおじ連投がいる時は議論がなく荒れるだけでつまらん

94 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 00:35:38.11 ID:HRiHoELW.net]
歓迎するわけねーだろアホか

95 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 00:38:35.94 ID:cCJ59BhE.net]
まともな議論が成り立たない原因は複オジだからね
まともな議論ができそうなのはどう見ても>>65>>68のほう
>>91にまとめられてるレスを書いてるようなやつが議論は歓迎とか笑わせるな

96 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 00:45:48.36 ID:HRiHoELW.net]
既視感の正体

https://mevius.5ch.net/test/read.cgi/tech/1673926892/745
https://mevius.5ch.net/test/read.cgi/tech/1652347700/468

97 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 00:53:25.84 ID:roP/qgKi.net]
>>61
亀レスだが特に理由がないならrusqliteで
今のところはこれがデファクト

98 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 01:20:25.77 ID:YZAPuv0W.net]
気に食わない意見があるけど反論できないで次々とおじさん認定して叩くだけのゲスがいるな

libsqlite3の上に構築したRusqliteでもいいが
Rustで構築したSQLxがSQLiteもサポートするようになり出来が良いので急上昇で逆転する見込み

99 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 01:41:47.18 ID:mceEf04V.net]
sqlxのsqliteドライバもlibsqlite3の上に構築されてるぞ
SQLiteはCのAPIしか提供してないんだから他のものを使う理由がない

100 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 07:28:12.23 ID:x92ht6sx.net]
また知ったかぶりして恥かいてるww



101 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 08:37:05.08 ID:WZFIWsZX.net]
sqlx以外はasync/await使えない?

102 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 13:35:31.95 ID:mxOeoCcq.net]
自分でspawn_blockingすればいい

103 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 13:45:08.16 ID:yQjRA1Qa.net]
安定感や性能に差があるのでsqlite限定ならFirefoxでも使ってるrusqliteがベター

104 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 13:48:17.25 ID:jFAGdbdC.net]
■購入目的(達成されました)
・Rustで動くプログラムの写経
・映像表現的な出力結果はモチベーションを維持できる気がした
・RustについてはWeb上に素晴らしいテキストがたくさんあるので簡単な実践的なプログラムを読みたい

■自分のレベル
私は数カ月前にRustを勉強し始めました。
これまで高校でc、Javaの基礎、大学でc++基礎、ObjectiveC、社会人になってPythonやc#と触れてきました。たくさん触れてきていますが結局自分が作りたい少し大きい物をプログラミングで何かを作りきるということをしてきませんでした。いつもチュートリアルで終わりです。永遠に世界に挨拶でもしてろと言われそうなタイプです。

ここ数年で映像制作から転職してインフラエンジニア関係に勤めています。
ネットワークやサーバ周りの知識に加えて一つ言語を修めたいと思いRustをはじめました。

105 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 23:37:22.86 ID:IkMULQX5.net]
>>101
spawn_blockingは別OSスレッドを立ててそこで実行するだけだから根本的な解決にならない

106 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 01:10:37.74 ID:Ev35rGw5.net]
>>104
別OSスレッドを立ててそこで実行する以外の解決方法はないよ

107 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 02:53:02.64 ID:IXHvJiGY.net]
君たちは何を問題と定義しているのか

108 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 06:58:20.37 ID:HktKZ7k9.net]
昔と違って今はFutureを返すcrateを選べるのだからそこで困ることはないな
糖衣のasync関数を含めてFutureさえ返してくれればいい
自分側はawaitもしくはspawnしてもいいしFutureUnorderedなどで早い者勝ち処理など自由な方針を取れるのだから

109 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 09:56:10.80 ID:NSmwDj9w.net]
>>107
そこで困るとは?

110 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 10:17:13.25 ID:/ASAZOX6.net]
困ってない人は一生気付かない
これが理想郷



111 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 13:01:49.77 ID:9feyj9k/.net]
いつものストローマンオジ

112 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 18:54:13.07 ID:UIsGravq.net]
困ったことが無い香具師には何で困るかわからんマジ

113 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 20:11:06.59 ID:pWElWRNz.net]
Futureもawaitして同期のみで困っていない人もいる
Futureすら使わず別スレッドにしちゃって困っていない人もいる
ただしベターな方法を知らないために困っていないだけかも知れない
理解した上で選んでいるなら問題ない

114 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 20:41:40.87 ID:0aDTsPbB.net]
>>112
同期APIを非同期で使う話だということを理解してね
何に困ってるのか知らんけど

115 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 20:57:24.92 ID:IXHvJiGY.net]
よく分からんが誰も困っていないらしいのでヨシ!

116 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 21:18:46.15 ID:xwtgk4fq.net]
>>114
俺は誰れが何に困っているのか分からん。 で、>>107は知っているみたいだが
>>100
>sqlx以外はasync/await使えない?
だから、うん、使えない/いや、xxxも使えるのような回答で良いはずなのに
ITドカタ板に多い障碍者は妄想必死して、変なことを言い出すからな。

117 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 21:28:55.91 ID:bE42d19a.net]
>>113
最後の手段spawn_blocking()の話?
あれはスレッドを消費しちゃうから例えばクライアント接続が多数来てそれぞれが使うと詰むよ
全部を非同期APIに統一するのがよいね

118 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 21:58:02.43 ID:dk25eEP4.net]
そういう状況なら非同期とか言う前にsqliteやめよう複くん!

119 名前:デフォルトの名無しさん [2023/09/04(月) 22:16:10.47 ID:Ts5EvUDj.net]
SQL関係ない一般的な話がされてると思ってたらSQLにこだわる人もいてよくわからんな
SQLにしてもサーバーに繋ぎにいくなら同期はありえんな

120 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 22:29:51.49 ID:fWqFM9pZ.net]
>>116
スレッド消費せずにSQLiteへの接続を同時にさばくことが出来ないからね
複オジおすすめのsqlxも当然接続ごとに別OSスレッド立ち上げてるからクライアント接続が多数来たら同じように詰むんだよ



121 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 22:47:23.47 ID:rfWjSjrk.net]
自分が何を知らないか
知ってる人もいれば
知らない人もいる
前者は詐欺師で
後者は複オジである
彼はみんなを騙しているのではなくて
彼はなんでも知っているつもりなのである

122 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 23:11:41.51 ID:ueRfdgpS.net]
RustのSQLデファクトスタンダードのsqlxに対して「複オジおすすめのsqlx」と書いてることから、
複オジ使いはRustを使っていない疑惑が再び出てきた。

123 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 23:53:13.41 ID:IXHvJiGY.net]
>>118の相似形

https://mevius.5ch.net/test/read.cgi/tech/1644596656/919
919: デフォルトの名無しさん sage 2022/05/09(月) 18:50:22.63 ID:rGYbsi5m
>>915<

124 名前:/a>
>>918
FizzBuzzは単なる話の出発点の例の一つに過ぎなくて既に皆はもっと一般的な話をしているようにみえる
皆もFizzBuzz限定の話なんかに興味はなくて一般的な話に興味があるからではないかな
[]
[ここ壊れてます]

125 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 23:54:19.18 ID:8cZoZvfB.net]
またオジが妄想に取り憑かれてるねww

126 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 23:56:14.30 ID:IXHvJiGY.net]
質問者のユースケースが非同期ライブラリを必要としているのか?
そうした前提を確認せずに、非同期対応の一点でライブラリの適・不適を評価しようとすること自体が筋違いなのです

127 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 00:09:09.34 ID:XN2NC5/h.net]
質問者>>100
>sqlx以外はasync/await使えない?
だから、非同期が前提ではないかい

128 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 00:23:36.51 ID:XDjugVOt.net]
>>125
そっちじゃなくて>>61のこと

https://github.com/launchbadge/sqlx/blob/main/sqlx-sqlite/src/connection/worker.rs#L82
なるほどワーカースレッド立てて通信してるだけで別に非同期ファイルI/Oを最大限活用するとかじゃないんだね
確かにこれなら>>119の言う通りブロッキング待ちするものをspawn_blockingしても大した差はなさそうだ

129 名前:デフォルトの名無しさん [2023/09/05(火) 04:37:15.62 ID:Zsmh0CoR.net]
>>117
これこれ

130 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 05:16:32.99 ID:Rvonn+YZ.net]
>>101
各spawn_blocking()毎に専用のネイティブスレッドをブロックする形で用いるため
spawn_blockingが同時に大量に発生しないよう留意しなければならない
そのため同期ライブラリの利用方法には何らかの制限がついてしまう
非同期ライブラリを利用すればそのような制限はない



131 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 12:58:37.11 ID:V9mIkqYx.net]
sqlx crateでMySQLを使っているがクライアント接続が多数来ても捌けてる
すべて非同期なのでブロックされることも別スレッドで実行されることもない

132 名前:デフォルトの名無しさん [2023/09/05(火) 14:15:52.81 ID:SlAKktdo.net]
node.js推しだった人か

133 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 14:17:29.93 ID:6qNvCW8J.net]
redis-rsよりも良いの?

134 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 14:29:07.14 ID:bhQzjDZU.net]
>>129
そりゃMySQL自体が非同期APIを提供してるからね
同期APIしか提供してないSQLiteとは全く事情が違うんだよ

135 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 19:14:25.74 ID:dmqj3xko.net]
かつてデファクトスタンダードだったdiesel crateがsqlx crateにその座を奪われた原因もdieselが非同期APIに対応できなかったせい

136 名前:デフォルトの名無しさん [2023/09/05(火) 21:03:20.66 ID:x/2k1tVz.net]
それもあると思うがたしかディーゼルってActiveRecordの開発者が設計してるんだよね

137 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 08:23:13.48 ID:KSPgDJdv.net]
sqlxのほうがシンプルで使いやすくわかりやすい

138 名前:デフォルトの名無しさん [2023/09/06(水) 10:25:26.54 ID:UTcPybKQ.net]
>>134
ということはライセンスで敬遠されたのか?
ここにもOSS問題が

139 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 12:30:09.29 ID:12hS6FX4.net]
>>136
いいかげんコテハン付けろよ。

140 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 18:07:43.20 ID:bKG9yIlg.net]
>>136
Apache2.0とMITのデュアル



141 名前:宴Cセンスに何の問題が? []
[ここ壊れてます]

142 名前:デフォルトの名無しさん mailto:sage [2023/09/07(木) 13:34:15.26 ID:bUyh+PaU.net]
GUI作りたいけどよくわからん
今のデファクトはなんや

143 名前:デフォルトの名無しさん mailto:sage [2023/09/07(木) 14:34:25.76 ID:BcSMP50e.net]
デファクト決定戦レスバしかしてねーなこのスレ

144 名前:デフォルトの名無しさん mailto:sage [2023/09/07(木) 15:38:29.71 ID:kMvLzM04.net]
デファクトと言える目安は Recent Downloadsで同カテゴリ2位以下と3倍以上差がついてるかどうか

145 名前:デフォルトの名無しさん mailto:sage [2023/09/07(木) 21:32:40.12 ID:pU5U2pan.net]
GUIはデファクト無いと思う。要件で選ぶしかないわ。

146 名前:デフォルトの名無しさん mailto:sage [2023/09/07(木) 21:35:22.15 ID:I+OYue/W.net]
RustならTUIが標準でしょ

147 名前:デフォルトの名無しさん mailto:sage [2023/09/07(木) 23:41:05.43 ID:7NPDh5XT.net]
マウスでポチポチしたいんじゃ

148 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 00:00:03.39 ID:hm00xw28.net]
Rust製のGUIフレームワークあれば良いんだろうが
現状はQtやらgtkのような他所製のエンジン(GUIツールキット)を利用するためのクレートを使うって感じだろ?
自分が分かる・使ったことがあるGUIツールキットをRustを介して使えになるんじゃないのか。

149 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 00:06:21.68 ID:DPQbgsiL.net]
GUI に関しては OS (ディストリビューション) が提供するもの (をラップしたもの) を
避けるわけにいかないから「Rust 製」にこだわれないんだよね。

150 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 00:13:42.42 ID:TT5R0qcn.net]
OSのコンポーネント使うことにこだわらないならeguiでよいのでは



151 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 00:23:14.31 ID:DPQbgsiL.net]
egui は名前がエグい

152 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 00:25:14.57 ID:3wUsERty.net]
GUIは各言語に関係なく様々なレイヤーや様々なカバー範囲などあってRust以外の言語でも多数の選択肢があり要件により変わる
Rustのクレートでも同様であり極端なものだと例えばx11-dlクレートも該当すればtauriクレートも該当して自分はどちらも別用途でそれぞれ使用している

153 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 00:29:58.49 ID:E3X/Jdig.net]
X11ならマルチプラットフォームでもRust製で作れるな

154 名前:デフォルトの名無しさん [2023/09/08(金) 01:30:03.20 ID:EHbxHCsV.net]
フリーランスエンジニアになってからの年収推移を公開【現在年収1000万】

【実体験】仕事ができない新卒エンジニアでも月収70万フリーランスになれる理由

フリーランスエンジニアは年収900万円までは余裕!現役フリーランスエンジニアが徹底解説

フリーエンジニアの平均年収!未経験が年収1000万円を超える方法とは?

月額150万円以上も可能?ITフリーランスで高単価を獲得できる理由

在宅で年収1000万稼ぐフリーランスエンジニアの稼ぎ方【再現できる】

フリーランスのエンジニアやるなら45歳までに貯金5000万円作れないと死ぬ説

155 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 06:05:02.97 ID:1e7fFDSb.net]
>>144
今どきのTUIはマウスでポチポチできるようになってるぞ

156 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 07:42:03.69 ID:L1913KOe.net]
管理画面はウェブベースにしておけ

157 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 08:41:49.30 ID:07e9DMWQ.net]
どういうこと(´・ω・`)?

158 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 09:16:05.39 ID:3pBwkm6o.net]
田売りなのかなって気もするけど覚えること多そうだな…

159 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 12:46:27.44 ID:Qwh1dPVP.net]
Streamlit の Rust 版ってあるのかな

160 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 14:11:22.78 ID:E3X/Jdig.net]
>>152
マジかよ
21世紀ってすげーな



161 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 17:46:35.04 ID:DPQbgsiL.net]
ターミナルがマウスイベント送信できるようになってるやつならね。(まあモダンなのはだいたい出来ると思うが)

162 名前:デフォルトの名無しさん [2023/09/08(金) 18:56:17.34 ID:LCrxvNjx.net]
Tauriでいいじゃん

163 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 19:04:26.66 ID:TT5R0qcn.net]
sixel使ってターミナルGUIアプリケーションとかできないのかね

164 名前:デフォルトの名無しさん [2023/09/09(土) 00:48:43.38 ID:uwI0AfpW.net]
tauri執拗にすすめるやつなんなの?病気?

165 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 01:42:23.33 ID:UR7WoOUT.net]
スレに2回しか出てないのに執拗とは

166 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 01:55:37.10 ID:nFkP/7o8.net]
荒れるから、田売りの話は禁止にしよう

167 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 02:24:44.28 ID:i5s7UXai.net]
「Electronよりなんか良いっぽい」以外の利点が知られていないTauriさん

168 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 08:43:17.99 ID:jpDXx+st.net]
yarnだのcargoだのどいつもこいつもなんでオレオレパッケージマネージャ使いたがるの😭

169 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 09:07:53.17 ID:cXOKMQb6.net]
VSCodeなど(当時はTauriはなく)Electronで書かれたソフトが多いようにElectronとTauriは共通してメリットが多い
さらにWebアプリ化もしくはその逆も比較的容易
ただしどちらもHTML/CSS/(JavaScrpt)のWeb知識が必要なのでこれを持たない者だけが批判しがち

170 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 09:14:21.06 ID:Vd67mKNx.net]
オレオレじゃないパッケージマネージャというと?OS依存するものしか思いつかないが



171 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 11:00:13.25 ID:Ig5iuvnc.net]
html の設計がいびつなんだよね……。
xhtml まではドキュメント記述言語としてタグのセマンティクスを重視した設計だったのが
html5 から living standard の流れで html はウェブアプリケーション基盤だとする派閥が圧勝した。

そこからの流れで外観を記述する言語としての活用が広まっている状況があるのは事実だし、
もうこの流れに逆らえないのも事実だと思うが
html はやっぱり GUI 記述言語としては不格好な存在だよ。

172 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 11:33:35.06 ID:IggX53ET.net]
ハッピープライスパラダイス
ハイパーテキストマークアップランゲージ

あくまでもテキスト用言語だからなぁ

173 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 13:03:51.75 ID:qxfK5/Yz.net]
HTML+JSが嫌なら全部canvas+wasmでやればええねん
アクセシビリティとかは考慮しないものとする

174 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 14:51:58.44 ID:Ig5iuvnc.net]
屋上屋を重ねるという慣用句はこういうときにつかうのかな。

175 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 15:09:29.22 ID:Ig5iuvnc.net]
>>165
C/C++ は実行環境の管理と開発環境の管理を分けないスタイル(ライブラリもディストリビューションのパッケージマネージャーで管理する)でやってたし、分離するにしても chroot (今ならdockerでもよいかも)とかで出来てたからそれ以上には発展しなかった。
でも本来は別物ということにするほうが自然だと思う。
言語をまたいだ開発をするプロジェクトがややこしくなるがそれは本来的にややこしいものだからしょうがない。

176 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 16:01:57.25 ID:sGUJTy2x.net]
>>172
いつの話?無理やり停滞感を擦り付けている???

発展して_____+_____がデファクトスタンダード
それで不足なら_____サーバー

毎回ビルドに6時間とか待たなくて良いように発展した手法がほぼ統一された
Rustもビルド時間の件で大揉めしたじゃん、何も解決しなかったけど
(空気読んで情報は伏せた)

177 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 16:45:26.09 ID:Ig5iuvnc.net]
>>173
過去形で書いてるよ。
今は違うと強調したつもりの表現なんだけど…

178 名前: []
[ここ壊れてます]

179 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 18:12:41.11 ID:hWR6yEQh.net]
>>174
>今は違うと強調した

本気で言っているのなら
ちょっと心配になるレベルのコミュ□だぞ

か、またはネット□□師か?

あと後出し皮肉オジは煽りオジと同化しているからやめろ

Rustで煽りオジはサイコパス確定した
https://mevius.5ch.net/test/read.cgi/tech/1693451813/93
>軽く煽った後は、本業に戻る、だよ 急がないし

180 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 19:36:26.65 ID:pYp2eZcM.net]
オジ連呼厨は他人に絡み過ぎ
このプログラム板では人でなくプログラムや技術に目を向けろ

>>165
cargoはrustcとハードリンク一体化してるようにRust用かつ公式
yarnとnpmで分裂しているのとは異なり一体化してくれていてありがたい



181 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 19:51:44.43 ID:qxfK5/Yz.net]
>>165
大統一パッケージマネージャ作ってくれ

182 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 20:39:12.68 ID:Rk1XYFyW.net]
debとかrpmとか

183 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 21:06:18.16 ID:IggX53ET.net]
>>178
aptで良いと思う

184 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 21:31:02.60 ID:1qPxYBdj.net]
>>175
後出し皮肉オジは、コテハン出してた頃の複オジそのものに見えます
質問して答える自作自演も

185 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 21:33:52.69 ID:Rk1XYFyW.net]
>>179
aptはdebパッケージの管理ツール

186 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 22:07:42.11 ID:qxfK5/Yz.net]
>>178
依存crateをいちいちapt-getしてくるのさすがに大変すぎないか?

187 名前:デフォルトの名無しさん [2023/09/10(日) 10:57:43.69 ID:yM7j2B0I.net]
>>165
antも廃れたな

188 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 13:28:10.69 ID:NvPhT1QM.net]
>>183
パッケージマネージャの側面はmavenからでantにはivyで逆輸入された。

antは廃れるべくして廃れたな。

189 名前:デフォルトの名無しさん [2023/09/10(日) 14:52:06.76 ID:9TiyMpcM.net]
mavenとかまだ使ってるとこあるの?
普通はgladleだよね?
未だにmavenだとしたらちょっとそこはヤバいと思う。

190 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 15:10:16.28 ID:yM7j2B0I.net]
今でも使ってるなんて誰も言ってないのでは



191 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 15:36:29.89 ID:NvPhT1QM.net]
いや、未だにmavenって認識が間違ってるよ。
定型的な開発サイクルであればmavenで十分だしそこで明確なツラミもないのにgradleに移行しようって判断するようなチームはヤバい。

とはいえ今だと初手でgradle選択するチームが多いだろうね。

192 名前:デフォルトの名無しさん [2023/09/10(日) 16:18:37.72 ID:yM7j2B0I.net]
自分で質問して自分で答えるタイプの人でしたか

193 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 17:15:47.84 ID:DnwEEEwp.net]
みんなjavaに詳しいのね

194 名前:デフォルトの名無しさん [2023/09/11(月) 00:02:48.34 ID:RxCGMczZ.net]
ビルドのためにグルービーとかいう言語を使わなければいけないことに異常性を感じないのかjavaの人たち

195 名前:デフォルトの名無しさん mailto:sage [2023/09/11(月) 00:13:23.96 ID:aoFlyd5o.net]
MakefileやCMakeも大概だしビルドは魔境

196 名前:デフォルトの名無しさん mailto:sage [2023/09/11(月) 00:18:19.95 ID:/EmpjAru.net]
Groovy は、Rubyist なら分かる。ほぼ同じ

197 名前:デフォルトの名無しさん mailto:sage [2023/09/11(月) 00:23:10.62 ID:ul9tFljX.net]
>>190
今のgradleはgroovyじやなくてkotlinで書けるよ

198 名前:デフォルトの名無しさん mailto:sage [2023/09/11(月) 09:54:06.45 ID:lXcI/Ajd.net]
もう maven も gradle も java も使ってないから安心汁

199 名前:デフォルトの名無しさん [2023/09/11(月) 17:56:49.57 ID:gmM4YyOK.net]
>>190
世の中にはビルドとかCI/CDの定義ファイルがYAMLだからって、それ拡張してif else の制御構造組み込んでるところもあるんやで。

200 名前:デフォルトの名無しさん mailto:sage [2023/09/11(月) 21:37:45.75 ID:+I//Qqk+.net]
>>195
antやん



201 名前:デフォルトの名無しさん mailto:sage [2023/09/13(水) 22:09:57.35 ID:JQEDxoJN.net]
CNCF系はya

202 名前:ml好きだからね
それはさておき、言語固有のリポジトリマネージャはOSとは独立じゃないとディストリビュータもライブラリ管理者も辛いという必要性があって生み出されたもの
今後もなくなる事は無いでしょう。CPANあたりが元祖ですかね
[]
[ここ壊れてます]

203 名前:デフォルトの名無しさん mailto:sage [2023/09/13(水) 23:41:57.05 ID:ljzzNVbD.net]
tomlがEBCDICで描かれてたら絶望しかない

204 名前:デフォルトの名無しさん mailto:sage [2023/09/14(木) 10:03:14.07 ID:CfWv79JE.net]
さすがにcpanなんかもう使われてないよ

205 名前:デフォルトの名無しさん mailto:sage [2023/09/14(木) 10:31:50.25 ID:JeXpXyyi.net]
tomlとRustって直接関係あるの?
単に採用が多いってだけ?

206 名前:デフォルトの名無しさん mailto:sage [2023/09/14(木) 10:45:04.55 ID:hWZaPMNq.net]
明確に関係を規定しているわけではないが
開発ツールチェインで採用している以上は馴染みやすいし、
習慣的に toml が普通という感じ

207 名前:デフォルトの名無しさん [2023/09/14(木) 18:18:10.36 ID:uElhXa+m.net]
JetBrains から RustRover 出たね。まだプレビュー版だけど。その代わり無料だ。

208 名前:デフォルトの名無しさん [2023/09/14(木) 18:20:11.06 ID:uElhXa+m.net]
ぜひとも IntelliJ IDEA のように無料のcommunity版も出して欲しい。

209 名前:デフォルトの名無しさん [2023/09/15(金) 11:42:38.55 ID:FLL155po.net]
的を射ている
https://wolfbash.hateblo.jp/entry/2017/07/30/193412

210 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 12:00:21.56 ID:FSCF79pL.net]
めちゃペラいな
初めて3日くらいの感想ぽい



211 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 12:00:26.41 ID:LQyUZKSg.net]
しょーもな...

212 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 12:03:53.15 ID:xQfsfFQS.net]
しっかりやってる人の意見
https://kerkour.com/should-i-rust-or-should-i-go

Goと比較した場合のRust一番大きいメリットはエラー処理やバグ検知だけどasyncのデメリットが大きいのも確か

213 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 12:13:34.28 ID:LoLA89os.net]
むしろNimのネガキャンにしかなってないって話題になってた記憶が

214 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 12:13:50.38 ID:+YuTSIf8.net]
>>205
Rustの一番の課題が絶壁の学習曲線なんだから、3日目の感想は重要だろ。
それを無視するならHaskell化待ったなしだな。

215 名前:デフォルトの名無しさん [2023/09/15(金) 12:52:21.36 ID:FLL155po.net]
情報密度が違っててワロス
https://www.ossnews.jp/compare/Rust/Nim

216 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 12:58:36.85 ID:FqVl8L26.net]
>>207
むしろasyncが容易かつ効率的なことがRustの利点だよ
そして軽い非同期タスクを大量にマルチスレッド上でいわゆるM:Nスケジューリングできるのは、
RustとGoしかないためその両者の比較になるのはその通りだが出来る範囲はRustが広くきめ細かい
もちろん非同期以外の言語仕様も同様でGoは貧弱すぎる

217 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 13:33:46.47 ID:yoJlOour.net]
Go は貧弱だが Go くらいで十分な範囲をカバーできるだろ……という割り切りで設計されているように見える。

218 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 14:58:25.08 ID:3ICKgtSW.net]
Goは構文が簡素なのは割り切りとしていいと思うんだけど
参照周りの扱いとかCの頃から進歩してなくて
「こんなこと今どき人間が気をつけて書くの?」という気持ちにはなる

219 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 16:57:51.41 ID:fC9P09S6.net]
>>210
こういう役に立たない一般論に比べれば>>204のような薄っぺらい個人の感想のほうが実践知なのでまだ価値がある

220 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 19:05:24.10 ID:BkBNFquN.net]
>>210
スマホからは何も見えない……
なんかあるの?



221 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 19:11:49.50 ID:wdMffZ4Q.net]
>>215
RustとNimを比較してるサイト

222 名前:デフォルトの名無しさん [2023/09/15(金) 20:05:41.52 ID:pQw5TxEC.net]
Goは構文簡素にしてても内部のGCとかは複雑にしてるイメージ。

223 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 20:39:40.02 ID:zdZpv9AJ.net]
>>214
どちらのページも意味のある情報がなにもない
くだらない揚げ足取り

>>215
PCからしか内容が見えないダメサイト
内容に意味はないため見る必要ない

224 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 22:34:16.16 ID:qrlNPDKn.net]
そのRust批判を書いてる人もそうだが
意味のあるプログラミング経験の少ない人はmutを毛嫌いしてるよな

言語に関係なくミュータブルか否かの区別がある方が好ましく
ミュータブルの使用は必要最小限が好ましい
という当たり前のことに沿う仕様なのに理解できなくて批判

225 名前:デフォルトの名無しさん [2023/09/15(金) 23:11:51.65 ID:UUFGnjcv.net]
>>219
ミュータブルか否かの区別があるのは煩雑になるだけで好ましくない。WindowsやLinuxのソースコードに
Rustが採用されたと言ってもごく一部でメモリ安全性が特に重視される部分だけ。全部をRustで書くなんて
煩雑な作業には人間はとても耐えられない。

226 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:17:03.67 ID:/YAD597I.net]
>>219
>ミュータブルか否かの区別がある方が好ましく
当たり前では

mojo調べでlet/var区別が好ましいと決着ついた
https://docs.modular.com/mojo/manual/basics/index.html#variables

rust mutが好まれてないだけ

>>220
let/varだと区別がありつつ煩雑じゃない、という事ですね

227 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:24:01.30 ID:/YAD597I.net]
それと
>>220
Linuxカーネル本体は当分Cのままで
デバイスドライバをrustで書く準備が出来た、だけですよ

228 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:26:04.83 ID:6F2DK256.net]
>>220
mutableとimmutableの区別は必須
それを煩雑という者は初心者のみ

>>221
色んなプログラミング言語をやってきてる者にとってそんな些細な記述方法を問題にするやつはいない
参照のある言語でmutableを区別するならばmut付加方式が合理的
例) let mut x: &mut Type = ...

229 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:28:27.24 ID:/YAD597I.net]
あと前スレで出ていたcurlですが
rust TLS backendを使う選択肢があるのに配布用には採用されてませんね

$ curl -V
... libcurl/8.3.0 OpenSSL/3.1.2 (Schannel) zlib/1.3 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.4 libpsl/0.21.2 (+libidn2/2.3.3) libssh2/1.11.0 nghttp2/1.56.0
Release-Date: 2023-09-13

230 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:30:46.42 ID:Mq8zEA1a.net]
letの後に識別子しか書けないならlet/varでいいんじゃね
パターンが書けるならlet/varよりlet/let mutの方が合理的な気がする



231 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:31:04.61 ID:ksZUfg69.net]
ここはRustのスレ
的外れなRust叩きをしているバカはアンチスレへ移動しろ

232 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:35:09.11 ID:/YAD597I.net]
sudo-rsも v0.2.0でstableと言い切って知らないdistributionに
ねじ込んだようですがその後どうなるのか要チェックです

233 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:43:02.23 ID:4Db3FasG.net]
mojoの所有権周りの構文ってRustより重い感じなんだな
これPython書きたいような人に受け入れられるんだろうか…

234 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:44:55.11 ID:/YAD597I.net]
>>225
>パターンが書けるならlet/varよりlet/let mutの方が合理的な気がする
気がする、ではなく
合理的だという説明が聞きたい

235 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:47:42.54 ID:cnhK/Rr/.net]
>>221
たとえばRustでよくあるこういうパターンはmojoでどうするんだろう
let (tx, mut rx) = channel(100);
そもそも可変参照はどう区別するんだろうね
あと関数の引数変数のmutable性はどうやって表すんだろう
Rustのmutを添える方式が自由度が高くてわかりやすいよね

236 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:48:06.93 ID:/YAD597I.net]
>>228
どの辺りが重い感じ?

237 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:52:51.61 ID:4Db3FasG.net]
>>231
borrowed, inout, owenedって全部キーワード指定だし結構長くない?
自分はRustみたいに明示的なのが好きだから多少長くてもいいけど
Python好きな人だとどうなんだろうって

238 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:54:33.01 ID:Mq8zEA1a.net]
パターンマッチの場合束縛する変数が複数になり得るので、それぞれの変数に対して異なるmutabilityを宣言できる

あと、Rustは変数への束縛にmove/refの区別もあることも関係してるかもね
letやvarのように別構文を用意するなら、それぞれに対してmove版、ref版が必要になってしまう

239 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:59:25.63 ID:cnhK/Rr/.net]
let (foo, ref mut bar) = とかよく使うもんね
mutやrefが分離キーワードになっているRustが便利

240 名前:デフォルトの名無しさん mailto:sage [2023/09/15(金) 23:59:43.71 ID:/YAD597I.net]
>>230
なるほどね
mojoでunpackがどうなるのか知らないけど
unpack用のlet/varシンタックスはあった方が良いね

let/var方式の他の言語を参考にするんだろうな



241 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 00:02:44.62 ID:A/Og/XEu.net]
>>234
>mutやrefが分離キーワードになっているRustが便利

これを突き詰めるとponyになるって5chで聞いたよw

242 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 00:03:10.36 ID:e71CP5Wp.net]
>>234
いや、今となってはrefはほとんど使わん

243 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 00:26:11.63 ID:h6vfr2ug.net]
TauriとTauri Mobileが別々の実装として統合されないの悪手だと思うんだがな
せっかくRustでロジック書けてネイティブ呼び出しまで簡単で手頃なフロントエンド実装で期待してたのにわざわざコミュニティ分断する必要あるんか?
なんかXamarinみたいな結末迎えそうで残念だわ

244 名前:デフォルトの名無しさん [2023/09/16(土) 09:10:27.83 ID:FQ6fYHli.net]
T,o,k(迷惑という方は←をあぼーんしてください。)

更に家族に教えて加えて¥4000×人数をGET。
https://i.imgur.com/p75gBok.jpg

245 名前:デフォルトの名無しさん [2023/09/16(土) 09:55:59.18 ID:ZJLR+eYH.net]
>>238
無理に一つにしようとすると条件分岐増えてごちゃごちゃしてわかりにくくなる、というのはありそう。知らんけど。

246 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 10:40:22.96 ID:FZJflFW6.net]
>>239
もう現金化してアンインスコしてる

247 名前:デフォルトの名無しさん [2023/09/16(土) 11:27:20.46 ID:8u+hT5wA.net]
RustRoverを試してみる
https://zenn.dev/helloyuki/scraps/a0241df49b2556

248 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 11:55:36.71 ID:jG7brSLe.net]
ウェブ系の奴らがやけにJetBrains推してくるけどAndroid Studio使ったら如何にゴミIDEなのかよくわかった
しかも個人使用でも買い切り数百ドルもしたのに今はサブスク月額1300円とかぼったくりもいいところ
VSCodeがあって本当によかったVSもCEならデバッガに制限あるけど無料だしこれほどMSに感謝したことはないね

249 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 12:20:19.81 ID:E7jGhtqP.net]
mut よりもShared XOR Mutableの方が難しいだろ。

250 名前:デフォルトの名無しさん [2023/09/16(土) 12:41:23.41 ID:8u+hT5wA.net]
>>243
Android Studio は IntelliJ IDEA がベースになっていて無料の community 版があるが?
ていうか Android Studio の方は最初から無料じゃなかったか? 金取るやつあるの?



251 名前:デフォルトの名無しさん [2023/09/16(土) 12:57:41.63 ID:RATZO/gi.net]
>>223
let x: &mut Type = ...
でよくね?

252 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 13:00:07.59 ID:XaZSJ/up.net]
>>244
lifetimeが難しいというのも大体がshared xor mutableの話だしな

253 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 13:07:54.84 ID:2emM+tnC.net]
>>246
それだとimmutableとなり変数値を書き換えできないから根本から違う

254 名前:デフォルトの名無しさん [2023/09/16(土) 13:23:53.43 ID:RATZO/gi.net]
描き替え出来るから問題無い

255 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 13:57:40.01 ID:2emM+tnC.net]
>>249
ポインタ値の書き換えと
ポインタが指す先の書き換えの
区別がついていないのはCでも初心者レベル

256 名前:デフォルトの名無しさん [2023/09/16(土) 14:05:34.65 ID:RATZO/gi.net]
うん
だから付ける必要無い所まで描く必要無いよね

257 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 14:06:34.42 ID:XaZSJ/up.net]
refとmoveの区別がある言語とそうでない言語の構文比較しても仕方なかろう

258 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 14:10:34.38 ID:nUKpqsu7.net]
>>246
ダメです
全く異なります
let mut x: &mut Type = ... ←xの値を書き換えられる
let x: &mut Type = ... ←xの値を書き換えられない

259 名前:デフォルトの名無しさん [2023/09/16(土) 14:24:43.82 ID:RATZO/gi.net]
>>253
だから付ける必要無い所まで描く必要無いよね

260 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 14:32:47.40 ID:F5t5l7vC.net]
>>239
絶対に試すべきだね。



261 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 14:37:19.47 ID:nUKpqsu7.net]
>>254
mutabilityを必要とする分に応じてmutを付ける必覧vがあります
そのため以下4種類がコードに応じて使い分けされています
let mut x: &mut Type = ...
let x: &mut Type = ...
let mut x: &Type = ...
let x: &Type = ...
前者のmutは変数xの値を更新するならば不可欠です
後者のmutはType型の可変参照で参照先の値を更新するならば不可欠です
それぞれの値を更新するためにはそれぞれのmutを欠くことはできません

262 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 14:43:13.66 ID:BFCePFCu.net]
ほんまジャップはアホやな
しょーもない重箱の隅をつつきあって知識自慢のマウント合戦
そして出来上がった成果物は誰も使わないクソゴミ
ジャップがオナニーしてる間にソフトウェアは中国に30年遅れているという現実
お前ら見てるとマジで日本人がソフトウェアで土人の未開レベルな理由がよーくわかる

263 名前:デフォルトの名無しさん [2023/09/16(土) 17:08:24.37 ID:DWW8ClN4.net]
まともなプログラミング言語ならばそれら四つの区別がある
例えばC/C++ではこのように対応する

// 変数値は不変で参照先も不変
Rust: let p1: &i32 = ...
C/C++: const int* const p1 = ...

// 変数値は可変で参照先は不変
Rust: let mut p2: &i32 = ...
C/C++: const int* p2 = ...

// 変数値は不変で参照先は可変
Rust: let p3: &mut i32 = ...
C/C++: int* const p3 = ...

// 変数値は可変で参照先も可変
Rust: let mut p4: &mut i32 =...
C/C++: int* p4 = ...

つまり可変な時にmutを付けるか
不変な時にconstを付けるかの些細な違いにすぎない

264 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 17:14:29.95 ID:AP//fjNl.net]
参照の可変性という概念を持つ言語がそもそも少ない

265 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 17:15:13.87 ID:AP//fjNl.net]
概念が異なるのに構文の話だけをしても仕方ない

266 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 17:34:04.75 ID:nlb2ovML.net]
参照先の値がread onlyかwritableかはプログラミングで極めて重要だよね
間違えて意図せず書き換えてしまっていたバグなどの減少にも繋がるから必要な機能じゃないかな

267 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 17:37:07.29 ID:sqsrY/cP.net]
>>258
2番目と4番目はRustだとsmellyなのでリファクタリング検討候

268 名前: []
[ここ壊れてます]

269 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 19:41:48.63 ID:OLEDwioO.net]
>>204が言ってるのはmutの区別が不要じゃなくて
良く使うmutable側でタイプさせんなってことでしょ

270 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 20:04:56.12 ID:DWW8ClN4.net]
ほとんどのプログラムではmutと記述すべきところが少ない
もしmutが多いならレアケースを除いてコードを改善すべき可能性が高い



271 名前:デフォルトの名無しさん [2023/09/16(土) 20:10:22.45 ID:TlXhcaWs.net]
>>263
>良く使うmutable側でタイプさせんなってことでしょ

お前、それプログラミングのセンス無いわ。
あ、もしかして使い捨てのコードしか書いたこと無い?

272 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 20:12:22.58 ID:b0KnMHZf.net]
>>263
慣れてきたらmutあんま使わなくて書けるようになるよw
関数型言語やってるとmut相当のもんなんて基本使わんのだし

273 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 20:31:44.89 ID:/CtnFWfv.net]
>>266
その代償としてイミュータブルをコピーしまくってメモリ浪費して関数型言語遅いじゃん

mut祭りで読みづらい代わりに高速でメモリ効率が良いのがRustの売りでしょ

274 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 20:37:59.24 ID:EG7NJZsJ.net]
多い少ないの話したいなら定量的な根拠持ってきてくれ
根拠ないなら断言するのはやめて

275 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 20:45:23.05 ID:DWW8ClN4.net]
>>267
それは関係ない
まずRustのほとんどのプログラムでmut祭りになることはなくmutの出現は少ない
その上でRustはCとほぼ同じ程度速い

276 名前:デフォルトの名無しさん mailto:sage [2023/09/16(土) 20:50:47.30 ID:bcC3Efve.net]
どちらがより目立つべきかを考えたら
mutable なほうが目立つべきだし
目立って欲しい方に指定をつける文法が自然だ。

良く使うほうが短く書けるべきという視点だって
もちろん間違いではないし、評価軸は無数にある。

定量化したところでそれぞれの重みをどう捉えるかは
感性の問題だろ。

277 名前:デフォルトの名無しさん mailto:sage [2023/09/17(日) 12:16:37.26 ID:ju6VviWZ.net]
>>211
Goでできない非同期処理って何?
channelとselectとgoroutineとsyncパッケージでなんでもできるけど

278 名前:デフォルトの名無しさん mailto:sage [2023/09/17(日) 13:48:53.24 ID:4koi4/xu.net]
>>271
例えばベアメタル環境での非同期とか?
まぁ大抵の環境でだいたい上手く行くってのがGoのいいところだから
別に悪くはないと思うけど

279 名前:デフォルトの名無しさん mailto:sega [2023/09/17(日) 17:36:59.55 ID:FEktRC8x.net]
毎日ちょっとずつ課題でてそれを解いていくようなRust勉強サイトってないの?
ナンプレ毎日1問クリアしていく感じなやつ

280 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 01:48:58.76 ID:u21D7vuy.net]
>>273
exercism.org どうかな



281 名前:デフォルトの名無しさん [2023/09/18(月) 10:51:29.83 ID:+ud3D/1q.net]
>>267
>その代償としてイミュータブルをコピーしまくってメモリ浪費して関数型言語遅いじゃん

Rustのことなら#[derive(Copy)]とか.clone()とか描いちゃだめだよ絶対

282 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 12:04:31.40 ID:X+wkGtcX.net]
>>267
エイリアス解析がやりやすくなって本質的に同じものなのか
複製が必須なのか自動で判断して最適化される。
プログラマが判断するよりたぶん賢い。

mut を付けるかどうかは性能じゃなくてロジック的な妥当さで決めるもんだよ。

283 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 12:15:08.64 ID:eKGbn4o/.net]
techempowerベンチ見るとrustと比較してgoがしょぼいけど
こんなものなの?

284 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 12:28:49.50 ID:X+wkGtcX.net]
つよつよプログラマがチューニングすれば際限なく性能を挙げられるという意味での性能の良さと
非プログラマがテキトーに書いても及第点程度の性能が出るというのは言語として両立しにくい。

仮にしょぼいのが本当だとしてもトレードオフになる何かがあったりするから
総合的な使用感は実際に使ってみないとよくわからん。

285 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 12:39:00.83 ID:b4Z9xD4H.net]
>>277
GoはGC内蔵言語だから本質的に遅い
GC内蔵言語はGCするから遅いわけではなくGCのためにヒープメインにならざるをえないため遅い

286 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 12:44:14.37 ID:AWdb6cD0.net]
なんでもイミュータブルじゃなくて必要な時にミュータブルにしつつ安全性をコンパイラが保証してくれるのがいいんだよなぁ。

287 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 13:13:11.65 ID:eKGbn4o/.net]
そもそも、goはc#にすら負けてね?
1番高速じゃなくても2番目あたりでいいかなと思ってるんだけど
どれがいいのかなと

ななやむぐらいならわかりやすい1番にしとけばいいのか?

288 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 13:16:25.44 ID:eKGbn4o/.net]
goのgc調べてみましたが参照カウントとかじゃないのか

289 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 13:54:07.10 ID:1tuWbz8L.net]
Rustは見た目が汚いのが困る
もういっそCの方がきれいで安全で保守性が高いまである

290 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 14:01:16.96 ID:6k3cBrAf.net]
Cは大きなプロジェクトが汚すぎる
モジュールで名前空間分けられないから



291 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 14:04:02.95 ID:DByXMqbY.net]
C言語は"安全装置のない銃"に徹しているからな
シンプルなだけに危険いっぱいだ

292 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 14:43:26.49 ID:EhgpbTsZ.net]
C#はunsafeやSpanがあるので頑張れば結構速い
ネイティブコンパイルもできるようになってきたからとにかく速度を求めるようなアプリじゃなければ十分

293 名前:デフォルトの名無しさん [2023/09/18(月) 15:27:10.56 ID:orcKBY2S.net]
Rustもcrateのダウンロード数に応じて
crate開発者が課金される時代か
メシウマじゃなかった胸熱

294 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 15:57:52.35 ID:qN+5vY8o.net]
何の話かと思えばunityか

295 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 16:04:36.29 ID:2MGtTYvZ.net]
とりあえずミュータブルの話をするならshared xor mutable に触れなきゃ意味ないし、それなら元ネタのトランザクション分離レベルぐらいは勉強しとかんといかん。

296 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 16:05:47.88 ID:7BUJ27i/.net]
>>285
C(C++含む)の真のヤバさはそれが周知されていないことだと思う
セキュリティ、セキュリティ吠えながら妄信的にC/C++使っているところとか普通にあるし

297 名前:デフォルトの名無しさん [2023/09/18(月) 17:52:28.36 ID:yZdHYJJu.net]
>>283
>もういっそCの方がきれいで

前置宣言だからそれは無い。

298 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 22:02:21.17 ID:1tuWbz8L.net]
>>291
前置宣言だから綺麗に書けるまである

299 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 22:29:41.23 ID:b4Z9xD4H.net]
>>283
Rustは普通というか見た目キレイ側

300 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 23:41:51.16 ID:X+wkGtcX.net]
>>290
ロジックが正しくてもバイナリレベルでは脆弱性になることがある。
分かりやすい例では、言語の理屈では寿命を終えたはずのオブジェクトでも再利用される機会がなくて内容が残り続けるとかね。
そういうときにでもどうにかする知見が C/C++ では積み上がってる。

普通に書いて脆弱性が発生しにくいに越したことはないが、脆弱性が発生していることがわかったときに直せる確信があるというのはセキュリティが重要な場面で C/C++ を使う理由になる。
C/C++ が「自分の足を撃つ」ことになるなんてのは百も二百も承知の上で、「自分の足を撃つことも出来る」ことに価値を見いだしてるんだよ。
もともと自分の足を撃つというのは戦争に行かなくて済むようにわざと撃つことがあるというのを下敷きにした言い回しで、危険であると同時にそれが必要なこともあるというニュアンスを含んでいる。



301 名前:デフォルトの名無しさん mailto:sage [2023/09/18(月) 23:47:04.73 ID:h2SSCK+Z.net]
>>294
それRustに対するアドバンテージになってないな
むしろディスアドバンテージ

302 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 07:20:03.69 ID:H6NF4sQp.net]
>>294
目的のために敢えてUB引き起こすってこと?

303 名前:デフォルトの名無しさん [2023/09/19(火) 11:44:23.57 ID:B2l8DHRh.net]
>>294
>そういうときにでもどうにかする知見が C/C++ では積み上がってる。

所謂、バッドノウハウね。
そりゃさんざん今までやりまくって、なんなら現在進行形だったりするんだからノウハウも積み上がるさ。

304 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 13:23:13.06 ID:Gn3exU3j.net]
データベースのデータファイルの中の構造は、
C言語の「全部生メモリ」状態で、ポインタの
変わりにファイルポジションになっていて
普通に相互リンクトリンクやファイルポジション
をデータの位置を表現するのに使われていたりする。
だから、実行中のプログラムの RAM のメモリー安全
は確保されたとしても、ファイルの中は安全には
ならない。

305 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 13:27:32.55 ID:Gn3exU3j.net]
>>298
[補足]
・ポインターの代わりにファイルポジションが使用され、
 古来の plain C と同様のプロググラミングが行なわれている。
・LockFile や fnctl で「部分ロック」が当たり前
 のように使用されており、非常に複雑な
 配慮が必要なプログラミングになっている。

もっといえば、DBMS を使うアプリケーションも、非常に
配慮が必要な場合も多く、どのようなテーブルやカラム構造
にするかは難しい。ID番号をリンクしたり、どうやって
データを参照しあうかなどが生ポインタと同様の難しさ
を持っていて、わずかでも間違えば、全データが論理破損
してしまう可能性を持っている。

306 名前:デフォルトの名無しさん [2023/09/19(火) 14:54:41.30 ID:rHe1cSmV.net]
だれか巻き込まれてないか?
https://www.youtube.com/watch?v=SzpaDEhm-8Q

307 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 15:58:16.52 ID:H6NF4sQp.net]
形式検証をrustに組み込むのってどれくらい現実的なんだろ
言語本体ではなくてproc macroで実現できるのかね

308 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 16:39:15.02 ID:p1GkLls0.net]
>>299
一般的なDBMSは中央集権でページアクセスを一元管理してるから生ポインタとは全く質が異なる

309 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 17:37:47.80 ID:/HqZkxNe.net]
>>302
ただ、購入履歴などは「誰が購入したか」のIDを
購入項目テーブルとユーザーテーブルを結びつける
必要があるので、IDがポインタの役割になる。
わずかでも狂うと、別人が買った項目が結び付け
られてしまう。
値が1つ、または、行が一行でもずれるとほぼ全体が破綻する。

310 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 18:14:50.54 ID:mxtPnJ5/.net]
DBでも何でもそうだけどshared xor mutableも必要



311 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 18:23:26.80 ID:/HqZkxNe.net]
販売サイトなどのバグって怖くて、500円のものが
バグれば5000円になったりする可能性ある。
そういうものは、プログラミングを気をつける
しかなくて、Rustの安全対策でも防げない。

312 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 18:32:19.28 ID:gvKDfDmE.net]
「気を付ける」の内訳にはテストを書く習慣とかが含まれてる。
気を付けないとしょうがないけど
気を付けるのに使える道具はそれなりに揃ってる。

313 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 18:34:24.73 ID:mxtPnJ5/.net]
すべてのバグをなくせる言語がないのは当たり前
データ競合により起こるそういう値のバグも現実にあるのだからRustでその手のバグをなくせるのも事実

314 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 18:55:07.79 ID:p1GkLls0.net]
>>303
そのレイヤーの話でもDBMSはトランザクション管理されてるから生ポインタとは状況が全く異なる
トランザクショナルメモリで管理された共有メモリと生ポインタの違い(実際はそれよりもまだ差がある)

315 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 19:02:27.03 ID:p1GkLls0.net]
>>304
同時実行制御には大きく楽観的制御と悲観的制御があるがshared xor mutableは後者
高い同時実行性能が求められる場合には楽観的同時実行制御を使うことが増えている
DBの話だけでなくロックフリーアルゴリズムも基本は楽観的制御

316 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 19:54:07.45 ID:/x1C5Bro.net]
>>309
楽観的排他制御を用いることができる現実的ケースが狭い
衝突した時の処理やり直しコストも考慮する必要がある

その一般的な話とは別にポインタ(参照)の話の方は必ず衝突するためsingle writer xor multiple readersが必須

317 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 21:00:27.72 ID:BGD+Lo74.net]
排他制御も凄く奥深い話ではあるが、そういう
ものだけでなく、単なるプログラムミスで、
ID番号が1つずれたり、行がなんらかの事が
原因で1ぎょうずれたりしても、大変な問題
を巻き起こす。だからテストは必須。

318 名前:デフォルトの名無しさん [2023/09/19(火) 21:30:53.89 ID:cyrWzrEE.net]
RDBMSで物理的な一行とか関係ない
テキストファイルに永続化してる素人だな

319 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 21:34:30.39 ID:BGD+Lo74.net]
>>312
DBMS自体をプログラムする場合には関係ある。

320 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 21:41:37.42 ID:BGD+Lo74.net]
それと、DBMSを使うに徹する場合でも、行に
付ける ID 番号の管理がまた問題になる。
それも慎重に良く考える必要がある。



321 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 21:50:10.01 ID:LcWw/5IR.net]
それサロゲートキー義務で設計したらの話でしょ

322 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 21:55:08.52 ID:BGD+Lo74.net]
>>315
色々な機能を実装する上で、色々有り得る。

323 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 22:32:18.55 ID:e2nf9Krk.net]
>それと、DBMSを使うに徹する場合でも、行に
>付ける ID 番号の管理がまた問題になる。

DB板にもそういうのいるけどRDBにID必要と考えてるやつはもっかい勉強してこい

324 名前:デフォルトの名無しさん [2023/09/19(火) 22:44:03.77 ID:5k6OZf8O.net]
>>310
>楽観的排他制御を用いることができる現実的ケースが狭い
MVCCやCASが楽観的制御
分散非同期が前提の世界では楽観的制御がデフォルト
じゃないとスケールしないから

Rustがコンパイル時悲観的制御にしてるのは実行時の管理を無くしたいからであってポインタだとshared xor mutableが必須だからではない
トランザクショナルメモリがその一例

325 名前:デフォルトの名無しさん [2023/09/19(火) 22:57:59.75 ID:cyrWzrEE.net]
DBMSをプログラムする場合には当然関係ある
でも1行ずれたら大変とかいう下手くそは任されないので関係ない

326 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 23:03:17.25 ID:BGD+Lo74.net]
>>319
下手クソとか上手いとかっていうより、
そうならないようなアルゴリズムやデータ構造を
ちゃんと考える能力があるかどうかなん
だろうけどな。

327 名前:デフォルトの名無しさん mailto:sage [2023/09/19(火) 23:06:22.84 ID:r+harKS8.net]
可変参照と不変参照に対してMVCCなんて使えないよ
それはデータをコピーすることと同じになってしまう
ソフトウェアトランザクショナルメモリはどの環境でも使用可能なのに不利だからほぼ使われていない
さらにRustのshared xor mutableはそれらと独立した話であり共存できる話なのでshared xor mutable必須は問題ない

328 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 01:44:31.66 ID:16Zt41/R.net]
会話のドッジボール

329 名前:デフォルトの名無しさん [2023/09/20(水) 09:31:56.94 ID:R98wQa7Y.net]
>>303
マイニャンバーですね判ります

330 名前:デフォルトの名無しさん [2023/09/20(水) 09:33:37.66 ID:R98wQa7Y.net]
>>305
500円の商品が5000円になるバグよりも
500円の商品が5円になるバグの方がはるかに怖い



331 名前:デフォルトの名無しさん [2023/09/20(水) 09:37:31.04 ID:R98wQa7Y.net]
>>313
いやいやωωω

332 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 09:39:49.95 ID:erhjcmms.net]
>>324
一番の問題は、レジ打ちの人間だったら絶対間違わない
ミスがコンピュータでは起こりえるということだよ。

333 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 09:41:04.74 ID:erhjcmms.net]
>>325
DBMSのアルゴリズムやSQLiteのソースなどを見ていたが、
大いに関係あるぞ。

334 名前:デフォルトの名無しさん [2023/09/20(水) 10:30:52.85 ID:jgkdiTgC.net]
SQLiteはファイルロックに頼らざるを得ない仕組みなのでDBとしては特殊

335 名前:デフォルトの名無しさん [2023/09/20(水) 11:17:52.24 ID:InZb605T.net]
俺が高校生だった25年前頃、志木駅で500円分ぐらいのパンを買ったら4000円ぐらい請求されたぞ

336 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 11:46:41.00 ID:UfpBE+4Y.net]
まあ他のバグが減ればその分本質的な問題に注力出来るわな
そういうのはテストケースも綿密に行う必要がある

337 名前:デフォルトの名無しさん [2023/09/20(水) 12:17:55.14 ID:1SabZs8d.net]
>>317
むしろナチュラルキーにして詰んだりバグってる

338 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 13:53:51.14 ID:56axJTdd.net]
ナチュラルキーがプロジェクトの最後までユニーク保障されたことなんかマジで無いズラ
サロゲートキーは必須ズラ

339 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 14:13:13.56 ID:I55f6i4N.net]
今日入門した。ツアーやったらサンプルプログラムが80個ぐらいできた
fn a(i: i32){ println!("{}",i) }
fn main(){ let x = 10; a(x); a(x) }
これは10が2回出力される
構造体引数だと2回よべずにエラーが出たけど
プリミティブ型?なら所有権がどうのとかなくてスタックにコピーされるだけであってる?

340 名前:333 mailto:sage [2023/09/20(水) 14:30:53.92 ID:I55f6i4N.net]
別のチュートリアル始めて理解した
コピートレイトが実装されてるからなのか



341 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 15:53:12.11 ID:R98wQa7Y.net]
#[derive(Copy)] 禁止

342 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 18:16:56.45 ID:52Xj2Gp1.net]
>>328
他のDBMSでもプロセス間の排他制御は
出来る方法が限られているのでファイルロックを
使っている可能性が高い。
他の方法だと、mkdir 法や、名前付きパイプが
あることがあるが、ファイルロックの方が便利。
一つのプロセスの中のスレッド間の排他制御は
色々な方法が有るが、プロセスを越えた排他制御
は意外と他に出来る方法が無いから。

343 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 18:33:23.45 ID:I55f6i4N.net]
>>335
#[derive(Copy,Clone)]はもう試しました
Rustのいいところが失われますね

344 名前:デフォルトの名無しさん [2023/09/20(水) 18:51:23.96 ID:o02nl+od.net]
rustの名前の由来は?

345 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 19:07:11.98 ID:DDNbmZRy.net]
https://en.wikipedia.org/wiki/Rust_(fungus)

robustな菌らしい

346 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 19:38:07.98 ID:I55f6i4N.net]
OpenGLをやりたくてcrates.ioで最新版を調べてCargo.tomlに
[dependencies]
bytemuck = "1.14.0"
ogl33 = "0.3.0"

[dev-dependencies]
beryllium = "0.13.0"
imagine = "0.5.1"

このプログラムをビルドするとberylliumがunresolvedと出ます
use beryllium::*;
fn main() { let sdl = Sdl::init(init::InitFlags::EVERYTHING); }
berylliumのパッケージ名が変わったりしたのでしょうか
わかる人いますか

347 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 20:29:54.63 ID:X4X5BtpX.net]
>>336
さすがにmutex_lock使ってるよ
乏しい経験からの妄想なんかじゃなく、ちゃんとソース見れ

348 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 21:48:28.31 ID:UIQvYKk8.net]
>>331
ナチュラルキーをまともに扱えない奴はそもそも設計者失格だろう

349 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 22:20:31.31 ID:DDNbmZRy.net]
>>340
単純に動かすだけならdev-dependenciesからdependenciesに移せばいいと思う

テスト用の依存としてdev-dependenciesにこだわるなら
use beryllium::*;
の前に
extern crate beryllium;
を入れれば通るかな
あまりdev-dependencies使わないから分からん

350 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 22:37:25.93 ID:I55f6i4N.net]
>>343 ありがとうございます、動かせました!楽しい



351 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 23:23:26.93 ID:T1fPPHAq.net]
dev-dependenciesについてはこの辺参照
testやbenchやexampleだけで使う依存を定義するやつ
https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#development-dependencies

main関数の中で必要なら普通のdependencyにしないといけない
extern crateは関係ない

352 名前:デフォルトの名無しさん mailto:sage [2023/09/20(水) 23:35:58.10 ID:8RfwRI5f.net]
>>331
未来永劫ユニークとノンヌルを単独ナチュラルキーで満たせればいいけど
そうでないときもあるもんね

>>336
プロセス間mutexやセマフォもあるよ

>>337
小さいデータならCopy実装は有利

353 名前:デフォルトの名無しさん [2023/09/21(木) 00:37:39.43 ID:hd16Ksmk.net]
>>336
単一ファイルでまかなうSqliteと一緒にすんな

354 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 02:18:25.33 ID:AFY6neVf.net]
>>341
CreateMutex()の第三引数に名前を指定しなければ
ならないが、ユニークな名前をどうやって作るか
が大問題になるよね。
その点、LockFile() なら名前衝突の問題は
最初から簡単に確実に回避できる。

355 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 03:10:10.71 ID:2dN46EMa.net]
普通のDBってインターフェースを一つのサーバーで提供してると思うんだけど
名前解決が出来ない管理なんてあるの?

356 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 03:14:44.34 ID:AFY6neVf.net]
>>349
なるほど。そういうことか。
SQLiteは、中央サーバー的なプロセスが無いから
事情が違うってことなんだな。

357 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 04:39:08.18 ID:uFUX5dn+.net]
まずプロセスを分けるメリットがない
CPUコアスレッド数のスレッドを立ち上げれば一つのプロセスでそのマシンのリソースを使い切れる
ただし通信待ちでスレッドが止まったらその分のCPUリソースを無駄にしてしまうため各スレッドで複数のタスクを動かす
ただし各スレッドが抱えるタスク数は偏りがちなことが知られているため暇なスレッドは他からタスクを盗んで実行できるようにする
以上のスケジューリングをするのがRustのtokio

358 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 08:25:19.60 ID:CT30w3BF.net]
https://www.sqlite.org/whyc.html

359 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 10:46:48.71 ID:BwXSXzYj.net]
>>352
Rust以外の言語は完全に否定されているけど
今後Rustだけは条件を満たせば採用するとあるね

360 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 10:59:44.45 ID:3hJtL3Ib.net]
mutable xor sharedはトランザクション分離レベルで言うとSERIALIZABLEだと思うけど、書き込み性能にけっこう致命的なパフォーマンス劣化が出たりしない?

あらかじめ主要な書き込み先オブジェクトの参照を保持しておくとかのオブジェクト指向の定石が利用出来ないし。



361 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 11:03:41.54 ID:KbwNEPLt.net]
SQLiteは今、日本の人が一人でRustに移植してるみたいだけど?
完成度は知らない

362 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 13:31:34.10 ID:cACw6b27.net]
>>351
MySQLやPostgreSQLみたいな普通のDBMSでは
単一プロセスがデーモンとして常駐してファイル更新
を一元管理するのが前提となっているが、
SQLiteでは、そのような常駐プロセスが
存在しなくて、各アプリがSQLiteのライブラリ
プログラムを呼び出して、ライブラリの関数が
排他制御を行なって単一ファイルを壊さないように
ロックしながら互いに強調しつつ、部分書き換えや
部分読み込みを行っている。
つまり、SQLiteは管理を担う単一の常駐プログラム
がなくて、個々のアプリ(の中のライブラリ)が
協調動作するようになっている。
だから、プロセス間で同期を取る仕組みが必要となる。
しかし、CreateMutexでは、ユニークな名前が必要
となってしまい、その名前を決めるのがメンドクサイ。
一方、LockFile だとファイルのパス名で自動的に
ユニークの名前に出来てしまうから、非常に簡単に
安全に正しくロックできる。

363 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 16:18:11.92 ID:B1OFnXUk.net]
3文字で言うと

364 名前:デフォルトの名無しさん [2023/09/21(木) 16:54:51.87 ID:2fMT8T96.net]
SQLite便利だよ

365 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 17:25:46.98 ID:WBcwDy8I.net]
sqliteは便利だけどテーブルロックなところがうんこなんだよな
begin conccurentとか予定あるらしいが

366 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 20:32:07.68 ID:2tR0WsIS.net]
複数のプロセスからアクセスしないのを前提条件に出来る場合もそれなりにあるもんな。
ちょっとしたツールでデータベースのプロセスをいちいち起動するのはわずらわしいし、 sqlite くらいの気軽さはありがたいのは確か。
sqlite みたいな方針のデータベースが他に台頭してないのが不思議なくらいだ。

367 名前:デフォルトの名無しさん [2023/09/21(木) 20:41:30.87 ID:PYjX2iWU.net]
>>359
テーブルロックじゃなくデータベースロック
multiple reader xor single writerはデータベース単位

368 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 20:59:40.19 ID:WBcwDy8I.net]
もっとひどいデータベース単位か
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい

369 名前:デフォルトの名無しさん mailto:sage [2023/09/21(木) 20:59:47.82 ID:WBcwDy8I.net]
もっとひどいデータベース単位か
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい

370 名前:デフォルトの名無しさん [2023/09/21(木) 23:58:45.91 ID:+/xN81gC.net]
以下のような関数(実際のものとは少し違いますが)を実装してみたのですがイテレータのメソッドチェーンの箇所で型が合っていないとコンパイルエラーが発生します
アルゴリズム自体を変更することで目的としていた処理はできましたが結局このエラーの直し方がわかりません
ライフタイム周りが原因だとは考えていますがどのように修正すればよいしょうか

fn hoge(
func: &impl Fn((&i64, i64)) -> i64,
arr: &[i64],
ret: &mut Vec<impl Iterator<Item = i64>>
) {
ret.push(arr.iter().zip(std::iter::repeat(arr[0])).map(func));
for i in 1..arr.len() {
hoge(func, &arr[i..], ret);
}
}



371 名前:デフォルトの名無しさん [2023/09/22(金) 09:19:17.11 ID:dkRHHNCe.net]
fn hoge(
func: &impl Fn((&i64, i64)) -> i64,
arr: &[i64],
ret: &mut Vec<impl Iterator<Item = i64>>
) {
ret.push(arr.iter().zip(std::iter::repeat(arr[0])).map(func).collect()[0]);
for i in 1..arr.len() {
hoge(func, &arr[i..], ret);
}
}

372 名前:デフォルトの名無しさん mailto:sage [2023/09/22(金) 12:36:56.71 ID:E1X0qleO.net]
lifetimeの問題もあるかもしれないがimpl Iteratorの型をとるところに関数内で生成したイテレータを渡しているのがそもそもおかしい

373 名前:デフォルトの名無しさん mailto:sage [2023/09/22(金) 13:53:26.70 ID:dkRHHNCe.net]
>>360
mdb

374 名前:デフォルトの名無しさん [2023/09/22(金) 16:15:11.47 ID:v8mgsVW8.net]
>>366
mapにはhogeの外から引数として関数を渡しているので再帰呼出しごとにイテレータの型は変わらないですし
```
let mut v = Vec::new();
hoge(|(&a, b)| a + b, &[1, 3, 5], &mut v);
```
という形でhogeを呼び出せばイテレータの型は自動的に推論されると思うんですが...

375 名前:デフォルトの名無しさん [2023/09/22(金) 18:07:36.44 ID:KH67E8jw.net]
impl TraitはTraitを実装した型のいずれか一つを受け入れるだけで、Traitを実装した型全てを受け入れるわけではない

376 名前:デフォルトの名無しさん [2023/09/22(金) 18:31:55.39 ID:v8mgsVW8.net]
>>369
mapの中に直接クロージャを渡せば確かにその制限に引っかかりますが、今回は再帰の中で一つの関数を使いまわしているのでimpl Iteratorの型は一つに固定されませんか?

377 名前:デフォルトの名無しさん [2023/09/22(金) 18:41:57.56 ID:v8mgsVW8.net]
>>365
イテレータのまま保持して遅延評価させたいんです

378 名前:デフォルトの名無しさん mailto:sage [2023/09/22(金) 18:43:25.81 ID:8SLDLfd5.net]
関数定義から一意な具体型に推論されるのは戻り値型に書いた impl の話ですね
引数型に書いた impl は単にジェネリック引数を匿名化したものという扱いなので
hoge は I: Iterator<Item=i64> なる任意の I で単一化できるような定義が求められます

https://doc.rust-lang.org/reference/types/impl-trait.html

なので引数で&mut引き回してdynも使いたくないということであれば↓になりますかね

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=32403112ac74f1a10cadf1236590744c

379 名前:デフォルトの名無しさん [2023/09/22(金) 19:29:43.87 ID:v8mgsVW8.net]
>>372
コンパイル通りました!ありがとうございます!
ただもう少しわがままを言うと、実際の実装で

380 名前:はメソッドチェーンの箇所がこれの2倍ぐらいの長さなので具体的なイテレータの型を書かずにコンパイラ任せにしたかったんですが、話を見る限りどうも無理そうですね... []
[ここ壊れてます]



381 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 08:15:26.34 ID:piK9W+al.net]
>>373
>>372も書いてるけどimpl IteratorをBox<dyn Iterator>にする手もあるよ

382 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 09:19:17.35 ID:lKOAbDFW.net]
可能なら dyn は避けるに越したことは無い。
dyn はトレイトオブジェクトを扱うための仕組みであって
推論を補助する仕組みではないから。

383 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 09:55:40.35 ID:piK9W+al.net]
>>375
実装の隠蔽目的でdyn使うのはそんなに変な使い方ではないと思うが

384 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 09:59:36.45 ID:i9fpyxKg.net]
Box<dyn Trait>で解決しました本当にありがとうございました

385 名前:デフォルトの名無しさん [2023/09/23(土) 16:36:06.31 ID:WPP4nTE5.net]
>>364です
補足すると今回自分がわかっていなかったのは以下のような関数がコンパイルを通らないということですね
```
fn hoge<T>(a: i64, b: &mut T) {
*b = a;
}
```
impl Traitが単にジェネリクスの糖衣構文であるということと、
トレイト境界を満たす型をジェネリクス引数に渡した場合は合法に"ならなければならない"、トレイト境界は十分条件も満たさなくてはならないという点

386 名前:を解っていなかったのがポイントでした... []
[ここ壊れてます]

387 名前:デフォルトの名無しさん mailto:sage [2023/09/23(土) 21:17:07.32 ID:piK9W+al.net]
戻り値のimpl Traitと引数のimpl Traitで振る舞い違うのは当たり前ではあるんだけど混乱しやすいポイントではあるかもね

388 名前:デフォルトの名無しさん mailto:sage [2023/09/24(日) 12:22:42.57 ID:2YTVyUlC.net]
0788デフォルトの名無しさん
2022/06/21(火) 08:59:28.38ID:vO+TReRM
俺はフロントエンドやらないからこのスレでTauriの話をしないでくれ

389 名前:デフォルトの名無しさん [2023/09/24(日) 12:36:49.28 ID:2YTVyUlC.net]
こいつはどうかな
https://zenn.dev/ksilverwall/articles/2869b4c73e6327

390 名前:デフォルトの名無しさん mailto:sage [2023/09/25(月) 23:08:53.71 ID:OcxuhTB3.net]
rustでdx12ってまともに使えますか?
そろそろc++は卒業したい



391 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 10:01:41.63 ID:q653RLNX.net]
>>382
使えないということだな。

392 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 17:46:11.75 ID:WrG1pnap.net]
一応d3d12があるけど、これを直接使うよりwgpu経由のほうがいいんじゃないか?

393 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 18:52:01.41 ID:liEPyEVD.net]
rustとgoとc#でjsonのシリアライズ、デシリアライズ実験したんだけど
rust 1ms cargo run --release
go 10ms
c# 40ms dotnet build -c Release
こんなに違うもんなの?
リリースモードでビルドしたつもりだけど
WebAPIのバックエンドどれにするか悩んでたけどもうrust1択でいいやん

394 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 21:18:52.63 ID:rDjR9GdF.net]
最適化で計測対象の処理が丸ごと消えてないかな
どこかでデータのサイズとか集計とか出力してればいいけど

395 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 21:22:16.85 ID:sfzsNV4F.net]
さすがそこまで速くないよね
C#ももっと速いような気がする

396 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 21:40:15.73 ID:aJs6t/KK.net]
コードの問題かベンチマークの問題だね

397 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 21:41:15.28 ID:K0prie5d.net]
>>385
goこのライブラリ使うとどうなる?
https://github.com/goccy/go-json

398 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 21:41:38.03 ID:aJs6t/KK.net]
>>378
>fn hoge<T>(a: i64, b: &mut T)
fn hoge<T>(a: T, b: &mut T)にすればいいと思うけど
同じような解決策が>>364にあるということなの?

399 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 21:56:19.26 ID:liEPyEVD.net]
>>385
それやってる
まず、デシリアライズ1000回して
シリアライズ1000回でシリアライズでバイト配列になるからそのサイズのトータル
を求めてる
さっきのは1回あたりの平均

>>389
それやったら7.5ms
experimentalなJSON v2は13ms

400 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 21:59:59.97 ID:liEPyEVD.net]
つか、goってリリースビルドないやろ?
コンパイルも一瞬でへ?ってなるわ

それぞれ30行未満のコードだけど..



401 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 22:29:35.41 ID:liEPyEVD.net]
https://controlc.com/77570dbc
goだとこんな感じ

402 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 22:43:29.67 ID:liEPyEVD.net]
ああ、ごめんC#は嘘でしたすみません
3msになりました

403 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 22:55:30.68 ID:liEPyEVD.net]
Rustは最強で
C#はメモリ使用量多いがMSが最適化ガンバッテル
Goはメモリ使用量少なくて言語仕様がシンプルだがC#に負けたり...

404 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 23:05:14.16 ID:EQtG/kil.net]
意味のないベンチマークだね
ちなみにこういうのはNimが速いと思うよ

結局こういうのってコンパイラの最適化の勝負をしているだけだから

Rustが速いというよりはLLVMが速いだけ
Zigとかでも同じスピードが出るはず

その代わりにコンパイル速度が遅いというデメリットがあるからこれは単なるトレードオフで、用途に応じて適した言語を選択するのが重要ってだけだね

WebAPI作るならIOが結局ボトルネックになるからパフォーマンス気にするにしても別にスクリプト言語じゃないならなんでもいいのよね
好きな言語にすればいいと思う

405 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 23:08:16.82 ID:kLEETtIu.net]
それはともかく
NimはRustに対して意味のあるアドバンテージ皆無でNimだけは要らん

406 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 23:14:09.15 ID:liEPyEVD.net]
まぁ、データベースはおもいっきし叩くね
最初は最強言語じゃなくてわかりやすい2番あたりの言語でいこうと思ってるんだけたんだけど
で、1番ははっきりRustっぽいからわかりやすいからいんだけど、
2番(C#,Go?)がはっきりしないから1番の言語でいいのかなと

最大の目的はサーバー費用を押さえられるように

407 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 23:14:24.83 ID:gNMcg380.net]
Nimはオフサイドルールってだけで試す気にもならないんだよな…

408 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 23:52:14.82 ID:lFc5NXyg.net]
>>396
多数の非同期タスクを偏らずスレッド間でスチールしてスケジューリングできるのは現状GoとRustしかない
小規模ならGoでもよいがそれ以上だと言語機能が貧弱なGoは辛くなってきてRustの独壇場

409 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 00:09:38.71 ID:8IPpP98U.net]
>>400
妄想乙
https://ufcpp.net/study/csharp/misc_task.html#thread_pool4

410 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 00:11:19.90 ID:8IPpP98U.net]
この妄想も延々言ってたけどやっと黙るのかな?

470: デフォルトの名無しさん sage 2023/09/26(火) 09:57:28.51 ID:ycG3j/g+
>>469
IaaSの一部にそういうケースがありうるだけだぞ
PaaS (FaaS)は基本的にメモリ使用量✕実行時間で料金が決まる
メモリ使用量は少なければ少ないほどコストに優れている



411 名前:デフォルトの名無しさん [2023/09/27(水) 00:29:08.13 ID:MfhnDtnO.net]
複オジは相変わらず嘘ばっかり
成長しないね

412 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 00:38:28.22 ID:+nRBKi9H.net]
AIにRust生成させてGoと比較してみたけどmarshal以外は変わらないな (goccy/json使用)
x86でやってる?ARMだと違うのかも
(俺はUbuntu x86/64)

https://pastebin.com/yV96KjSw


$ go run ./main.go
1187 [μs]
268419000 [bytes] 467 [μs]

$ cargo run --release
1347 [μs]
263672000 [bytes] 255 [μs]

413 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 00:56:55.88 ID:+nRBKi9H.net]
俺の環境だとgoccy/jsonにすることで4倍速くなったけど何が違うんだろうね

goccy/json
1129 [μs]
268419000 [bytes] 446 [μs]

標準json
4125 [μs]
268419000 [bytes] 533 [μs]

go-json-experiment/json
3446 [μs]
263609000 [bytes] 745 [μs]

414 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 01:02:33.77 ID:+nRBKi9H.net]
これにしたらRustより早くなったわ
結局これっていかに最適化しているかってだけだと思う
https://github.com/bytedance/sonic

[Go sonic json]
914 [μs]
263609000 [bytes] 209 [μs]

415 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 01:06:34.20 ID:8IPpP98U.net]
気づくのが遅い

416 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 01:44:16.58 ID:jtGLjNq+.net]
>>405
お手数かけて本当にごめんなさい
自分の実行方法が問題でした
>>385でgoの部分が空欄のように実行方法がわかってなく、
デバッグモードで動いていました
すみません
go runで動かしたら>>405のような速度になりました

417 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 01:51:26.25 ID:jtGLjNq+.net]
WebAPIでgoで行く決意ができました
本当にお騒がせしました

418 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 04:55:49.67 ID:UdUnwuun.net]
YouTube で有名な雑食系エンジニア・KENTA が、既に言ってる。
キャリアパスは、Ruby on Rails → Go のみ

Ruby/Goの神・HashiCorp のMitchell Hashimoto がそう。
Ruby製のVagran

419 名前:t → Go製のTerraform。
今は、Goプログラマーしか求めていない

Rust/Elixir は普及のキャズムを超えなかった。
超えたのは、Goだけ
[]
[ここ壊れてます]

420 名前:デフォルトの名無しさん [2023/09/27(水) 17:50:20.18 ID:wGZOY1wb.net]
まあビルド時間の重要性はちょこちょこ一人で作ってるやつは理解できんわな。



421 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 18:56:48.41 ID:CCaLLXi3.net]
仕事なら相応に強力なマシンかレンダリングサーバがあるだろ

422 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 21:44:37.94 ID:fWGZRw8C.net]
レンダリングサーバーは関係なさすぎ

423 名前:デフォルトの名無しさん mailto:sage [2023/09/27(水) 22:03:34.78 ID:vmit0gpI.net]
ビルドサーバーと間違えたのかもね

424 名前:デフォルトの名無しさん mailto:sage [2023/09/28(木) 18:29:13.32 ID:gS/5M63X.net]
MARCHを受けるために東大の過去問を練習するような意識高い系バカ

425 名前:デフォルトの名無しさん [2023/10/06(金) 11:57:36.28 ID:Zl0hPCVy.net]
一体誰がRustを推しているのか?
中國?

426 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 13:12:35.08 ID:2p+njRVB.net]
関数型と手続き型のいいとこ取りしたいプログラマだろ
情報科学の先進国なら中国に限らず一定数いるはず

427 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 16:38:53.65 ID:AJI+rgso.net]
ネットインフラが次々とRust製になっていってる

>【CDN世界トップシェアCloudflare】
>https://www.publickey1.jp/blog/22/cloudflarenginxrusthttppingoracdncpu31.html
>CDNプロバイダのCloudflareは、同社のグローバルなCDNの基盤として長らく利用してきたNGINXに代えて、
>同社自身がRust製のHTTPプロキシである「Pingora」を開発し利用していることを明らかにしました。


>【クラウド世界トップシェアAWS】
>https://japan.zdnet.com/article/35183866/
>Rustで構築されたAWSサービスの例としては、
>コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
>「Amazon Simple Storage Service(S3)」、
>「Amazon Elastic Compute Cloud(EC2)」、
>コンテンツ配信ネットワーク「Amazon CloudFront」、
>LinuxベースのコンテナーOS「Bottlerocket」などがある。

428 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 20:34:57.35 ID:hdhWn3/E.net]
関数型の良いとことるの諦めた言語って感じだけどw
初期の頃はocamlでコンパイラ作られてたらしいのに
MLの匂いさえ残ってない単なる手続き化型言語だわ

429 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 20:35:16.84 ID:hdhWn3/E.net]
関数型の良いとことるの諦めた言語って感じだけどw
初期の頃はocamlでコンパイラ作られてたらしいのに
MLの匂いさえ残ってない単なる手続き化型言語だわ

430 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 21:14:33.58 ID:b1wSOXuc.net]
スタックフレームに着目したのはプラスだけど、下手にスタックフレームを隠そうとしているのはマイナス。

計算モデルをスタックフレームにするぐらい割り切れば良かったのに。



431 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 21:15:11.56 ID:b1wSOXuc.net]
スタックフレームに着目したのはプラスだけど、下手にスタックフレームを隠そうとしているのはマイナス。

計算モデルをスタックフレームにするぐらい割り切れば良かったのに。

432 名前:デフォルトの名無しさん [2023/10/06(金) 23:16:24.42 ID:tE7CLicd.net]
mut 入れたのが間違いなんだろ

433 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 23:30:10.29 ID:hdhWn3/E.net]
関数型に関してはscalaのほうがよっぽど意欲的だよ
def qsort(list: List[Int]): List[Int] = list match
case Nil => Nil
case pivot :: tail =>
val (smaller, rest) = tail.partition(_ < pivot)
qsort(smaller) ::: pivot :: qsort(rest)

たとえば↑こういうのとか

434 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 00:34:46.36 ID:Hyqci1qG.net]
関数型というよりはリスト型言語だな

435 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 01:56:24.14 ID:a3LzK6ia.net]
システムプログラ

436 名前:~ングのための言語なので純粋に関数型な要素だけを求めるなら別の言語を当たった方が良い []
[ここ壊れてます]

437 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 02:12:44.80 ID:QajUcOD9.net]
リスト型つまりLinkedListをメインにすると利便さと引き換えに遅い問題とガベージが出まくる問題がある
Rustはリスト型メインにしなくて正解

438 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 04:42:48.81 ID:+bTugVnw.net]
GCを前提にしない仕様の上に積み上げなくてはならないという側面から見ると、わりかしよくやっている方なんじゃなかろうか……知らんけど

439 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 06:29:51.58 ID:GJ9LXcgc.net]
自称情強底辺者「Rustでhello worldかける俺カコイイ」

真の成功者「スイカゲームでボロ儲けしました」

440 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 06:46:44.80 ID:bWLG2vp7.net]
mut無しとはこういうことか
https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=a5753729862ae878a1cf011314e90f3e

fn qsort<T: Copy+Ord>(list: &[T]) -> Vec<T> {
match list {
[pivot, ..] => {
let (smaller, rest): (Vec<T>, Vec<T>) =
list[1..].iter().partition(|&i| i < pivot);
[qsort(&smaller), vec![*pivot], qsort(&rest)].concat()
},
_ => vec![]
}
}

fn main() {
let list = [9, 0, 7, 3, 6, 1, 2, 4, 8, 5];
println!("{:?}", list);
println!("{:?}", qsort(&list));
}



441 名前:デフォルトの名無しさん [2023/10/07(土) 09:44:47.17 ID:WqNjBTZw.net]
まあ今時ランタイム速度でそこまで差がつくことはないわな。
ガベコレの実行タイミングが問題になることは結構あると思うけど。

442 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 11:17:12.27 ID:fuWtUzBR.net]
アロケートしまくリングやな

443 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 12:06:59.60 ID:pov02R//.net]
ランタイムサポートが極まってきたからこそ
極めきれない部分の差が目立ってきたんだよ。

444 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 14:19:35.27 ID:koj+veBs.net]
XYZ座標みたいな単純だけどプリミティブでない大量のデータの配列を作りたいときに
1つ1つをオブジェクトにしないといけないGC言語は放り投げたくなる
座標なら最悪プリミティブに分解して自分で並べれば済むけど型が混ざると詰む

445 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 15:18:57.75 ID:AO4ZOvxF.net]
>>424
>>430
なるほど

美しいコードはスッキリうんこみたいに気持ち良い
まるで脳が洗われるようだ
普段いかに毒に浸かってるかが判るな

446 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 15:43:47.56 ID:Ozx346pn.net]
Rustのはmutなしにした場合の問題提起のための悪い例だろ

447 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 15:51:39.94 ID:O3XDw4H3.net]
>>434
Rustでも1つ1つオブジェクトにする
何の問題もないどころかむしろ好ましいやり方

448 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 16:42:12.14 ID:2ow1Jojj.net]
ocamlだとこんな感じかな?
let rec qsort = function
| [] -> []
| pivot :: tail ->
let smaller, rest = List.partition ((>) pivot) tail in
qsort smaller @ pivot :: qsort rest

>>424 scala比較のためそのままコピペ
def qsort(list: List[Int]): List[Int] = list match
case Nil => Nil
case pivot :: tail =>
val (smaller, rest) = tail.partition(_ < pivot)
qsort(smaller) ::: pivot :: qsort(rest)

scalaすごい頑張ってると思うわ

449 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 23:59:36.96 ID:QajUcOD9.net]
>>430
RustはそのようにOCamlやScalaと同等に書くことも容易な点がいいな
同時にその方法によりRustで記述すると大量にVec(またはリストを実現する何か)を使い捨てていることが見える
つまりGC言語ではガベージが大量に出る

450 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 02:42:17.66 ID:9NUoKPD/.net]
くすくす



451 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 08:07:41.64 ID:WAd1DVRF.net]
同等に書けてないでしょw

452 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 09:57:45.64 ID:ShBUnVvx.net]
同等というより>>438>>430は全く同じだな
空でなければpartitionでsmallerとrestに分けて
それぞれを再帰でqsortしてconcatenate

453 名前:デフォルトの名無しさん [2023/10/08(日) 10:16:57.79 ID:CrdCteTP.net]
次はHaskellまたはErlangでおながいしまつ

454 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 10:38:24.03 ID:lCt9aeoq.net]
in-placeなqsort書いてよ

455 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 10:39:23.48 ID:WAd1DVRF.net]
>>443
Haskell
qsort [] = []
qsort (x:xs) = qsort [y | y <- xs, y < x] ++ [x] ++ qsort [y | y <- xs, y >= x]

Erlang
qsort([]) -> [];
qsort([X|Xs]) ->
qsort([ Y || Y <- Xs, Y < X]) ++ [X] ++ qsort([ Y || Y <- Xs, Y >= X]).

456 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 12:06:58.68 ID:3KZ70qk+.net]
複オジは常にヒープアロケートするGC言語しか知らないのかな?
特定の言語の機能不足をGC言語の制約のように語るのはやめような

457 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 14:27:21.60 ID:1klr8jB1.net]
rustより高度なライフタイム管理する言語ってないの?

458 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 14:53:30.59 ID:33/5YUgE.net]
高度なライフタイム管理のベクトルがわからん
全データに参照カウンタをもたせて参照→存在を保証してるGC言語ならたくさんあるし
処理過程を生成する(書かせない)ことでライフタイムを意識させない関数型言語もある

459 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 14:57:14.95 ID:lcllyLaE.net]
>>442
ScalaのListもOCamlの[]も単方向リストであってべクタではないのに唯一気付いていないおじさん

460 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 15:04:22.44 ID:KeQMELAC.net]
それはそれとしてScalaのcase classはRustにも欲しいと思うことあり



461 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 15:32:16.97 ID:1klr8jB1.net]
>>448
rustを置き換え可能な言語で
つまりゼロコスト抽象
大学の研究レベルのものとかでないのかな

462 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 16:37:56.79 ID:lCt9aeoq.net]
ランタイムコストなしのライフタイムチェックはシステムプログラミング言語だから必要な話で、そうでない言語ならGCで良い

shared xor mutableの静的な保証はGC言語でも嬉しい性質だと思うが、他の言語で採用例はあるのかね?

463 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 18:19:11.05 ID:WAd1DVRF.net]
enumのリストで書いてみたわ
rust不慣れだから所々おかしいかも
https://ideone.com/0Ro48L
enum List<T> {
Cons(T, Box<List<T>>),
Nil,
}
impl<T: Copy + PartialOrd> List<T> {
// 略
fn qsort(&self) -> Self {
match self {
List::Nil => List::Nil,
List::Cons(pivot, tail) => {
let (smaller, rest) = tail.partition(|x| *x < *pivot);
smaller.qsort().concat(&rest.qsort().prepend(*pivot))
}
}
}
}
fn main() {
let list = List::<i32>::nil().prepend(4).prepend(8).prepend(8).prepend(3).rev();
list.each(|n| print!("{}", n));println!("");
list.qsort().each(|n| print!("{}", n));println!("");
}

464 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 19:36:48.46 ID:e3limdE9.net]
>>449
目的はソートなので、
単方向リストを用いるかベクタを用いるかは実装方法の問題だから些細な話かな。
実用上もベクタで十分だから単方向リストの出番は滅多にないよね。

465 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 20:05:18.10 ID:lCt9aeoq.net]
で、みなさんは単方向リストを使う綺麗だけどクソ遅いコードを並べて何がしたいんですか?

466 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 20:14:55.63 ID:BgGDjECm.net]
そんなの用途次第だろ
ど素人かよ

467 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 20:19:50.77 ID:QzGY7mJQ.net]
>>454
>>439がガベージがどうこう言ってるのについてはどう思う?

468 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 20:59:00.53 ID:e3limdE9.net]
>>457
リストはガベージと裏表一体ですが何を問題にしていますか?
リスト化する時にconsセルの割り当てが発生します。
そしてリストから取り出す時に空のconsセルがガベージとして発生します。

469 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 22:12:35.86 ID:nH9KI4I/.net]
赤っ恥オジの言い訳草

470 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 22:57:55.16 ID:1kYUOs3M.net]
入れもの(メモリ)はどのデータ構造でも不可欠だからいずれもゴミが発生するのは仕方ない
ただしリスト(各セル|ノード)に比べてベクタは以下の点で有利
・まとめて確保解放ができる
・next pointer(の容量と処理)が不要
・リニアスキャンが速い
・ランダムインデックスアクセスも速い
そのためRustでもほとんどの用途でベクタが使われリストは少ない



471 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 23:00:08.12 ID:Li9tDqQF.net]
今どきはCPUキャッシュが効くかどうかが問題だから

472 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 23:38:45.90 ID:F0i6/5MC.net]
三連休使ってrustの勉強してるけど、ようやく慣れてきた
某openGLの本をMacでやっててDSL2のインストールに四苦八苦、、、
なんかこいつだけCargo.tomlの書き方が、、、
急ぎ足せずrustのとこにある蟹表示するやつ写経してクレートの追加覚えた
先は長いね、、、
頑張る

473 名前:453 mailto:sage [2023/10/09(月) 01:16:03.20 ID:VBg3Yonc.net]
>>444
>>455
https://ideone.com/Q0LqWM
これでクイックソートになってるはず?
なってなくても笑って許してほしい

474 名前:デフォルトの名無しさん mailto:sage [2023/10/09(月) 01:21:45.86 ID:L6ciWwId.net]
>>456
ソート済み配列のソートの計算量が最悪になるqsort実装の活用方法わかんないです
どういうときに有効なんですか?
標準ライブラリのソートアルゴリズム使った方が良いのでは

475 名前:デフォルトの名無しさん mailto:sage [2023/10/09(月) 01:24:15.18 ID:TA+AoWAa.net]
リストと配列比較してるやつ全員馬鹿です

476 名前:デフォルトの名無しさん [2023/10/09(月) 13:24:27.74 ID:gMk1hFfQ.net]
そんな香具師いたか?

477 名前:デフォルトの名無しさん mailto:sage [2023/10/09(月) 18:01:30.12 ID:416rm9Ab.net]
appendできないListってダサい

478 名前:デフォルトの名無しさん mailto:sage [2023/10/09(月) 18:16:49.87 ID:TA+AoWAa.net]
おるやん!

479 名前:デフォルトの名無しさん mailto:sage [2023/10/11(水) 15:06:20.59 ID:UxaO0GW9.net]
Rust検索したらゲームの方が出てきてお前じゃないってなって情報収集が捗らない

480 名前:デフォルトの名無しさん mailto:sage [2023/10/11(水) 15:25:39.99 ID:kTxLNWR8.net]
それで困ったこと今まで一度もないんだがどういう検索でそうなるの?
普段からゲーム関係の検索したりサイト閲覧してたりする?



481 名前:デフォルトの名無しさん mailto:sage [2023/10/11(水) 16:05:36.62 ID:jfZ9hs4j.net]
ゲームの方もやってますね
Rust初心者が簡単なゲーム作ろうとしてまして
(Pythonのpygameでブロック崩し作れる程度)
検索方法がまずいのかもしれませんね
描画したり、画像をはったり、それを縦横動かしたいだけなのですが
icedか?eguiか?みたいなとこまで来てるけど、まだ使い方がよくわからんですね
どこの関数が初期設定の一発実行で、どこの関数が60fpsの毎回実行なのかとか
プロではなく趣味なので言葉選びが毎回曖昧です

482 名前:デフォルトの名無しさん mailto:sage [2023/10/11(水) 17:42:19.71 ID:Pu4uPjjn.net]
なるほどそういう感じなのか

検索ワードに”game”とかも含んでるなら
月並みだけどprogrammingを足してみたりゲームの方にだけ特徴的なワード(surviveやsurvivalとか)を除外してみたりするといいんじゃないかな

483 名前:デフォルトの名無しさん mailto:sage [2023/10/11(水) 20:52:08.31 ID:OZznE1k0.net]
>>471
https://arewegameyet.rs/resources/tutorials/
とりあえずこの辺のチュートリアルから選んでやってみては?

484 名前:デフォルトの名無しさん mailto:sage [2023/10/11(水) 23:18:11.74 ID:vJm7EO/F.net]
>>441
>>430がVec使用だから同等でないという話ならばRustにもリンクリストがあるよ
リンクリストに特化したパターンマッチング構文や結合構文はないけれど
例えばTをCopyせずそのまま使うならば

use std::collections::LinkedList;

fn qsort<T: PartialOrd>(mut list: LinkedList<T>) -> LinkedList<T> {
 if let Some(pivot) = list.pop_front() {
  let (smaller, rest): (LinkedList<T>, LinkedList<T>) =
   list.into_iter().partition(|x| x < &pivot);
  // concat
  list = qsort(smaller);
  list.extend([pivot]);
  list.extend(qsort(rest));
 }
 list
}

fn main() {
 let list = LinkedList::from([9, 0, 7, 3, 6, 1, 2, 4, 8, 5]);
 println!("{:?}", list);
 println!("{:?}", qsort(list));
}

485 名前:デフォルトの名無しさん mailto:sage [2023/10/11(水) 23:57:55.35 ID:2xINBvCy.net]
はあ
馬鹿なんですね

486 名前:デフォルトの名無しさん [2023/10/12(木) 11:14:39.52 ID:u59ybXeV.net]
たしかに Rust ゲーム 造り方 で検索するとゲームの方ばっかり出る罠

487 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 11:17:21.26 ID:u59ybXeV.net]
>>474
mut 使ったら負け

488 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 12:51:53.05 ID:5Y8Kw2UP.net]
>>477
そんな表層的なことを問題にするのは愚か

例えばmutを表層的に使っていない>>430はそこで呼び出しているpartitionとconcatそれぞれのなかでmutを使っている
当たり前だがデータを組み立てたり書き換える処理は全てmutにたどりつく

>>474でも表層的にmutを無くしたいだけならば同様にconcat関数を作りその中でmutを使えばいい

489 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 12:52:32.93 ID:5Y8Kw2UP.net]
>>477
そんな表層的なことを問題にするのは愚か

例えばmutを表層的に使っていない>>430はそこで呼び出しているpartitionとconcatそれぞれのなかでmutを使っている
当たり前だがデータを組み立てたり書き換える処理は全てmutにたどりつく

>>474でも表層的にmutを無くしたいだけならば同様にconcat関数を作りその中でmutを使えばいい

490 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 13:19:12.59 ID:SguY35qe.net]
mut使ったら負けとは俺は思わないが断じて表層的なことではない
本質的に重要な違いだからこそRustでは明確に区別してるわけなので
それにconcatもpartitionもmut使ってない



491 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 13:31:42.25 ID:IQy1JHL6.net]
単方向リストと両方向リストの区別もついていない馬鹿だからしょうがないね

492 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 14:04:37.89 ID:29Fh0rnH.net]
標準ライブラリのソース見たら
concatもpartitionもmut使ってるな
最終的にあらゆるmutになるのか

493 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 14:35:37.70 ID:+nxBPiMF.net]
すべてがmutになる 森鴎外

494 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 14:56:18.33 ID:oQimRC1z.net]
「ボクの考えた最強の汚コードを批判するな!」

495 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 14:58:53.27 ID:X9LcShxS.net]
>>482
ネタじゃなくマジで言ってるならRustは辞めとけ
絶望的に向いてない

496 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 15:06:20.95 ID:pri3rXDa.net]
複オジが劣化したのだろうか
それとも複オジ劣化版が新たに出現したのだろうか

497 名前:デフォルトの名無しさん mailto:sage [2023/10/12(木) 15:24:09.95 ID:VkfPx0C5.net]
mutを使わずにできることは読み出しとムーブとコピーだけ

498 名前:453 mailto:sage [2023/10/12(木) 19:51:44.10 ID:viHBcoi7.net]
今度はDartで書いてみた
3.0でパターンマッチがちょっと強化されたらしい?
3.0新登場のスイッチ式の=>の右側には式だけしか書けない?
dartにはそもそもpartitionはない?
というわけで>>445のHaskell方式で書いてみた(程遠いけど)

List qsort(List list) {
return switch (list) {
[] => [],
[var pivot, ...var rest] => qsort(rest.where((x) => x < pivot).toList()) + [pivot] + qsort(rest.where((x) => pivot <= x).toList())
};
}

499 名前:453 mailto:sage [2023/10/12(木) 23:01:31.11 ID:viHBcoi7.net]
こういう書き方もできた
こっちのほうが雰囲気出てるかな?

List qsort(List list) {
return switch (list) {
[] => [],
[var x, ...var xs] => qsort([for (var y in xs) if (y < x) y]) + [x] + qsort([for (var y in xs) if (x <= y) y])
};
}

500 名前:デフォルトの名無しさん mailto:sage [2023/10/13(金) 08:06:18.09 ID:q0Ayf65Z.net]
>>482
RustはCと同じ高速で動作する手続き型言語だから少なくとも最下層はmutが基本になる
たとえばイテレータからVecへcollectする場合
特殊ケースはunsafe最適化
一般ケースはlet mut vec = Vec::new();してextend

その一方でプログラミングする時はその最下層を意識しなくても知らなくてもいい
mutを必要としないiter.collect()と抽象的に書ける



501 名前:デフォルトの名無しさん mailto:sage [2023/10/13(金) 08:24:52.90 ID:NdZOKZ+T.net]
最強Rust始めたわい
mutの話が出てるから質問
シャドーイングっていう性質使えばmutなくても書けそうな気がしてる(まだ書けてない)んだけど
シャドーイングしたときと、mutではメモリの動き何か変わるのかな?と

シャドーイング
let z = x + y;
その後z使って処理
let z = x - y; // z宣言して前回のz上書き
その後z使って処理

502 名前:デフォルトの名無しさん [2023/10/13(金) 12:19:34.60 ID:tPfYbY0d.net]
>>491
それを1億行書いたとする。たぶんスタック溢れるんじゃね?

503 名前:デフォルトの名無しさん mailto:sage [2023/10/13(金) 12:43:08.68 ID:zQ1dnjfM.net]
1億行書く意味が分からんが
そんな問題ではないだろw

504 名前:デフォルトの名無しさん mailto:sage [2023/10/13(金) 18:31:34.80 ID:Q91zX7Uf.net]
ドロップしないの?

505 名前:デフォルトの名無しさん mailto:sage [2023/10/13(金) 19:31:02.96 ID:/Zwm785x.net]
ちょっと前にJSONシリアライズでの最適化の話出たけど
goは空気感が不安になるよな

rust->システムプログラミングよりの言語で、速度やらいろいろうるさそうなやつが
集まってて、そんなやつらの作るライブラリだからパフォーマンスとか心配しなくてよさそう

C#->.NET開発チームが毎年長文ブログでがんばってるアピール

go->言語機能とかほぼ完成しちゃってるんだろうが
アピールもない、この空気感

506 名前:デフォルトの名無しさん mailto:sage [2023/10/13(金) 19:35:26.71 ID:/Zwm785x.net]
https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/
今年の.netのパフォーマンス改善はこれ

goはシンプル言語で標準ライブラリも最小限だから
もうあまりやることないのか?

507 名前:デフォルトの名無しさん mailto:sage [2023/10/14(土) 14:19:51.05 ID:MfcWhKX5.net]
>>491
不使用領域は再利用されるから単純な順次処理ならシャドーイングで十分

mutが欲しくなる理由の1つは繰り返し処理だな(長さ不定のリストの集計とか)
関数型言語みたいに再帰使えばmutなしでも何とかなるけど慣れないとややこしい

あとは全部作り直すのが不合理なデータの部分的な書き換えでもmut使いたい

508 名前:デフォルトの名無しさん mailto:sage [2023/10/14(土) 19:31:37.47 ID:FeWBHDoO.net]
for文で値を変えるカウンタとかフラグとかもmutじゃないと書けないな。
まぁ for 文より iter で書けという一派も多いかもしれんけど。

509 名前:デフォルトの名無しさん mailto:sage [2023/10/14(土) 19:57:12.00 ID:jlnlui4T.net]
モジュールの内部では (性能上の理由で) mut を使っても、
外側に見せるインターフェイスは
(不自然ではない範囲で) mut を避けるのは自然な方針だと思う。

510 名前:デフォルトの名無しさん mailto:sage [2023/10/15(日) 09:39:38.68 ID:M8zy/AR3.net]
Cで書いたプログラムを Rustで書いたらこうなります
っていうのをひたすら集めた本がほしい



511 名前:デフォルトの名無しさん mailto:sage [2023/10/15(日) 10:09:58.67 ID:Xnkvwbkm.net]
全銀システムでJavaの

512 名前:信頼が失墜した今こそrustのチャンスだな []
[ここ壊れてます]

513 名前:デフォルトの名無しさん mailto:sage [2023/10/15(日) 11:00:17.07 ID:2BZrn9hr.net]
全銀はまだCOBOLだろ
ほんといつもいつも嘘ばっかりだな

514 名前:デフォルトの名無しさん [2023/10/16(月) 10:19:13.28 ID:kgcCjrnK.net]
>>500
似たような動機で描かれた本とかブログは観たことあるけど
Rustっぽくないコードばっかりでうんざりする面もある

515 名前:デフォルトの名無しさん [2023/10/16(月) 10:21:08.50 ID:kgcCjrnK.net]
全銀協のフォーマットって今も変わってないんだろうけど
半角カタカナだらけでRustで扱うのは大変かも知れないね

516 名前:デフォルトの名無しさん mailto:sage [2023/10/16(月) 10:35:49.58 ID:enUIFRpv.net]
扱う文字については適当なライブラリを整備すればそんなに問題にならなさそうに思うが

517 名前:デフォルトの名無しさん [2023/10/16(月) 11:26:02.88 ID:SeIR9j3q.net]
>>505
>扱う文字については適当なライブラリを整備すれば

外字ばかりとかでそれが大変なんじゃないの?知らんけど

518 名前:デフォルトの名無しさん [2023/10/16(月) 12:22:46.59 ID:SkmcjqYw.net]
半角しかないのに外字とは

519 名前:デフォルトの名無しさん [2023/10/16(月) 13:30:20.84 ID:kgcCjrnK.net]
今のうちに Rust でハンカクカタカナ自由自在な crate 造っておけば
将来ライセンス料でシッポリ儲かりますか?

520 名前:デフォルトの名無しさん [2023/10/17(火) 11:40:48.89 ID:xDsy3kB7.net]
Rustに慣れるとCのifで()付け忘れたわ



521 名前:デフォルトの名無しさん mailto:sage [2023/10/19(木) 14:52:32.31 ID:rcYEOPS6.net]
Vec の iter() と into_iter() の違いは?

522 名前:デフォルトの名無しさん mailto:sage [2023/10/19(木) 14:53:04.92 ID:rcYEOPS6.net]
Vec の iter() と into_iter() の違いは?

523 名前:デフォルトの名無しさん mailto:sage [2023/10/19(木) 15:12:31.11 ID:V7scna43.net]
>>510
引数に着目するといい。
into_iter はムーブするが iter は借用する。

524 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 01:20:11.96 ID:/f3Rr7gK.net]
>>500
その発想がすでに間違ってる
根本が違うから同じようには書けない

525 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 06:13:09.90 ID:3+q+Er7L.net]
Cで安全に書いたときと同じ生成コードにはなるけどRustでは抽象度の高い表現をするからなあ
例えばメモリのある範囲の領域を順に読み取る(書き込む)というC言語だとポインタをインクリメントしていくだけの場合でも
Rustだとまずメモリの領域をスライスという安全な抽象表現で扱い可変性もライフタイムも付随してスライスが指す元の安全に確保されている領域(配列やベクタなど)も必須というところからスタート
そのうえでスライスのイテレータにより必ずその範囲内のみを順に安全に指し示す参照(または可変参照)が次々と得られて順に読み取る(書き込む)ことが達成される
さらにRustではこれをfor文ではなく抽象度の高いイテレータメソッドチェーンで書くことも多いからCコードとの対応はますます難しくなるね

526 名前:デフォルトの名無しさん [2023/10/20(金) 06:56:18.50 ID:/M3RKJCH.net]
unsafe {
Rust で C ポインタやりたいなら
let p = *mut hoge;
p+=1;
std::slice::from_raw_part(p. 1)[0] = hage;
}

527 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 09:04:11.56 ID:6mF1sPPt.net]
>>513
同じように書けないからこそ対比したものが欲しいと言う話だろうに

528 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 09:27:32.12 ID:/M3RKJCH.net]
>>516
クソでたらめだが真面目に実装するとマジ面倒
>>515 方式だと
#[derive(Debug)]
struct Hoge {a: u8, b: u8, c: u8}
impl Hoge {
pub fn new(a: u8, b: u8, c: u8) -> Self {Hoge{a, b, c}}
}

fn main() {
let hoge: Vec<Hoge> = vec![Hoge::new(1, 2, 3), Hoge::new(4, 5, 6), Hoge::new(7, 8, 9)];
println!("{:?}", hoge);
let mut p = &hoge[0] as *const Hoge as usize;
p += 2 * std::mem::size_of::<Hoge>();
unsafe { std::slice::from_raw_parts_mut(p as *mut Hoge, 1)[0] = Hoge::new(8, 3, 1); }
println!("{:?}", hoge);
}
>>514 方式だと
let p = &hoge[0] as *const Hoge as *mut Hoge;
unsafe { std::slice::from_raw_parts_mut(p, 3)[2] = Hoge::new(8, 3, 1); }
でちょっとマシになるくらい

529 名前:デフォルトの名無しさん [2023/10/20(金) 09:40:03.83 ID:2W9ATkqE.net]
マクロでウヒヒ

530 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 11:03:08.72 ID:+Ixb2Hv2.net]
近代的な言語の仕組みってのは大規模なプログラムをどうやってまとめるかという方向で進歩してるから
小さなサンプルで比較しても設計理念は身につかんのだ。



531 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 13:13:02.21 ID:iA9G36tB.net]
設計理念を身につける話なんて誰もしとらんだろw

532 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 15:12:25.73 ID:+Ixb2Hv2.net]
してないから問題だと述べてるんだが。
俺が学生のときに英語の長文の全ての単語の横に(単語ごとに!)日本語の単語を書いてたやつがいたことを思い出したわ。
本に載る程度の規模(ひとつあたり数ページくらい?)のプログラムを対比するってのはそういうことだよ。
言語の設計理念に基づいた構造こそが重要で、構造を論じるほどの規模にならないならたいした違いは見えてこない。

533 名前:デフォルトの名無しさん [2023/10/20(金) 16:07:06.67 ID:/M3RKJCH.net]
CでもPythonでもRustでも全部の行にあほみたいなコメント描く香具師はうざいけど
Rustのcrateでdocsにcomment100%達成するためにはアホなコメント描かされてダサい設計思想だと思う

534 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 16:34:14.75 ID:HySp0Cr6.net]
>>521
日本語の設計理念wが身についてないみたいだなw

535 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 17:24:55.57 ID:/f3Rr7gK.net]
unsafe使うならCでいいんだよなw

536 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 19:40:13.76 ID:3+q+Er7L.net]
>>524
それは違う
unsafeを使ってsafeなインターフェースを提供する部分だけ人間が安全性を保証すれば
それ以外の部分はすべてRustが安全性を保証してくれる
その方針でRustの標準ライブラリやunsafeを用いる一部クレートが作られている

537 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 20:06:04.22 ID:9sHhryb+.net]
>>525
もちろん品質が保証されてるライブラリは使うよ
現時点でここまでライブラリが揃ってるから自前でunsafeを書く必要は感じない

538 名前:デフォルトの名無しさん [2023/10/21(土) 12:29:35.28 ID:sf7W/HH9.net]
関数型最強(キリω
ですねわかります

539 名前:デフォルトの名無しさん mailto:sage [2023/10/21(土) 21:43:10.75 ID:sGOhbjn7.net]
Linuxでも、結局のところ「C言語でいいじゃん」という結論になりそうよね
リーヌスもなんかやっぱRustはなぁ・・・ってトーンダウンしてきてるし

540 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 00:35:28.61 ID:GiKl9Asx.net]
>>528
カーネルなんて低レイヤーのポインタ操作とかビット演算しかしないからな



541 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 00:50:06.85 ID:n0l+NFKj.net]
Linux カーネルの中にだって Rust が適している場所も
あるといえば有るだろうけど現時点でそれなりに検証が済んで
安定して動いているものを「置き換え」するほどではないだろうな。

適しているからといって各部を別の言語で書いたりすると
接続箇所で面倒になったりもするし。

542 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 11:49:16.17 ID:IKvVj0uW.net]
カーネルで流行らないならもう流行るところないんじゃ…

543 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 19:50:36.55 ID:NN1UsPSx.net]
どの言語からどの言語への場合でも既に動いているものを別の言語に移植するだけだとコストがかかる
それでもスクリプト言語からRustへ置き換えるなら実行速度と省メモリの効果がコストを上回りやすいためよく行われている

一方でC/C++

544 名前:からRustへ換えても実行速度と省メモリの効果はない
だからシステム設計を変えるなど大きな更改タイミングでRust化することが多い
特にマイクロサービス化されているものは個別に更改できるためシステム全体の一部Rust化に向いている

最も向いておらずハードル高いのがモノリシックになっているOSカーネル
その場合でも分離されているデバイスドライバは最近のデバイス複雑化と更新対応の多さからもRust化が向いているため進んでいる
[]
[ここ壊れてます]

545 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 19:58:13.61 ID:fijCTFBo.net]
>>531
もうちょっと上位のレイヤーなら良いと思うけどね
Cでバッファオーバーランするようなプログラムって
結局Rustでもunsafe使わざる終えないような処理なので

546 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 21:57:00.47 ID:xV2fKCwr.net]
構造体をキャストするものでも、hoge_storage_t みたいに最大サイズを規定するパターンと
char foo[0]; を積極的に利用するパターンと 真っ二つにわかれるしねぇ
後者はRustでどうすんだろ

547 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 22:15:56.13 ID:fijCTFBo.net]
結局構造体もパケットのバイト列にパックするからね
その時unsafeを使うことになる

548 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 22:45:30.49 ID:EpprGwAf.net]
構造体はunsafeいらん
タグ無し共用体はunsafe

549 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 23:15:20.26 ID:HWj9itUZ.net]
流行るから価値ある、流行らないから価値なしって評価基準はジャパニーズカルチャーのガラパゴス

550 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 23:23:05.72 ID:/1lQw0Ls.net]
>>534
後者も普通に表現できるしCとのFFIも可能



551 名前:デフォルトの名無しさん mailto:sage [2023/10/22(日) 23:28:57.61 ID:zUgjdRO9.net]
Redox(https://www.redox-os.org/)みたいなRust製のUnix系OSプロジェクトならもうあるし
無理してLinuxに食い込む必要はないと思うんだけどLinux開発者でもRust使いたい人はいるんでしょ
Linuxは一部のモジュールがRust製になる程度で中核は最後までCで通すと思う
というかRustで置き換えるなら名前変えてほしい

552 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 00:13:38.68 ID:tCssLiBK.net]
>>539
まあカーネルで使ってる基本的なデータ構造(赤黒木、ハッシュテーブル、双方向リスト)
kref(リファレンスカウント)などは外せないからね
無理に組み合わせるとかえってキツい気がする

553 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 05:58:05.37 ID:3382hDjx.net]
>>533
実際にはCでもバッファオーバーランしないからRustでは、unsafe必要ないでしょ

554 名前:デフォルトの名無しさん mailto:sage [2023/10/23(月) 06:59:33.53 ID:8gpCEC0e.net]
>>533
>使わざる終えない

昔こんな誤字よく観たな

555 名前:453 mailto:sage [2023/10/24(火) 00:55:17.36 ID:Ei0IGfb9.net]
>>500
今度は逆にrustで書いたもの>>453をcで書いてみた
https://ideone.com/j5KR8Y
・参照透過性は考慮していない
・型のパラメータ化?には挑戦してない
・パターンマッチ再現?にも挑戦してない
・クロージャが欲しいところには呼び出し元の文脈を手渡して誤魔化す
・グローバル変数一個使ってノードの再利用を試みてる
・とにかくlist_qsort内部がそれっぽい感じの手順になってたらヨシ
struct node {
int value;
struct node *next;
};
struct node *list_qsort(const struct node *list) {
int pivot;
struct node *sorted = 0, *tail, *smaller, *rest, *a, *b;
if (list) {
pivot = list->value, tail = list->next;
list_partition(&pivot, less_than_context, tail, &smaller, &rest);
sorted = list_append(a = list_qsort(smaller), b = list_cons(pivot, list_qsort(rest)));
list_available_push_all4(smaller, rest, a, b);
}
return sorted;
}

556 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 13:32:38.68 ID:oyxcPsiu.net]
スレチ

557 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 16:02:23.69 ID:ju9L4gE1.net]
cargo 経由で rustc にコンパイルオプションを渡したいとき
RUSTFLAG=hogehoge
で成功はしたのですがパッケージ全体が再コンパイルされて遅いです
特定のファイルだけにコンパイルオプションを適用したいのですが
cargo にはそういうオプションはありませんか?

558 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 18:21:38.30 ID:u/7eM1yW.net]
>>545
ありません

559 名前:デフォルトの名無しさん mailto:sage [2023/10/24(火) 20:07:58.68 ID:dncTx+4h.net]
大文字小文字が混在する言語って気持ち悪い

560 名前:453 mailto:sage [2023/10/24(火) 22:19:05.86 ID:yQ/jFyOv.net]
>>543 c
https://ideone.com/yYGR7x
・ノード再利用やめた
・若干の整理



561 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 09:06:18.67 ID:9oOV85NF.net]
>>545
試してないけど
やるとしたら
cmdとかterminal(shell)を2つ以上別ウィンドウで開いておいて
それぞれ別のRUSTFLAG=を設定しておく(環境毎に独立なはず)
片方でbuildしたあと適用したいファイルだけ修正してもう片方でbuildするとうまくいかんかな

562 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 10:10:31.38 ID:p3+NCv68.net]
特定のファイルにだけ適用したいコンパイルオプションて何なの?

563 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 10:43:36.55 ID:dKf07X6i.net]
crateで分割したらいけるんじゃね

564 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 11:35:23.44 ID:CN7zqSRs.net]
そらそうやろと言いたいところだが
今はcrate単位の指定はできなくてパッケージ単位のみ

565 名前:デフォルトの名無しさん mailto:sage [2023/10/25(水) 13:57:15.42 ID:0w7kqvd/.net]
crate で別れてる前提で
その crate を使う2つの bin (まあまあそっくりな main) を造って
それぞれをそれぞれの RUSTFLAGS= で build したら
うまく使い別けられました
とりあえず速度は気にならないからしばらくこれで逝く
アイディア呉れた人thx

566 名前:デフォルトの名無しさん [2023/10/26(木) 14:45:03.06 ID:6bJ9rmmH.net]
しつもんです
cargo publish のときに
warning: package `hoge vN.N.N` in Cargo.lock is yanked in registry `crates-io`, consider updating to a version that is not yanked
って警告が出てて意味は判るんだが
cargo clean してやり直しても package 'hoge vN.N.N' が最新のものに切り替わらない
自分自身の Cargo.toml の dependencies には hoge は描かれていない
どの crate が原因で hoge を要求してるのか知るにはどうすれば良い?
その crate を最新のものにすれば hoge の yank されてないものを取って来てくれるとも限らない訳だが

567 名前:デフォルトの名無しさん [2023/10/26(木) 15:53:54.89 ID:wO29ziTZ.net]
cargo treeを使うといいよ

568 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 21:41:03.08 ID:pAbfpEYj.net]
Rust で書かれた WebAssembly/Canvas 上の
FlashPlayer のエミュレータ Ruffle の実装が
凄い勢いで進んでるけど
世界の凄腕プログラマも参戦してるみたい。

このスレで貢献してる人ひょっとしている?
エミュレータ実装て武者修行になるのかな。

569 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 23:18:45.93 ID:oN20rU1J.net]
エミュレーターを作り始めるスタートは完全な仕様の資料を手にいれることで、それがないことも良くあることだから調査がしんどいんだよ。
そんで実装は仕様通りにやるだけのひたすらに地道な作業だからあまり面白味はない。
動くだけじゃなくて性能を出そうと思ったら色々と工夫の余地はあるんだけど……

570 名前:デフォルトの名無しさん mailto:sage [2023/10/27(金) 10:08:58.42 ID:d8VwEqUV.net]
古いゲーム機のエミュレータを書いたことがあるが結構面白いぞ
昔のソフトはクロックタイミングに依存することも珍しくないから、性能だけでなく再現精度にも気を配らなくちゃいけない
腕試しとしてはちょうどいいと思うよ



571 名前:デフォルトの名無しさん [2023/10/27(金) 12:30:38.77 ID:xuiID3+p.net]
もっと良いサイトあったんだけど消滅してる?
sunlight.cocolog-nifty.com/sunlight/2005/08/post_1ff6.html
www.sm.rim.or.jp/~shishido/tick.html

572 名前:デフォルトの名無しさん mailto:sage [2023/10/27(金) 22:25:37.09 ID:2hH60kIl.net]
>>557 >>558

そうですね、面白さと言う点では

当時は無かった WebGPU等の現代的な技術を
積極的に取り入れて
本家 FlashPlayer の単なるエミュレータに留まらず

ブラウザWASM上の本格ゲーム・アニメプレーヤーに
なりそうな所が興味を引きます。

取り敢えずは日本人として
縦書きCJK 2バイト文字列の動的表示等の
検証報告で協力できたらと考えております。
(和風ゲームのイベント表示など)

573 名前:デフォルトの名無しさん mailto:sage [2023/10/27(金) 22:44:06.00 ID:nnq2nBUF.net]
web上で再発明するの好きなやつ多いよね
でも失敗率高めじゃないか?

574 名前:デフォルトの名無しさん mailto:sage [2023/10/28(土) 14:23:38.78 ID:AMpKEF3U.net]
自己鍛錬で再発明するのは好きにすればいいがそれでサーチエンジンの上位を占拠するのはマジ迷惑だ

575 名前:453 mailto:sage [2023/10/28(土) 18:50:08.51 ID:U0JINWpQ.net]
>>548 c
https://ideone.com/Rp476I
・ノードへのポインタとしてリストを表現していた(>>548)のを廃止
・共用体でリストを表現したことによりBoxの位置?がRust版(>>453)と同じに
・特に意味もなくループ文を再帰に置き換え

576 名前:デフォルトの名無しさん [2023/10/29(日) 12:47:29.07 ID:IsQ6p7Vf.net]
uBlacklist が猿人検出阻止してくれるそうだ
sejuku とか techacademy とか KENTA とか入れると良い

577 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 14:51:57.32 ID:fSSaeY5g.net]
=== 複製おじさん(通称複おじ)について ===
Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。

Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。
同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。
それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。
その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。

しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。
本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。
https://mevius.5ch.net/test/read.cgi/tech/1677286186/786-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている)
要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。
常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。

ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。

578 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 20:56:04.34 ID:uUmiO3VU.net]
Generatorはコードがごちゃっとしてたからgen fn/blockはありがたいな

579 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 22:49:04.51 ID:Q6dMbwrG.net]
2024 editionから?

580 名前:デフォルトの名無しさん [2023/11/04(土) 04:29:37.91 ID:xhYE5yZM.net]
Rustの学習を始めたが、所有権面倒くさい。まあでも安全性は高められそうな感じはする。



581 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 12:29:53.92 ID:eFHrirh7.net]
Better C的なRustが欲しい
C++と張り合って仕様が複雑になってる

582 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 12:45:03.68 ID:whQSHNtc.net]
>>569
それはZigじゃない?
とはいえ、所有権いい感じに見てくれない言語を今更betterと言えるかというと微妙か。

583 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 13:26:02.22 ID:ocaBqo/v.net]
Rust は別に C++ と張り合ってなんかいないよ。
現実に使うものはどうやったってどこかで汚くなるってだけ。
綺麗なものは使われてないものだ。

584 名前:デフォルトの名無しさん [2023/11/04(土) 14:22:45.66 ID:nDDUhOSB.net]
>>569
Odinはいかが?
https://odin-lang.org/

585 名前:デフォルトの名無しさん mailto:sage [2023/11/05(日) 00:55:20.60 ID:Frni44mO.net]
>>569
Carbon

586 名前:デフォルトの名無しさん mailto:sage [2023/11/05(日) 13:27:00.92 ID:bq/z7Mod.net]
>>567
「gen」予約keyword化はそうだね

587 名前:デフォルトの名無しさん [2023/11/09(木) 15:19:57.39 ID:j64EPVX0.net]
すまんが、VSCode上から/examples下にあるものをデバッグしたい場合ってどうやんの?
他人の作ったクレートのコードを読む上で、これを楽にできると個人的にはありがたいんだけど・・・・

588 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 22:37:41.41 ID:vNSbYVSe.net]
バージョンと拡張機能によりそうだけど自分の環境(Windows)だと
examples内でもfn main()の上に
|> Run | Debug
みたいなinlayが表示されてとりあえずそこからデバッグ実行できた
設定作ればほかの起動方法もあるはず

たぶんrust-analyserの機能だけどデバッガは環境依存だからわからん

589 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 02:38:23.29 ID:O0gb6uIB.net]
gen はいわゆる協調スレッドなのか。
言語機能として取り込むにはちょっと豪華すぎる気もするな。

590 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 04:55:58.85 ID:2kP6dQwH.net]
genはasyncと同じでコルーチンだよね?
そしてasyncと同じく単純な状態マシンで実装だよね?



591 名前:デフォルトの名無しさん [2023/11/12(日) 07:45:09.87 ID:sBWcqg0h.net]
>>576
ありがとう!バッチリできたぜ!!!

592 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 09:05:18.31 ID:7FyJ/l9p.net]
TikTok LiteでPayPayやAmazonギフトなどに変換可能な4000円分のポイントをプレゼント中!
※既存TikTokユーザーの方はTikTokアプリからログアウトしてアンインストールすればできる可能性があります

1.SIMの入ったスマホ・タブレットを用意する
2.以下のTikTok Litのサイトからアプリをダウンロード(ダウンロードだけでまだ起動しない)
https://lite.tiktok.com/t/ZSNfDoDFY/
3.ダウンロード完了後、もう一度上記アドレスのリンクからアプリを起動
4.アプリ内でTikTok未使用の電話番号かメールアドレスを使用して登禄
5.10日間連続のチェックインで合計で4000円分のポイントゲット

ポイントはPayPayやAmazonギフト券に変換可能です!
家族・友人に紹介したり通常タスクをこなせば更にポイントを追加でゲットできます。

593 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 11:30:27.32 ID:cviedAAA.net]
>>580
既にやってるよ

594 名前:デフォルトの名無しさん [2023/11/14(火) 12:58:29.06 ID:SRCspH78.net]
https://crates.io/search?q=arete

0なんだが

595 名前:デフォルトの名無しさん [2023/11/19(日) 15:31:52.34 ID:J3g/JpQ/.net]
rust初心者です。
cだとポインタに対してキャストすることで完全にプログラマ任せのキャストが出来ます。
例えば文字列を参照するポインタを強引に数値として解釈させるなど、好きなように出来ます。
rustでは簡単に調べたところparse().unwrap()などが必要だそうです。
rustはcのようにバイナリフォーマットをプログラマ任せにして自由にキャストさせる習慣はないということでしょうか?

596 名前:デフォルトの名無しさん [2023/11/19(日) 16:23:14.27 ID:/G2k3fWt.net]
あるよ

597 名前:デフォルトの名無しさん [2023/11/19(日) 16:29:48.57 ID:eJPqaRZx.net]
#[repr(C)]
as *const T
as *mut T
as usize
bytemuck
slice::from_raw_parts

598 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 16:46:38.60 ID:ib2hIQe1.net]
バイナリや文字列と内部表現・の相互変換(シリアライズとデシリアライズ)ならば
Rustではdeser crateファミリーを使って専業分離することが多いね

599 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 18:17:50.06 ID:b3b61WiC.net]
シリアライズ関連のクレートを使った方が楽だし、もうちょっと簡易的にやる場合でも from_le_bytes などの組み合わせで安全にやれるから不必要にプログラマの責任で管理するべきではないよ。
C でもいまどきは高レイヤのプログラムならそんなに気軽に未定義の型変換はしない。(もっとも、高レイヤではあまり C を使わないけど)

600 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 18:43:57.48 ID:ib2hIQe1.net]
ごめん、アホなスペルミスしてる
deserでなくてserde
あとserde_bytesやbincodeを併用



601 名前:デフォルトの名無しさん [2023/11/19(日) 23:58:07.78 ID:J3g/JpQ/.net]
少し調べてより明確に言語化出来ました。
Rustはゼロコストのserderができますか?

Cだとしばしばそれができます。構造体の要素次第ですが。
で、調べてみるとrkyvというフレームワークが近いことを可能にしているようです。
ゼロコピーと謳っていますが、何らかの演算コストが生じているのかどうか。
Cなら構造体を注意深く設計すればキャスト一発で実行時コストゼロでserderが完了するのです。

602 名前:デフォルトの名無しさん [2023/11/20(月) 02:05:15.84 ID:ilBq5gGe.net]
>>589
>Cなら構造体を注意深く設計すれば

なんでそのコストを無視するんだい?

603 名前:デフォルトの名無しさん [2023/11/20(月) 02:16:16.40 ID:UjbzCz3W.net]
>>590
実行時コストじゃないからです。
例えばRustのゼロコスト抽象化という概念もあくまで実行時コストがゼロであることを意味しているはずです。

604 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 02:16:45.62 ID:K0+PyRHv.net]
#[repr(C)]付けてstruct/enum/unionをCと同じ使い方すればC互換のレイアウトになるはず

605 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 06:49:29.19 ID:dNsGQu4G.net]
>>589
Cと同じことがしたいだけならrepr(C)で構造体定義して
std::mem::transmuteでキャストすればいい
rkyvみたいなフレームワークはもっと高度なデータ型(ハッシュマップとか)で同じことをやるためのもの

606 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 08:53:23.51 ID:LwcosZwN.net]
抽象度の高いレイヤを挟んでもかなり最適化で消えるよ。
逆に自由なキャストのコストはゼロではない。
ハードウェアの癖、処理系の癖を理解している人がうまくチューニングすれば性能はあがることも多いけどキャストして直接に読み替えたら実行時コストが低くなるとは限らない。

607 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 13:51:58.80 ID:MS7hPbOQ.net]
>抽象度の高いレイヤを挟んでもかなり最適化で消えるよ。

それはもちろん判ってて
その上で厳密にゼロじゃないから問題視してんじゃん

608 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 15:34:39.51 ID:JXHwx0JF.net]
具体的にRustを使うメリットよりデメリットが上回る例があるならそれを出さないと話がわからない
色んなバイナリプロトコルもRustで実装されて問題になっていない

609 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 17:27:20.27 ID:cTETCu/a.net]
transmuteだとalign合わせるためにコピーする場合がありそうだから
本気でCと同じゼロコストで読み替えするならポインタ(参照じゃない)をとって
as *const T(as *mut T)で目的の型にキャストして参照(&T, &mut T)に戻す感じかな
どうせunsafeだからunion使う方がいいかもしれないけど

610 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 17:54:17.33 ID:PG0EBfXZ.net]
Cから移植する場合でtagged unionをうまく移植する方法はないだろうか
unsafe使わずに

struct tagged_value {
enum tag t;
union {
hoge h;
fuga f;
} u;
};

みたいなの



611 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 18:11:32.44 ID:NaWZknyA.net]
>>598
enumで

612 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 18:17:00.50 ID:ieYqPgSw.net]
>>595
最適化の話は「どちらにしてもゼロとは限らない」という話のための前ふり。
仮にその場所に限ってはゼロになったとしても周囲の最適化の足を引っ張ることもある。
総合的な速さを出すには諸々を加味したチューニングが必要なので単純にキャストしたほうが速いとは考えるなというのが主旨。
もちろん諸々を考慮して検証した上で実際に速くなることが確かめられるならそれを否定したりはしないよ。割に合うことは少ないとも思うけど。

613 名前:デフォルトの名無しさん [2023/11/20(月) 21:13:04.59 ID:ojqzhkRS.net]
ちゃんと考えるよ。
角度とか

614 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 23:02:22.90 ID:QHUUbGYT.net]
重要なのは、Rustで書くと遅くなる(コストがかかる)パターンを、実際に発見できたのかどうか?

もしそのようなパターンを発見できて、(Cによる)速い方法でも安全性に問題がないのならば、
Rustの歴史ではそれを(必要なら)unsafeで記述してライブラリの中に安全に閉じ込めてきた
そのためRustで一般プログラマーがunsafeを使わずに記述しても、ほとんどのケースでCと同等の速さが出る

615 名前:デフォルトの名無しさん [2023/11/21(火) 04:05:24.41 ID:60zWiP9n.net]
個人的な懸念点は処理のゼロコピー化においてCに劣るのか?という点
Rust界隈でゼロコピーフレームワークが色々あるがどういう工夫が行われているのか
調査は時間がかかりすぎるからやらないw

616 名前:デフォルトの名無しさん [2023/11/21(火) 04:13:54.83 ID:60zWiP9n.net]
データ転送はCPU上の演算と比較してかなり遅い処理なので
ゼロコピーで劣ると一部の処理でかなり遅くなる
そしてベンチマーク系のプログラムではゼロコピーはあまり問題にならない。

617 名前:デフォルトの名無しさん [2023/11/21(火) 04:16:28.76 ID:60zWiP9n.net]
ゼロコピーが問題になるのはserder、通信
あとたぶんOSの実装でも問題になるはず
だから数学的計算というよりはシステム間の垣根を超えるようなところで問題になる
RustがベンチマークでC並といっても、あくまで数値計算系の話

618 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 08:42:33.89 ID:UPhRR3yr.net]
ゼロコピーってのはオリジナルのバッファ以外には追加でヒープアロケーションをせずに処理をするという意味

619 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 10:07:46.27 ID:ZzleWc4x.net]
ウザイからttf_parserのコードでも読んでくれば

620 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 11:00:12.68 ID:HSO31doi.net]
unsafe という名前が誤解の元になってる
unsafe に描く内容って結局安全な内容しか描いてはいけない訳だ
そして unsafe は使ってはいけない機能ではなくむしろ積極的に使って良い機能



621 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 11:55:27.06 ID:pNsPVZam.net]
こういうやつがいるからこそunsafeという名前に価値があるんだよな

622 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 12:57:54.74 ID:4vFkathr.net]
>>605
それらRustで書くことで遅くなった事例がない
むしろ例えばCDN世界トップのCloudflareは
Cで書かれたnginxを全面的にRustで作り直すことで
CPUリソースとメモリリソースを1/3に削減することに成功している

623 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 15:25:53.24 ID:OibZ9mzY.net]
Cloudflareのやつはnginxがスレッドベースで処理をブロッキングしてしまう(CPU時間とメモリを占有してしまう)から
マイクロスレッドで作り直した=基本設計を大きく変更したというだけで、Rustだからパフォーマンスが向上したというわけではない

624 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 16:18:31.31 ID:Pb5WKpvw.net]
stdをunsafeで検索するとUnsafeCellしか出てこなくて
unsafeな関数の名前がほとんどuncheckedなのは
let x = unsafe { do_something_unsafe() };
だとアホっぽいからかな

625 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 18:24:54.78 ID:Fzh9NpIU.net]
検索方法が間違ってる
そしてuncheckedはunsafeとは意味が違う

626 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:10:58.28 ID:lumDzvUR.net]
>>611
そこではなく
杞憂の>>603が言うところのゼロコピーやゼロコストはCとRustで同様に実現できているから
新たなシステムはCを使わずにRustで書いたという話ではないか

627 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:28:16.17 ID:u3FDf3nL.net]
外部入力をtransmuteとか地雷臭がハンパない
どうぞご安全に〜

628 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:39:45.33 ID:lumDzvUR.net]
transmute使わなくてすむsafeなライブラリ関数が揃ってるからね

629 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 09:15:59.95 ID:rKTwm3uz.net]
Rust って同じ変数名なのに違う型に出来るよね?
同じスコープで再定義出来ると言うか上書き出来る
名前が変わらないから便利って思うかも知れないが
気を付けてソース観ていないと途中で型が変わってるやん!ってなる
なかなか嫌な構文だね
可読性低下しない?勘違いしそう

630 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 09:18:00.86 ID:rKTwm3uz.net]
あと上書きされたとき前のリソースは上書きされたタイミングで消えてない
明示的に drop していれば消えるがしなかったら実は生きたまま
迷惑仕様じゃないかな



631 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 10:20:51.65 ID:ytuM+CNS.net]
>>618
同じスコープ内でシャドウィングする時は意味的に同じものを入れるようにする

前のリソースがすぐにドロップされないのはシャドウィング時にそのリソースへの参照を使う事で不要なアロケーションを避けられるから

632 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 12:38:39.68 ID:EEEndPKs.net]
シャドウイングされた時に勝手に消える方が迷惑仕様だな
その時点で他から参照されてるかもしれないし

633 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 13:46:10.54 ID:V6cVkJ+M.net]
>>617
Rustはプログラマーに優しい強い静的型付けの言語だから型が違えばエラーになるため混乱もなく大丈夫
また、型変換するたびに別の変数名にしなければいけなかった言語よりも便利でプログラミングも快適だよ

634 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 16:27:51.72 ID:81rqCYd0.net]
Rustの欠点は誰も使ってない所だけ

635 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 17:24:40.07 ID:4EAT4Ovg.net]
>>622
どうしてそんな悲しいこと言うの!

636 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 18:44:41.46 ID:vlc4nTzz.net]
誰も使ってないのってカッコいいな

637 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 23:55:37.33 ID:B979bnCG.net]
俺だけが知っている

638 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 09:12:21.52 ID:k38CbPq9.net]
ユーザーが少ないのはアドバンテージだってポール・グレアムも言ってる。

639 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 09:20:04.49 ID:OE1+8Rl8.net]
GAFAMで使われるようになった時点で言語として消え去る可能性は十分下がったし
別にこれ以上使う人増えなくてもいいんじゃないかな
日本のSIerにまで広まるなんてまずないだろうし

640 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 10:05:44.56 ID:Deg4O8Si.net]
言語じゃないけどBlenderみたいにいつの間にか覇権を取ってたりすることもあり得る



641 名前:デフォルトの名無しさん [2023/11/26(日) 11:39:45.82 ID:d/KzVdDP.net]
おまえが使ってるのに誰も使ってないって可笑しなことを言うのな
もしかしておまえも使ってないだろ?正直に言え

642 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 11:42:35.06 ID:Deg4O8Si.net]
「俺の周りじゃ」

643 名前:デフォルトの名無しさん [2023/11/26(日) 12:18:50.10 ID:d/KzVdDP.net]
ぼっちってこと?

644 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 12:23:12.23 ID:oOwLuMql.net]
Rust「きゃー、私のために争わないで

645 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 12:32:50.97 ID:iMOX0Yuj.net]
クズがこっちに移動してきたか
まかせろ

646 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 13:04:33.25 ID:oOwLuMql.net]
crateのバージョンが1.0になってないのが多いから、まだまだだなーって思う

647 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 02:23:02.91 ID:hnitA9Px.net]
ぼっちざRust

648 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 03:19:17.53 ID:shAL5QFI.net]
>>635
ちょっとかっこいいじゃん

649 名前:デフォルトの名無しさん [2023/11/27(月) 10:05:45.61 ID:7/k6/GSg.net]

https://www.youtube.com/watch?v=i-fbsgTWM5Q
https://www.youtube.com/watch?v=AVKkhpGsXoI
https://www.youtube.com/watch?v=ylxlLa9X_O0
https://www.youtube.com/watch?v=LqmtSQ8tmzg

650 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 08:31:02.24 ID:t7+ip2Xg.net]
Rustって名前が良くない



651 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 08:45:48.68 ID:ruCnqVCc.net]
Cナントカじゃそれこそカビが生えてる

652 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 08:34:26.30 ID:JMjzgwiz.net]
>>638
go-langよりはマシ

653 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 18:40:27.28 ID:kcDV2U5x.net]
go は何が駄目といってネーミングがクソすぎるからな
あとマスコットがキモすぎる

654 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 20:05:06.19 ID:KItL/kTG.net]
ogleとセットで売り出せていれば多少は救われたかもしれない
文字型runeの中二感は好きなんだけど

655 名前:デフォルトの名無しさん [2023/12/08(金) 13:43:21.24 ID:QsZXn/jV.net]
VSCodeのrust_analyzerが、全く関係のないC#のプロジェクトでも勝手に動き始めるようになっちゃった
みんなのところどう?他の言語とか使ってたら起動しちゃったりしてる???

656 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 15:21:20.43 ID:FH+GH+Zi.net]
>>641
ネーミングが死ぬほどクソなのは同意だけど
マスコットはかわいいじゃん!

657 名前:デフォルトの名無しさん mailto:sage [2023/12/10(日) 04:46:02.96 ID:RGphax9G.net]
ʕ◔ϖ◔ʔ < お呼びですか?

658 名前:デフォルトの名無しさん mailto:sage [2023/12/10(日) 11:57:04.81 ID:1MxEINjf.net]
つべでrust検索するとゲームばっかり出る

659 名前:デフォルトの名無しさん mailto:sage [2023/12/21(木) 16:58:33.82 ID:HvDn5p2W.net]
GAFAMで使われてるから廃れることないし、
コミュニティに変な人が入って来ない方が居心地が良いまである

660 名前:デフォルトの名無しさん mailto:sage [2023/12/21(木) 17:12:16.21 ID:JI0UYSEL.net]
gopher はちいかわと同じヤバみを感じる



661 名前:デフォルトの名無しさん mailto:sage [2023/12/21(木) 17:13:31.75 ID:HvDn5p2W.net]
言語のマスコットネタは寒いよなあ

662 名前:デフォルトの名無しさん mailto:sage [2023/12/22(金) 13:35:06.75 ID:lJtOGqn+.net]
カニのフェリスも割りと一般的な名前

663 名前:デフォルトの名無しさん mailto:sage [2023/12/25(月) 09:35:30.12 ID:734EcmtL.net]
「Rust」言語向けの“ビジュアルタイムトラベルデバッガー”「FireDBG」が公開
https://forest.watch.impress.co.jp/docs/news/1557204.html

664 名前:デフォルトの名無しさん mailto:sage [2023/12/25(月) 10:28:47.95 ID:7mXOqNeO.net]
タイムトラベル?使い物になるのか?

665 名前:デフォルトの名無しさん mailto:sage [2023/12/25(月) 12:40:39.37 ID:Sk+Bp6T/.net]
タイムトラベル知らんのか

666 名前:デフォルトの名無しさん [2023/12/26(火) 01:14:24.20 ID:79CvGGY2.net]
>>652
CやC++やJavaでも昔からコールスタックは遡れたけど、あれのビジュアル良くしたやつとは違うのかね?

667 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 01:58:52.00 ID:DHuhCQvi.net]
>>654
違う
状態の変遷を戻ったり進めたりできる
つかググればすぐ出てくるやろ

668 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 04:22:44.20 ID:hadQuCYF.net]
>>634
コミュニティに入るPGのレベルが全体的に高すぎて
俺の実装でversionを1.0にするのはおこがましい的な萎縮が働いてそう

669 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 04:22:50.25 ID:hadQuCYF.net]
>>634
コミュニティに入るPGのレベルが全体的に高すぎて
俺の実装でvers

670 名前:ionを1.0にするのはおこがましい的な萎縮が働いてそう []
[ここ壊れてます]



671 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 08:35:59.69 ID:P1ddGMJS.net]
>>656
セマンティックバージョニングのせいだよ。
バージョンナンバーの付け方は基準があって互換性が維持されるときとされないときで数値の上げかたが違う。
しかしメジャーバージョンがゼロのときは基準の適用外で勝手にしていいことになってる。
初期は試行錯誤があって当然だからね。
キッチリした管理なんかしたくないからまだまだ初期だという体裁でゼロのままにしたほうが楽なんだよ。

672 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 08:50:16.75 ID:RJv1OlmX.net]
>>658
これやな
オレオレライブラリ作る時とか
絶対に1系まで上げない

673 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 09:58:50.36 ID:4qW9SvtE.net]
Rustの要であるfutures futures-coreなども0.3のままだな
hyperは先月ようやく正式1.0になり先週1.1になった
h2が0.3から0.4に上がった

674 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 10:02:59.91 ID:QVgSLMrU.net]
どうでもいいな

675 名前:デフォルトの名無しさん [2023/12/26(火) 11:10:33.20 ID:rdxjbOn3.net]
メジャーバージョンが0のライブラリなんて怖くてよう使わん
Julia並みの破壊的変更が来ても文句言えんからな

676 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 11:17:02.90 ID:RJv1OlmX.net]
そういう日が来たら全部壊して書き直した方が早いよ
自分の書いてる所の効率も洗練されて良くなるし

677 名前:デフォルトの名無しさん [2023/12/26(火) 11:53:58.51 ID:druMhfTB.net]
まあこういう感じの真面目にサポートとかする気のない人しか使ってない言語なんだろうな

678 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 12:09:12.16 ID:aCwAChA1.net]
>>656
それ他の言語でも散見されるぞ
1.0は枯れ切った後に出て実質でかい機能追加は行わなくなったところでつけることが多い
大抵凄腕の人のライブラリに多いような気がする
SemVerが浸透する前からこの状態だったし

679 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 15:06:21.44 ID:iSUEMnuj.net]
Inkscapeは一生1.0に上がらないと思ってた

680 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 16:49:51.67 ID:KvBUmVJg.net]
GitHub Issueが2627件あるZigはどうするつもりなんだろう



681 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 17:19:43.95 ID:Y/g/LC26.net]
どうでもいいな
ライブラリの質はSemverで測るものじゃないから

682 名前:デフォルトの名無しさん [2023/12/26(火) 17:33:22.23 ID:E/z8PERd.net]
ライブラリの質にsemver考慮しない人間、仕事にRust使う気がなさそう
趣味プログラムで一年も生かす気がないコードならまあわかる
仕事で限られた工数で長期サポートするならsemver気にしないはありえん

まあRustなんて所詮趣味プログラミング向けなのかもな
まともな仕事には使えん

683 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 17:36:00.58 ID:APrQ9KVs.net]
個々のバージョンにおいて出来が良いかどうかはともかくとして、
長期的な互換性に対する姿勢を測る指針のひとつにはなる。

684 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 17:43:23.74 ID:AKSTTleD.net]
帰れゴミカスども
https://mevius.5ch.net/test/read.cgi/tech/1701997063/

685 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 18:34:35.78 ID:6dPf9R/w.net]
ライブラリを選ぶときや使うときには当然Semverは気にする
でもそれは質を測るものではない
その違いが分からないとか理解に苦しむ

ま、どうでもいいけど

686 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 18:42:19.39 ID:krXurI2c.net]
rustを使う人は、みんな凄腕で無ければ自分で実装するイメージ。

687 名前:デフォルトの名無しさん [2023/12/26(火) 20:02:46.87 ID:E/z8PERd.net]
>>672
質って品質って意味だろ?
品質にはサポート品質は当然含まれるだろ

688 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 20:12:35.91 ID:RJv1OlmX.net]
出来たばっかりの言語にやってきて
1系になってるライブラリまるでない使えねー!

お前はJavaに帰れ

689 名前:デフォルトの名無しさん [2023/12/26(火) 20:20:41.08 ID:E/z8PERd.net]
>>675
古いって言ってももう開発開始から17年なんだよな
Javaリリースから27年であり、正直そこまで差はないだろ
正式リリースからは8年だけど、リリースが遅かったことを評価することは出来んし、正直そこまで差はないと思わざるを得ない
正直、いつまで新しい言語みたいな顔してるんだよって気持ちだ

まるで自分を若いと勘違いしているおっさんみたいだ

690 名前:デフォルトの名無しさん [2023/12/26(火) 20:30:47.94 ID:rdxjbOn3.net]
しかしJavaに帰れってのも悲しい発言だな
結局仕事ならJavaって>>675も思ってるってことなんだもんな



691 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 20:34:34.53 ID:4qW9SvtE.net]
他の言語と比較したい人は言語比較スレへ
アンチ活動したい人はアンチスレへ

692 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 22:38:40.65 ID:ewLNJPek.net]
>>674
メジャーバージョンが1.0以上かどうかはサポート品質を測る指標にならないんだよ
実際にいろんなライブラリをきちんと調べて使った経験があれば誰にでもわかる常識的なこと

エアプで批判だけしたかったのだとしたらもう少し別の観点から攻めた方がいい

693 名前:デフォルトの名無しさん [2023/12/26(火) 23:11:29.12 ID:exfh4uMB.net]
>>679
いや仕様が安定しているというのはオープンなライブラリが提供可能な最大のサポートだが

まあでもそう思わない分野があるのは理解できるよ
多分君の業界では一度書いたコードが1年以上使われることはないのだろう
そういう業界ではライブラリが変わりまくって新機能が追加されることをサポートと呼ぶだろうし、それはまあわからんではない

でも0.9で止めるみたいな、特に新機能付けるわけでもないけどfixする気もありません。好きな時に変えたいですみたいなのはサポートとは程遠いよね?

694 名前:デフォルトの名無しさん [2023/12/26(火) 23:13:25.69 ID:exfh4uMB.net]
0.9は関係なかったな

695 名前:デフォルトの名無しさん mailto:sage [2023/12/27(水) 00:41:46.65 ID:3CBetLUr.net]
>>680
まとめると
仕様の安定度を知りたいんたけど
よくわかんないから1.0未満は不安定
1.0以上なら安定だと判断してるってことだね
君の業界では

ご愁傷様です

696 名前:デフォルトの名無しさん [2023/12/27(水) 00:49:37.20 ID:JhhYq7wG.net]
>>682
書いてないことを読み込んで妄想で勝手にまとめる読解力すごいな

697 名前:デフォルトの名無しさん mailto:sage [2023/12/27(水) 00:53:03.07 ID:6D5uPlZV.net]
>>682
まぁワッチョイスレから逃げ回ってるような荒らしなんだから構うのはやめとこうぜ

698 名前:デフォルトの名無しさん mailto:sage [2023/12/27(水) 05:17:40.43 ID:/OnGyPrY.net]
そこまでNGされるのが嫌なのか

699 名前:デフォルトの名無しさん mailto:sage [2023/12/27(水) 21:49:50.71 ID:feQ9KdG1.net]
自然淘汰とかいうけど
それを人為的にやったらただの私刑じゃないかね

700 名前:デフォルトの名無しさん mailto:sage [2023/12/27(水) 22:20:54.47 ID:/OnGyPrY.net]
改行NGにすれば全部消えるよ
俺は一時期それにしてたけどおもちゃが見えなくなるのは寂しいからやめた
どうしても消したい場合はそれ推奨



701 名前:デフォルトの名無しさん mailto:sage [2023/12/27(水) 22:55:48.52 ID:+Ixmj89w.net]
Polonius期待

702 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 08:10:24.28 ID:7EmcMJDG.net]
1.0 出てても信頼できるかどうかは結局のところ内情ちゃんと見ないとわからないからなぁ。
パッチバージョンで破壊的な事するOSSはとても多い。

703 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 08:35:00.47 ID:uitX+xsl.net]
>>689
Rustならば
①バージョン上がろうがバージョン指定のまま使い続けられる
➁ソース内のテスト及びカバレッジの仕組により意図しない破壊的ミスを防げる
➂意図した破壊的変更は1.xから2.0へ上げるルールが守られているため①により1.*指定で安心して使える

704 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 09:01:37.54 ID:JG4/aLYi.net]
そのルールが厳格に守られてなんかいないって話なんやが。

705 名前:デフォルトの名無しさん [2023/12/28(木) 09:05:11.24 ID:tRLYlD1D.net]
1.0を超えたら信頼出来るなんて言ってる奴は居ないんだよな
1.0を超えてないのは問題外だが

706 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 11:02:26.82 ID:TCyyQhqN.net]
>>692
1.0を超えてなくてもAPI仕様が安定していて信頼できるのも普通にある
1.0を目安にしちゃうのは中身を判断する術を持たないマヌケだけ

707 名前:デフォルトの名無しさん [2023/12/28(木) 11:34:37.14 ID:PHYdezLP.net]
>>693
仕様が安定しているなら1.0にすれば良い
それをしないのは使用を固定したくないという甘えの意思表示
実態として変わらないとしても、人に使ってもらうことについて真面目に考えていない心の現れ

708 名前:デフォルトの名無しさん [2023/12/28(木) 11:35:52.30 ID:PHYdezLP.net]
お前が勝手に信頼しているだけで、開発者も想定していない信頼を受けて困っているだろう

709 名前:デフォルトの名無しさん [2023/12/28(木) 11:47:36.08 ID:PHYdezLP.net]
普通に考えて欲しいんだが、自分がライブラリ開発者の立場だったとして、1.0に上げていないライブラリを安定してて信頼できるものとして使うユーザーがいたら「ちょっと待って」って思うだろ

710 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 11:54:18.66 ID:jeZ/sYb6.net]
使わせてもらってる立場から、使ってやってるに増長するキッズ
文句言うならサポート契約でも結んでからにしろクズ



711 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 11:58:34.84 ID:uitX+xsl.net]
Rustと関係ない話なら他のスレでやれ
ここで話すなら具体的にRustのどのクレートの話か示せ

712 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 11:59:02.76 ID:N5v1piyg.net]
バージョン関係なくTHIS SOFTWARE IS PROVIDED "AS IS"なライセンスのライブラリでなに勘違いしてんだろこいつとは思う

713 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:00:19.07 ID:N5v1piyg.net]
>>698
ここを新しい雑談スレにするか
今決めた

714 名前:デフォルトの名無しさん [2023/12/28(木) 12:00:19.20 ID:PHYdezLP.net]
開発者の意思表示を正しく読めよ
1.0になってないものを勝手に信頼するな
それはユーザーの心構えが出来ていない

715 名前:デフォルトの名無しさん [2023/12/28(木) 12:02:39.92 ID:jJTXzrLr.net]
>>699
それは法の話だろ
法とは別に、法的な責任を取らないとしてもどの程度信頼して欲しいかがあるだろ

716 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:07:24.88 ID:N5v1piyg.net]
>>702
特定の機能のサポートは不十分ですとかそういうのならREADMEに書くけど
漠然と程度とだけ言われてもなんのことだろう……

717 名前:デフォルトの名無しさん [2023/12/28(木) 12:09:48.59 ID:x4URU/48.net]
>>693
>>695

718 名前:デフォルトの名無しさん [2023/12/28(木) 12:15:29.31 ID:PHYdezLP.net]
>>703
不十分なのが特定の機能だけなら全体を1.0に上げてからその機能をexperimentalとして提供して良いだろ
だから特定の機能が不安定とかはバージョンニングと独立では?
俺なんか勘違いしてるか?

719 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:19:43.58 ID:uitX+xsl.net]
具体的にどのクレートの話か出せない時点で机上の空論

720 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:25:11.39 ID:N5v1piyg.net]
>>705
具体的な領域



721 名前:の限定や条件の明示なく絶対的な「信頼」が存在すると思っている
それがv1リリースで示されると思っている、ってあたりを勘違いしてるんじゃないかな……

セキュリティを語るときに「この前提が崩れない限り」安全としか語れないのと似ている
[]
[ここ壊れてます]

722 名前:デフォルトの名無しさん [2023/12/28(木) 12:30:33.09 ID:PHYdezLP.net]
>>707
それはお前の勘違いだな
俺はv1になっていないと信頼出来ないとは書いたが、
v1リリースで示されるとは一言も書いていない。

対偶は成立するが、裏は成立しない。高校で習っただろ

723 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:35:25.46 ID:N5v1piyg.net]
>>708
なるほどな、「『俺は』信頼できない」か
「信頼できる」と呼ぶに値する主観的絶対的基準があるんだな
それが何かは明文化できる?

724 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:35:38.49 ID:ySYWG+kx.net]
お前まともにRust使ったことないだろう
なんでこのスレにいるの?

725 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:39:55.64 ID:9fQ265/7.net]
仕様の安定度を知りたいなら1.0未満かどうかなんてゴミのような基準使わなくても他にいくらでもマシな方法があるだろうに

726 名前:デフォルトの名無しさん [2023/12/28(木) 12:43:17.71 ID:PHYdezLP.net]
>>709
「俺は」は「書いた」にかかっている
複数通りの解釈が可能な文書を書いたことを謹んでお詫び申し上げる

727 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:46:56.09 ID:N5v1piyg.net]
>>712
なら要旨は変わらないよ
絶対的信頼などない

せいぜいcargo-crevでも参考にするがいい
https://web.crev.dev/rust-reviews/

728 名前:デフォルトの名無しさん [2023/12/28(木) 12:49:05.73 ID:PHYdezLP.net]
>>713
絶対的な信頼が可能なものなど存在しないのが当たり前なので俺はこれまで話題にも上げなかったが、どうしてもその話をしたいようなので、そんなものはないという点については当たり前のこととして同意することをここに記す

729 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:50:06.29 ID:3VbosFG3.net]
ほんとにどうでもいい話だったな

730 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 12:52:12.25 ID:DH0jKNBE.net]
最近のMicrosoftやApple、Googleなんて安定しているとはいいがたく商用でも責任なんて取らないがみんな使っている



731 名前:デフォルトの名無しさん [2023/12/28(木) 14:56:05.00 ID:PHYdezLP.net]
ほんとうにどうでも良い話だったな
俺に噛みついてきた人間、逆裏対偶理解していない数IA未履修者と、わざわざ1.0未満で止めているものを勝手に信頼し始めるやべー奴しかいなかった

732 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 15:03:10.32 ID:13cJB/jM.net]
やっぱりワッチョイは必要だという結論しか出て来ない
ワッチョイ無しは荒らしに構うから伸びてるだけだわ……

733 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 15:54:11.64 ID:uitX+xsl.net]
>>718
必要な人はこちらへ住み分け

プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/

734 名前:デフォルトの名無しさん mailto:sage [2023/12/28(木) 17:10:51.72 ID:QN4uwoNP.net]
>>717
清々しいほどの負け犬の遠吠えだな
クスッと笑えたので㌧クスッと

735 名前:デフォルトの名無しさん [2023/12/28(木) 20:36:54.93 ID:JQwnhIVp.net]
>>679
あなたがたまたまそうだっただけ
はい、光の速さで論破

736 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 08:33:17.51 ID:CCwb5Mxd.net]
バージョン0.9は「信頼してはいけない」という解釈が可能
複数通りの解釈を発生させた戦犯は謝罪するべきという解釈も可能

737 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 08:38:26.10 ID:sHM61QvB.net]
0.1.234 みたいにパッチバージョン爆発させてる OSS は継続性という点でわりと信頼感がある。

738 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 09:12:11.91 ID:a+GKJrq8.net]
たしかに234.0.0と0.1.234なら1.0未満とはいえ後者のほうがいいな

739 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 09:59:51.90 ID:CCwb5Mxd.net]
セマンティックだから1通り以上の解釈がある
無意味かつ無リスクな数字にすれば0通り

740 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 10:19:20.55 ID:DHnfEKbi.net]
>バージョン0.9は「信頼してはいけない」という解釈が可能
じゃ0.10にすればいいんですねww



741 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 10:25:18.94 ID:f2oltWq4.net]
>>723
誰もがお行儀良くone by oneでincrementしてるとは限らないよ

742 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 10:30:28.27 ID:CUdroGt9.net]
ライブラリを選ぶときは過去にリリースしたバージョン数、期間、頻度、メンテナンス状況、リリースノートの内容、ドキュメントの内容、Dependencies、Dependentsあたりの基本的項目くらいはみんな確認するよね?

バージョン番号だけで評価しようとする意味がわからない

743 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 10:36:02.78 ID:0cvltfsQ.net]
>>728
「だけで」と言ってるやつはいないよ。
その上でバージョンナンバー自体に対してはこういう基準で見るというのが現在のトピック。

744 名前:デフォルトの名無しさん [2023/12/29(金) 11:52:32.00 ID:fWvRNSV1.net]
急に「だけで」みたいな条件を脳内補完し始める人間、数IA未履修者っぽい気配がする

745 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 11:57:48.80 ID:gPoT6KCM.net]
>>728
むしろ採用クレート比較の際にバージョン番号で判断したことはない
それらの項目に加えてダウンロード数とその変化も見る

746 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 12:12:05.81 ID:PikwmNJc.net]
番号見てあれこれ想像してないで受け入れテスト書けよ

747 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 12:18:04.06 ID:pF6WWzLY.net]
>>732
ほんとそれ
あちこちに直接組み込んだら
別ライブラリ使いたいの度に全部書き直しやんけ

自前のちょっとしたラッパー書いて
同プロジェクトから呼ぶときはラッパー通せば良くね?

一度バージョン上げてみてテスト通らないので、時間出来るまで見送りですねーってやれば終わり

748 名前:デフォルトの名無しさん [2023/12/29(金) 12:42:41.12 ID:1/HEfF20.net]
ちょっとH2とH2に依存しているライブラリの使っている機能全てのラッパー書いてラッパーのメンテナンスしてくれる人いるー?

できれば別ライブラリ使いたくなった時も対応してくれるいいなー

749 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 12:45:01.14 ID:gPoT6KCM.net]
>>733
破壊的変更があるバージョンへと上げる必要はない
セキュリティ問題への対応のためバージョンアップが必要、かつ、破壊的変更バージョンしかない、という状況は極めて稀
稀な状況のみ追随すればよい

750 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 13:03:50.04 ID:ymW7FjRY.net]
>>735
セマンティクバージョンの話なんだからそれは当たり前やろ
マイナーやパッチの場合の判断や



751 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 13:50:41.57 ID:CCwb5Mxd.net]
標準ライブラリのたぐいを自作ライブラリでラップするのは
自己肯定感というか個人主義の

752 名前:成功体験がないと難しいんじゃないか []
[ここ壊れてます]

753 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 14:08:03.03 ID:5mnDPveJ.net]
ぽまいらGRUBも使ってなかったの?
あれなんかあんな便利なのにずーっと0.9だったでしょ
あんなに人類に役立つソフトなかなかないで

754 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 14:12:05.35 ID:gPoT6KCM.net]
ラップすることは本質ではなくただ単にラップするのは本末転倒
抽象化のために自分側の関数をそれぞれ作ってその中に外部ライブラリを閉じ込めるのが一般的
結果的にラップの一形態となっているにすぎない

755 名前:デフォルトの名無しさん [2023/12/29(金) 14:12:37.90 ID:Y5pppiMt.net]
GRUBの仕様が変わったら面倒って状態になったことないので流石に別の話では

756 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 16:21:20.54 ID:GcW4fAIp.net]
>>731
だよな
それが常識的な考え

バージョン番号から勝手な推測をしたところで
他から得られる情報ですべて上書きされるだけだからライブラリ選択においては全く意味がない

757 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 16:40:37.66 ID:fjXA5V8+.net]
>>729
>「だけで」と言ってるやつはいないよ。
「だけで」と言ってるやつはいないけど「だけで」判断してるマヌケはいるよね?
まぁほぼ君だけなんだけどさ↓

「メジャーバージョンが0のライブラリなんて怖くてよう使わん」
「0.9で止めるみたいな、特に新機能付けるわけでもないけどfixする気もありません。好きな時に変えたいですみたいなのはサポートとは程遠い」
「1.0を超えてないのは問題外」
「1.0に上げていないライブラリを安定してて信頼できるものとして使うユーザーがいたら「ちょっと待って」って思うだろ」
「1.0になってないものを勝手に信頼するな」
「わざわざ1.0未満で止めているものを勝手に信頼し始めるやべー奴しかいなかった」

758 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 18:22:07.42 ID:v1Foeynd.net]
確かにどう見てもバージョンナンバーだけで判断してるな

759 名前:デフォルトの名無しさん [2023/12/29(金) 19:11:58.37 ID:fWvRNSV1.net]
俺が書いた内容がID透視によって別の人の書き込み扱いになっていて笑っちゃった
ごめんよ>>729

それはそうと、>>742>>743も裏と対偶の区別がついていない中卒の主張かな?
「バージョン1未満」と「信頼出来る」でベン図を書いてみて、俺の主著の領域と「バージョンだけで判断」の領域に色をつけてみて欲しい

760 名前:デフォルトの名無しさん [2023/12/29(金) 19:28:31.50 ID:fWvRNSV1.net]
ああ、それとも「仕様が安定していて信頼出来る」と「あるプロダクトの依存として採用する」の方が良いかな



761 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 19:32:39.94 ID:0cvltfsQ.net]
関連しそうなクレートを全て精査するのは無理なんだから分かりやすい基準で足切りラインを設定するのは普通の処置なんじゃないの。
それがバージョンナンバーでも作者でもダウンロード数でもいいけど、バージョンナンバーでマシそうなのを選出してから細かい絞り混みをするのはそんなに不自然なこととは思わないけどな。
クレートを使う側の選出では偽陰性が増えてでも疑陽性が少ないほうが絞り混みやすいわけだし。

762 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 20:54:47.18 ID:CCwb5Mxd.net]
ベン図も三角関数も
何の役に立つのかを分かりやすく示さなければ足切られる側なんだよな

763 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 21:21:00.48 ID:qZkdUj+g.net]
>>746
そこでバージョンナンバーを考慮することはない
例えば比較の片方が1.xでもう片方が0.3.xだとして何の判断材料にもならない

764 名前:デフォルトの名無しさん [2023/12/29(金) 21:52:37.44 ID:fWvRNSV1.net]
バージョンナンバーを考慮することはないって意見、同意はしないけど逆裏対偶みたいな基本的な誤りはないのでまあ分野によってはそうかもって感じ
俺も年単位でサポートする気がない書き捨てに近いプログラム書くときはそうだし

765 名前:デフォルトの名無しさん mailto:sage [2023/12/29(金) 23:21:04.71 ID:QVcmgKmp.net]
バージョンおじさん見苦しい

766 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 00:00:54.19 ID:xE8SJEDn.net]
所有権の複製のときといっしょの流れになってない?w
しょーもないところで食い下がってゴールポスト動かして居座るやつ

767 名前:デフォルトの名無しさん [2023/12/30(土) 00:42:52.50 ID:slhZof7h.net]
対偶と裏の違いがわかってないから変なゴールポストを幻視してしまうのでは?

768 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 01:02:25.15 ID:CdBdHENn.net]
『「バージョン1未満」は「信頼出来ない」と判断しているが「バージョンだけで判断」していない』

複製オジさんもビックリしてそう

769 名前:デフォルトの名無しさん [2023/12/30(土) 01:56:09.99 ID:slhZof7h.net]
>>753
はい中卒
>>751
居座るというか、俺へのレスがあるからお返事書いてあげているだけなんだよな
どっちかというと召喚されている

770 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 04:10:17.11 ID:+VY2mXpj.net]
>>754
具体的にどのクレートをバージョンナンバーにより採用した採用しなかったのかを書きなさい



771 名前:デフォルトの名無しさん [2023/12/30(土) 04:20:00.71 ID:slhZof7h.net]
>>755
人にものを聞く態度か? それが?
「しなさい」とか言う奴に対してまともな返事を書く気はない

772 名前:デフォルトの名無しさん [2023/12/30(土) 04:25:37.61 ID:slhZof7h.net]
いやそれはそれと俺が選ばなかったライブラリの話、真面目に答えると結構ちゃんと選ばないと分野がバレるな

773 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 04:26:52.37 ID:+VY2mXpj.net]
>>756
一度も具体的な話を書けないエアプログラマーはこのスレから去れ

774 名前:デフォルトの名無しさん [2023/12/30(土) 04:56:11.37 ID:slhZof7h.net]
>>758
自分もそうだろ
ブーメラン得意か

775 名前:デフォルトの名無しさん [2023/12/30(土) 05:03:26.73 ID:slhZof7h.net]
不毛な話に返信している自覚はあるので、俺に言及する奴が消えたら俺も書かなくはなるんだよな
ID:+VY2mXpjが具体的な話をしてくれたらそっちに話題が移るんじゃないだろうか

776 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 05:10:37.63 ID:+VY2mXpj.net]
>>759
バージョンナンバーで選んだことはないためそんな具体例は当然ない
バージョンナンバーで選んでいるおまえが具体例を出せ

777 名前:デフォルトの名無しさん [2023/12/30(土) 05:19:08.00 ID:slhZof7h.net]
>>761
「出してください」な

778 名前:デフォルトの名無しさん [2023/12/30(土) 05:21:27.73 ID:slhZof7h.net]
まあちゃんと「出してください」って言われても俺の分野がバレない奴があったか悩ましいが

779 名前:デフォルトの名無しさん [2023/12/30(土) 05:28:06.55 ID:slhZof7h.net]
こういうのは具体的を出すということ自体が結構難しいんだよな
>>761が使っているライブラリでバージョンが1未満のものを上げるとかしてくれたら話が早い

780 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 06:29:39.39 ID:GnED1sKw.net]
Rust勉強中。アノテーション注釈が出てきたところで流行らない理由をなんとなく察する
ヌルポとメモリーリークを防げるから個人開発で使う分にはいいけど。会社で広める気にはならない
学習コスト高いわ



781 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 10:07:43.55 ID:bcJEqtzR.net]
async traitが安定化されてる!!!
https://blog.rust-lang.org/2023/12/28/Rust-1.75.0.html

782 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 10:32:04.21 ID:Q ]
[ここ壊れてます]

783 名前:Gv3PFfa.net mailto: >>765
アノテーション注釈ってなんやねん
無駄にラーニング学習コスト費用高い資料読んでね?
[]
[ここ壊れてます]

784 名前:デフォルトの名無しさん [2023/12/30(土) 11:16:50.31 ID:kCUZZSzY.net]
>>765
ライフタイム注釈ってタイプしたつもりで全然ちがう文字を打ち込んでた
the bookを読んでるだけだよ。疲れてたんだ…

785 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 11:33:27.15 ID:d4YZn3CY.net]
the book はきついよね

786 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 11:41:42.24 ID:scaDM36O.net]
staticを自粛する言語はみんな高コスト
チェリーピッキングみたいに最高値の近辺だけが高いという指摘はうさんくさい

787 名前:デフォルトの名無しさん mailto:sage [2023/12/30(土) 12:22:34.64 ID:WjlNag1n.net]
>>768
非公式翻訳版を読んでるだろ
あれで学習したやつは例外なく使えないのが出来上がるからやめとけよ

788 名前:デフォルトの名無しさん [2023/12/30(土) 18:18:48.80 ID:Ycw4kjfb.net]
>>759
自分が具体的なことを書いていないという指摘は否定しないw

789 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 05:11:31.11 ID:15iRFp/+.net]
>>765
ライフタイム注釈はたいてい一意に定まりその時は省略できるから面倒にならないよ
省略できず明示的にライフタイム注釈を指定しないといけない場合は
例えば複数の参照を受け取り参照を返す関数などでそれら参照間の関係を指定する

790 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 10:19:28.53 ID:kd8WxVq5.net]
>>765
>ヌルポとメモリーリークを防げるから
メモリリークは防げない
ヌルポとメモリリークが防げればいいだけならNull Safetyを備えたGC言語で十分



791 名前:デフォルトの名無しさん [2023/12/31(日) 10:35:21.39 ID:NOiZF6ke.net]
なまじライフタイムを省略できるせいでライフタイム未修得でも書けてしまう言語なので、いざライフタイム省略出来ない時が来た時に脳がバグる

792 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 11:15:14.55 ID:sbs7ggSq.net]
ライフタイムの記述は省略できることはあっても常にライフタイムを意識しながら書かなきゃいけない
それに省略できない場面にも日々遭遇するから「省略できるから面倒にならない」みたいな初心者釣りはやめた方がいい

暗黙的に意識しなきゃいけないC++に比べればある意味面倒ではないという程度

793 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 11:24:54.37 ID:rKdc/qeD.net]
マクロやFFIのようなやや高度な機能を除いた基本機能の中ではライフタイムが一番難しくて一番面倒
性能と引き換えに受け入れなければいけない面倒臭さ

794 名前:デフォルトの名無しさん [2023/12/31(日) 12:07:26.58 ID:8Uv46fmp.net]
ライフタイム意識しなくても良いと騙されて書き始めた人間のがライフタイムに恐れを抱いて迂回しながら書いた至る所でcloneして値渡するコード

795 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 13:31:13.38 ID:K3mMRoqD.net]
まあ C++ と比較するとおおよそ良くなってると思うが C++ で不都合なく寿命管理できる能力があるなら Rust でライフタイムを明記するのを面倒と感じることはあるだろうな。
人類は駄目なので実際には頻繁に問題を起こすという現実があるんだけどさ。 わかってても間違うのが人類。

796 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 13:50:46.98 ID:PS1jMjj+.net]
お金を賭ければ失敗することもあるけど賭けなければどうということはない
どっちも現実なんだけどリスク回避=現実逃避だと思ってるのが人類あるある

797 名前:デフォルトの名無しさん [2023/12/31(日) 14:00:16.32 ID:8Uv46fmp.net]
C++で不都合なく寿命管理出来る能力があったらライフタイム管理なんて数文字タイプが増えるだけになのでは

798 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 14:02:49.07 ID:JAX3toXP.net]
>>779
Rustで性能&安全性優位になるのは積極的にスタックに積んで参照使いまくった場合だろうけど、c++だとスマートポインタとアロケータで最適化しとけという話になるからなぁ。

どんくらい性能差あるのかわからん。

799 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 14:05:38.66 ID:K3mMRoqD.net]
>>781
出来ると思ってるが実際には出来てないって話さ

800 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 16:01:28.24 ID:r3ulhjhy.net]
もうRustじゃ無理なんだよ



801 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 17:31:22.31 ID:15iRFp/+.net]
>>784
Rustが有利という話の流れの中で唐突にRustが何か無理なことある?

802 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 18:02:32.92 ID:K3mMRoqD.net]
プログラミング出来ない人は本当に出来ない。
C++ を使えているくらいの人なら Rust を (良いと思うかどうかは別として) 真面目に学べば使いこなせるだろうけど、初心者が最初に学び始めるには全く向いてないなぁと思うくらいのハードルの高さはあると思う。

803 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 18:29:47.72 ID:15iRFp/+.net]
プログラミング出来ない人にRustはハードルが高いという主張か

804 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 19:12:47.61 ID:SnRIdEnt.net]
ゴミには何触らせてもゴミ

805 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 20:25:01.01 ID:d6XbubcX.net]
>>786
単に最近のスクリプト言語が簡単過ぎるだけだと思うけどね
ブイブイ言わせてる()モダンなスクリプト言語使いが
俺たちRustも書けるっしょwみたいなノリで挑戦して
書けなくて諦めるというのを何度も見てきた
本来プログラミングってのはこの程度は難しいものよ

806 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 20:41:56.95 ID:Asz1BteV.net]
Rustを書けず断念するような低レベルの人ならば
他の言語でもまともなプログラムは書けないと思うけどな

807 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 22:03:37.75 ID:682wQwxe.net]
バージョンおじさんの次はスクリプトコンプおじさんか

808 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 22:07:53.39 ID:fB+p+szm.net]
ライフタイムは関数に渡すときborrowするだけなら何も難しいことはないんだが型に参照を含めていろんな操作をしたり持ち回ったりし始めると複雑度が急上昇する

809 名前:デフォルトの名無しさん mailto:sage [2023/12/31(日) 22:22:03.06 ID:Asz1BteV.net]
そこは同じ
型に含まれてる参照のライフタイムがその型にも付くだけ

810 名前:デフォルトの名無しさん mailto:sage [2024/01/01(月) 00:50:09.76 ID:X6Py91w/.net]
あけましておめでとうございます
ライフタイム面倒なので捨ててstaticにしたいそんな貴方へ魔法の関数プレゼント!

fn to_static_str(input: &str) -> &'static str {
  input.to_owned().leak()
}



811 名前:デフォルトの名無しさん mailto:sage [2024/01/01(月) 19:58:44.82 ID:SMFNndU8.net]
the book で勉強中だけど覚えること多いなあ
構文を覚えるだけで70時間はかかりそう
デザインパターンの勉強は必要なさそうだけど
実践投入するには読経も20時間分ぐらい必要だろうな

812 名前:デフォルトの名無しさん mailto:sage [2024/01/01(月) 22:17:40.22 ID:nmIunYxl.net]
90時間でも約11日稼働ならオンボーディングで
極端に辛いというほどじゃなくね

813 名前:デフォルトの名無しさん mailto:sage [2024/01/01(月) 22:29:17.37 ID:pmJAVvpO.net]
>>795
Rustの構文は諸言語のバリエーション範囲内でほとんど同じ
強力なパターンマッチングとその構文が新規なくらいですぐ習得できる

814 名前:デフォルトの名無しさん [2024/01/02(火) 00:14:27.39 ID:SHn+5kOU.net]
Rustの勉強が大変なら勉強なんかせんでええ
Copilotに書かせてコンパイル通ればOKや!

815 名前:デフォルトの名無しさん mailto:sage [2024/01/02(火) 08:32:02.80 ID:xTyEZXhx.net]
copilot は予測変換の賢いやつって感じ。
個々の場面では思ったよりも賢くて使い物になるが全体を構成するのに人の思考がいらないほど、全部丸投げ出来るほどではない。
出来る人が楽をするツールであって、できない人が使ってもまともなものは作れない。

816 名前:デフォルトの名無しさん [2024/01/02(火) 22:18:53.42 ID:3cCPTdjI.net]
>>792
どっちかというとそういうもち回しによる複雑な操作するなってのがrustの思想だろ

817 名前:デフォルトの名無しさん mailto:sage [2024/01/03(水) 00:45:56.91 ID:cT5UAedN.net]
他の言語の習慣を捨てないとなかなか実践できないと思う
しばらく使ってるとRust特有のプラクティスが見えてくるけど

818 名前:デフォルトの名無しさん [2024/01/03(水) 00:58:25.14 ID:WEsHc8Hy.net]
全体を構成する部分が問題になってRustにノータイムで移行できない人間が書くスクリプト言語で書かれたプログラム、読みたくなさすぎる

819 名前:デフォルトの名無しさん mailto:sage [2024/01/03(水) 18:10:43.49 ID:AJuUFyM+.net]
VSCodeとrust-analyzerでrustを書いている人にちょっとお聞きしたいんだけど、
rustのコード補完で、必ずabc順になっちゃうんだけど
直前に使用したメソッドを優先的に上位に表示させることってできないの?
VSCodeのエディタの設定でrecently usedを設定してもabc順でしか表示さない
InteliJIdeaでは学習した結果、使用頻度の高いものを上位に表示してくれてたのに・・

820 名前:デフォルトの名無しさん [2024/01/03(水) 23:00:13.67 ID:parSgmbo.net]
質問の仕方が間違っているぞ
そういう時は「補完もまともに出来ないクソ言語」って言えば信者が頑張って探してくれる



821 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 17:30:55.33 ID:mYBU2Jpa.net]
InteliJでは出来てたって書いてあるの読めない人なのかな?
こういう人がテストケースとか書いてると思うと怖くてたまらんね

822 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 17:56:16.02 ID:dLQyUrS8.net]
>>804は頭の弱いRustアンチの人だから無視しとけ

823 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 18:21:30.81 ID:mYBU2Jpa.net]
ごめんよ
rustが難しくて理解できない可愛そうな人だったか

824 名前:デフォルトの名無しさん [2024/01/04(木) 19:32:15.16 ID:lFo5UMLf.net]
誰も問題解決出来てなくて草
マジで糞言語なのか?
VSCodeでもPythonなら出来るぞこれ

825 名前:デフォルトの名無しさん [2024/01/04(木) 20:05:26.49 ID:9Tnu7Lk1.net]
>>776
これはそう思うわ。
そこが面倒ならそもそもrust使うことが面倒だろって気にしかならん。

826 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 20:44:14.40 ID:5w1EWT82.net]
普通にバグ報告すればいいのに

827 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 20:47:26.53 ID:mYBU2Jpa.net]
>>808
あらためてVSCode再起動したら普通に直近に選択したメソッドや変数が上位に表示されるようになった
ごめんね ぺこり

ちなPythonは入れ子のループの内側から外側のbreakができないから嫌い

828 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 21:51:07.65 ID:dt0a6v34.net]
InteliJ は rust-analyzer 使ってないんじゃなかった?
開発支援機能の基盤が違えば細かい挙動が一致しないのなんて当たり前過ぎて何が言いたいのかわからない。

829 名前:デフォルトの名無しさん mailto:sage [2024/01/04(木) 22:28:32.21 ID:4GGvVaU9.net]
>>795の読経って何?

830 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 08:39:06.77 ID:wSd1e+VK.net]
>>813
https://github.com/BurntSushi
この人のリポジトリひとつ読んだら実装に移るわ



831 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 09:40:39.59 ID:K2XmLAOd.net]
Rustで書かれたLinux互換OS「Maestro」が爆誕
https://softantenna.com/blog/rust-maestro/

832 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 09:43:03.49 ID:QSnLODWj.net]
>>814
ああ、コードを読むのを読経と言ってるのか。ありがとう。

833 名前:デフォルトの名無しさん [2024/01/05(金) 13:58:06.60 ID:p8td/CWz.net]
読経なんかせんでええ
GPTに書かせろ

834 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 14:50:07.45 ID:5Ddnqo9+.net]
ソースはお経じゃねえぞ

835 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 16:26:15.51 ID:qm5+loRz.net]
写すと写経
読むと読経か

般若心経に波羅蜜多という単語が出て来る
修行の意味だが、修行を行った量という意味でもあり
英単語のparameterと同語源だという
引数か

ヤシの木palmとparameterも同語源って説がある
palmは手の平の意味だが手の指で文字を数えるとも繋がる
これがまた修行の量とか引数って概念に繋がる
またヤシの葉で分厚いパルミラヤシと呼ばれるものは経文を書くのに使われていた
経文を書いた量がまた修行のパラメーターとなった

ナツメヤシのことをdateというが日にちも数えるもの、デートも日にちを重ねて交流を深めるものとされた
ヤシの葉と修行と日にちと引数は常に数えるものとされた

一方で波羅蜜、パラミツというスイカの5倍くらいある果物もある
果実を輪切りにするとアナログ時計のように果肉が並び
時間を象徴するものだから?という話があるが、パラミツと波羅蜜多は特に関係がないという方が多い

インドにRust外注したら動くものは帰ってくるのかどうか

836 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 17:09:23.62 ID:FktlJzQH.net]
parameterのpara-はギリシア語由来の「離れている」では
parallel(平行)のpara-

837 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 19:03:58.53 ID:kJ7MyVdE.net]
>>815
爆誕出来てないじゃん。
仮に互換するにした場合、バグも再現するんかね?

838 名前:デフォルトの名無しさん [2024/01/06(土) 15:29:56.82 ID:NPThFXTg.net]
無理にひねくれたこと書かんでよろしい

839 名前:デフォルトの名無しさん mailto:sage [2024/01/07(日) 02:08:36.16 ID:eqr3i2HS.net]
rustちょっと書いたけどなんかハマらんな
つまんない
刺激が少ない
俺は別に言語に安全性なんて求めてないんだ
刺激がほしいんだ

840 名前:デフォルトの名無しさん [2024/01/07(日) 02:15:40.93 ID:k7dl9y2N.net]
>>823
お前のチームのバグ出しまくる同僚に使わせたら?



841 名前:デフォルトの名無しさん [2024/01/07(日) 02:41:23.33 ID:KA2Mqlfb.net]
プログラミングそのものに刺激を求めるんじゃない
刺激はプログラミングで実現したいものに求めろ

842 名前:デフォルトの名無しさん [2024/01/07(日) 09:36:48.73 ID:qkYZiPZe.net]
rustはコンパイラにムチを打たれながらコーディングする性癖ドM言語だよ
自身の性癖と合う言語を使ってけ

843 名前:デフォルトの名無しさん [2024/01/07(日) 15:48:04.06 ID:ujkX2rEF.net]
Rustがムチ打つかレビューでムチ打つかの違いでしかないんだよな
誰にも見せないコードなら関係ないけど

844 名前:デフォルトの名無しさん mailto:sage [2024/01/07(日) 16:53:56.32 ID:FD9BMc1I.net]
男は黙ってSegmentation Fault

845 名前:デフォルトの名無しさん [2024/01/07(日) 21:59:04.51 ID:k7dl9y2N.net]
>>827
レビューは体裁しか見ないやついるからな。内容読まないとかレビューになってねーから。
コンパイラにチェックさせたほうがマシ。

846 名前:デフォルトの名無しさん mailto:sage [2024/01/08(月) 12:20:12.43 ID:JTfbpR0w.net]
刺激ってメモリリークでクラッシュとか、ストレージフォーマットとかか?

847 名前:デフォルトの名無しさん mailto:sage [2024/01/08(月) 20:41:35.20 ID:6GvPzxXI.net]
スマートポインタについて勉強中。強い参照、弱い参照という概念が出てきて目が回る
RefCell……所有権の共有が発生する参照……参照???
言葉遊びが過ぎないか。。。

848 名前:デフォルトの名無しさん [2024/01/08(月) 21:50:36.68 ID:VjyRCTjd.net]
何書いてるかによるけど、出来ればスマートポインタ使わずに書きたい

849 名前:デフォルトの名無しさん mailto:sage [2024/01/08(月) 21:56:10.69 ID:a9mjVCEv.net]
>>831
強い参照、弱い参照はRustやC++だけでなくJavaやC#、PythonやJavaScriptでさえ出てくる一般的な概念だぞ

RefCellは所有権の共有じゃないぞ

スマートポインタや参照という言葉もRustの定義を理解した上で学ぶ必要があるんだけどちゃんとした資料で勉強してるか?

850 名前:デフォルトの名無しさん [2024/01/08(月) 22:02:17.92 ID:6GvPzxXI.net]
>>833
目が回って頭が混乱してた。Rcのことです
the bookを読んでます。英語版と日本語版を読み比べならが進めてます



851 名前:デフォルトの名無しさん [2024/01/08(月) 22:04:58.02 ID:6GvPzxXI.net]
>>832
FSTという決定木を呼び出す実装を書く予定なんだよね
どこまで既存のクレートを使えるか次第だけど。たぶんスマートポインタ必須だろうなあ……胃が重い

852 名前:デフォルトの名無しさん mailto:sage [2024/01/08(月) 22:45:23.91 ID:U+1fQP74.net]

853 名前:target="_blank">>>831
説明するのには言葉を使うしかしょうがないだろう。
それとも小難しい記号だらけの操作的意味論を読み解くほうがマシとでもいうか?
[]
[ここ壊れてます]

854 名前:デフォルトの名無しさん mailto:sage [2024/01/08(月) 22:56:58.99 ID:DdO69zqE.net]
>>835
まず前提環境が重要になる
たとえば並行はあるのか?並列はあるのか?両方あるのか?
あるとしても共有が必要なそれらの範囲はどこまでなのか?
それとは別の話で参照の共有と所有権の共有についても前者だけで済むのか後者も必要なのか?
など

855 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 00:03:40.70 ID:8DV95bbu.net]
>>835
木構造は普通にポインタ使うと地獄だよ
Nodeにポインタを持たせる実装ならRefCellとRcとOptionの組み合わせでゴニョゴニョやることになる

856 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 00:15:41.68 ID:nS4EcHpr.net]
配列にどんどん詰め込んでいって
ポインタのかわりにインデックスで管理するという方法も取れなくはない。
Rust で参照の取り扱いが面倒くさくなったときは割とよく使われる。

857 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 00:41:55.42 ID:p6fXuzFt.net]
Rustだから面倒になるのではなく
同じ方針ならばC/C++でも同じようになる
そしてどの言語でも同じく色んな方針を取ることができる
たとえばプログラム終了まであるメモリを解放しない&しなくてよい状況と方針ならば
CだけでなくRustでもそのようにプログラミングすることで簡単になる

858 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 00:48:52.81 ID:71QF1ibn.net]
Array/VecとMapでやる方が普通

てかスマートポインタで胃が重いとか言ってる人にFST実装させようとするのはどうなのか
学生さんの宿題ならいいんだけど

859 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 13:46:52.23 ID:cAvIdAYQ.net]
>>815
windowsこそrustで書き直して欲しい

860 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 14:29:03.17 ID:ZeSQ9HCg.net]
いやWindowsは消滅してくれ
Windowsのパス区切り文字がバックスラッシュだと面倒くさいんだよ
いつになったら他のOSのようにスラッシュになるんだ



861 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 14:42:13.51 ID:W90zSzbf.net]
そこでいまどき困るか?
ライブラリで吸収してくれるだろ

862 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 15:03:46.95 ID:mDjH0FU9.net]
困るのはそんなポイントではないわな

863 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 15:51:14.16 ID:LmJT0Ko+.net]
UNIX
https://learn.microsoft.com/ja-jp/cpp/c-runtime-library/unix

プログラムを UNIX に移植する場合は、次のガイドラインに従ってください。

・引数としてパスとファイル名を表す文字列を実行するルーチンでは、UNIX と互換性のあるパス区切り記号を使用します。 UNIX は、この目的でスラッシュ (/) のみをサポートしますが、Win32 オペレーティング システムでは、円記号 (\) とスラッシュ (/) の両方をサポートします。

864 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 16:00:24.31 ID:OfKvL6VZ.net]
WindowsはWSL2のおかげで立ち位置を少し取り戻した感ある
Docker×WSL最強なんだ

865 名前:デフォルトの名無しさん [2024/01/09(火) 16:26:04.96 ID:dEgljR3a.net]
Rustを学習していてよくわかんないんだけど、なんで&mut演算子って=の右側に書くの?
演算子を分けて&を右でmutを左にすべきことじゃないのか

866 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 16:31:10.75 ID:T7+wXIHZ.net]
>>848
変数がmutなのと参照がmutなのと意味が違うでしょ

867 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 16:38:48.96 ID:7APTEGxI.net]
不変なT型 T
不変な不変参照 &T
不変な可変参照 &mut T

可変なT型 mut T
可変な不変参照 mut &T
可変な可変参照 mut &mut T

868 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 16:51:10.28 ID:/HMizx3H.net]
それ複オジがよく書いてたやつだけど
そうやって書くと型の違いと変数のmutabilityの違いを混同しちゃうから良くないんだよね

869 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 16:57:39.62 ID:FRUFivso.net]
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
}

870 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 17:54:54.96 ID:yDV9ZPsZ.net]
>>815
先にfirefox互換のブラウザをRustで作れよ



871 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 20:29:20.32 ID:OfKvL6VZ.net]
>>815
ついにRustで書き切ったカーネルが出たか
素晴らしい😎

872 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 21:43:46.90 ID:ba97u6j0.net]
JythonみたいにRinuxとか呼ばれる様になるんかね

873 名前:デフォルトの名無しさん [2024/01/09(火) 23:30:54.91 ID:kFOi0b9p.net]
>>847
わかる

874 名前:デフォルトの名無しさん [2024/01/09(火) 23:33:35.76 ID:kFOi0b9p.net]
>>850
>可変な不変参照 mut &T
>可変な可変参照 mut &mut T

そこは
mut& T
mut& mut T
のほうが良くないか?

875 名前:デフォルトの名無しさん mailto:sage [2024/01/09(火) 23:44:10.92 ID:VWF/HjAU.net]
>>857
なんでmut& Tやmut& mut Tのほうがいいと思うの?

876 名前:デフォルトの名無しさん mailto:sage [2024/01/10(水) 00:26:25.61 ID:50jzIioV.net]
変数は不変 参照先も不変
【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 = ...

877 名前:デフォルトの名無しさん mailto:sage [2024/01/15(月) 07:32:23.77 ID:GWa8/EJ0.net]
プログラミングをしていて最も出現頻度が高いのがその4つのうちこのパターンだな

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

したがって可変部分のみmutを付加するRust方式が理に適っている

878 名前:デフォルトの名無しさん mailto:sage [2024/01/15(月) 09:26:21.36 ID:87NFfbL3.net]
C/C++のconstとRustのletを対比するなよ
コンパイル時の定数と変数は違うから

879 名前:デフォルトの名無しさん mailto:sage [2024/01/15(月) 10:46:44.96 ID:6ZDKWey9.net]
C/C++のconstはコンパイル時の定数とは限らない

> 変数は不変 参照先も不変
C++はconst int*で定義した変数経由では参照先を変更出来なくても他から参照先が変更されることがあるので「参照先が不変」とは言えない

880 名前:デフォルトの名無しさん mailto:sage [2024/01/15(月) 11:01:12.76 ID:AliX8x8r.net]
>>861
コンパイル時の定数は
Rustではconst
C/C++ではconstexpr



881 名前:デフォルトの名無しさん mailto:sage [2024/01/15(月) 11:06:03.10 ID:YtourOsv.net]
C/C++のconstはコンパイル時の定数となることもあるのがややこしいところ
constexprはそれを矯正するもの

1対1の単純な比較では抜け落ちるものが多すぎる

882 名前:デフォルトの名無しさん mailto:sage [2024/01/15(月) 18:27:24.64 ID:8IhMbXbn.net]
イミュータブルの観点でこの対応は合ってる。
Rust: let foo: &i32 = ...
C++: const int* const foo = ...
ただし違いとしては、
Rustではfooが生きている間は参照先が(内部可変性を除いて)真に書き変わらない保証がある点が異なる。

883 名前:デフォルトの名無しさん mailto:sage [2024/01/17(水) 18:48:37.40 ID:6S0S7+zy.net]
この件はC++と比較しても刺激が少ない
mutがない関数型言語と比較するほうがいい

884 名前:デフォルトの名無しさん mailto:sage [2024/01/17(水) 19:39:11.45 ID:gS91WelD.net]
ミュータブルを無くすと美しく見える反面
ガベージコレクションが多数発生し効率が悪くなる
アルゴリズムも制約を受けてしまい効率が悪くなる

885 名前:デフォルトの名無しさん mailto:sage [2024/01/17(水) 19:42:50.91 ID:NPS8JVAZ.net]
Linuxカーネルについに実用的なコードが
マージされたと話題になってるな

886 名前:デフォルトの名無しさん mailto:sage [2024/01/17(水) 20:07:47.38 ID:ouelKdFS.net]
>>868
新規追加するドライバにだけ採用とか前に言ってなかったっけ?

887 名前:デフォルトの名無しさん mailto:sage [2024/01/17(水) 21:08:18.79 ID:6S0S7+zy.net]
>>867
ガベコレが多数発生することをRust風に言うと、
実行時の参照カウントが激しく増減する

888 名前:デフォルトの名無しさん mailto:sage [2024/01/17(水) 21:16:06.79 ID:gS91WelD.net]
>>870
ミュータブルがない関数型言語との比較の話だから
ミュータブル非導入で起きていることは使い捨て一時ガベージの大量発生

889 名前:デフォルトの名無しさん mailto:sage [2024/01/17(水) 23:31:19.01 ID:6S0S7+zy.net]
cloneに似た処理をしてからオリジナルをdropするんだよね

890 名前:デフォルトの名無しさん mailto:sage [2024/01/18(木) 04:18:08.52 ID:p4+mv2Ay.net]
RustはカーネルやOSコアの開発で存分に活躍してくれ🙏



891 名前:デフォルトの名無しさん mailto:sage [2024/01/18(木) 06:21:12.49 ID:vxth9lRp.net]
ぺたんこおっぱい
ぽっこりおなか
つるつるわれめ

892 名前:デフォルトの名無しさん [2024/01/19(金) 01:46:37.00 ID:qsekRxP5.net]
プログラミング言語利用実態調査でRustが急落
https://www.nikkei.com/article/DGXZQOUC223M10S3A221C2000000/

893 名前:デフォルトの名無しさん [2024/01/19(金) 08:43:59.73 ID:q7Fi5Auv.net]
>>875
それ日本だけのアンケートじゃん

894 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 08:55:08.16 ID:v7odrc0V.net]
登録が必要な記事貼るとか

895 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 10:17:52.92 ID:9hGbEahh.net]
>>875
日本でもクソ言語ってバレ始めてるなw

896 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 10:49:32.99 ID:Z0EBK6tx.net]
そもそもrustを使う場面があるか?って話
wasmは始まる前からオワコンだし、組み込みシステム開発してる人なんて割合で見ればプログラマの中でごく一部だし

897 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 11:13:07.05 ID:vjpbBz8R.net]
>>879
ごく一部だというのが仮に事実だとしても、少ないからって要らないってわけでもないだろ。
そこそこの規模だと C よりは Rust のほうがいいわ。

898 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 11:19:17.56 ID:EYCY+PGA.net]
>>875
ちゃんとリンク貼れ無能

スキルアップしたい言語はPythonとJavaScript、不動の不人気言語はCOBOL
安藤 正芳 日経クロステック/日経コンピュータ
https://xtech.nikkei.com/atcl/nxt/column/18/02670/112900003/

899 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 11:27:47.52 ID:uugkJRQ7.net]
「実際に仕事で使われているプログラミング言語」(2023)
https://qiita.com/mmake/items/b346cb32ccc3bcb5d03f

日本でのRustの使用実態が全く見られないの笑えるな

900 名前:デフォルトの名無しさん [2024/01/19(金) 11:34:00.68 ID:EoDClT2o.net]
Rustは業務で使用する言語ではない



901 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 11:36:55.28 ID:arzVgFZ3.net]
使われてる言語ランキング見てると、CやC++、Rustみたいな組み込み開発用言語は全体から見ればもはやプログラミングの中でもマニアックな分類なんやね
ブログラマといえばWebサービス関連の人ってイメージになっちゃった

902 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 11:48:30.00 ID:vjpbBz8R.net]
とはいえそれを支えるホスト環境 (OS) や処理系は大抵の場合に C とかで書かれてるんだけどな。

903 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 11:49:23.47 ID:pW7O4nZv.net]
RustがC/C++の代わりになるのは間違いないのだけれどね
富士通さんはRustの普及をもっと頑張ってくれよ

904 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 12:01:24.14 ID:pW7O4nZv.net]
>>885
C/C++からRustへの書き換え作業は大変だからね
脆弱性の解消のために徐々にRustへの置き換えが進んでるから2030年頃にはだいぶ完了してるっしょ

905 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 12:05:10.29 ID:pW7O4nZv.net]
有名どころだと
ProssimoがsudoやzlibのRust実装を頑張ってるよね
https://github.com/memorysafety

906 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 12:05:22.87 ID:vjpbBz8R.net]
デバイスドライバとかは C のほうが楽だけど
言語処理系くらいのレイヤだと大部分は Rust で書いたほうが楽そうだなーとは思う。

907 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 12:26:38.25 ID:CZFLW0PQ.net]
そろそろ実装に入れそうだけど。Rustを勉強したことを少し後悔ぎみ
オブジェクト指向言語しか触ったことなかったから取得するのにガチで一ヶ月(130時間)かかった
chatgptに聞いた感じだと、これでも割と早い方らしい。おとなしくC/C++を使えばよかった

908 名前:デフォルトの名無しさん [2024/01/19(金) 12:33:55.04 ID:3hcnICbb.net]
【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

ボイス・トォ・スカルのコアプログラムの一部は上記を統合している

909 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 13:26:04.84 ID:eEzmAF9q.net]
>>890
130時間はサンクコストなので0時間の時点における正解は現時点でも正解
ってAIは教えてくれなかったの?

910 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 13:41:00.69 ID:CZFLW0PQ.net]
C/C++, java, pythonの経験があるから、Rustを取得するのに50時間かからないだろうと思ってた時期が僕にもありました
ヌルポが怖いからRustを使うけど……歯を食いしばって捻出した130時間を投資回収できるかは神のみぞ知る



911 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 13:47:10.87 ID:vjpbBz8R.net]
C/C++ の経験があってそんなに時間かかるか?
「習得」というのがどの程度の基準で見るかにもよるけど
いわゆる the book を一通り読んだ後なら
コンパイラがあまり助けてくれないところ (unsafe) を除けば
マニュアルを見ながら書けばだいたいなんとかなる程度には使えそうなもんだと思うんだが。

912 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 13:56:01.98 ID:arzVgFZ3.net]
C/C++を適当にやってたせいでRustでつまづくってのはありそう

913 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 14:12:09.59 ID:CZFLW0PQ.net]
>>894
最近はpythonで仕事する機会が多くて、C/C++を4年ほど触ってなかったのと、
仕事の後に疲れた頭で勉強したから体力的にキツかったのと。。。
the bookを読むだけで90時間はかかったわ。検索モジュールを開発しようと思ってるんだけど
いきなり実装に入るより読経した方がマシな感じで、regexのコードを読んでる
既に10時間読経に捧げて、あと10時間は追加の読経が必要な感じ
この後、形態素解析エンジンのコードも読む必要があるから、追加で20時間はお勉強する予定であわせて130時間
……重いです

914 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 14:23:24.55 ID:arzVgFZ3.net]
>>896
おつかれよくがんばった

915 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 14:50:46.17 ID:tvouuqwU.net]
>>896
the bookでの90時間の中身がわからないので何とも言えないかな
bookだけを読んだのか
それともdocsやreferenceと行き来して読んだのか
サンプルコードくらいのことを書けるようになっただけなのか
それとも各機構や機能を本質的に理解したのでdocsなど見ればbookに書かれてないことも書けるようになったのか
などピンキリだよね

916 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 15:08:45.88 ID:IG9zAVYP.net]
>>890
一般的にですが、
自分が使いたい新たな言語の学習で、辛いとかキツいとか後悔とか感じる人はプログラマーに向いていません。
プログラマーに向いてる人たちにとっては、新たな学習や会得はワクワク楽しくてその時間を後悔することもありません。

917 名前:デフォルトの名無しさん [2024/01/19(金) 15:23:39.42 ID:w30sYh7E.net]
>>899
禿同だな

918 名前:デフォルトの名無しさん [2024/01/19(金) 15:25:17.10 ID:1KLWZB9m.net]
件の人は質問がどれもバカっぽかったから習得からは程遠い印象

919 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 16:19:14.85 ID:vjpbBz8R.net]
Rust の個々の機能が難しいとは感じないけど
綺麗に噛み合うように全体を設計するのは C++ とは違う感覚が要るから
大きいプログラムを綺麗に設計しようとしたら最初はしんどいかも。
ボトムアップ的なスタイルで書いていくのをオススメする。

920 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 16:39:45.44 ID:8qrrLmZj.net]
逆かな
みんなリファクタリングが機能しないからRustだとボトムアップじゃだめだと分かっかんだよ



921 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 16:40:26.29 ID:Rx8gKVuk.net]
the book自体の難しさがあるというか

922 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 17:22:29.33 ID:5TL7zSTv.net]
the bookを頭から読むやつなんているんだ
大してわかりやすくもないし
説明が冗長な感じだからChatGPT使った方が良いぞ

923 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 17:23:51.53 ID:vjpbBz8R.net]
初心者にとって知らんことが書いてあるんだからそんなにスラスラとは読めないのは当たり前だし、文章自体に問題があるようには感じないな。
改善すべき点がゼロなわけではないが、少なくとも C++ を分かっているくらいの人が最初に読むには十分すぎるほどに良書じゃないの。

924 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 17:34:10.12 ID:vjpbBz8R.net]
説明対象がもつ難易度より分かりやすい説明があったとしたらその説明は嘘であるか不足しているってことだ。
本来の難易度は後にならないと分からないから学習者本人には見分けられない。

925 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 17:55:40.81 ID:88sLHWJm.net]
ガリ勉完璧主義者ほど隅から隅まで理解しようとするけど
要領よくChatGPTを使いこなすチャラ男に天然GPTとしてカモられている

926 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 18:00:19.70 ID:88sLHWJm.net]
天然GPT本人はマウントして気持ち良くなりたいから他のみんなと勉強会じゃなくて家でガリ勉なんだ

927 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 18:05:32.43 ID:5TL7zSTv.net]
作りたいものを決めてそれを実現するための知識をChatGPTで調べるというやり方のほうがはるかに効率が良いよ
多少間違ったこと教えてきたり
古かったりするけどそれはもう気にしてたら仕方がないので
無視してどんどん手を動かすほうが良い

928 名前:デフォルトの名無しさん [2024/01/19(金) 18:15:21.92 ID:1hwMDgMT.net]
The Bookは簡潔にまとめるために説明をやや端折り気味
書いてる内容自体が難しいわけじゃないけど深い理解には至らないから腹落ち感を得にくい

あんまり期待しすぎず無料で読める基本チュートリアルとして捉えておくべき

929 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 18:26:39.26 ID:OWRF5bQs.net]
ところでこのスレには組み込み開発でRustを使ってる人はいるの?

930 名前:デフォルトの名無しさん [2024/01/19(金) 18:38:50.67 ID:5qNxVIXw.net]
組み込みは頭おじいちゃんが支配してるからRust使える人いないよ



931 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 18:49:19.87 ID:AbS8PLZw.net]
そう組み込みも重要な分野だから、これにRustが皆無な時点で大手では大々的に採用されていないって事、せいぜい窓際
「実際に仕事で使われているプログラミング言語」(2023)
https://qiita.com/mmake/items/b346cb32ccc3bcb5d03f

932 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 18:52:09.31 ID:wGMq60ju.net]
そうだ窓際追い出し目的でおじいちゃんにRustやらよう

933 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 18:53:27.57 ID:wGMq60ju.net]
そうだ窓際追い出し目的でおじいちゃんにRustやらせよう
本当にあるな

934 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 18:54:40.94 ID:75Zji/CQ.net]
今時の組み込みって何使ってるんだろ?

935 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 18:55:15.30 ID:Nlxayr7x.net]
>>903
Rustでもリファクタリング前提で書き始めるのがいいよ
早すぎる構造決め打ちや早すぎる最適化などはせずリファクタリングで対応

936 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 19:00:48.51 ID:SK8TlxrV.net]
>>899
んなアホな。
一般的というなら「石の上にも三年」とも「下手の横好き」とも言うから、嫌いだからと言って不向きとは言えない。

937 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 19:08:03.87 ID:pqBZI8v7.net]
格言おじいちゃん、窓際組み込み?

938 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 19:08:58.61 ID:pqBZI8v7.net]
格言は説得力とは真逆だと思うの

939 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 19:10:50.73 ID:+7/a4sFt.net]
自分がこうだから他人もこうあれ
って考えは時代にそぐわない老害感がある

940 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 19:11:44.46 ID:pqBZI8v7.net]
論理的でもなく屁理屈にも劣ります



941 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 19:12:08.48 ID:SK8TlxrV.net]
>>896
Rustは絶壁の学習曲線だから、段階的な学習は難しい。少なくともスタックフレームの動きを意識できないとキツイと思う。

Rustを使った開発も、小さく始める段階的開発とかきついんじゃない?ひたすらスクラップ&ビルド繰り返しそう。

942 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 20:04:18.16 ID:U1u9K+K0.net]
>>924
スタックフレームはコンピュータの基礎知識であってC言語でも必須でありそれをRustの問題にする人はいない
段階的開発がキツいという主張もそんなことはなく根拠もない

943 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 21:01:18.97 ID:vjpbBz8R.net]
全体を綺麗に構成することはしづらくても小さなモジュール単位でならそれなりに構成できるからそれを繰り返せばいい。
全体の構成を考えてから作るよりは汚いだろうけど、綺麗な全体の構成を考えるなんていう出来もしないことをやるよりはそういうボトムアップ方式のほうが少なくとも途中まではまあまあに出来る。

もちろんちゃんと全部をまともに構成できるだけの能力を身に付けられるならそれに越したことはないよ。
でも実際問題として初心者にはできないじゃんと思ったからボトムアップ方式のほうが(初心者の内は)よさそうと考えてる。

944 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 21:22:17.40 ID:U1u9K+K0.net]
他の言語と同じ
そこにRust固有の問題はないな

945 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 22:20:52.17 ID:5TL7zSTv.net]
>>924
意識するのはヒープじゃないか?
スタックフレームは解放されるんだから意識しないで良いんだぞ

946 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 22:39:11.81 ID:vjpbBz8R.net]
変数の寿命と連動するから意識するよ。
C/C++ の世界だと当たり前のことだから意識してる自覚すらないレベルで自然に考えてるけど。

947 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 22:39:43.86 ID:eEzmAF9q.net]
人格をもたない書物は効率が悪いという風潮は面白い
人格がなければ報酬とか私刑とかができないってことだろうか

948 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 22:43:52.06 ID:Hr4uH45j.net]
進行が早くなったのでいつもの
次スレはなしで既存のワッチョイスレにしよう
過疎るのは既定路線なので頃合いでしょ

949 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 23:05:04.70 ID:Rx8gKVuk.net]
「スタックフレームを意識する」というのはどの程度を指してるんだろう。
どれがスタックに積まれるかとどうスタックに積まれるかは違うわけで。

950 名前:デフォルトの名無しさん [2024/01/19(金) 23:24:13.49 ID:LbAGY+B7.net]
>>924
スタックフレームの動きってプログラミング初心者でも何の問題もなく理解できるやろ
学習曲線めちゃ緩やかじゃん



951 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 23:35:33.58 ID:QqY+6sl7.net]
オラから『Rustの練習帳』って新刊が出るんだね
タイトルがエモい

952 名前:デフォルトの名無しさん mailto:sage [2024/01/19(金) 23:44:43.13 ID:NtpPLEep.net]
ワクワクすっぞ

953 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 00:29:37.21 ID:zhjwtCng.net]
オライリーをオラと略す人は初めて見た

954 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 00:46:25.56 ID:B5JkVzvF.net]
そう?
オラの村では普通だでね

955 名前:デフォルトの名無しさん [2024/01/20(土) 01:10:08.13 ID:ppE6WkEJ.net]
都会は進んでるなあー

956 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 01:16:50.20 ID:zhjwtCng.net]
ミスチルはわかるんだ
ミスター・チルドレンは長いから
サザンもサザンオールスターズは長いからわかる
マクドもマクドナルドは長いからギリわかる

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

ま、どうでもいいんだがな

957 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 01:51:39.52 ID:HZE0SdTu.net]
スクリプト言語出身者が増えたせいだよ
スタックフレームやヒープなんてCSやってりゃ習うでしょ
コンパイラかコンピュータアーキテクチャでやる
スクリプト言語はスタックフレームの開放も全てGCがやることになるから
全く意識しないんだよな

958 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 01:55:10.81 ID:ppE6WkEJ.net]
スクリプト言語に限らず、C/C++を書かなければそこら辺に気を使う機会はないよ

959 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 07:57:38.44 ID:lqSANakz.net]
>>937
公式にオラの村ってのがあるよね

960 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 08:33:10.42 ID:QXcnqV7m.net]
GCありでパフォーマンスも関係ないなら、スコープだけ気にしていれば困らないしね。



961 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 08:49:07.11 ID:G76ZEaWY.net]
>>939
マクドじゃなくてマックね

962 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 09:18:20.17 ID:viZi/CYZ.net]
webサービスまわりは全部スクリプト言語かGCランタイム付き言語だもんなあ

963 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 11:01:53.93 ID:ppE6WkEJ.net]
最近は組み込みもC/C++を使う理由がないことが多い

964 名前:デフォルトの名無しさん [2024/01/20(土) 11:38:27.03 ID:lE+lj03S.net]
オラは「Rust for Rustaceans」の訳書出さないな
本格的にRustやるなら必読書なんだけどな

965 名前:デフォルトの名無しさん [2024/01/20(土) 11:42:02.65 ID:o5qofGYG.net]
スクリプト言語はともかく静的にコンパイルする言語ならGC言語でもスタック/ヒープは意識するけどね

966 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 12:07:36.77 ID:KBzblFQB.net]
>>945
CPU時間(ミリ秒)あたりで課金されるからこそのRustだよ

967 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 12:23:09.39 ID:+uoYRouQ.net]
オンプレミスでも同じ
Rustで書くかスクリプト言語で書くかでサーバーやメモリの必要量が何倍も変わる
電気代も節約できRustはエコにも貢献

968 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 12:30:18.74 ID:KBzblFQB.net]
そう、CO2排出量を考えたら、Rust以外で書くのは社会にとっての悪

969 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 12:33:36.69 ID:wJQgtkwZ.net]
昔は全体の性能に余裕があって I/O (ストレージと通信) が極端に足を引っ張る状況だったから言語処理系の動作速度は問題にならなかったけど今は全ての性能をギリギリまで絞り出す勝負に変わってる感じだね。

970 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 12:46:54.29 ID:+pH1NoHl.net]
Rust言語は
・タイプセーフ、メモリセーフによる高い安全性
・並列プログラミング処理設計
・ガベージコレクタのようなランタイム無しに動作
だから、これらを活かせる製品に採用したらいいんじゃないかな
いまどきそんなのは組み込みロボットとかカーネルやエンコーダデコーダくらいしかないような気がするけど



971 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 12:56:12.54 ID:UT8XEnd7.net]
>>953
その条件ならウェブに向いてるね
そして実際に使われてるね

972 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 13:15:54.83 ID:KWXCbsaH.net]
ウェブっていうかwasmじゃね?
rustじゃないけどffmpegのwasm実装は使ったことある

973 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 13:17:39.73 ID:NDqmkpk/.net]
>>954
Webって言っても大規模なユーザーがいるようなものじゃない?

大した事無いサービスで、スペック高い人が必要なRustはまだまだ辛い気がする。Javascript並みに誰でも使えますって世の中になったらRust一択でも良いのかもしれないけれど。

974 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 13:22:10.20 ID:KBzblFQB.net]
AWSもGCPもサーバーレス環境とかのランタイムや下周りがだいたいRustで書いてある

975 名前:デフォルトの名無しさん [2024/01/20(土) 13:22:24.95 ID:lxegQoou.net]
CO2排出量は難しいな
Rust書けない人間がCO2排出するだけのうんこ生産機になってしまうのもあんまエコじゃない気がする

976 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 13:24:24.78 ID:tKcafxZR.net]
actix-webはどうなん?自分はよく知らんのだが使ってる人いるんけ?

977 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 13:24:56.70 ID:NDqmkpk/.net]
>>958
そんなこと言ってると、Rustへのリスキリング時のco2排出量もRustのコストって言われちゃうぞ。

978 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 13:27:59.09 ID:KBzblFQB.net]
CO2排出量を考えて、コンパイル中は息を止めている

979 名前:デフォルトの名無しさん [2024/01/20(土) 13:34:01.02 ID:vYJJrZqN.net]
JavaがOracle事件で終わって脱SpringでRustのActixがついに普及するかなと思ったらC#のASP.NETにみんな行っちゃった

980 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 13:39:08.81 ID:tKcafxZR.net]
>>962
そうなんか…



981 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 13:57:32.93 ID:ngmk9luX.net]
Javaが脱Springなんて馬鹿げた事言い出してるのかと見間違えたが
脱Javaの話か

Rustは学習コスト高いからJavaでやってた様な大人数プロジェクトには向かんだろう

982 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 14:59:14.28 ID:ppE6WkEJ.net]
みんな経済合理性でRustを選択するんだよな

983 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 15:49:27.64 ID:w9m16ZcP.net]
>>952
特に機械学習ではその方向が顕著
MLIRみたいにSIMDやGPUを使う前提でIRが設計されてる

Node.jsが切り開いた非同期IOの登場もでかい
これによってIOの比重が高いプログラムでもIO待ちがなくなり
さらにマルチコア、GPUを活かせる環境が整った

一方Rustはtokioなどの非同期IOを実現できるフレームワークが山のようにある
さらにSIMD命令を直接使える仕様も整備されてきている
(LLVMの最適化によって勝手に使われることも多いが)
マルチスレッドは言わずもがな
他の言語でこれらを全てサポートしている言語はない

現在の最先端の環境を活かせる言語は他に選択肢がない <

984 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 16:00:45.48 ID:tKcafxZR.net]
RustのWebアプリケーションは未履修だけどぜひやりたいなあ

985 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 18:46:27.21 ID:PTOG17pe.net]
>>954
Webで使うにはTokioなどの重量級ランタイムが必要
ただ利用するだけなら難しくはないけどエコシステム含めそこまで安定しているものじゃないのでランタイム含め自力で修正できる力が必須

986 名前:デフォルトの名無しさん [2024/01/20(土) 18:55:33.87 ID:I+Fu8n3P.net]
>>964
90年代後半にコボラーがJavaでWebアプリを作れるようになるための学習コストに比べればRustの学習コストは断然低い

987 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 19:12:06.87 ID:6DBgVQg4.net]
>>969
その時期にいた純粋コボラーって定年間際のジジイじゃん。そりゃ学習コスト高いわ。

988 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 19:21:51.44 ID:w9m16ZcP.net]
httpclientもそれぞれのイベントループに対応したものをつかわないとダメだから割と面倒なんだよね
使い方もフレームワークによってかなりクセが違っていて面倒だし
ぶっちゃけWebはGoやpythonでいいんじゃねーかって思う

989 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 19:26:03.92 ID:tKcafxZR.net]
Goでいいは分かる

990 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 19:56:32.80 ID:k6CjZuQW.net]
Go のランタイムサポートは分厚めだがどうせ要るもの(やること)と考えればそんなに速度的に不利なわけではないよな。



991 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 20:11:15.24 ID:u/fg5YR1.net]
速度的にはGoで十分なんだけど型とか貧弱すぎるんだよな…
sumタイプとパターンマッチくらいは欲しい

992 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 20:17:19.49 ID:tNrs3Odf.net]
>>968
tokioは他言語と比べて大きくない
そして安定している

>>971
各言語に複数のイベントループライブラリがあってその通りだが
Rustはデファクトスタンダードがあるためそこで困ることはない

993 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 21:17:45.54 ID:w9m16ZcP.net]
>>975
いやデファクトがあるのは良いけど
例えばコマンド実行1つとっても
tokio::process::commandとか使わなきゃいけなくてなんだかなあと
非同期版じゃないのと区別しなきゃいけなくて嫌気が刺す
まあpythonもasync使えば同じことなのだけど

994 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 21:24:03.71 ID:w9m16ZcP.net]
まあ俺はRust信者だから使うのだけど普通の人はなかなか辛いんじゃないかなーと
その点Goは何も考えなくて良いしpythonもasync使わなけりゃ同期的に書けるし

995 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 21:48:04.29 ID:USm4U3n4.net]
>>976
PythonもasyncはそうだしJavaScript(Node)も同期execと非同期exec分かれているし
動作が異なるのだから別になるのは当たり前

もちろんRustでも同様で
そもそも関数の返り値が異なる
だから関数が分かれているのは正しい
したがって一番下位のライブラリが別であることに何ら問題はない

一方で中位ライブラリ作成側の視点に立つと
同期か非同期かだけの違いでasync/awitを除いて全く同じ構造の関数を作ることになる
そのため『?async』キーワードによるジェネリック化がRustでは進められている
期待しているのはこの話でよいのか?

996 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 23:05:04.71 ID:w9m16ZcP.net]
>>978
いや見た目は似ててもpythonとはだいぶ違うよ
まずpythonでのasync defは単なるコルーチンオブジェクトなので非同期とか関係ない
これにより恐ろしい柔軟性を持ってる
さらにWebにおいてはASGIという非同期Webフレームワークが満たすべき仕様をまず決めた
その仕様を満たしさえすればどのような実装でも非同期の機能を満たせるような仕様となっている
そこにはもうイベントループなどの概念は消え去っている
さらに同期版と同居できる仕様となっている
なのでdjangoなどは同期版と非同期版の切り替えが可能となっている
このように明らかにユーザーフレンドリーな姿勢を貫いている

997 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 23:17:14.31 ID:wyzQTwgG.net]
>>979
Rustのasyncもコルーチンだぞ
まずは理解してから出直して来い

998 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 23:26:48.19 ID:HZE0SdTu.net]
>>980
コルーチンではないでしょ

999 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 23:49:39.00 ID:nUH4CzWh.net]
Rustのasyncはstackless croutineでstate machineとなっている
個別stackのresouceもswitchingも不要なため軽くて有利

1000 名前:デフォルトの名無しさん mailto:sage [2024/01/20(土) 23:50:29.43 ID:u/fg5YR1.net]
Rustのasyncは(スタックレス)コルーチンである
Rustのasyncは(スタックフル)コルーチンではない
どっちも正しいとは思うけど



1001 名前:デフォルトの名無しさん [2024/01/21(日) 10:13:23.50 ID:VnWGTEfZ.net]
>>977
Rustが活きるのってやっぱり軍事系じゃないかな
兵器の制御とかGCなんてもってのほかだし速度も必要
メモリリークも起こせない

1002 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 11:18:24.63 ID:JCOE1HZY.net]
DAD御用達?

1003 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 11:24:54.33 ID:8LqvrPkW.net]
物理攻撃にソフトウェアを活用するってある意味「お花畑」だよな

1004 名前:デフォルトの名無しさん [2024/01/21(日) 11:29:12.59 ID:7K9itJgV.net]
パパ活か?DoDだろ
DoD御用達はAdaだぞ

1005 名前:デフォルトの名無しさん [2024/01/21(日) 11:46:34.67 ID:VnWGTEfZ.net]
やっぱりAdaしかないか
プリプロセッサ使うのもNGだからマクロがダメなんかな

1006 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 11:59:39.08 ID:dFB+Bg2+.net]
とはいえF-35はC++だったんだし、そのうちRust採用されてもおかしくはないけどな

1007 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 12:09:12.81 ID:4CYZ0hXB.net]
The Book読んでコード打ち込んだりしたが理解できた気がしない
次はどうすればいいの

1008 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 13:24:30.49 ID:8LqvrPkW.net]
仕様の次は実装とか
いま極端なところにいる奴は次はもう一方の極端に行けばいいし
ちょうどいい位置にいる奴は一生そこに居続ければいいのでは?

1009 名前:デフォルトの名無しさん [2024/01/21(日) 14:20:11.30 ID:sCtD39A+.net]
>>990
理解できてないと感じるのがunsafeやasyncやマクロ辺りならそこは一旦放置して小さいCLIツールをいくつか書いて実践経験を一度積むほうがいいかもしれない

逆にownership/reference/lifetime/generic/traitといったコアなところが理解できてないと感じるならオライリー本など別の入門書をすすめる

1010 名前:デフォルトの名無しさん [2024/01/21(日) 15:14:08.20 ID:eSjvKxMy.net]
>>989
Rustは使われない
ISOプロセスは産業界の評価が高い



1011 名前:デフォルトの名無しさん [2024/01/21(日) 15:15:15.91 ID:eSjvKxMy.net]
F-15は50年以上空を飛んでいることを思い出してほしい
Rustは50年後存在しない

1012 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 15:44:39.63 ID:cX88PWDV.net]
>>993
Rustのスポンサー欄を見ればわかるけど将来Rustが使われるのは確定されたことだぞ
アンチさんどんまい

1013 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 15:46:08.09 ID:4rk7TZPC.net]
統計学的に会社や国家、生物種の存続見込みを解析した例を見たことが有るな。
これまでの歴史が長いものはこれからも長く続く可能性が高い。

1014 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 15:50:57.32 ID:eziZnnQK.net]
>>996
Javaみたいにホストがアホなことするとすぐ廃れるけどな

1015 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 16:55:47.23 ID:4CYZ0hXB.net]
>>992
ありがと

1016 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 19:43:22.00 ID:/dcZ0aWP.net]
次スレ
Rust part22
https://mevius.5ch.net/test/read.cgi/tech/1705760500/

1017 名前:デフォルトの名無しさん mailto:sage [2024/01/21(日) 20:22:28.74 ID:mpR7a4j6.net]
>>994
C++みたいに、色々な実装がでてくれは、50年後にも生きてるんじゃない?

1018 名前:1001 [Over 1000 Thread ID:Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 158日 21時間 57分 50秒

1019 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef