公式
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/
探検
Rust part21
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2023/08/15(火) 22:24:39.45ID:xzxy4cgp2023/08/15(火) 22:25:26.48ID:6mJ3MaUL
なんか埋めちゃったので建てた
2023/08/15(火) 22:33:01.40ID:UyhNItTq
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/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
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/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
2023/08/15(火) 22:36:07.33ID:UyhNItTq
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/
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/
2023/08/15(火) 23:05:42.66ID:p9PV6jOQ
同じドメイン内の資料を個々に列挙する必要はなさそうな気がするが
2023/08/15(火) 23:11:13.20ID:2JG3bBzc
7デフォルトの名無しさん
2023/08/15(火) 23:15:53.78ID:/RhbmbFi 某オジが健在なうちはなくならんやろな
非公式日本語訳への導線を死守したいらしいから
非公式日本語訳への導線を死守したいらしいから
2023/08/15(火) 23:28:44.61ID:VMFxj0+I
>>6
あると困るやつおるんか?
あると困るやつおるんか?
9デフォルトの名無しさん
2023/08/15(火) 23:39:08.27ID:DA+GIfRF >>8
日本語訳のみを参照して質問したり議論するやつが多々いて日本語訳の精査や日本語訳の不味さの議論に発展するから「このスレでは非公式日本語訳については扱わずドキュメント参照時は公式ドキュメント(英語のみ)を参照すること」という結論に至った
Rustの中身と関係ないレスが必要になるから
善良なスレ民みんなが迷惑する話
日本語訳のみを参照して質問したり議論するやつが多々いて日本語訳の精査や日本語訳の不味さの議論に発展するから「このスレでは非公式日本語訳については扱わずドキュメント参照時は公式ドキュメント(英語のみ)を参照すること」という結論に至った
Rustの中身と関係ないレスが必要になるから
善良なスレ民みんなが迷惑する話
2023/08/15(火) 23:46:57.38ID:Ca5zhGlT
所有権を複製できるってことは
あるものへの所有権が同時に二個以上存在しうるってこと?
あるものへの所有権が同時に二個以上存在しうるってこと?
2023/08/15(火) 23:50:55.02ID:TUo/JpC+
2023/08/15(火) 23:54:35.01ID:hKkJ4KUI
2023/08/15(火) 23:58:35.36ID:VMFxj0+I
14デフォルトの名無しさん
2023/08/16(水) 00:09:44.98ID:j24XJeH2 また複オジの自演が始まった
隔離スレで大人しくしとけよ
こっち来んな
隔離スレで大人しくしとけよ
こっち来んな
2023/08/16(水) 00:25:33.09ID:Wd6XOYTc
隔離スレができてから、多少S/N比が改善することを期待して様子見してたけど
やっぱり一度去った人が戻ってくることはないし、どうしようもないんやなあって
まだ見てる物好きなRustaceanはワッチョイスレにも是非来てくれや
やっぱり一度去った人が戻ってくることはないし、どうしようもないんやなあって
まだ見てる物好きなRustaceanはワッチョイスレにも是非来てくれや
2023/08/16(水) 03:56:50.52ID:1NDN9ysp
>>15
前スレ
> 1000 名前:デフォルトの名無しさん[sage] 投稿日:2023/08/15(火) 22:12:55.30 ID:6mJ3MaUL
> rustupが動かないので手動でクロスビルド環境を構築したいんだが
> rustup target add 〜
> って具体的に何やっているの?ターゲットはとりあえずthumbv7em-none-eabihfとriscv32imac-unknown-none-elfの2つ
> ネイティブビルド環境は公式にあるプレビルドファイル一式を適当な場所に手動で展開すれば構築できるけど(構築済み)
の回答をもらえるならワッチョイスレに行こう
前スレ
> 1000 名前:デフォルトの名無しさん[sage] 投稿日:2023/08/15(火) 22:12:55.30 ID:6mJ3MaUL
> rustupが動かないので手動でクロスビルド環境を構築したいんだが
> rustup target add 〜
> って具体的に何やっているの?ターゲットはとりあえずthumbv7em-none-eabihfとriscv32imac-unknown-none-elfの2つ
> ネイティブビルド環境は公式にあるプレビルドファイル一式を適当な場所に手動で展開すれば構築できるけど(構築済み)
の回答をもらえるならワッチョイスレに行こう
2023/08/16(水) 04:11:40.66ID:N5bIbKLx
rustupが動かない、というのが理解できない
rustupはクロス環境関係ない
クロス環境用には実行バイナリだけ生成すればいい
rustupはそのままネイティブ自環境でのみ動けばよく
rustup target add xxxでクロス用のtoolchainを指定
そのあとはシンプルにまずはrustc --target xxx test.rsが動くかどうか
rustupはクロス環境関係ない
クロス環境用には実行バイナリだけ生成すればいい
rustupはそのままネイティブ自環境でのみ動けばよく
rustup target add xxxでクロス用のtoolchainを指定
そのあとはシンプルにまずはrustc --target xxx test.rsが動くかどうか
2023/08/16(水) 04:35:41.91ID:N5bIbKLx
例えばrustup target add wasm32-unknown-unknownすると
rustupのhomeが ~/.rustup のとき
~/.rustup/toolchains/*/lib/rustlib/ の下にできる
rustupのhomeが ~/.rustup のとき
~/.rustup/toolchains/*/lib/rustlib/ の下にできる
19デフォルトの名無しさん
2023/08/16(水) 10:47:04.56ID:tgyEZLGb2023/08/16(水) 14:44:41.59ID:1NDN9ysp
>>17
rustupがリンクが使えるファイルシステム?じゃないと動かないっぽい
ノートPCでNTFSパーティションがカツカツなのでSDカード(FAT32)上にインストールしたいがリンクできないとか怒られる
rustcやcargoはリンクできないから動かないようには見えないしよくわからない制限
この現象は公式フォーラムにも書かれていたがパーティションを変更するみたいな回答しかなかった
現状はネイティブビルド環境は公式からプレビルドのバイナリを落としてきて解凍すれば構築できるが
そのような代替手段がない?クロスビルド環境は構築できない状態
rustupがリンクが使えるファイルシステム?じゃないと動かないっぽい
ノートPCでNTFSパーティションがカツカツなのでSDカード(FAT32)上にインストールしたいがリンクできないとか怒られる
rustcやcargoはリンクできないから動かないようには見えないしよくわからない制限
この現象は公式フォーラムにも書かれていたがパーティションを変更するみたいな回答しかなかった
現状はネイティブビルド環境は公式からプレビルドのバイナリを落としてきて解凍すれば構築できるが
そのような代替手段がない?クロスビルド環境は構築できない状態
21デフォルトの名無しさん
2023/08/16(水) 15:31:51.82ID:Qm23kCGE ここは素人相手のサポートセンターじゃないんだから「動かない」とか「動かないっぽい」とかじゃよっぽどの暇人以外には相手にされないぞ
2023/08/16(水) 15:45:31.11ID:1NDN9ysp
現象は
ttps://users.rust-lang.org/t/can-t-install-rust/56019/15 ←exFATパーティションにインストールしようとして失敗している
これと同じだと思う
ttps://users.rust-lang.org/t/can-t-install-rust/56019/15 ←exFATパーティションにインストールしようとして失敗している
これと同じだと思う
2023/08/16(水) 18:15:04.82ID:Wd6XOYTc
ワッチョイスレに書いといたんでよろしゃっす
2023/08/16(水) 18:52:12.16ID:tBfVLS+Q
>>20
rustupをターゲット先で動かす必要ある?
例えばターゲット先がWasmだとそこにrustupもcargoもないけど
それらがある手元でWasmバイナリを生成できるよね
リンクが使えるファイルシステムでコンパイルできない状況がわからないので教えて
rustupをターゲット先で動かす必要ある?
例えばターゲット先がWasmだとそこにrustupもcargoもないけど
それらがある手元でWasmバイナリを生成できるよね
リンクが使えるファイルシステムでコンパイルできない状況がわからないので教えて
2023/08/16(水) 22:31:03.77ID:o5ZiEkHD
2023/08/16(水) 23:07:47.05ID:tBfVLS+Q
2023/08/17(木) 00:30:25.16ID:IFnR6C6t
ポータブルメディアだとFATをつかうのはそれなりにあることだからなあ。
買った時点でフォーマット済みなのも普通だし。
さすがにSDカードに開発環境を構築するのは想定外と言えるにしても外付けハードディスクくらいなら事情によっては無いこともないんじゃないか。
買った時点でフォーマット済みなのも普通だし。
さすがにSDカードに開発環境を構築するのは想定外と言えるにしても外付けハードディスクくらいなら事情によっては無いこともないんじゃないか。
28デフォルトの名無しさん
2023/08/23(水) 15:46:36.91ID:89z/H8g7 let hoge = "もとの文字列";
let hoge = hoge.replace("なんか1を", "別のなんか1に変換");
let hoge = hoge.replace("なんか2を", "別のなんか2に変換");
let hoge = hoge.replace("なんか3を", "別のなんか3に変換");
...
みたいなのが連続して実行したいとき
まとめてやってくれるような関数とかありますか?
また変換表がVecとかMapとかDBみたいなのに対応してるものもありますか?
let hoge = hoge.replace("なんか1を", "別のなんか1に変換");
let hoge = hoge.replace("なんか2を", "別のなんか2に変換");
let hoge = hoge.replace("なんか3を", "別のなんか3に変換");
...
みたいなのが連続して実行したいとき
まとめてやってくれるような関数とかありますか?
また変換表がVecとかMapとかDBみたいなのに対応してるものもありますか?
2023/08/23(水) 17:55:57.94ID:JDxfEBUZ
>>28
単に連続して実行したいだけなら自分でループさせる関数作れば十分だと思う
効率的なアルゴリズム実装を探してるならとりあえずaho-corasick
regexを使ってるようなプロジェクトならregexでもいいと思う
単に連続して実行したいだけなら自分でループさせる関数作れば十分だと思う
効率的なアルゴリズム実装を探してるならとりあえずaho-corasick
regexを使ってるようなプロジェクトならregexでもいいと思う
2023/08/23(水) 18:02:34.00ID:JDxfEBUZ
もとの文字列が大きくなればなるほどstr::replaceを繰り返し実行する方法は効率が悪くなる
もとの文字列が小さいならあんまり気にする必要無い
少なくともベンチマークとってから考えるべき
もとの文字列が小さいならあんまり気にする必要無い
少なくともベンチマークとってから考えるべき
2023/08/23(水) 23:32:44.32ID:J9iaXSyF
その前に変換された部分を後続の変換の対象にするのかしないのかを決めないと
「まとめてやる」だから対象にしないっぽいけど
文字列リテラルのエスケープを本来の文字に置換するイメージでいいのかな
変換前の文字列を簡単なパターンで表現できるなら正規表現のライブラリがいいと思う
余分にひっかけた場合は変換せずにそのまま通す感じで
マッチした文字列→変換する文字列の処理を自前の関数で書くとよさそう
「まとめてやる」だから対象にしないっぽいけど
文字列リテラルのエスケープを本来の文字に置換するイメージでいいのかな
変換前の文字列を簡単なパターンで表現できるなら正規表現のライブラリがいいと思う
余分にひっかけた場合は変換せずにそのまま通す感じで
マッチした文字列→変換する文字列の処理を自前の関数で書くとよさそう
2023/08/23(水) 23:46:47.50ID:1keD1dOe
aho使うのが楽
入力がimpl std::io::Readで出力がimpl std::io::Writeを指定できるからファイルでもなんでも楽
入力がimpl std::io::Readで出力がimpl std::io::Writeを指定できるからファイルでもなんでも楽
33デフォルトの名無しさん
2023/08/24(木) 07:02:22.08ID:2mbJt/0N thx
2023/08/26(土) 21:30:29.95ID:gjVHse6A
constな再帰関数で以下のエラーが出てその対処方法を知りたいのですが
error[E0080]: evaluation of constant value failed
| foo(n)
| ^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)
const_eval_limitで検索しても削除された(?)らしい情報しかわかりませんでした
どう指定するとリミットを増やせますか?
error[E0080]: evaluation of constant value failed
| foo(n)
| ^^^^^^ exceeded interpreter step limit (see `#[const_eval_limit]`)
const_eval_limitで検索しても削除された(?)らしい情報しかわかりませんでした
どう指定するとリミットを増やせますか?
2023/08/26(土) 22:02:13.69ID:ONdb/hN6
>>34
古いバージョン使ってない?
古いバージョン使ってない?
2023/08/26(土) 22:23:39.67ID:hWWrh3fN
1.72での変更みたいだね
2023/08/27(日) 08:31:30.86ID:lrONLN4Y
一昨日リリースの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)]
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)]
2023/08/27(日) 19:53:52.23ID:Aks4ymi6
2023/08/27(日) 21:39:30.30ID:/o9fKn5S
コンパイルエラーで正しいほうが表示されるから問題ないわな
const_eval_limitのほうは↓
#![feature(const_eval_limit)]
#![const_eval_limit = “10000000”]
const_eval_limitのほうは↓
#![feature(const_eval_limit)]
#![const_eval_limit = “10000000”]
2023/08/27(日) 23:07:34.85ID:F9w6FdF5
レビューすり抜けちゃったんだな
PRでも出してあげたら
PRでも出してあげたら
41デフォルトの名無しさん
2023/08/28(月) 03:13:40.15ID:gISZWwhM 英単語のスペルチェックはしなくて良いから
関数や変数のスペルチェックに力を入れてくれ > Codeエディタさん
関数や変数のスペルチェックに力を入れてくれ > Codeエディタさん
2023/08/29(火) 03:19:51.47ID:UVGH3K1M
VSCodeの余計なお世話機能外しのサイトないかな?とにかく邪魔
2023/08/29(火) 09:29:50.39ID:ud/hz0aH
let hoge = "hoge".to_string();
let v = hoge.as_bytes().to_vec(); // ← ここでデータのコピーは発生しますか?
let v = hoge.as_bytes().to_vec(); // ← ここでデータのコピーは発生しますか?
2023/08/29(火) 09:40:59.22ID:ud/hz0aH
あー
let v = hoge.into_bytes(); // これか
let v = hoge.into_bytes(); // これか
45デフォルトの名無しさん
2023/08/29(火) 10:07:33.54ID:ud/hz0aH let v = hoge.as_bytes().into(); // これも等価なんか?
2023/08/29(火) 10:28:52.72ID:hbocgPIY
>>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) };
コピーを発生せずに別の型へ変換するには「消費して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) };
2023/08/29(火) 11:53:16.22ID:j8lLGaij
2023/08/29(火) 14:58:40.58ID:0ZJbGVqi
>>42
VSCodeの邪魔な機能で最初に思い浮かぶのはinlay hintsだな
[File > Preferences > Settings]の[Editor › Inlay Hints: Enabled]を
offかoffUnlessPressedに変えると消える
offUnlessPressedだとCtrl + Altを押してる間だけ表示される
VSCodeの邪魔な機能で最初に思い浮かぶのはinlay hintsだな
[File > Preferences > Settings]の[Editor › Inlay Hints: Enabled]を
offかoffUnlessPressedに変えると消える
offUnlessPressedだとCtrl + Altを押してる間だけ表示される
2023/08/30(水) 11:49:10.17ID:2xM9XyZu
unsafeを使ったコードで
有効な参照ではないことを確認する方法はありますか?
有効な参照ではないことを確認する方法はありますか?
2023/08/30(水) 15:30:33.41ID:OpkUn9pD
miriやaddress sanitizerやloomのようなツールとテストの組み合わせで検知するくらいじゃないかな
もちろん100%の検知は不可能
もちろん100%の検知は不可能
52デフォルトの名無しさん
2023/08/30(水) 15:37:47.00ID:jEaVNaFL 日本人は100%とか完璧とか絶対とか求めるの好きだよね。
やる側が志すのはいいんだけど、たいていはやらない側が求めてくる。
やる側が志すのはいいんだけど、たいていはやらない側が求めてくる。
2023/08/30(水) 17:42:42.30ID:Pm5h7iVu
そういう理にかなわないことをしているから原発がぶっ飛ぶんやで
2023/08/30(水) 17:57:48.34ID:DO1AbTsl
address sanitizerじゃなくてmemory sanitizerだった
2023/08/30(水) 20:21:44.39ID:y+HDByBG
無効な参照は即UBじゃなかったけ
なので正しく書かれたRustプログラムの参照はすべて有効
なので正しく書かれたRustプログラムの参照はすべて有効
2023/08/30(水) 21:05:03.06ID:7wIq4Piv
正しく書かれてるかどうかを確かめる方法を聞いてるんだろ
57デフォルトの名無しさん
2023/08/30(水) 22:02:55.54ID:zbgAoZ7n rustでdll造ってCから使うとき
rust側で勝手に捨てられるのは困るな
rust側で勝手に捨てられるのは困るな
2023/08/30(水) 22:17:03.68ID:kn7H0YN4
そのためにforgetとかleakみたいな謎関数がある
存在は知ってるけどまだ使う機会に恵まれない
存在は知ってるけどまだ使う機会に恵まれない
2023/08/31(木) 00:43:59.43ID:gbA1Jwq2
Cに所有権ごと渡すなら使うのはinto_rawかfrom_rawじゃね
60デフォルトの名無しさん
2023/08/31(木) 11:31:08.47ID:qE8kvwKZ Rustしばらく使ってるとC/C++描けなくなってくる
2023/09/01(金) 16:56:03.45ID:8Q6o7DlX
sqlite3 用の crate って sqlite3 という名前のがあるけど
rusqlite 使うのとどっちが良い?
rusqlite 使うのとどっちが良い?
62デフォルトの名無しさん
2023/09/02(土) 07:37:58.97ID:v3EBZAej 失礼します
Rustは制約の厳しい言語だから(環境さえ整えば)他言語にトランスパイルしやすい言語
という認識は合ってるでしょうか?
Rustは制約の厳しい言語だから(環境さえ整えば)他言語にトランスパイルしやすい言語
という認識は合ってるでしょうか?
2023/09/02(土) 08:12:23.91ID:bvTG+KAn
Rustは制約がほとんどなく自由な裁量の大きな言語の一つ
楽に書ける方法の一方で色んな観点を極めることにより書き手によってメモリ利用法や実行速度もピンキリになりうる
色んな環境で動かせることもできてOSの無い環境やstdライブラリを使わない方法など自由が大きい
プログラミングパラダイムやスタイル指向の見地からも書き手によって様々な方針をとることができる
楽に書ける方法の一方で色んな観点を極めることにより書き手によってメモリ利用法や実行速度もピンキリになりうる
色んな環境で動かせることもできてOSの無い環境やstdライブラリを使わない方法など自由が大きい
プログラミングパラダイムやスタイル指向の見地からも書き手によって様々な方針をとることができる
2023/09/02(土) 08:29:19.99ID:bvTG+KAn
ランタイムが必須かどうかも制約として重要になってくる
C/C++やRustはそのような制約がないため他の言語のライブラリ作成にも用いることができる
WebAssemblyでの実行についても同様でそのような制約のないRustが有利なため最も使われている
C/C++やRustはそのような制約がないため他の言語のライブラリ作成にも用いることができる
WebAssemblyでの実行についても同様でそのような制約のないRustが有利なため最も使われている
2023/09/02(土) 11:00:44.98ID:YkB2gBn6
>>62
トランスパイル先言語との機能的互換性の高さやや元言語のコンパイラが単純なほうがトランスパイルしやすいと思う
例えばOwnership/Borrow/Lifetimeあたりのトランスパイルが楽かどうか
トランスパイル先言語との機能的互換性の高さやや元言語のコンパイラが単純なほうがトランスパイルしやすいと思う
例えばOwnership/Borrow/Lifetimeあたりのトランスパイルが楽かどうか
2023/09/02(土) 11:44:04.91ID:g76m2OPt
2023/09/02(土) 11:48:36.47ID:l2r0UsPx
2023/09/02(土) 11:50:40.77ID:l2r0UsPx
一口にトランスパイルといっても、元言語にあった属性をどこまで先言語に引き継ぐかは目的に応じた取捨選択がなされるものです
前例がないので>>62に対する答えは「未知数」としか言えないですね
あるいは言語自体に「トランスパイルのしやすさ」という属性があるとすれば、それは「言語自体がトランスパイルされることを前提として設計されているか」と同義でしょう
その側面から言えば答えは「いいえ」です
前例がないので>>62に対する答えは「未知数」としか言えないですね
あるいは言語自体に「トランスパイルのしやすさ」という属性があるとすれば、それは「言語自体がトランスパイルされることを前提として設計されているか」と同義でしょう
その側面から言えば答えは「いいえ」です
69デフォルトの名無しさん
2023/09/02(土) 12:05:15.52ID:f2x52juV ライフタイムは妥当かどうかの静的なチェックに使われるもの
トランスパイル先に持ち込まれることはない
トランスパイル先に持ち込まれることはない
2023/09/02(土) 13:06:33.37ID:euHMK3ab
短絡思考 + 自己弁護 = 複オジ
2023/09/02(土) 13:21:18.64ID:gZ7bGKIm
トランスパイルというとTypeScript→JavaScriptみたいにシンタックスをほぼ保ったまま変換することを意図してる?
それともRustで書いたコードをトランスパイル先のランタイムなり処理系なりで動かせれば良い?
後者ならトランスパイル先言語でWASMランタイム用意すればRustで書いたコードは動かせるよね
それともRustで書いたコードをトランスパイル先のランタイムなり処理系なりで動かせれば良い?
後者ならトランスパイル先言語でWASMランタイム用意すればRustで書いたコードは動かせるよね
72デフォルトの名無しさん
2023/09/02(土) 14:30:38.26ID:mCX3wjBN NimはCにトランスパイルされる
2023/09/02(土) 14:59:18.30ID:dPTTZbJb
コンパイルする話じゃなくトランスパイルする話をしてるのにその区別すらできないオジ
2023/09/02(土) 15:01:52.18ID:Ng1Dtdjk
一般にトランスパイルは同程度に高級な言語の間で
(なるべく)変換後の言語として自然な形で変換するものを言う。
コードジェネレータ、または実行エンジンとして他言語を
経由するものは含んだり含まなかったりするけど
表面上は同じことをやってるので境界が曖昧なんだよ。
(なるべく)変換後の言語として自然な形で変換するものを言う。
コードジェネレータ、または実行エンジンとして他言語を
経由するものは含んだり含まなかったりするけど
表面上は同じことをやってるので境界が曖昧なんだよ。
2023/09/02(土) 16:08:00.76ID:LNeShMZN
境界があいまいだからRustコードからWASMバイナリを生成することをトランスパイルと呼んでもおかしくないと?
2023/09/02(土) 16:25:56.23ID:Ng1Dtdjk
77デフォルトの名無しさん
2023/09/02(土) 16:37:50.73ID:aKZIxXWD >>65 がトランスパイル先にまでOwnership/Borrow/Lifetimeあたりの機能あったほうが良さそうなこと匂わすトンチンカンなこと書いてるからだろ
2023/09/02(土) 17:46:31.63ID:3Onl8i9L
>>77
そんな頓珍漢な勘違いをするのはおまえだけだろw
そんな頓珍漢な勘違いをするのはおまえだけだろw
2023/09/02(土) 18:52:34.01ID:l2r0UsPx
80デフォルトの名無しさん
2023/09/02(土) 19:16:20.22ID:v3EBZAej >>62です。ぼんやりとした質問ですみませんでした
例えばRustが読めない人向けにPython等に変換してPython読める人ならなんとか読めるものに変換できないかなという想定でした。
あとはLLVM以外の環境で動かしたいとか。それなら確かにWASMで良かったみたいですね。
Rustは型が厳格とかデフォでimmutableだったりムーブだったり制約が強いイメージでしたが前提からして間違ってたみたいですね
皆さま事細かにありがとうございました
例えばRustが読めない人向けにPython等に変換してPython読める人ならなんとか読めるものに変換できないかなという想定でした。
あとはLLVM以外の環境で動かしたいとか。それなら確かにWASMで良かったみたいですね。
Rustは型が厳格とかデフォでimmutableだったりムーブだったり制約が強いイメージでしたが前提からして間違ってたみたいですね
皆さま事細かにありがとうございました
81デフォルトの名無しさん
2023/09/02(土) 19:32:06.11ID:aKZIxXWD だから言っただろうがよ
2023/09/02(土) 19:33:02.08ID:EvLWL1zC
これは違うな
疑って失礼しました
疑って失礼しました
2023/09/02(土) 19:34:44.69ID:GzMi3EqG
>>67
お前が勘違いしてんだろガイジ
実行時に所有権やライフタイムは出てこないからこそトランスパイル先の言語にもこれらの機能が言語機能として備える必要がないわけでこのスレでお前だけが1人だけ勘違いしている
頭悪そう
お前が勘違いしてんだろガイジ
実行時に所有権やライフタイムは出てこないからこそトランスパイル先の言語にもこれらの機能が言語機能として備える必要がないわけでこのスレでお前だけが1人だけ勘違いしている
頭悪そう
2023/09/02(土) 19:51:23.24ID:Wl+8+V5g
おじ、キレた!!
2023/09/02(土) 20:07:34.22ID:x+ZOYO9b
複数ID全員おじとか糖質患者やろ
お前のたった1人だけの発言の方がすべておじに似つかわしいんやけど自覚できない?
お前のたった1人だけの発言の方がすべておじに似つかわしいんやけど自覚できない?
86デフォルトの名無しさん
2023/09/02(土) 20:45:16.67ID:f2x52juV おじ使いはいつも病気
2023/09/02(土) 23:40:40.30ID:lMQqG2Zb
2023/09/02(土) 23:56:54.98ID:v0MnUUsV
オジオジ言ってる人は書き込みに中身がなくて全方位叩きだからスレ荒しが目的なのかな
反応せず無視するのがいいんだろうけど反応しちゃった失礼
反応せず無視するのがいいんだろうけど反応しちゃった失礼
2023/09/03(日) 00:03:56.01ID:cm8T2pY+
どうでもいいし面倒だしもうここ潰してワッチョイありスレに一本化してほしいんだけど
2023/09/03(日) 00:09:50.96ID:HRiHoELW
「自演認定は頭おかしい」論法
「おじ連呼厨」の強調
いつものやつですね
自演認定糖質論法は久しぶりに聞いた気がする
「おじ連呼厨」の強調
いつものやつですね
自演認定糖質論法は久しぶりに聞いた気がする
2023/09/03(日) 00:16:07.67ID:HRiHoELW
ID:bvTG+KAn
ID:g76m2OPt
ID:f2x52juV
ID:GzMi3EqG
ID:x+ZOYO9b
ID:v0MnUUsV
ID:g76m2OPt
ID:f2x52juV
ID:GzMi3EqG
ID:x+ZOYO9b
ID:v0MnUUsV
2023/09/03(日) 00:20:28.54ID:cZTMAPOv
議論でバトルが盛り上がるのは歓迎
オジおじ連投がいる時は議論がなく荒れるだけでつまらん
オジおじ連投がいる時は議論がなく荒れるだけでつまらん
2023/09/03(日) 00:35:38.11ID:HRiHoELW
歓迎するわけねーだろアホか
2023/09/03(日) 00:38:35.94ID:cCJ59BhE
2023/09/03(日) 00:45:48.36ID:HRiHoELW
2023/09/03(日) 00:53:25.84ID:roP/qgKi
2023/09/03(日) 01:20:25.77ID:YZAPuv0W
気に食わない意見があるけど反論できないで次々とおじさん認定して叩くだけのゲスがいるな
libsqlite3の上に構築したRusqliteでもいいが
Rustで構築したSQLxがSQLiteもサポートするようになり出来が良いので急上昇で逆転する見込み
libsqlite3の上に構築したRusqliteでもいいが
Rustで構築したSQLxがSQLiteもサポートするようになり出来が良いので急上昇で逆転する見込み
2023/09/03(日) 01:41:47.18ID:mceEf04V
sqlxのsqliteドライバもlibsqlite3の上に構築されてるぞ
SQLiteはCのAPIしか提供してないんだから他のものを使う理由がない
SQLiteはCのAPIしか提供してないんだから他のものを使う理由がない
2023/09/03(日) 07:28:12.23ID:x92ht6sx
また知ったかぶりして恥かいてるww
100デフォルトの名無しさん
2023/09/03(日) 08:37:05.08ID:WZFIWsZX sqlx以外はasync/await使えない?
101デフォルトの名無しさん
2023/09/03(日) 13:35:31.95ID:mxOeoCcq 自分でspawn_blockingすればいい
102デフォルトの名無しさん
2023/09/03(日) 13:45:08.16ID:yQjRA1Qa 安定感や性能に差があるのでsqlite限定ならFirefoxでも使ってるrusqliteがベター
103デフォルトの名無しさん
2023/09/03(日) 13:48:17.25ID:jFAGdbdC ■購入目的(達成されました)
・Rustで動くプログラムの写経
・映像表現的な出力結果はモチベーションを維持できる気がした
・RustについてはWeb上に素晴らしいテキストがたくさんあるので簡単な実践的なプログラムを読みたい
■自分のレベル
私は数カ月前にRustを勉強し始めました。
これまで高校でc、Javaの基礎、大学でc++基礎、ObjectiveC、社会人になってPythonやc#と触れてきました。たくさん触れてきていますが結局自分が作りたい少し大きい物をプログラミングで何かを作りきるということをしてきませんでした。いつもチュートリアルで終わりです。永遠に世界に挨拶でもしてろと言われそうなタイプです。
ここ数年で映像制作から転職してインフラエンジニア関係に勤めています。
ネットワークやサーバ周りの知識に加えて一つ言語を修めたいと思いRustをはじめました。
・Rustで動くプログラムの写経
・映像表現的な出力結果はモチベーションを維持できる気がした
・RustについてはWeb上に素晴らしいテキストがたくさんあるので簡単な実践的なプログラムを読みたい
■自分のレベル
私は数カ月前にRustを勉強し始めました。
これまで高校でc、Javaの基礎、大学でc++基礎、ObjectiveC、社会人になってPythonやc#と触れてきました。たくさん触れてきていますが結局自分が作りたい少し大きい物をプログラミングで何かを作りきるということをしてきませんでした。いつもチュートリアルで終わりです。永遠に世界に挨拶でもしてろと言われそうなタイプです。
ここ数年で映像制作から転職してインフラエンジニア関係に勤めています。
ネットワークやサーバ周りの知識に加えて一つ言語を修めたいと思いRustをはじめました。
104デフォルトの名無しさん
2023/09/03(日) 23:37:22.86ID:IkMULQX5 >>101
spawn_blockingは別OSスレッドを立ててそこで実行するだけだから根本的な解決にならない
spawn_blockingは別OSスレッドを立ててそこで実行するだけだから根本的な解決にならない
105デフォルトの名無しさん
2023/09/04(月) 01:10:37.74ID:Ev35rGw5 >>104
別OSスレッドを立ててそこで実行する以外の解決方法はないよ
別OSスレッドを立ててそこで実行する以外の解決方法はないよ
106デフォルトの名無しさん
2023/09/04(月) 02:53:02.64ID:IXHvJiGY 君たちは何を問題と定義しているのか
107デフォルトの名無しさん
2023/09/04(月) 06:58:20.37ID:HktKZ7k9 昔と違って今はFutureを返すcrateを選べるのだからそこで困ることはないな
糖衣のasync関数を含めてFutureさえ返してくれればいい
自分側はawaitもしくはspawnしてもいいしFutureUnorderedなどで早い者勝ち処理など自由な方針を取れるのだから
糖衣のasync関数を含めてFutureさえ返してくれればいい
自分側はawaitもしくはspawnしてもいいしFutureUnorderedなどで早い者勝ち処理など自由な方針を取れるのだから
108デフォルトの名無しさん
2023/09/04(月) 09:56:10.80ID:NSmwDj9w >>107
そこで困るとは?
そこで困るとは?
109デフォルトの名無しさん
2023/09/04(月) 10:17:13.25ID:/ASAZOX6 困ってない人は一生気付かない
これが理想郷
これが理想郷
110デフォルトの名無しさん
2023/09/04(月) 13:01:49.77ID:9feyj9k/ いつものストローマンオジ
111デフォルトの名無しさん
2023/09/04(月) 18:54:13.07ID:UIsGravq 困ったことが無い香具師には何で困るかわからんマジ
112デフォルトの名無しさん
2023/09/04(月) 20:11:06.59ID:pWElWRNz Futureもawaitして同期のみで困っていない人もいる
Futureすら使わず別スレッドにしちゃって困っていない人もいる
ただしベターな方法を知らないために困っていないだけかも知れない
理解した上で選んでいるなら問題ない
Futureすら使わず別スレッドにしちゃって困っていない人もいる
ただしベターな方法を知らないために困っていないだけかも知れない
理解した上で選んでいるなら問題ない
113デフォルトの名無しさん
2023/09/04(月) 20:41:40.87ID:0aDTsPbB114デフォルトの名無しさん
2023/09/04(月) 20:57:24.92ID:IXHvJiGY よく分からんが誰も困っていないらしいのでヨシ!
115デフォルトの名無しさん
2023/09/04(月) 21:18:46.15ID:xwtgk4fq116デフォルトの名無しさん
2023/09/04(月) 21:28:55.91ID:bE42d19a117デフォルトの名無しさん
2023/09/04(月) 21:58:02.43ID:dk25eEP4 そういう状況なら非同期とか言う前にsqliteやめよう複くん!
118デフォルトの名無しさん
2023/09/04(月) 22:16:10.47ID:Ts5EvUDj SQL関係ない一般的な話がされてると思ってたらSQLにこだわる人もいてよくわからんな
SQLにしてもサーバーに繋ぎにいくなら同期はありえんな
SQLにしてもサーバーに繋ぎにいくなら同期はありえんな
119デフォルトの名無しさん
2023/09/04(月) 22:29:51.49ID:fWqFM9pZ >>116
スレッド消費せずにSQLiteへの接続を同時にさばくことが出来ないからね
複オジおすすめのsqlxも当然接続ごとに別OSスレッド立ち上げてるからクライアント接続が多数来たら同じように詰むんだよ
スレッド消費せずにSQLiteへの接続を同時にさばくことが出来ないからね
複オジおすすめのsqlxも当然接続ごとに別OSスレッド立ち上げてるからクライアント接続が多数来たら同じように詰むんだよ
120デフォルトの名無しさん
2023/09/04(月) 22:47:23.47ID:rfWjSjrk 自分が何を知らないか
知ってる人もいれば
知らない人もいる
前者は詐欺師で
後者は複オジである
彼はみんなを騙しているのではなくて
彼はなんでも知っているつもりなのである
知ってる人もいれば
知らない人もいる
前者は詐欺師で
後者は複オジである
彼はみんなを騙しているのではなくて
彼はなんでも知っているつもりなのである
121デフォルトの名無しさん
2023/09/04(月) 23:11:41.51ID:ueRfdgpS RustのSQLデファクトスタンダードのsqlxに対して「複オジおすすめのsqlx」と書いてることから、
複オジ使いはRustを使っていない疑惑が再び出てきた。
複オジ使いはRustを使っていない疑惑が再び出てきた。
122デフォルトの名無しさん
2023/09/04(月) 23:53:13.41ID:IXHvJiGY >>118の相似形
https://mevius.5ch.net/test/read.cgi/tech/1644596656/919
919: デフォルトの名無しさん sage 2022/05/09(月) 18:50:22.63 ID:rGYbsi5m
>>915
>>918
FizzBuzzは単なる話の出発点の例の一つに過ぎなくて既に皆はもっと一般的な話をしているようにみえる
皆もFizzBuzz限定の話なんかに興味はなくて一般的な話に興味があるからではないかな
https://mevius.5ch.net/test/read.cgi/tech/1644596656/919
919: デフォルトの名無しさん sage 2022/05/09(月) 18:50:22.63 ID:rGYbsi5m
>>915
>>918
FizzBuzzは単なる話の出発点の例の一つに過ぎなくて既に皆はもっと一般的な話をしているようにみえる
皆もFizzBuzz限定の話なんかに興味はなくて一般的な話に興味があるからではないかな
123デフォルトの名無しさん
2023/09/04(月) 23:54:19.18ID:8cZoZvfB またオジが妄想に取り憑かれてるねww
124デフォルトの名無しさん
2023/09/04(月) 23:56:14.30ID:IXHvJiGY 質問者のユースケースが非同期ライブラリを必要としているのか?
そうした前提を確認せずに、非同期対応の一点でライブラリの適・不適を評価しようとすること自体が筋違いなのです
そうした前提を確認せずに、非同期対応の一点でライブラリの適・不適を評価しようとすること自体が筋違いなのです
125デフォルトの名無しさん
2023/09/05(火) 00:09:09.34ID:XN2NC5/h126デフォルトの名無しさん
2023/09/05(火) 00:23:36.51ID:XDjugVOt >>125
そっちじゃなくて>>61のこと
https://github.com/launchbadge/sqlx/blob/main/sqlx-sqlite/src/connection/worker.rs#L82
なるほどワーカースレッド立てて通信してるだけで別に非同期ファイルI/Oを最大限活用するとかじゃないんだね
確かにこれなら>>119の言う通りブロッキング待ちするものをspawn_blockingしても大した差はなさそうだ
そっちじゃなくて>>61のこと
https://github.com/launchbadge/sqlx/blob/main/sqlx-sqlite/src/connection/worker.rs#L82
なるほどワーカースレッド立てて通信してるだけで別に非同期ファイルI/Oを最大限活用するとかじゃないんだね
確かにこれなら>>119の言う通りブロッキング待ちするものをspawn_blockingしても大した差はなさそうだ
127デフォルトの名無しさん
2023/09/05(火) 04:37:15.62ID:Zsmh0CoR >>117
これこれ
これこれ
128デフォルトの名無しさん
2023/09/05(火) 05:16:32.99ID:Rvonn+YZ >>101
各spawn_blocking()毎に専用のネイティブスレッドをブロックする形で用いるため
spawn_blockingが同時に大量に発生しないよう留意しなければならない
そのため同期ライブラリの利用方法には何らかの制限がついてしまう
非同期ライブラリを利用すればそのような制限はない
各spawn_blocking()毎に専用のネイティブスレッドをブロックする形で用いるため
spawn_blockingが同時に大量に発生しないよう留意しなければならない
そのため同期ライブラリの利用方法には何らかの制限がついてしまう
非同期ライブラリを利用すればそのような制限はない
129デフォルトの名無しさん
2023/09/05(火) 12:58:37.11ID:V9mIkqYx sqlx crateでMySQLを使っているがクライアント接続が多数来ても捌けてる
すべて非同期なのでブロックされることも別スレッドで実行されることもない
すべて非同期なのでブロックされることも別スレッドで実行されることもない
130デフォルトの名無しさん
2023/09/05(火) 14:15:52.81ID:SlAKktdo node.js推しだった人か
131デフォルトの名無しさん
2023/09/05(火) 14:17:29.93ID:6qNvCW8J redis-rsよりも良いの?
132デフォルトの名無しさん
2023/09/05(火) 14:29:07.14ID:bhQzjDZU133デフォルトの名無しさん
2023/09/05(火) 19:14:25.74ID:dmqj3xko かつてデファクトスタンダードだったdiesel crateがsqlx crateにその座を奪われた原因もdieselが非同期APIに対応できなかったせい
134デフォルトの名無しさん
2023/09/05(火) 21:03:20.66ID:x/2k1tVz それもあると思うがたしかディーゼルってActiveRecordの開発者が設計してるんだよね
135デフォルトの名無しさん
2023/09/06(水) 08:23:13.48ID:KSPgDJdv sqlxのほうがシンプルで使いやすくわかりやすい
136デフォルトの名無しさん
2023/09/06(水) 10:25:26.54ID:UTcPybKQ137デフォルトの名無しさん
2023/09/06(水) 12:30:09.29ID:12hS6FX4 >>136
いいかげんコテハン付けろよ。
いいかげんコテハン付けろよ。
138デフォルトの名無しさん
2023/09/06(水) 18:07:43.20ID:bKG9yIlg >>136
Apache2.0とMITのデュアルライセンスに何の問題が?
Apache2.0とMITのデュアルライセンスに何の問題が?
139デフォルトの名無しさん
2023/09/07(木) 13:34:15.26ID:bUyh+PaU GUI作りたいけどよくわからん
今のデファクトはなんや
今のデファクトはなんや
140デフォルトの名無しさん
2023/09/07(木) 14:34:25.76ID:BcSMP50e デファクト決定戦レスバしかしてねーなこのスレ
141デフォルトの名無しさん
2023/09/07(木) 15:38:29.71ID:kMvLzM04 デファクトと言える目安は Recent Downloadsで同カテゴリ2位以下と3倍以上差がついてるかどうか
142デフォルトの名無しさん
2023/09/07(木) 21:32:40.12ID:pU5U2pan GUIはデファクト無いと思う。要件で選ぶしかないわ。
143デフォルトの名無しさん
2023/09/07(木) 21:35:22.15ID:I+OYue/W RustならTUIが標準でしょ
144デフォルトの名無しさん
2023/09/07(木) 23:41:05.43ID:7NPDh5XT マウスでポチポチしたいんじゃ
145デフォルトの名無しさん
2023/09/08(金) 00:00:03.39ID:hm00xw28 Rust製のGUIフレームワークあれば良いんだろうが
現状はQtやらgtkのような他所製のエンジン(GUIツールキット)を利用するためのクレートを使うって感じだろ?
自分が分かる・使ったことがあるGUIツールキットをRustを介して使えになるんじゃないのか。
現状はQtやらgtkのような他所製のエンジン(GUIツールキット)を利用するためのクレートを使うって感じだろ?
自分が分かる・使ったことがあるGUIツールキットをRustを介して使えになるんじゃないのか。
146デフォルトの名無しさん
2023/09/08(金) 00:06:21.68ID:DPQbgsiL GUI に関しては OS (ディストリビューション) が提供するもの (をラップしたもの) を
避けるわけにいかないから「Rust 製」にこだわれないんだよね。
避けるわけにいかないから「Rust 製」にこだわれないんだよね。
147デフォルトの名無しさん
2023/09/08(金) 00:13:42.42ID:TT5R0qcn OSのコンポーネント使うことにこだわらないならeguiでよいのでは
148デフォルトの名無しさん
2023/09/08(金) 00:23:14.31ID:DPQbgsiL egui は名前がエグい
149デフォルトの名無しさん
2023/09/08(金) 00:25:14.57ID:3wUsERty GUIは各言語に関係なく様々なレイヤーや様々なカバー範囲などあってRust以外の言語でも多数の選択肢があり要件により変わる
Rustのクレートでも同様であり極端なものだと例えばx11-dlクレートも該当すればtauriクレートも該当して自分はどちらも別用途でそれぞれ使用している
Rustのクレートでも同様であり極端なものだと例えばx11-dlクレートも該当すればtauriクレートも該当して自分はどちらも別用途でそれぞれ使用している
150デフォルトの名無しさん
2023/09/08(金) 00:29:58.49ID:E3X/Jdig X11ならマルチプラットフォームでもRust製で作れるな
151デフォルトの名無しさん
2023/09/08(金) 01:30:03.20ID:EHbxHCsV フリーランスエンジニアになってからの年収推移を公開【現在年収1000万】
【実体験】仕事ができない新卒エンジニアでも月収70万フリーランスになれる理由
フリーランスエンジニアは年収900万円までは余裕!現役フリーランスエンジニアが徹底解説
フリーエンジニアの平均年収!未経験が年収1000万円を超える方法とは?
月額150万円以上も可能?ITフリーランスで高単価を獲得できる理由
在宅で年収1000万稼ぐフリーランスエンジニアの稼ぎ方【再現できる】
フリーランスのエンジニアやるなら45歳までに貯金5000万円作れないと死ぬ説
【実体験】仕事ができない新卒エンジニアでも月収70万フリーランスになれる理由
フリーランスエンジニアは年収900万円までは余裕!現役フリーランスエンジニアが徹底解説
フリーエンジニアの平均年収!未経験が年収1000万円を超える方法とは?
月額150万円以上も可能?ITフリーランスで高単価を獲得できる理由
在宅で年収1000万稼ぐフリーランスエンジニアの稼ぎ方【再現できる】
フリーランスのエンジニアやるなら45歳までに貯金5000万円作れないと死ぬ説
152デフォルトの名無しさん
2023/09/08(金) 06:05:02.97ID:1e7fFDSb >>144
今どきのTUIはマウスでポチポチできるようになってるぞ
今どきのTUIはマウスでポチポチできるようになってるぞ
153デフォルトの名無しさん
2023/09/08(金) 07:42:03.69ID:L1913KOe 管理画面はウェブベースにしておけ
154デフォルトの名無しさん
2023/09/08(金) 08:41:49.30ID:07e9DMWQ どういうこと(´・ω・`)?
155デフォルトの名無しさん
2023/09/08(金) 09:16:05.39ID:3pBwkm6o 田売りなのかなって気もするけど覚えること多そうだな…
156デフォルトの名無しさん
2023/09/08(金) 12:46:27.44ID:Qwh1dPVP Streamlit の Rust 版ってあるのかな
157デフォルトの名無しさん
2023/09/08(金) 14:11:22.78ID:E3X/Jdig158デフォルトの名無しさん
2023/09/08(金) 17:46:35.04ID:DPQbgsiL ターミナルがマウスイベント送信できるようになってるやつならね。(まあモダンなのはだいたい出来ると思うが)
159デフォルトの名無しさん
2023/09/08(金) 18:56:17.34ID:LCrxvNjx Tauriでいいじゃん
160デフォルトの名無しさん
2023/09/08(金) 19:04:26.66ID:TT5R0qcn sixel使ってターミナルGUIアプリケーションとかできないのかね
161デフォルトの名無しさん
2023/09/09(土) 00:48:43.38ID:uwI0AfpW tauri執拗にすすめるやつなんなの?病気?
162デフォルトの名無しさん
2023/09/09(土) 01:42:23.33ID:UR7WoOUT スレに2回しか出てないのに執拗とは
163デフォルトの名無しさん
2023/09/09(土) 01:55:37.10ID:nFkP/7o8 荒れるから、田売りの話は禁止にしよう
164デフォルトの名無しさん
2023/09/09(土) 02:24:44.28ID:i5s7UXai 「Electronよりなんか良いっぽい」以外の利点が知られていないTauriさん
165デフォルトの名無しさん
2023/09/09(土) 08:43:17.99ID:jpDXx+st yarnだのcargoだのどいつもこいつもなんでオレオレパッケージマネージャ使いたがるの😭
166デフォルトの名無しさん
2023/09/09(土) 09:07:53.17ID:cXOKMQb6 VSCodeなど(当時はTauriはなく)Electronで書かれたソフトが多いようにElectronとTauriは共通してメリットが多い
さらにWebアプリ化もしくはその逆も比較的容易
ただしどちらもHTML/CSS/(JavaScrpt)のWeb知識が必要なのでこれを持たない者だけが批判しがち
さらにWebアプリ化もしくはその逆も比較的容易
ただしどちらもHTML/CSS/(JavaScrpt)のWeb知識が必要なのでこれを持たない者だけが批判しがち
167デフォルトの名無しさん
2023/09/09(土) 09:14:21.06ID:Vd67mKNx オレオレじゃないパッケージマネージャというと?OS依存するものしか思いつかないが
168デフォルトの名無しさん
2023/09/09(土) 11:00:13.25ID:Ig5iuvnc html の設計がいびつなんだよね……。
xhtml まではドキュメント記述言語としてタグのセマンティクスを重視した設計だったのが
html5 から living standard の流れで html はウェブアプリケーション基盤だとする派閥が圧勝した。
そこからの流れで外観を記述する言語としての活用が広まっている状況があるのは事実だし、
もうこの流れに逆らえないのも事実だと思うが
html はやっぱり GUI 記述言語としては不格好な存在だよ。
xhtml まではドキュメント記述言語としてタグのセマンティクスを重視した設計だったのが
html5 から living standard の流れで html はウェブアプリケーション基盤だとする派閥が圧勝した。
そこからの流れで外観を記述する言語としての活用が広まっている状況があるのは事実だし、
もうこの流れに逆らえないのも事実だと思うが
html はやっぱり GUI 記述言語としては不格好な存在だよ。
169デフォルトの名無しさん
2023/09/09(土) 11:33:35.06ID:IggX53ET ハッピープライスパラダイス
ハイパーテキストマークアップランゲージ
あくまでもテキスト用言語だからなぁ
ハイパーテキストマークアップランゲージ
あくまでもテキスト用言語だからなぁ
170デフォルトの名無しさん
2023/09/09(土) 13:03:51.75ID:qxfK5/Yz HTML+JSが嫌なら全部canvas+wasmでやればええねん
アクセシビリティとかは考慮しないものとする
アクセシビリティとかは考慮しないものとする
171デフォルトの名無しさん
2023/09/09(土) 14:51:58.44ID:Ig5iuvnc 屋上屋を重ねるという慣用句はこういうときにつかうのかな。
172デフォルトの名無しさん
2023/09/09(土) 15:09:29.22ID:Ig5iuvnc >>165
C/C++ は実行環境の管理と開発環境の管理を分けないスタイル(ライブラリもディストリビューションのパッケージマネージャーで管理する)でやってたし、分離するにしても chroot (今ならdockerでもよいかも)とかで出来てたからそれ以上には発展しなかった。
でも本来は別物ということにするほうが自然だと思う。
言語をまたいだ開発をするプロジェクトがややこしくなるがそれは本来的にややこしいものだからしょうがない。
C/C++ は実行環境の管理と開発環境の管理を分けないスタイル(ライブラリもディストリビューションのパッケージマネージャーで管理する)でやってたし、分離するにしても chroot (今ならdockerでもよいかも)とかで出来てたからそれ以上には発展しなかった。
でも本来は別物ということにするほうが自然だと思う。
言語をまたいだ開発をするプロジェクトがややこしくなるがそれは本来的にややこしいものだからしょうがない。
173デフォルトの名無しさん
2023/09/09(土) 16:01:57.25ID:sGUJTy2x >>172
いつの話?無理やり停滞感を擦り付けている???
発展して_____+_____がデファクトスタンダード
それで不足なら_____サーバー
毎回ビルドに6時間とか待たなくて良いように発展した手法がほぼ統一された
Rustもビルド時間の件で大揉めしたじゃん、何も解決しなかったけど
(空気読んで情報は伏せた)
いつの話?無理やり停滞感を擦り付けている???
発展して_____+_____がデファクトスタンダード
それで不足なら_____サーバー
毎回ビルドに6時間とか待たなくて良いように発展した手法がほぼ統一された
Rustもビルド時間の件で大揉めしたじゃん、何も解決しなかったけど
(空気読んで情報は伏せた)
174デフォルトの名無しさん
2023/09/09(土) 16:45:26.09ID:Ig5iuvnc175デフォルトの名無しさん
2023/09/09(土) 18:12:41.11ID:hWR6yEQh >>174
>今は違うと強調した
本気で言っているのなら
ちょっと心配になるレベルのコミュ□だぞ
か、またはネット□□師か?
あと後出し皮肉オジは煽りオジと同化しているからやめろ
Rustで煽りオジはサイコパス確定した
https://mevius.5ch.net/test/read.cgi/tech/1693451813/93
>軽く煽った後は、本業に戻る、だよ 急がないし
>今は違うと強調した
本気で言っているのなら
ちょっと心配になるレベルのコミュ□だぞ
か、またはネット□□師か?
あと後出し皮肉オジは煽りオジと同化しているからやめろ
Rustで煽りオジはサイコパス確定した
https://mevius.5ch.net/test/read.cgi/tech/1693451813/93
>軽く煽った後は、本業に戻る、だよ 急がないし
176デフォルトの名無しさん
2023/09/09(土) 19:36:26.65ID:pYp2eZcM オジ連呼厨は他人に絡み過ぎ
このプログラム板では人でなくプログラムや技術に目を向けろ
>>165
cargoはrustcとハードリンク一体化してるようにRust用かつ公式
yarnとnpmで分裂しているのとは異なり一体化してくれていてありがたい
このプログラム板では人でなくプログラムや技術に目を向けろ
>>165
cargoはrustcとハードリンク一体化してるようにRust用かつ公式
yarnとnpmで分裂しているのとは異なり一体化してくれていてありがたい
177デフォルトの名無しさん
2023/09/09(土) 19:51:44.43ID:qxfK5/Yz >>165
大統一パッケージマネージャ作ってくれ
大統一パッケージマネージャ作ってくれ
178デフォルトの名無しさん
2023/09/09(土) 20:39:12.68ID:Rk1XYFyW debとかrpmとか
179デフォルトの名無しさん
2023/09/09(土) 21:06:18.16ID:IggX53ET >>178
aptで良いと思う
aptで良いと思う
180デフォルトの名無しさん
2023/09/09(土) 21:31:02.60ID:1qPxYBdj181デフォルトの名無しさん
2023/09/09(土) 21:33:52.69ID:Rk1XYFyW >>179
aptはdebパッケージの管理ツール
aptはdebパッケージの管理ツール
182デフォルトの名無しさん
2023/09/09(土) 22:07:42.11ID:qxfK5/Yz >>178
依存crateをいちいちapt-getしてくるのさすがに大変すぎないか?
依存crateをいちいちapt-getしてくるのさすがに大変すぎないか?
183デフォルトの名無しさん
2023/09/10(日) 10:57:43.69ID:yM7j2B0I >>165
antも廃れたな
antも廃れたな
184デフォルトの名無しさん
2023/09/10(日) 13:28:10.69ID:NvPhT1QM185デフォルトの名無しさん
2023/09/10(日) 14:52:06.76ID:9TiyMpcM mavenとかまだ使ってるとこあるの?
普通はgladleだよね?
未だにmavenだとしたらちょっとそこはヤバいと思う。
普通はgladleだよね?
未だにmavenだとしたらちょっとそこはヤバいと思う。
186デフォルトの名無しさん
2023/09/10(日) 15:10:16.28ID:yM7j2B0I 今でも使ってるなんて誰も言ってないのでは
187デフォルトの名無しさん
2023/09/10(日) 15:36:29.89ID:NvPhT1QM いや、未だにmavenって認識が間違ってるよ。
定型的な開発サイクルであればmavenで十分だしそこで明確なツラミもないのにgradleに移行しようって判断するようなチームはヤバい。
とはいえ今だと初手でgradle選択するチームが多いだろうね。
定型的な開発サイクルであればmavenで十分だしそこで明確なツラミもないのにgradleに移行しようって判断するようなチームはヤバい。
とはいえ今だと初手でgradle選択するチームが多いだろうね。
188デフォルトの名無しさん
2023/09/10(日) 16:18:37.72ID:yM7j2B0I 自分で質問して自分で答えるタイプの人でしたか
189デフォルトの名無しさん
2023/09/10(日) 17:15:47.84ID:DnwEEEwp みんなjavaに詳しいのね
190デフォルトの名無しさん
2023/09/11(月) 00:02:48.34ID:RxCGMczZ ビルドのためにグルービーとかいう言語を使わなければいけないことに異常性を感じないのかjavaの人たち
191デフォルトの名無しさん
2023/09/11(月) 00:13:23.96ID:aoFlyd5o MakefileやCMakeも大概だしビルドは魔境
192デフォルトの名無しさん
2023/09/11(月) 00:18:19.95ID:/EmpjAru Groovy は、Rubyist なら分かる。ほぼ同じ
193デフォルトの名無しさん
2023/09/11(月) 00:23:10.62ID:ul9tFljX >>190
今のgradleはgroovyじやなくてkotlinで書けるよ
今のgradleはgroovyじやなくてkotlinで書けるよ
194デフォルトの名無しさん
2023/09/11(月) 09:54:06.45ID:lXcI/Ajd もう maven も gradle も java も使ってないから安心汁
195デフォルトの名無しさん
2023/09/11(月) 17:56:49.57ID:gmM4YyOK >>190
世の中にはビルドとかCI/CDの定義ファイルがYAMLだからって、それ拡張してif else の制御構造組み込んでるところもあるんやで。
世の中にはビルドとかCI/CDの定義ファイルがYAMLだからって、それ拡張してif else の制御構造組み込んでるところもあるんやで。
196デフォルトの名無しさん
2023/09/11(月) 21:37:45.75ID:+I//Qqk+ >>195
antやん
antやん
197デフォルトの名無しさん
2023/09/13(水) 22:09:57.35ID:JQEDxoJN CNCF系はyaml好きだからね
それはさておき、言語固有のリポジトリマネージャはOSとは独立じゃないとディストリビュータもライブラリ管理者も辛いという必要性があって生み出されたもの
今後もなくなる事は無いでしょう。CPANあたりが元祖ですかね
それはさておき、言語固有のリポジトリマネージャはOSとは独立じゃないとディストリビュータもライブラリ管理者も辛いという必要性があって生み出されたもの
今後もなくなる事は無いでしょう。CPANあたりが元祖ですかね
198デフォルトの名無しさん
2023/09/13(水) 23:41:57.05ID:ljzzNVbD tomlがEBCDICで描かれてたら絶望しかない
199デフォルトの名無しさん
2023/09/14(木) 10:03:14.07ID:CfWv79JE さすがにcpanなんかもう使われてないよ
200デフォルトの名無しさん
2023/09/14(木) 10:31:50.25ID:JeXpXyyi tomlとRustって直接関係あるの?
単に採用が多いってだけ?
単に採用が多いってだけ?
201デフォルトの名無しさん
2023/09/14(木) 10:45:04.55ID:hWZaPMNq 明確に関係を規定しているわけではないが
開発ツールチェインで採用している以上は馴染みやすいし、
習慣的に toml が普通という感じ
開発ツールチェインで採用している以上は馴染みやすいし、
習慣的に toml が普通という感じ
202デフォルトの名無しさん
2023/09/14(木) 18:18:10.36ID:uElhXa+m JetBrains から RustRover 出たね。まだプレビュー版だけど。その代わり無料だ。
203デフォルトの名無しさん
2023/09/14(木) 18:20:11.06ID:uElhXa+m ぜひとも IntelliJ IDEA のように無料のcommunity版も出して欲しい。
204デフォルトの名無しさん
2023/09/15(金) 11:42:38.55ID:FLL155po205デフォルトの名無しさん
2023/09/15(金) 12:00:21.56ID:FSCF79pL めちゃペラいな
初めて3日くらいの感想ぽい
初めて3日くらいの感想ぽい
206デフォルトの名無しさん
2023/09/15(金) 12:00:26.41ID:LQyUZKSg しょーもな...
207デフォルトの名無しさん
2023/09/15(金) 12:03:53.15ID:xQfsfFQS しっかりやってる人の意見
https://kerkour.com/should-i-rust-or-should-i-go
Goと比較した場合のRust一番大きいメリットはエラー処理やバグ検知だけどasyncのデメリットが大きいのも確か
https://kerkour.com/should-i-rust-or-should-i-go
Goと比較した場合のRust一番大きいメリットはエラー処理やバグ検知だけどasyncのデメリットが大きいのも確か
208デフォルトの名無しさん
2023/09/15(金) 12:13:34.28ID:LoLA89os むしろNimのネガキャンにしかなってないって話題になってた記憶が
209デフォルトの名無しさん
2023/09/15(金) 12:13:50.38ID:+YuTSIf8210デフォルトの名無しさん
2023/09/15(金) 12:52:21.36ID:FLL155po 情報密度が違っててワロス
https://www.ossnews.jp/compare/Rust/Nim
https://www.ossnews.jp/compare/Rust/Nim
211デフォルトの名無しさん
2023/09/15(金) 12:58:36.85ID:FqVl8L26 >>207
むしろasyncが容易かつ効率的なことがRustの利点だよ
そして軽い非同期タスクを大量にマルチスレッド上でいわゆるM:Nスケジューリングできるのは、
RustとGoしかないためその両者の比較になるのはその通りだが出来る範囲はRustが広くきめ細かい
もちろん非同期以外の言語仕様も同様でGoは貧弱すぎる
むしろasyncが容易かつ効率的なことがRustの利点だよ
そして軽い非同期タスクを大量にマルチスレッド上でいわゆるM:Nスケジューリングできるのは、
RustとGoしかないためその両者の比較になるのはその通りだが出来る範囲はRustが広くきめ細かい
もちろん非同期以外の言語仕様も同様でGoは貧弱すぎる
212デフォルトの名無しさん
2023/09/15(金) 13:33:46.47ID:yoJlOour Go は貧弱だが Go くらいで十分な範囲をカバーできるだろ……という割り切りで設計されているように見える。
213デフォルトの名無しさん
2023/09/15(金) 14:58:25.08ID:3ICKgtSW Goは構文が簡素なのは割り切りとしていいと思うんだけど
参照周りの扱いとかCの頃から進歩してなくて
「こんなこと今どき人間が気をつけて書くの?」という気持ちにはなる
参照周りの扱いとかCの頃から進歩してなくて
「こんなこと今どき人間が気をつけて書くの?」という気持ちにはなる
214デフォルトの名無しさん
2023/09/15(金) 16:57:51.41ID:fC9P09S6215デフォルトの名無しさん
2023/09/15(金) 19:05:24.10ID:BkBNFquN216デフォルトの名無しさん
2023/09/15(金) 19:11:49.50ID:wdMffZ4Q >>215
RustとNimを比較してるサイト
RustとNimを比較してるサイト
217デフォルトの名無しさん
2023/09/15(金) 20:05:41.52ID:pQw5TxEC Goは構文簡素にしてても内部のGCとかは複雑にしてるイメージ。
218デフォルトの名無しさん
2023/09/15(金) 20:39:40.02ID:zdZpv9AJ219デフォルトの名無しさん
2023/09/15(金) 22:34:16.16ID:qrlNPDKn そのRust批判を書いてる人もそうだが
意味のあるプログラミング経験の少ない人はmutを毛嫌いしてるよな
言語に関係なくミュータブルか否かの区別がある方が好ましく
ミュータブルの使用は必要最小限が好ましい
という当たり前のことに沿う仕様なのに理解できなくて批判
意味のあるプログラミング経験の少ない人はmutを毛嫌いしてるよな
言語に関係なくミュータブルか否かの区別がある方が好ましく
ミュータブルの使用は必要最小限が好ましい
という当たり前のことに沿う仕様なのに理解できなくて批判
220デフォルトの名無しさん
2023/09/15(金) 23:11:51.65ID:UUFGnjcv >>219
ミュータブルか否かの区別があるのは煩雑になるだけで好ましくない。WindowsやLinuxのソースコードに
Rustが採用されたと言ってもごく一部でメモリ安全性が特に重視される部分だけ。全部をRustで書くなんて
煩雑な作業には人間はとても耐えられない。
ミュータブルか否かの区別があるのは煩雑になるだけで好ましくない。WindowsやLinuxのソースコードに
Rustが採用されたと言ってもごく一部でメモリ安全性が特に重視される部分だけ。全部をRustで書くなんて
煩雑な作業には人間はとても耐えられない。
221デフォルトの名無しさん
2023/09/15(金) 23:17:03.67ID:/YAD597I >>219
>ミュータブルか否かの区別がある方が好ましく
当たり前では
mojo調べでlet/var区別が好ましいと決着ついた
https://docs.modular.com/mojo/manual/basics/index.html#variables
rust mutが好まれてないだけ
>>220
let/varだと区別がありつつ煩雑じゃない、という事ですね
>ミュータブルか否かの区別がある方が好ましく
当たり前では
mojo調べでlet/var区別が好ましいと決着ついた
https://docs.modular.com/mojo/manual/basics/index.html#variables
rust mutが好まれてないだけ
>>220
let/varだと区別がありつつ煩雑じゃない、という事ですね
222デフォルトの名無しさん
2023/09/15(金) 23:24:01.30ID:/YAD597I223デフォルトの名無しさん
2023/09/15(金) 23:26:04.83ID:6F2DK256224デフォルトの名無しさん
2023/09/15(金) 23:28:27.24ID:/YAD597I あと前スレで出ていた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
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
225デフォルトの名無しさん
2023/09/15(金) 23:30:46.42ID:Mq8zEA1a letの後に識別子しか書けないならlet/varでいいんじゃね
パターンが書けるならlet/varよりlet/let mutの方が合理的な気がする
パターンが書けるならlet/varよりlet/let mutの方が合理的な気がする
226デフォルトの名無しさん
2023/09/15(金) 23:31:04.61ID:ksZUfg69 ここはRustのスレ
的外れなRust叩きをしているバカはアンチスレへ移動しろ
的外れなRust叩きをしているバカはアンチスレへ移動しろ
227デフォルトの名無しさん
2023/09/15(金) 23:35:09.11ID:/YAD597I sudo-rsも v0.2.0でstableと言い切って知らないdistributionに
ねじ込んだようですがその後どうなるのか要チェックです
ねじ込んだようですがその後どうなるのか要チェックです
228デフォルトの名無しさん
2023/09/15(金) 23:43:02.23ID:4Db3FasG mojoの所有権周りの構文ってRustより重い感じなんだな
これPython書きたいような人に受け入れられるんだろうか…
これPython書きたいような人に受け入れられるんだろうか…
229デフォルトの名無しさん
2023/09/15(金) 23:44:55.11ID:/YAD597I230デフォルトの名無しさん
2023/09/15(金) 23:47:42.54ID:cnhK/Rr/ >>221
たとえばRustでよくあるこういうパターンはmojoでどうするんだろう
let (tx, mut rx) = channel(100);
そもそも可変参照はどう区別するんだろうね
あと関数の引数変数のmutable性はどうやって表すんだろう
Rustのmutを添える方式が自由度が高くてわかりやすいよね
たとえばRustでよくあるこういうパターンはmojoでどうするんだろう
let (tx, mut rx) = channel(100);
そもそも可変参照はどう区別するんだろうね
あと関数の引数変数のmutable性はどうやって表すんだろう
Rustのmutを添える方式が自由度が高くてわかりやすいよね
231デフォルトの名無しさん
2023/09/15(金) 23:48:06.93ID:/YAD597I >>228
どの辺りが重い感じ?
どの辺りが重い感じ?
232デフォルトの名無しさん
2023/09/15(金) 23:52:51.61ID:4Db3FasG >>231
borrowed, inout, owenedって全部キーワード指定だし結構長くない?
自分はRustみたいに明示的なのが好きだから多少長くてもいいけど
Python好きな人だとどうなんだろうって
borrowed, inout, owenedって全部キーワード指定だし結構長くない?
自分はRustみたいに明示的なのが好きだから多少長くてもいいけど
Python好きな人だとどうなんだろうって
233デフォルトの名無しさん
2023/09/15(金) 23:54:33.01ID:Mq8zEA1a パターンマッチの場合束縛する変数が複数になり得るので、それぞれの変数に対して異なるmutabilityを宣言できる
あと、Rustは変数への束縛にmove/refの区別もあることも関係してるかもね
letやvarのように別構文を用意するなら、それぞれに対してmove版、ref版が必要になってしまう
あと、Rustは変数への束縛にmove/refの区別もあることも関係してるかもね
letやvarのように別構文を用意するなら、それぞれに対してmove版、ref版が必要になってしまう
234デフォルトの名無しさん
2023/09/15(金) 23:59:25.63ID:cnhK/Rr/ let (foo, ref mut bar) = とかよく使うもんね
mutやrefが分離キーワードになっているRustが便利
mutやrefが分離キーワードになっているRustが便利
235デフォルトの名無しさん
2023/09/15(金) 23:59:43.71ID:/YAD597I236デフォルトの名無しさん
2023/09/16(土) 00:02:44.62ID:A/Og/XEu237デフォルトの名無しさん
2023/09/16(土) 00:03:10.36ID:e71CP5Wp >>234
いや、今となってはrefはほとんど使わん
いや、今となってはrefはほとんど使わん
238デフォルトの名無しさん
2023/09/16(土) 00:26:11.63ID:h6vfr2ug TauriとTauri Mobileが別々の実装として統合されないの悪手だと思うんだがな
せっかくRustでロジック書けてネイティブ呼び出しまで簡単で手頃なフロントエンド実装で期待してたのにわざわざコミュニティ分断する必要あるんか?
なんかXamarinみたいな結末迎えそうで残念だわ
せっかくRustでロジック書けてネイティブ呼び出しまで簡単で手頃なフロントエンド実装で期待してたのにわざわざコミュニティ分断する必要あるんか?
なんかXamarinみたいな結末迎えそうで残念だわ
239デフォルトの名無しさん
2023/09/16(土) 09:10:27.83ID:FQ6fYHli240デフォルトの名無しさん
2023/09/16(土) 09:55:59.18ID:ZJLR+eYH >>238
無理に一つにしようとすると条件分岐増えてごちゃごちゃしてわかりにくくなる、というのはありそう。知らんけど。
無理に一つにしようとすると条件分岐増えてごちゃごちゃしてわかりにくくなる、というのはありそう。知らんけど。
241デフォルトの名無しさん
2023/09/16(土) 10:40:22.96ID:FZJflFW6 >>239
もう現金化してアンインスコしてる
もう現金化してアンインスコしてる
242デフォルトの名無しさん
2023/09/16(土) 11:27:20.46ID:8u+hT5wA RustRoverを試してみる
https://zenn.dev/helloyuki/scraps/a0241df49b2556
https://zenn.dev/helloyuki/scraps/a0241df49b2556
243デフォルトの名無しさん
2023/09/16(土) 11:55:36.71ID:jG7brSLe ウェブ系の奴らがやけにJetBrains推してくるけどAndroid Studio使ったら如何にゴミIDEなのかよくわかった
しかも個人使用でも買い切り数百ドルもしたのに今はサブスク月額1300円とかぼったくりもいいところ
VSCodeがあって本当によかったVSもCEならデバッガに制限あるけど無料だしこれほどMSに感謝したことはないね
しかも個人使用でも買い切り数百ドルもしたのに今はサブスク月額1300円とかぼったくりもいいところ
VSCodeがあって本当によかったVSもCEならデバッガに制限あるけど無料だしこれほどMSに感謝したことはないね
244デフォルトの名無しさん
2023/09/16(土) 12:20:19.81ID:E7jGhtqP mut よりもShared XOR Mutableの方が難しいだろ。
245デフォルトの名無しさん
2023/09/16(土) 12:41:23.41ID:8u+hT5wA >>243
Android Studio は IntelliJ IDEA がベースになっていて無料の community 版があるが?
ていうか Android Studio の方は最初から無料じゃなかったか? 金取るやつあるの?
Android Studio は IntelliJ IDEA がベースになっていて無料の community 版があるが?
ていうか Android Studio の方は最初から無料じゃなかったか? 金取るやつあるの?
246デフォルトの名無しさん
2023/09/16(土) 12:57:41.63ID:RATZO/gi247デフォルトの名無しさん
2023/09/16(土) 13:00:07.59ID:XaZSJ/up >>244
lifetimeが難しいというのも大体がshared xor mutableの話だしな
lifetimeが難しいというのも大体がshared xor mutableの話だしな
248デフォルトの名無しさん
2023/09/16(土) 13:07:54.84ID:2emM+tnC >>246
それだとimmutableとなり変数値を書き換えできないから根本から違う
それだとimmutableとなり変数値を書き換えできないから根本から違う
249デフォルトの名無しさん
2023/09/16(土) 13:23:53.43ID:RATZO/gi 描き替え出来るから問題無い
250デフォルトの名無しさん
2023/09/16(土) 13:57:40.01ID:2emM+tnC251デフォルトの名無しさん
2023/09/16(土) 14:05:34.65ID:RATZO/gi うん
だから付ける必要無い所まで描く必要無いよね
だから付ける必要無い所まで描く必要無いよね
252デフォルトの名無しさん
2023/09/16(土) 14:06:34.42ID:XaZSJ/up refとmoveの区別がある言語とそうでない言語の構文比較しても仕方なかろう
253デフォルトの名無しさん
2023/09/16(土) 14:10:34.38ID:nUKpqsu7254デフォルトの名無しさん
2023/09/16(土) 14:24:43.82ID:RATZO/gi >>253
だから付ける必要無い所まで描く必要無いよね
だから付ける必要無い所まで描く必要無いよね
255デフォルトの名無しさん
2023/09/16(土) 14:32:47.40ID:F5t5l7vC >>239
絶対に試すべきだね。
絶対に試すべきだね。
256デフォルトの名無しさん
2023/09/16(土) 14:37:19.47ID:nUKpqsu7 >>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を欠くことはできません
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を欠くことはできません
257デフォルトの名無しさん
2023/09/16(土) 14:43:13.66ID:BFCePFCu ほんまジャップはアホやな
しょーもない重箱の隅をつつきあって知識自慢のマウント合戦
そして出来上がった成果物は誰も使わないクソゴミ
ジャップがオナニーしてる間にソフトウェアは中国に30年遅れているという現実
お前ら見てるとマジで日本人がソフトウェアで土人の未開レベルな理由がよーくわかる
しょーもない重箱の隅をつつきあって知識自慢のマウント合戦
そして出来上がった成果物は誰も使わないクソゴミ
ジャップがオナニーしてる間にソフトウェアは中国に30年遅れているという現実
お前ら見てるとマジで日本人がソフトウェアで土人の未開レベルな理由がよーくわかる
258デフォルトの名無しさん
2023/09/16(土) 17:08:24.37ID:DWW8ClN4 まともなプログラミング言語ならばそれら四つの区別がある
例えば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を付けるかの些細な違いにすぎない
例えば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を付けるかの些細な違いにすぎない
259デフォルトの名無しさん
2023/09/16(土) 17:14:29.95ID:AP//fjNl 参照の可変性という概念を持つ言語がそもそも少ない
260デフォルトの名無しさん
2023/09/16(土) 17:15:13.87ID:AP//fjNl 概念が異なるのに構文の話だけをしても仕方ない
261デフォルトの名無しさん
2023/09/16(土) 17:34:04.75ID:nlb2ovML 参照先の値がread onlyかwritableかはプログラミングで極めて重要だよね
間違えて意図せず書き換えてしまっていたバグなどの減少にも繋がるから必要な機能じゃないかな
間違えて意図せず書き換えてしまっていたバグなどの減少にも繋がるから必要な機能じゃないかな
262デフォルトの名無しさん
2023/09/16(土) 17:37:07.29ID:sqsrY/cP >>258
2番目と4番目はRustだとsmellyなのでリファクタリング検討候補
2番目と4番目はRustだとsmellyなのでリファクタリング検討候補
263デフォルトの名無しさん
2023/09/16(土) 19:41:48.63ID:OLEDwioO >>204が言ってるのはmutの区別が不要じゃなくて
良く使うmutable側でタイプさせんなってことでしょ
良く使うmutable側でタイプさせんなってことでしょ
264デフォルトの名無しさん
2023/09/16(土) 20:04:56.12ID:DWW8ClN4 ほとんどのプログラムではmutと記述すべきところが少ない
もしmutが多いならレアケースを除いてコードを改善すべき可能性が高い
もしmutが多いならレアケースを除いてコードを改善すべき可能性が高い
265デフォルトの名無しさん
2023/09/16(土) 20:10:22.45ID:TlXhcaWs266デフォルトの名無しさん
2023/09/16(土) 20:12:22.58ID:b0KnMHZf267デフォルトの名無しさん
2023/09/16(土) 20:31:44.89ID:/CtnFWfv268デフォルトの名無しさん
2023/09/16(土) 20:37:59.24ID:EG7NJZsJ 多い少ないの話したいなら定量的な根拠持ってきてくれ
根拠ないなら断言するのはやめて
根拠ないなら断言するのはやめて
269デフォルトの名無しさん
2023/09/16(土) 20:45:23.05ID:DWW8ClN4270デフォルトの名無しさん
2023/09/16(土) 20:50:47.30ID:bcC3Efve どちらがより目立つべきかを考えたら
mutable なほうが目立つべきだし
目立って欲しい方に指定をつける文法が自然だ。
良く使うほうが短く書けるべきという視点だって
もちろん間違いではないし、評価軸は無数にある。
定量化したところでそれぞれの重みをどう捉えるかは
感性の問題だろ。
mutable なほうが目立つべきだし
目立って欲しい方に指定をつける文法が自然だ。
良く使うほうが短く書けるべきという視点だって
もちろん間違いではないし、評価軸は無数にある。
定量化したところでそれぞれの重みをどう捉えるかは
感性の問題だろ。
271デフォルトの名無しさん
2023/09/17(日) 12:16:37.26ID:ju6VviWZ272デフォルトの名無しさん
2023/09/17(日) 13:48:53.24ID:4koi4/xu273デフォルトの名無しさん
2023/09/17(日) 17:36:59.55ID:FEktRC8x 毎日ちょっとずつ課題でてそれを解いていくようなRust勉強サイトってないの?
ナンプレ毎日1問クリアしていく感じなやつ
ナンプレ毎日1問クリアしていく感じなやつ
274デフォルトの名無しさん
2023/09/18(月) 01:48:58.76ID:u21D7vuy >>273
exercism.org どうかな
exercism.org どうかな
275デフォルトの名無しさん
2023/09/18(月) 10:51:29.83ID:+ud3D/1q276デフォルトの名無しさん
2023/09/18(月) 12:04:31.40ID:X+wkGtcX >>267
エイリアス解析がやりやすくなって本質的に同じものなのか
複製が必須なのか自動で判断して最適化される。
プログラマが判断するよりたぶん賢い。
mut を付けるかどうかは性能じゃなくてロジック的な妥当さで決めるもんだよ。
エイリアス解析がやりやすくなって本質的に同じものなのか
複製が必須なのか自動で判断して最適化される。
プログラマが判断するよりたぶん賢い。
mut を付けるかどうかは性能じゃなくてロジック的な妥当さで決めるもんだよ。
277デフォルトの名無しさん
2023/09/18(月) 12:15:08.64ID:eKGbn4o/ techempowerベンチ見るとrustと比較してgoがしょぼいけど
こんなものなの?
こんなものなの?
278デフォルトの名無しさん
2023/09/18(月) 12:28:49.50ID:X+wkGtcX つよつよプログラマがチューニングすれば際限なく性能を挙げられるという意味での性能の良さと
非プログラマがテキトーに書いても及第点程度の性能が出るというのは言語として両立しにくい。
仮にしょぼいのが本当だとしてもトレードオフになる何かがあったりするから
総合的な使用感は実際に使ってみないとよくわからん。
非プログラマがテキトーに書いても及第点程度の性能が出るというのは言語として両立しにくい。
仮にしょぼいのが本当だとしてもトレードオフになる何かがあったりするから
総合的な使用感は実際に使ってみないとよくわからん。
279デフォルトの名無しさん
2023/09/18(月) 12:39:00.83ID:b4Z9xD4H280デフォルトの名無しさん
2023/09/18(月) 12:44:14.37ID:AWdb6cD0 なんでもイミュータブルじゃなくて必要な時にミュータブルにしつつ安全性をコンパイラが保証してくれるのがいいんだよなぁ。
281デフォルトの名無しさん
2023/09/18(月) 13:13:11.65ID:eKGbn4o/ そもそも、goはc#にすら負けてね?
1番高速じゃなくても2番目あたりでいいかなと思ってるんだけど
どれがいいのかなと
ななやむぐらいならわかりやすい1番にしとけばいいのか?
1番高速じゃなくても2番目あたりでいいかなと思ってるんだけど
どれがいいのかなと
ななやむぐらいならわかりやすい1番にしとけばいいのか?
282デフォルトの名無しさん
2023/09/18(月) 13:16:25.44ID:eKGbn4o/ goのgc調べてみましたが参照カウントとかじゃないのか
283デフォルトの名無しさん
2023/09/18(月) 13:54:07.10ID:1tuWbz8L Rustは見た目が汚いのが困る
もういっそCの方がきれいで安全で保守性が高いまである
もういっそCの方がきれいで安全で保守性が高いまである
284デフォルトの名無しさん
2023/09/18(月) 14:01:16.96ID:6k3cBrAf Cは大きなプロジェクトが汚すぎる
モジュールで名前空間分けられないから
モジュールで名前空間分けられないから
285デフォルトの名無しさん
2023/09/18(月) 14:04:02.95ID:DByXMqbY C言語は"安全装置のない銃"に徹しているからな
シンプルなだけに危険いっぱいだ
シンプルなだけに危険いっぱいだ
286デフォルトの名無しさん
2023/09/18(月) 14:43:26.49ID:EhgpbTsZ C#はunsafeやSpanがあるので頑張れば結構速い
ネイティブコンパイルもできるようになってきたからとにかく速度を求めるようなアプリじゃなければ十分
ネイティブコンパイルもできるようになってきたからとにかく速度を求めるようなアプリじゃなければ十分
287デフォルトの名無しさん
2023/09/18(月) 15:27:10.56ID:orcKBY2S Rustもcrateのダウンロード数に応じて
crate開発者が課金される時代か
メシウマじゃなかった胸熱
crate開発者が課金される時代か
メシウマじゃなかった胸熱
288デフォルトの名無しさん
2023/09/18(月) 15:57:52.35ID:qN+5vY8o 何の話かと思えばunityか
289デフォルトの名無しさん
2023/09/18(月) 16:04:36.29ID:2MGtTYvZ とりあえずミュータブルの話をするならshared xor mutable に触れなきゃ意味ないし、それなら元ネタのトランザクション分離レベルぐらいは勉強しとかんといかん。
290デフォルトの名無しさん
2023/09/18(月) 16:05:47.88ID:7BUJ27i/291デフォルトの名無しさん
2023/09/18(月) 17:52:28.36ID:yZdHYJJu292デフォルトの名無しさん
2023/09/18(月) 22:02:21.17ID:1tuWbz8L >>291
前置宣言だから綺麗に書けるまである
前置宣言だから綺麗に書けるまである
293デフォルトの名無しさん
2023/09/18(月) 22:29:41.23ID:b4Z9xD4H >>283
Rustは普通というか見た目キレイ側
Rustは普通というか見た目キレイ側
294デフォルトの名無しさん
2023/09/18(月) 23:41:51.16ID:X+wkGtcX >>290
ロジックが正しくてもバイナリレベルでは脆弱性になることがある。
分かりやすい例では、言語の理屈では寿命を終えたはずのオブジェクトでも再利用される機会がなくて内容が残り続けるとかね。
そういうときにでもどうにかする知見が C/C++ では積み上がってる。
普通に書いて脆弱性が発生しにくいに越したことはないが、脆弱性が発生していることがわかったときに直せる確信があるというのはセキュリティが重要な場面で C/C++ を使う理由になる。
C/C++ が「自分の足を撃つ」ことになるなんてのは百も二百も承知の上で、「自分の足を撃つことも出来る」ことに価値を見いだしてるんだよ。
もともと自分の足を撃つというのは戦争に行かなくて済むようにわざと撃つことがあるというのを下敷きにした言い回しで、危険であると同時にそれが必要なこともあるというニュアンスを含んでいる。
ロジックが正しくてもバイナリレベルでは脆弱性になることがある。
分かりやすい例では、言語の理屈では寿命を終えたはずのオブジェクトでも再利用される機会がなくて内容が残り続けるとかね。
そういうときにでもどうにかする知見が C/C++ では積み上がってる。
普通に書いて脆弱性が発生しにくいに越したことはないが、脆弱性が発生していることがわかったときに直せる確信があるというのはセキュリティが重要な場面で C/C++ を使う理由になる。
C/C++ が「自分の足を撃つ」ことになるなんてのは百も二百も承知の上で、「自分の足を撃つことも出来る」ことに価値を見いだしてるんだよ。
もともと自分の足を撃つというのは戦争に行かなくて済むようにわざと撃つことがあるというのを下敷きにした言い回しで、危険であると同時にそれが必要なこともあるというニュアンスを含んでいる。
295デフォルトの名無しさん
2023/09/18(月) 23:47:04.73ID:h2SSCK+Z296デフォルトの名無しさん
2023/09/19(火) 07:20:03.69ID:H6NF4sQp >>294
目的のために敢えてUB引き起こすってこと?
目的のために敢えてUB引き起こすってこと?
297デフォルトの名無しさん
2023/09/19(火) 11:44:23.57ID:B2l8DHRh >>294
>そういうときにでもどうにかする知見が C/C++ では積み上がってる。
所謂、バッドノウハウね。
そりゃさんざん今までやりまくって、なんなら現在進行形だったりするんだからノウハウも積み上がるさ。
>そういうときにでもどうにかする知見が C/C++ では積み上がってる。
所謂、バッドノウハウね。
そりゃさんざん今までやりまくって、なんなら現在進行形だったりするんだからノウハウも積み上がるさ。
298デフォルトの名無しさん
2023/09/19(火) 13:23:13.06ID:Gn3exU3j データベースのデータファイルの中の構造は、
C言語の「全部生メモリ」状態で、ポインタの
変わりにファイルポジションになっていて
普通に相互リンクトリンクやファイルポジション
をデータの位置を表現するのに使われていたりする。
だから、実行中のプログラムの RAM のメモリー安全
は確保されたとしても、ファイルの中は安全には
ならない。
C言語の「全部生メモリ」状態で、ポインタの
変わりにファイルポジションになっていて
普通に相互リンクトリンクやファイルポジション
をデータの位置を表現するのに使われていたりする。
だから、実行中のプログラムの RAM のメモリー安全
は確保されたとしても、ファイルの中は安全には
ならない。
299デフォルトの名無しさん
2023/09/19(火) 13:27:32.55ID:Gn3exU3j >>298
[補足]
・ポインターの代わりにファイルポジションが使用され、
古来の plain C と同様のプロググラミングが行なわれている。
・LockFile や fnctl で「部分ロック」が当たり前
のように使用されており、非常に複雑な
配慮が必要なプログラミングになっている。
もっといえば、DBMS を使うアプリケーションも、非常に
配慮が必要な場合も多く、どのようなテーブルやカラム構造
にするかは難しい。ID番号をリンクしたり、どうやって
データを参照しあうかなどが生ポインタと同様の難しさ
を持っていて、わずかでも間違えば、全データが論理破損
してしまう可能性を持っている。
[補足]
・ポインターの代わりにファイルポジションが使用され、
古来の plain C と同様のプロググラミングが行なわれている。
・LockFile や fnctl で「部分ロック」が当たり前
のように使用されており、非常に複雑な
配慮が必要なプログラミングになっている。
もっといえば、DBMS を使うアプリケーションも、非常に
配慮が必要な場合も多く、どのようなテーブルやカラム構造
にするかは難しい。ID番号をリンクしたり、どうやって
データを参照しあうかなどが生ポインタと同様の難しさ
を持っていて、わずかでも間違えば、全データが論理破損
してしまう可能性を持っている。
300デフォルトの名無しさん
2023/09/19(火) 14:54:41.30ID:rHe1cSmV だれか巻き込まれてないか?
https://www.youtube.com/watch?v=SzpaDEhm-8Q
https://www.youtube.com/watch?v=SzpaDEhm-8Q
301デフォルトの名無しさん
2023/09/19(火) 15:58:16.52ID:H6NF4sQp 形式検証をrustに組み込むのってどれくらい現実的なんだろ
言語本体ではなくてproc macroで実現できるのかね
言語本体ではなくてproc macroで実現できるのかね
302デフォルトの名無しさん
2023/09/19(火) 16:39:15.02ID:p1GkLls0 >>299
一般的なDBMSは中央集権でページアクセスを一元管理してるから生ポインタとは全く質が異なる
一般的なDBMSは中央集権でページアクセスを一元管理してるから生ポインタとは全く質が異なる
303デフォルトの名無しさん
2023/09/19(火) 17:37:47.80ID:/HqZkxNe >>302
ただ、購入履歴などは「誰が購入したか」のIDを
購入項目テーブルとユーザーテーブルを結びつける
必要があるので、IDがポインタの役割になる。
わずかでも狂うと、別人が買った項目が結び付け
られてしまう。
値が1つ、または、行が一行でもずれるとほぼ全体が破綻する。
ただ、購入履歴などは「誰が購入したか」のIDを
購入項目テーブルとユーザーテーブルを結びつける
必要があるので、IDがポインタの役割になる。
わずかでも狂うと、別人が買った項目が結び付け
られてしまう。
値が1つ、または、行が一行でもずれるとほぼ全体が破綻する。
304デフォルトの名無しさん
2023/09/19(火) 18:14:50.54ID:mxtPnJ5/ DBでも何でもそうだけどshared xor mutableも必要
305デフォルトの名無しさん
2023/09/19(火) 18:23:26.80ID:/HqZkxNe 販売サイトなどのバグって怖くて、500円のものが
バグれば5000円になったりする可能性ある。
そういうものは、プログラミングを気をつける
しかなくて、Rustの安全対策でも防げない。
バグれば5000円になったりする可能性ある。
そういうものは、プログラミングを気をつける
しかなくて、Rustの安全対策でも防げない。
306デフォルトの名無しさん
2023/09/19(火) 18:32:19.28ID:gvKDfDmE 「気を付ける」の内訳にはテストを書く習慣とかが含まれてる。
気を付けないとしょうがないけど
気を付けるのに使える道具はそれなりに揃ってる。
気を付けないとしょうがないけど
気を付けるのに使える道具はそれなりに揃ってる。
307デフォルトの名無しさん
2023/09/19(火) 18:34:24.73ID:mxtPnJ5/ すべてのバグをなくせる言語がないのは当たり前
データ競合により起こるそういう値のバグも現実にあるのだからRustでその手のバグをなくせるのも事実
データ競合により起こるそういう値のバグも現実にあるのだからRustでその手のバグをなくせるのも事実
308デフォルトの名無しさん
2023/09/19(火) 18:55:07.79ID:p1GkLls0 >>303
そのレイヤーの話でもDBMSはトランザクション管理されてるから生ポインタとは状況が全く異なる
トランザクショナルメモリで管理された共有メモリと生ポインタの違い(実際はそれよりもまだ差がある)
そのレイヤーの話でもDBMSはトランザクション管理されてるから生ポインタとは状況が全く異なる
トランザクショナルメモリで管理された共有メモリと生ポインタの違い(実際はそれよりもまだ差がある)
309デフォルトの名無しさん
2023/09/19(火) 19:02:27.03ID:p1GkLls0 >>304
同時実行制御には大きく楽観的制御と悲観的制御があるがshared xor mutableは後者
高い同時実行性能が求められる場合には楽観的同時実行制御を使うことが増えている
DBの話だけでなくロックフリーアルゴリズムも基本は楽観的制御
同時実行制御には大きく楽観的制御と悲観的制御があるがshared xor mutableは後者
高い同時実行性能が求められる場合には楽観的同時実行制御を使うことが増えている
DBの話だけでなくロックフリーアルゴリズムも基本は楽観的制御
310デフォルトの名無しさん
2023/09/19(火) 19:54:07.45ID:/x1C5Bro >>309
楽観的排他制御を用いることができる現実的ケースが狭い
衝突した時の処理やり直しコストも考慮する必要がある
その一般的な話とは別にポインタ(参照)の話の方は必ず衝突するためsingle writer xor multiple readersが必須
楽観的排他制御を用いることができる現実的ケースが狭い
衝突した時の処理やり直しコストも考慮する必要がある
その一般的な話とは別にポインタ(参照)の話の方は必ず衝突するためsingle writer xor multiple readersが必須
311デフォルトの名無しさん
2023/09/19(火) 21:00:27.72ID:BGD+Lo74 排他制御も凄く奥深い話ではあるが、そういう
ものだけでなく、単なるプログラムミスで、
ID番号が1つずれたり、行がなんらかの事が
原因で1ぎょうずれたりしても、大変な問題
を巻き起こす。だからテストは必須。
ものだけでなく、単なるプログラムミスで、
ID番号が1つずれたり、行がなんらかの事が
原因で1ぎょうずれたりしても、大変な問題
を巻き起こす。だからテストは必須。
312デフォルトの名無しさん
2023/09/19(火) 21:30:53.89ID:cyrWzrEE RDBMSで物理的な一行とか関係ない
テキストファイルに永続化してる素人だな
テキストファイルに永続化してる素人だな
313デフォルトの名無しさん
2023/09/19(火) 21:34:30.39ID:BGD+Lo74 >>312
DBMS自体をプログラムする場合には関係ある。
DBMS自体をプログラムする場合には関係ある。
314デフォルトの名無しさん
2023/09/19(火) 21:41:37.42ID:BGD+Lo74 それと、DBMSを使うに徹する場合でも、行に
付ける ID 番号の管理がまた問題になる。
それも慎重に良く考える必要がある。
付ける ID 番号の管理がまた問題になる。
それも慎重に良く考える必要がある。
315デフォルトの名無しさん
2023/09/19(火) 21:50:10.01ID:LcWw/5IR それサロゲートキー義務で設計したらの話でしょ
316デフォルトの名無しさん
2023/09/19(火) 21:55:08.52ID:BGD+Lo74 >>315
色々な機能を実装する上で、色々有り得る。
色々な機能を実装する上で、色々有り得る。
317デフォルトの名無しさん
2023/09/19(火) 22:32:18.55ID:e2nf9Krk >それと、DBMSを使うに徹する場合でも、行に
>付ける ID 番号の管理がまた問題になる。
DB板にもそういうのいるけどRDBにID必要と考えてるやつはもっかい勉強してこい
>付ける ID 番号の管理がまた問題になる。
DB板にもそういうのいるけどRDBにID必要と考えてるやつはもっかい勉強してこい
318デフォルトの名無しさん
2023/09/19(火) 22:44:03.77ID:5k6OZf8O >>310
>楽観的排他制御を用いることができる現実的ケースが狭い
MVCCやCASが楽観的制御
分散非同期が前提の世界では楽観的制御がデフォルト
じゃないとスケールしないから
Rustがコンパイル時悲観的制御にしてるのは実行時の管理を無くしたいからであってポインタだとshared xor mutableが必須だからではない
トランザクショナルメモリがその一例
>楽観的排他制御を用いることができる現実的ケースが狭い
MVCCやCASが楽観的制御
分散非同期が前提の世界では楽観的制御がデフォルト
じゃないとスケールしないから
Rustがコンパイル時悲観的制御にしてるのは実行時の管理を無くしたいからであってポインタだとshared xor mutableが必須だからではない
トランザクショナルメモリがその一例
319デフォルトの名無しさん
2023/09/19(火) 22:57:59.75ID:cyrWzrEE DBMSをプログラムする場合には当然関係ある
でも1行ずれたら大変とかいう下手くそは任されないので関係ない
でも1行ずれたら大変とかいう下手くそは任されないので関係ない
320デフォルトの名無しさん
2023/09/19(火) 23:03:17.25ID:BGD+Lo74321デフォルトの名無しさん
2023/09/19(火) 23:06:22.84ID:r+harKS8 可変参照と不変参照に対してMVCCなんて使えないよ
それはデータをコピーすることと同じになってしまう
ソフトウェアトランザクショナルメモリはどの環境でも使用可能なのに不利だからほぼ使われていない
さらにRustのshared xor mutableはそれらと独立した話であり共存できる話なのでshared xor mutable必須は問題ない
それはデータをコピーすることと同じになってしまう
ソフトウェアトランザクショナルメモリはどの環境でも使用可能なのに不利だからほぼ使われていない
さらにRustのshared xor mutableはそれらと独立した話であり共存できる話なのでshared xor mutable必須は問題ない
322デフォルトの名無しさん
2023/09/20(水) 01:44:31.66ID:16Zt41/R 会話のドッジボール
323デフォルトの名無しさん
2023/09/20(水) 09:31:56.94ID:R98wQa7Y >>303
マイニャンバーですね判ります
マイニャンバーですね判ります
324デフォルトの名無しさん
2023/09/20(水) 09:33:37.66ID:R98wQa7Y325デフォルトの名無しさん
2023/09/20(水) 09:37:31.04ID:R98wQa7Y >>313
いやいやωωω
いやいやωωω
326デフォルトの名無しさん
2023/09/20(水) 09:39:49.95ID:erhjcmms327デフォルトの名無しさん
2023/09/20(水) 09:41:04.74ID:erhjcmms328デフォルトの名無しさん
2023/09/20(水) 10:30:52.85ID:jgkdiTgC SQLiteはファイルロックに頼らざるを得ない仕組みなのでDBとしては特殊
329デフォルトの名無しさん
2023/09/20(水) 11:17:52.24ID:InZb605T 俺が高校生だった25年前頃、志木駅で500円分ぐらいのパンを買ったら4000円ぐらい請求されたぞ
330デフォルトの名無しさん
2023/09/20(水) 11:46:41.00ID:UfpBE+4Y まあ他のバグが減ればその分本質的な問題に注力出来るわな
そういうのはテストケースも綿密に行う必要がある
そういうのはテストケースも綿密に行う必要がある
331デフォルトの名無しさん
2023/09/20(水) 12:17:55.14ID:1SabZs8d >>317
むしろナチュラルキーにして詰んだりバグってる
むしろナチュラルキーにして詰んだりバグってる
332デフォルトの名無しさん
2023/09/20(水) 13:53:51.14ID:56axJTdd ナチュラルキーがプロジェクトの最後までユニーク保障されたことなんかマジで無いズラ
サロゲートキーは必須ズラ
サロゲートキーは必須ズラ
333デフォルトの名無しさん
2023/09/20(水) 14:13:13.56ID:I55f6i4N 今日入門した。ツアーやったらサンプルプログラムが80個ぐらいできた
fn a(i: i32){ println!("{}",i) }
fn main(){ let x = 10; a(x); a(x) }
これは10が2回出力される
構造体引数だと2回よべずにエラーが出たけど
プリミティブ型?なら所有権がどうのとかなくてスタックにコピーされるだけであってる?
fn a(i: i32){ println!("{}",i) }
fn main(){ let x = 10; a(x); a(x) }
これは10が2回出力される
構造体引数だと2回よべずにエラーが出たけど
プリミティブ型?なら所有権がどうのとかなくてスタックにコピーされるだけであってる?
334333
2023/09/20(水) 14:30:53.92ID:I55f6i4N 別のチュートリアル始めて理解した
コピートレイトが実装されてるからなのか
コピートレイトが実装されてるからなのか
335デフォルトの名無しさん
2023/09/20(水) 15:53:12.11ID:R98wQa7Y #[derive(Copy)] 禁止
336デフォルトの名無しさん
2023/09/20(水) 18:16:56.45ID:52Xj2Gp1 >>328
他のDBMSでもプロセス間の排他制御は
出来る方法が限られているのでファイルロックを
使っている可能性が高い。
他の方法だと、mkdir 法や、名前付きパイプが
あることがあるが、ファイルロックの方が便利。
一つのプロセスの中のスレッド間の排他制御は
色々な方法が有るが、プロセスを越えた排他制御
は意外と他に出来る方法が無いから。
他のDBMSでもプロセス間の排他制御は
出来る方法が限られているのでファイルロックを
使っている可能性が高い。
他の方法だと、mkdir 法や、名前付きパイプが
あることがあるが、ファイルロックの方が便利。
一つのプロセスの中のスレッド間の排他制御は
色々な方法が有るが、プロセスを越えた排他制御
は意外と他に出来る方法が無いから。
337デフォルトの名無しさん
2023/09/20(水) 18:33:23.45ID:I55f6i4N338デフォルトの名無しさん
2023/09/20(水) 18:51:23.96ID:o02nl+od rustの名前の由来は?
339デフォルトの名無しさん
2023/09/20(水) 19:07:11.98ID:DDNbmZRy340デフォルトの名無しさん
2023/09/20(水) 19:38:07.98ID:I55f6i4N 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のパッケージ名が変わったりしたのでしょうか
わかる人いますか
[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のパッケージ名が変わったりしたのでしょうか
わかる人いますか
341デフォルトの名無しさん
2023/09/20(水) 20:29:54.63ID:X4X5BtpX342デフォルトの名無しさん
2023/09/20(水) 21:48:28.31ID:UIQvYKk8 >>331
ナチュラルキーをまともに扱えない奴はそもそも設計者失格だろう
ナチュラルキーをまともに扱えない奴はそもそも設計者失格だろう
343デフォルトの名無しさん
2023/09/20(水) 22:20:31.31ID:DDNbmZRy >>340
単純に動かすだけならdev-dependenciesからdependenciesに移せばいいと思う
テスト用の依存としてdev-dependenciesにこだわるなら
use beryllium::*;
の前に
extern crate beryllium;
を入れれば通るかな
あまりdev-dependencies使わないから分からん
単純に動かすだけならdev-dependenciesからdependenciesに移せばいいと思う
テスト用の依存としてdev-dependenciesにこだわるなら
use beryllium::*;
の前に
extern crate beryllium;
を入れれば通るかな
あまりdev-dependencies使わないから分からん
344デフォルトの名無しさん
2023/09/20(水) 22:37:25.93ID:I55f6i4N >>343 ありがとうございます、動かせました!楽しい
345デフォルトの名無しさん
2023/09/20(水) 23:23:26.93ID:T1fPPHAq dev-dependenciesについてはこの辺参照
testやbenchやexampleだけで使う依存を定義するやつ
https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#development-dependencies
main関数の中で必要なら普通のdependencyにしないといけない
extern crateは関係ない
testやbenchやexampleだけで使う依存を定義するやつ
https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#development-dependencies
main関数の中で必要なら普通のdependencyにしないといけない
extern crateは関係ない
346デフォルトの名無しさん
2023/09/20(水) 23:35:58.10ID:8RfwRI5f347デフォルトの名無しさん
2023/09/21(木) 00:37:39.43ID:hd16Ksmk >>336
単一ファイルでまかなうSqliteと一緒にすんな
単一ファイルでまかなうSqliteと一緒にすんな
348デフォルトの名無しさん
2023/09/21(木) 02:18:25.33ID:AFY6neVf >>341
CreateMutex()の第三引数に名前を指定しなければ
ならないが、ユニークな名前をどうやって作るか
が大問題になるよね。
その点、LockFile() なら名前衝突の問題は
最初から簡単に確実に回避できる。
CreateMutex()の第三引数に名前を指定しなければ
ならないが、ユニークな名前をどうやって作るか
が大問題になるよね。
その点、LockFile() なら名前衝突の問題は
最初から簡単に確実に回避できる。
349デフォルトの名無しさん
2023/09/21(木) 03:10:10.71ID:2dN46EMa 普通のDBってインターフェースを一つのサーバーで提供してると思うんだけど
名前解決が出来ない管理なんてあるの?
名前解決が出来ない管理なんてあるの?
350デフォルトの名無しさん
2023/09/21(木) 03:14:44.34ID:AFY6neVf351デフォルトの名無しさん
2023/09/21(木) 04:39:08.18ID:uFUX5dn+ まずプロセスを分けるメリットがない
CPUコアスレッド数のスレッドを立ち上げれば一つのプロセスでそのマシンのリソースを使い切れる
ただし通信待ちでスレッドが止まったらその分のCPUリソースを無駄にしてしまうため各スレッドで複数のタスクを動かす
ただし各スレッドが抱えるタスク数は偏りがちなことが知られているため暇なスレッドは他からタスクを盗んで実行できるようにする
以上のスケジューリングをするのがRustのtokio
CPUコアスレッド数のスレッドを立ち上げれば一つのプロセスでそのマシンのリソースを使い切れる
ただし通信待ちでスレッドが止まったらその分のCPUリソースを無駄にしてしまうため各スレッドで複数のタスクを動かす
ただし各スレッドが抱えるタスク数は偏りがちなことが知られているため暇なスレッドは他からタスクを盗んで実行できるようにする
以上のスケジューリングをするのがRustのtokio
352デフォルトの名無しさん
2023/09/21(木) 08:25:19.60ID:CT30w3BF353デフォルトの名無しさん
2023/09/21(木) 10:46:48.71ID:BwXSXzYj354デフォルトの名無しさん
2023/09/21(木) 10:59:44.45ID:3hJtL3Ib mutable xor sharedはトランザクション分離レベルで言うとSERIALIZABLEだと思うけど、書き込み性能にけっこう致命的なパフォーマンス劣化が出たりしない?
あらかじめ主要な書き込み先オブジェクトの参照を保持しておくとかのオブジェクト指向の定石が利用出来ないし。
あらかじめ主要な書き込み先オブジェクトの参照を保持しておくとかのオブジェクト指向の定石が利用出来ないし。
355デフォルトの名無しさん
2023/09/21(木) 11:03:41.54ID:KbwNEPLt SQLiteは今、日本の人が一人でRustに移植してるみたいだけど?
完成度は知らない
完成度は知らない
356デフォルトの名無しさん
2023/09/21(木) 13:31:34.10ID:cACw6b27 >>351
MySQLやPostgreSQLみたいな普通のDBMSでは
単一プロセスがデーモンとして常駐してファイル更新
を一元管理するのが前提となっているが、
SQLiteでは、そのような常駐プロセスが
存在しなくて、各アプリがSQLiteのライブラリ
プログラムを呼び出して、ライブラリの関数が
排他制御を行なって単一ファイルを壊さないように
ロックしながら互いに強調しつつ、部分書き換えや
部分読み込みを行っている。
つまり、SQLiteは管理を担う単一の常駐プログラム
がなくて、個々のアプリ(の中のライブラリ)が
協調動作するようになっている。
だから、プロセス間で同期を取る仕組みが必要となる。
しかし、CreateMutexでは、ユニークな名前が必要
となってしまい、その名前を決めるのがメンドクサイ。
一方、LockFile だとファイルのパス名で自動的に
ユニークの名前に出来てしまうから、非常に簡単に
安全に正しくロックできる。
MySQLやPostgreSQLみたいな普通のDBMSでは
単一プロセスがデーモンとして常駐してファイル更新
を一元管理するのが前提となっているが、
SQLiteでは、そのような常駐プロセスが
存在しなくて、各アプリがSQLiteのライブラリ
プログラムを呼び出して、ライブラリの関数が
排他制御を行なって単一ファイルを壊さないように
ロックしながら互いに強調しつつ、部分書き換えや
部分読み込みを行っている。
つまり、SQLiteは管理を担う単一の常駐プログラム
がなくて、個々のアプリ(の中のライブラリ)が
協調動作するようになっている。
だから、プロセス間で同期を取る仕組みが必要となる。
しかし、CreateMutexでは、ユニークな名前が必要
となってしまい、その名前を決めるのがメンドクサイ。
一方、LockFile だとファイルのパス名で自動的に
ユニークの名前に出来てしまうから、非常に簡単に
安全に正しくロックできる。
357デフォルトの名無しさん
2023/09/21(木) 16:18:11.92ID:B1OFnXUk 3文字で言うと
358デフォルトの名無しさん
2023/09/21(木) 16:54:51.87ID:2fMT8T96 SQLite便利だよ
359デフォルトの名無しさん
2023/09/21(木) 17:25:46.98ID:WBcwDy8I sqliteは便利だけどテーブルロックなところがうんこなんだよな
begin conccurentとか予定あるらしいが
begin conccurentとか予定あるらしいが
360デフォルトの名無しさん
2023/09/21(木) 20:32:07.68ID:2tR0WsIS 複数のプロセスからアクセスしないのを前提条件に出来る場合もそれなりにあるもんな。
ちょっとしたツールでデータベースのプロセスをいちいち起動するのはわずらわしいし、 sqlite くらいの気軽さはありがたいのは確か。
sqlite みたいな方針のデータベースが他に台頭してないのが不思議なくらいだ。
ちょっとしたツールでデータベースのプロセスをいちいち起動するのはわずらわしいし、 sqlite くらいの気軽さはありがたいのは確か。
sqlite みたいな方針のデータベースが他に台頭してないのが不思議なくらいだ。
361デフォルトの名無しさん
2023/09/21(木) 20:41:30.87ID:PYjX2iWU362デフォルトの名無しさん
2023/09/21(木) 20:59:40.19ID:WBcwDy8I もっとひどいデータベース単位か
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい
363デフォルトの名無しさん
2023/09/21(木) 20:59:47.82ID:WBcwDy8I もっとひどいデータベース単位か
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい
https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
これでページ単位が導入されても、select for updateみたいに明示的にロック
がほしいな
リトライとかだるい
364デフォルトの名無しさん
2023/09/21(木) 23:58:45.91ID:+/xN81gC 以下のような関数(実際のものとは少し違いますが)を実装してみたのですがイテレータのメソッドチェーンの箇所で型が合っていないとコンパイルエラーが発生します
アルゴリズム自体を変更することで目的としていた処理はできましたが結局このエラーの直し方がわかりません
ライフタイム周りが原因だとは考えていますがどのように修正すればよいしょうか
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);
}
}
アルゴリズム自体を変更することで目的としていた処理はできましたが結局このエラーの直し方がわかりません
ライフタイム周りが原因だとは考えていますがどのように修正すればよいしょうか
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);
}
}
365デフォルトの名無しさん
2023/09/22(金) 09:19:17.11ID:dkRHHNCe 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);
}
}
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);
}
}
366デフォルトの名無しさん
2023/09/22(金) 12:36:56.71ID:E1X0qleO lifetimeの問題もあるかもしれないがimpl Iteratorの型をとるところに関数内で生成したイテレータを渡しているのがそもそもおかしい
367デフォルトの名無しさん
2023/09/22(金) 13:53:26.70ID:dkRHHNCe >>360
mdb
mdb
368デフォルトの名無しさん
2023/09/22(金) 16:15:11.47ID:v8mgsVW8 >>366
mapにはhogeの外から引数として関数を渡しているので再帰呼出しごとにイテレータの型は変わらないですし
```
let mut v = Vec::new();
hoge(|(&a, b)| a + b, &[1, 3, 5], &mut v);
```
という形でhogeを呼び出せばイテレータの型は自動的に推論されると思うんですが...
mapにはhogeの外から引数として関数を渡しているので再帰呼出しごとにイテレータの型は変わらないですし
```
let mut v = Vec::new();
hoge(|(&a, b)| a + b, &[1, 3, 5], &mut v);
```
という形でhogeを呼び出せばイテレータの型は自動的に推論されると思うんですが...
369デフォルトの名無しさん
2023/09/22(金) 18:07:36.44ID:KH67E8jw impl TraitはTraitを実装した型のいずれか一つを受け入れるだけで、Traitを実装した型全てを受け入れるわけではない
370デフォルトの名無しさん
2023/09/22(金) 18:31:55.39ID:v8mgsVW8 >>369
mapの中に直接クロージャを渡せば確かにその制限に引っかかりますが、今回は再帰の中で一つの関数を使いまわしているのでimpl Iteratorの型は一つに固定されませんか?
mapの中に直接クロージャを渡せば確かにその制限に引っかかりますが、今回は再帰の中で一つの関数を使いまわしているのでimpl Iteratorの型は一つに固定されませんか?
371デフォルトの名無しさん
2023/09/22(金) 18:41:57.56ID:v8mgsVW8 >>365
イテレータのまま保持して遅延評価させたいんです
イテレータのまま保持して遅延評価させたいんです
372デフォルトの名無しさん
2023/09/22(金) 18:43:25.81ID:8SLDLfd5 関数定義から一意な具体型に推論されるのは戻り値型に書いた 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
引数型に書いた 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
373デフォルトの名無しさん
2023/09/22(金) 19:29:43.87ID:v8mgsVW8 >>372
コンパイル通りました!ありがとうございます!
ただもう少しわがままを言うと、実際の実装ではメソッドチェーンの箇所がこれの2倍ぐらいの長さなので具体的なイテレータの型を書かずにコンパイラ任せにしたかったんですが、話を見る限りどうも無理そうですね...
コンパイル通りました!ありがとうございます!
ただもう少しわがままを言うと、実際の実装ではメソッドチェーンの箇所がこれの2倍ぐらいの長さなので具体的なイテレータの型を書かずにコンパイラ任せにしたかったんですが、話を見る限りどうも無理そうですね...
374デフォルトの名無しさん
2023/09/23(土) 08:15:26.34ID:piK9W+al375デフォルトの名無しさん
2023/09/23(土) 09:19:17.35ID:lKOAbDFW 可能なら dyn は避けるに越したことは無い。
dyn はトレイトオブジェクトを扱うための仕組みであって
推論を補助する仕組みではないから。
dyn はトレイトオブジェクトを扱うための仕組みであって
推論を補助する仕組みではないから。
376デフォルトの名無しさん
2023/09/23(土) 09:55:40.35ID:piK9W+al >>375
実装の隠蔽目的でdyn使うのはそんなに変な使い方ではないと思うが
実装の隠蔽目的でdyn使うのはそんなに変な使い方ではないと思うが
377デフォルトの名無しさん
2023/09/23(土) 09:59:36.45ID:i9fpyxKg Box<dyn Trait>で解決しました本当にありがとうございました
378デフォルトの名無しさん
2023/09/23(土) 16:36:06.31ID:WPP4nTE5 >>364です
補足すると今回自分がわかっていなかったのは以下のような関数がコンパイルを通らないということですね
```
fn hoge<T>(a: i64, b: &mut T) {
*b = a;
}
```
impl Traitが単にジェネリクスの糖衣構文であるということと、
トレイト境界を満たす型をジェネリクス引数に渡した場合は合法に"ならなければならない"、トレイト境界は十分条件も満たさなくてはならないという点を解っていなかったのがポイントでした...
補足すると今回自分がわかっていなかったのは以下のような関数がコンパイルを通らないということですね
```
fn hoge<T>(a: i64, b: &mut T) {
*b = a;
}
```
impl Traitが単にジェネリクスの糖衣構文であるということと、
トレイト境界を満たす型をジェネリクス引数に渡した場合は合法に"ならなければならない"、トレイト境界は十分条件も満たさなくてはならないという点を解っていなかったのがポイントでした...
379デフォルトの名無しさん
2023/09/23(土) 21:17:07.32ID:piK9W+al 戻り値のimpl Traitと引数のimpl Traitで振る舞い違うのは当たり前ではあるんだけど混乱しやすいポイントではあるかもね
380デフォルトの名無しさん
2023/09/24(日) 12:22:42.57ID:2YTVyUlC 0788デフォルトの名無しさん
2022/06/21(火) 08:59:28.38ID:vO+TReRM
俺はフロントエンドやらないからこのスレでTauriの話をしないでくれ
2022/06/21(火) 08:59:28.38ID:vO+TReRM
俺はフロントエンドやらないからこのスレでTauriの話をしないでくれ
381デフォルトの名無しさん
2023/09/24(日) 12:36:49.28ID:2YTVyUlC382デフォルトの名無しさん
2023/09/25(月) 23:08:53.71ID:OcxuhTB3 rustでdx12ってまともに使えますか?
そろそろc++は卒業したい
そろそろc++は卒業したい
383デフォルトの名無しさん
2023/09/26(火) 10:01:41.63ID:q653RLNX >>382
使えないということだな。
使えないということだな。
384デフォルトの名無しさん
2023/09/26(火) 17:46:11.75ID:WrG1pnap 一応d3d12があるけど、これを直接使うよりwgpu経由のほうがいいんじゃないか?
385デフォルトの名無しさん
2023/09/26(火) 18:52:01.41ID:liEPyEVD rustとgoとc#でjsonのシリアライズ、デシリアライズ実験したんだけど
rust 1ms cargo run --release
go 10ms
c# 40ms dotnet build -c Release
こんなに違うもんなの?
リリースモードでビルドしたつもりだけど
WebAPIのバックエンドどれにするか悩んでたけどもうrust1択でいいやん
rust 1ms cargo run --release
go 10ms
c# 40ms dotnet build -c Release
こんなに違うもんなの?
リリースモードでビルドしたつもりだけど
WebAPIのバックエンドどれにするか悩んでたけどもうrust1択でいいやん
386デフォルトの名無しさん
2023/09/26(火) 21:18:52.63ID:rDjR9GdF 最適化で計測対象の処理が丸ごと消えてないかな
どこかでデータのサイズとか集計とか出力してればいいけど
どこかでデータのサイズとか集計とか出力してればいいけど
387デフォルトの名無しさん
2023/09/26(火) 21:22:16.85ID:sfzsNV4F さすがそこまで速くないよね
C#ももっと速いような気がする
C#ももっと速いような気がする
388デフォルトの名無しさん
2023/09/26(火) 21:40:15.73ID:aJs6t/KK コードの問題かベンチマークの問題だね
389デフォルトの名無しさん
2023/09/26(火) 21:41:15.28ID:K0prie5d390デフォルトの名無しさん
2023/09/26(火) 21:41:38.03ID:aJs6t/KK391デフォルトの名無しさん
2023/09/26(火) 21:56:19.26ID:liEPyEVD392デフォルトの名無しさん
2023/09/26(火) 21:59:59.97ID:liEPyEVD つか、goってリリースビルドないやろ?
コンパイルも一瞬でへ?ってなるわ
それぞれ30行未満のコードだけど..
コンパイルも一瞬でへ?ってなるわ
それぞれ30行未満のコードだけど..
393デフォルトの名無しさん
2023/09/26(火) 22:29:35.41ID:liEPyEVD https://controlc.com/77570dbc
goだとこんな感じ
goだとこんな感じ
394デフォルトの名無しさん
2023/09/26(火) 22:43:29.67ID:liEPyEVD ああ、ごめんC#は嘘でしたすみません
3msになりました
3msになりました
395デフォルトの名無しさん
2023/09/26(火) 22:55:30.68ID:liEPyEVD Rustは最強で
C#はメモリ使用量多いがMSが最適化ガンバッテル
Goはメモリ使用量少なくて言語仕様がシンプルだがC#に負けたり...
C#はメモリ使用量多いがMSが最適化ガンバッテル
Goはメモリ使用量少なくて言語仕様がシンプルだがC#に負けたり...
396デフォルトの名無しさん
2023/09/26(火) 23:05:14.16ID:EQtG/kil 意味のないベンチマークだね
ちなみにこういうのはNimが速いと思うよ
結局こういうのってコンパイラの最適化の勝負をしているだけだから
Rustが速いというよりはLLVMが速いだけ
Zigとかでも同じスピードが出るはず
その代わりにコンパイル速度が遅いというデメリットがあるからこれは単なるトレードオフで、用途に応じて適した言語を選択するのが重要ってだけだね
WebAPI作るならIOが結局ボトルネックになるからパフォーマンス気にするにしても別にスクリプト言語じゃないならなんでもいいのよね
好きな言語にすればいいと思う
ちなみにこういうのはNimが速いと思うよ
結局こういうのってコンパイラの最適化の勝負をしているだけだから
Rustが速いというよりはLLVMが速いだけ
Zigとかでも同じスピードが出るはず
その代わりにコンパイル速度が遅いというデメリットがあるからこれは単なるトレードオフで、用途に応じて適した言語を選択するのが重要ってだけだね
WebAPI作るならIOが結局ボトルネックになるからパフォーマンス気にするにしても別にスクリプト言語じゃないならなんでもいいのよね
好きな言語にすればいいと思う
397デフォルトの名無しさん
2023/09/26(火) 23:08:16.82ID:kLEETtIu それはともかく
NimはRustに対して意味のあるアドバンテージ皆無でNimだけは要らん
NimはRustに対して意味のあるアドバンテージ皆無でNimだけは要らん
398デフォルトの名無しさん
2023/09/26(火) 23:14:09.15ID:liEPyEVD まぁ、データベースはおもいっきし叩くね
最初は最強言語じゃなくてわかりやすい2番あたりの言語でいこうと思ってるんだけたんだけど
で、1番ははっきりRustっぽいからわかりやすいからいんだけど、
2番(C#,Go?)がはっきりしないから1番の言語でいいのかなと
最大の目的はサーバー費用を押さえられるように
最初は最強言語じゃなくてわかりやすい2番あたりの言語でいこうと思ってるんだけたんだけど
で、1番ははっきりRustっぽいからわかりやすいからいんだけど、
2番(C#,Go?)がはっきりしないから1番の言語でいいのかなと
最大の目的はサーバー費用を押さえられるように
399デフォルトの名無しさん
2023/09/26(火) 23:14:24.83ID:gNMcg380 Nimはオフサイドルールってだけで試す気にもならないんだよな…
400デフォルトの名無しさん
2023/09/26(火) 23:52:14.82ID:lFc5NXyg >>396
多数の非同期タスクを偏らずスレッド間でスチールしてスケジューリングできるのは現状GoとRustしかない
小規模ならGoでもよいがそれ以上だと言語機能が貧弱なGoは辛くなってきてRustの独壇場
多数の非同期タスクを偏らずスレッド間でスチールしてスケジューリングできるのは現状GoとRustしかない
小規模ならGoでもよいがそれ以上だと言語機能が貧弱なGoは辛くなってきてRustの独壇場
401デフォルトの名無しさん
2023/09/27(水) 00:09:38.71ID:8IPpP98U402デフォルトの名無しさん
2023/09/27(水) 00:11:19.90ID:8IPpP98U この妄想も延々言ってたけどやっと黙るのかな?
470: デフォルトの名無しさん sage 2023/09/26(火) 09:57:28.51 ID:ycG3j/g+
>>469
IaaSの一部にそういうケースがありうるだけだぞ
PaaS (FaaS)は基本的にメモリ使用量✕実行時間で料金が決まる
メモリ使用量は少なければ少ないほどコストに優れている
470: デフォルトの名無しさん sage 2023/09/26(火) 09:57:28.51 ID:ycG3j/g+
>>469
IaaSの一部にそういうケースがありうるだけだぞ
PaaS (FaaS)は基本的にメモリ使用量✕実行時間で料金が決まる
メモリ使用量は少なければ少ないほどコストに優れている
403デフォルトの名無しさん
2023/09/27(水) 00:29:08.13ID:MfhnDtnO 複オジは相変わらず嘘ばっかり
成長しないね
成長しないね
404デフォルトの名無しさん
2023/09/27(水) 00:38:28.22ID:+nRBKi9H 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]
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]
405デフォルトの名無しさん
2023/09/27(水) 00:56:55.88ID:+nRBKi9H 俺の環境だと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]
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]
406デフォルトの名無しさん
2023/09/27(水) 01:02:33.77ID:+nRBKi9H これにしたらRustより早くなったわ
結局これっていかに最適化しているかってだけだと思う
https://github.com/bytedance/sonic
[Go sonic json]
914 [μs]
263609000 [bytes] 209 [μs]
結局これっていかに最適化しているかってだけだと思う
https://github.com/bytedance/sonic
[Go sonic json]
914 [μs]
263609000 [bytes] 209 [μs]
407デフォルトの名無しさん
2023/09/27(水) 01:06:34.20ID:8IPpP98U 気づくのが遅い
408デフォルトの名無しさん
2023/09/27(水) 01:44:16.58ID:jtGLjNq+409デフォルトの名無しさん
2023/09/27(水) 01:51:26.25ID:jtGLjNq+ WebAPIでgoで行く決意ができました
本当にお騒がせしました
本当にお騒がせしました
410デフォルトの名無しさん
2023/09/27(水) 04:55:49.67ID:UdUnwuun YouTube で有名な雑食系エンジニア・KENTA が、既に言ってる。
キャリアパスは、Ruby on Rails → Go のみ
Ruby/Goの神・HashiCorp のMitchell Hashimoto がそう。
Ruby製のVagrant → Go製のTerraform。
今は、Goプログラマーしか求めていない
Rust/Elixir は普及のキャズムを超えなかった。
超えたのは、Goだけ
キャリアパスは、Ruby on Rails → Go のみ
Ruby/Goの神・HashiCorp のMitchell Hashimoto がそう。
Ruby製のVagrant → Go製のTerraform。
今は、Goプログラマーしか求めていない
Rust/Elixir は普及のキャズムを超えなかった。
超えたのは、Goだけ
411デフォルトの名無しさん
2023/09/27(水) 17:50:20.18ID:wGZOY1wb まあビルド時間の重要性はちょこちょこ一人で作ってるやつは理解できんわな。
412デフォルトの名無しさん
2023/09/27(水) 18:56:48.41ID:CCaLLXi3 仕事なら相応に強力なマシンかレンダリングサーバがあるだろ
413デフォルトの名無しさん
2023/09/27(水) 21:44:37.94ID:fWGZRw8C レンダリングサーバーは関係なさすぎ
414デフォルトの名無しさん
2023/09/27(水) 22:03:34.78ID:vmit0gpI ビルドサーバーと間違えたのかもね
415デフォルトの名無しさん
2023/09/28(木) 18:29:13.32ID:gS/5M63X MARCHを受けるために東大の過去問を練習するような意識高い系バカ
416デフォルトの名無しさん
2023/10/06(金) 11:57:36.28ID:Zl0hPCVy 一体誰がRustを推しているのか?
中國?
中國?
417デフォルトの名無しさん
2023/10/06(金) 13:12:35.08ID:2p+njRVB 関数型と手続き型のいいとこ取りしたいプログラマだろ
情報科学の先進国なら中国に限らず一定数いるはず
情報科学の先進国なら中国に限らず一定数いるはず
418デフォルトの名無しさん
2023/10/06(金) 16:38:53.65ID:AJI+rgso ネットインフラが次々と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」などがある。
>【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」などがある。
419デフォルトの名無しさん
2023/10/06(金) 20:34:57.35ID:hdhWn3/E 関数型の良いとことるの諦めた言語って感じだけどw
初期の頃はocamlでコンパイラ作られてたらしいのに
MLの匂いさえ残ってない単なる手続き化型言語だわ
初期の頃はocamlでコンパイラ作られてたらしいのに
MLの匂いさえ残ってない単なる手続き化型言語だわ
420デフォルトの名無しさん
2023/10/06(金) 20:35:16.84ID:hdhWn3/E 関数型の良いとことるの諦めた言語って感じだけどw
初期の頃はocamlでコンパイラ作られてたらしいのに
MLの匂いさえ残ってない単なる手続き化型言語だわ
初期の頃はocamlでコンパイラ作られてたらしいのに
MLの匂いさえ残ってない単なる手続き化型言語だわ
421デフォルトの名無しさん
2023/10/06(金) 21:14:33.58ID:b1wSOXuc スタックフレームに着目したのはプラスだけど、下手にスタックフレームを隠そうとしているのはマイナス。
計算モデルをスタックフレームにするぐらい割り切れば良かったのに。
計算モデルをスタックフレームにするぐらい割り切れば良かったのに。
422デフォルトの名無しさん
2023/10/06(金) 21:15:11.56ID:b1wSOXuc スタックフレームに着目したのはプラスだけど、下手にスタックフレームを隠そうとしているのはマイナス。
計算モデルをスタックフレームにするぐらい割り切れば良かったのに。
計算モデルをスタックフレームにするぐらい割り切れば良かったのに。
423デフォルトの名無しさん
2023/10/06(金) 23:16:24.42ID:tE7CLicd mut 入れたのが間違いなんだろ
424デフォルトの名無しさん
2023/10/06(金) 23:30:10.29ID:hdhWn3/E 関数型に関しては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)
たとえば↑こういうのとか
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)
たとえば↑こういうのとか
425デフォルトの名無しさん
2023/10/07(土) 00:34:46.36ID:Hyqci1qG 関数型というよりはリスト型言語だな
426デフォルトの名無しさん
2023/10/07(土) 01:56:24.14ID:a3LzK6ia システムプログラミングのための言語なので純粋に関数型な要素だけを求めるなら別の言語を当たった方が良い
427デフォルトの名無しさん
2023/10/07(土) 02:12:44.80ID:QajUcOD9 リスト型つまりLinkedListをメインにすると利便さと引き換えに遅い問題とガベージが出まくる問題がある
Rustはリスト型メインにしなくて正解
Rustはリスト型メインにしなくて正解
428デフォルトの名無しさん
2023/10/07(土) 04:42:48.81ID:+bTugVnw GCを前提にしない仕様の上に積み上げなくてはならないという側面から見ると、わりかしよくやっている方なんじゃなかろうか……知らんけど
429デフォルトの名無しさん
2023/10/07(土) 06:29:51.58ID:GJ9LXcgc 自称情強底辺者「Rustでhello worldかける俺カコイイ」
真の成功者「スイカゲームでボロ儲けしました」
真の成功者「スイカゲームでボロ儲けしました」
430デフォルトの名無しさん
2023/10/07(土) 06:46:44.80ID:bWLG2vp7 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));
}
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));
}
431デフォルトの名無しさん
2023/10/07(土) 09:44:47.17ID:WqNjBTZw まあ今時ランタイム速度でそこまで差がつくことはないわな。
ガベコレの実行タイミングが問題になることは結構あると思うけど。
ガベコレの実行タイミングが問題になることは結構あると思うけど。
432デフォルトの名無しさん
2023/10/07(土) 11:17:12.27ID:fuWtUzBR アロケートしまくリングやな
433デフォルトの名無しさん
2023/10/07(土) 12:06:59.60ID:pov02R// ランタイムサポートが極まってきたからこそ
極めきれない部分の差が目立ってきたんだよ。
極めきれない部分の差が目立ってきたんだよ。
434デフォルトの名無しさん
2023/10/07(土) 14:19:35.27ID:koj+veBs XYZ座標みたいな単純だけどプリミティブでない大量のデータの配列を作りたいときに
1つ1つをオブジェクトにしないといけないGC言語は放り投げたくなる
座標なら最悪プリミティブに分解して自分で並べれば済むけど型が混ざると詰む
1つ1つをオブジェクトにしないといけないGC言語は放り投げたくなる
座標なら最悪プリミティブに分解して自分で並べれば済むけど型が混ざると詰む
435デフォルトの名無しさん
2023/10/07(土) 15:18:57.75ID:AO4ZOvxF436デフォルトの名無しさん
2023/10/07(土) 15:43:47.56ID:Ozx346pn Rustのはmutなしにした場合の問題提起のための悪い例だろ
437デフォルトの名無しさん
2023/10/07(土) 15:51:39.94ID:O3XDw4H3438デフォルトの名無しさん
2023/10/07(土) 16:42:12.14ID:2ow1Jojj 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すごい頑張ってると思うわ
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すごい頑張ってると思うわ
439デフォルトの名無しさん
2023/10/07(土) 23:59:36.96ID:QajUcOD9 >>430
RustはそのようにOCamlやScalaと同等に書くことも容易な点がいいな
同時にその方法によりRustで記述すると大量にVec(またはリストを実現する何か)を使い捨てていることが見える
つまりGC言語ではガベージが大量に出る
RustはそのようにOCamlやScalaと同等に書くことも容易な点がいいな
同時にその方法によりRustで記述すると大量にVec(またはリストを実現する何か)を使い捨てていることが見える
つまりGC言語ではガベージが大量に出る
440デフォルトの名無しさん
2023/10/08(日) 02:42:17.66ID:9NUoKPD/ くすくす
441デフォルトの名無しさん
2023/10/08(日) 08:07:41.64ID:WAd1DVRF 同等に書けてないでしょw
442デフォルトの名無しさん
2023/10/08(日) 09:57:45.64ID:ShBUnVvx443デフォルトの名無しさん
2023/10/08(日) 10:16:57.79ID:CrdCteTP 次はHaskellまたはErlangでおながいしまつ
444デフォルトの名無しさん
2023/10/08(日) 10:38:24.03ID:lCt9aeoq in-placeなqsort書いてよ
445デフォルトの名無しさん
2023/10/08(日) 10:39:23.48ID:WAd1DVRF >>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]).
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]).
446デフォルトの名無しさん
2023/10/08(日) 12:06:58.68ID:3KZ70qk+ 複オジは常にヒープアロケートするGC言語しか知らないのかな?
特定の言語の機能不足をGC言語の制約のように語るのはやめような
特定の言語の機能不足をGC言語の制約のように語るのはやめような
447デフォルトの名無しさん
2023/10/08(日) 14:27:21.60ID:1klr8jB1 rustより高度なライフタイム管理する言語ってないの?
448デフォルトの名無しさん
2023/10/08(日) 14:53:30.59ID:33/5YUgE 高度なライフタイム管理のベクトルがわからん
全データに参照カウンタをもたせて参照→存在を保証してるGC言語ならたくさんあるし
処理過程を生成する(書かせない)ことでライフタイムを意識させない関数型言語もある
全データに参照カウンタをもたせて参照→存在を保証してるGC言語ならたくさんあるし
処理過程を生成する(書かせない)ことでライフタイムを意識させない関数型言語もある
449デフォルトの名無しさん
2023/10/08(日) 14:57:14.95ID:lcllyLaE >>442
ScalaのListもOCamlの[]も単方向リストであってべクタではないのに唯一気付いていないおじさん
ScalaのListもOCamlの[]も単方向リストであってべクタではないのに唯一気付いていないおじさん
450デフォルトの名無しさん
2023/10/08(日) 15:04:22.44ID:KeQMELAC それはそれとしてScalaのcase classはRustにも欲しいと思うことあり
451デフォルトの名無しさん
2023/10/08(日) 15:32:16.97ID:1klr8jB1452デフォルトの名無しさん
2023/10/08(日) 16:37:56.79ID:lCt9aeoq ランタイムコストなしのライフタイムチェックはシステムプログラミング言語だから必要な話で、そうでない言語ならGCで良い
shared xor mutableの静的な保証はGC言語でも嬉しい性質だと思うが、他の言語で採用例はあるのかね?
shared xor mutableの静的な保証はGC言語でも嬉しい性質だと思うが、他の言語で採用例はあるのかね?
453デフォルトの名無しさん
2023/10/08(日) 18:19:11.05ID:WAd1DVRF 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!("");
}
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!("");
}
454デフォルトの名無しさん
2023/10/08(日) 19:36:48.46ID:e3limdE9455デフォルトの名無しさん
2023/10/08(日) 20:05:18.10ID:lCt9aeoq で、みなさんは単方向リストを使う綺麗だけどクソ遅いコードを並べて何がしたいんですか?
456デフォルトの名無しさん
2023/10/08(日) 20:14:55.63ID:BgGDjECm そんなの用途次第だろ
ど素人かよ
ど素人かよ
457デフォルトの名無しさん
2023/10/08(日) 20:19:50.77ID:QzGY7mJQ458デフォルトの名無しさん
2023/10/08(日) 20:59:00.53ID:e3limdE9459デフォルトの名無しさん
2023/10/08(日) 22:12:35.86ID:nH9KI4I/ 赤っ恥オジの言い訳草
460デフォルトの名無しさん
2023/10/08(日) 22:57:55.16ID:1kYUOs3M 入れもの(メモリ)はどのデータ構造でも不可欠だからいずれもゴミが発生するのは仕方ない
ただしリスト(各セル|ノード)に比べてベクタは以下の点で有利
・まとめて確保解放ができる
・next pointer(の容量と処理)が不要
・リニアスキャンが速い
・ランダムインデックスアクセスも速い
そのためRustでもほとんどの用途でベクタが使われリストは少ない
ただしリスト(各セル|ノード)に比べてベクタは以下の点で有利
・まとめて確保解放ができる
・next pointer(の容量と処理)が不要
・リニアスキャンが速い
・ランダムインデックスアクセスも速い
そのためRustでもほとんどの用途でベクタが使われリストは少ない
461デフォルトの名無しさん
2023/10/08(日) 23:00:08.12ID:Li9tDqQF 今どきはCPUキャッシュが効くかどうかが問題だから
462デフォルトの名無しさん
2023/10/08(日) 23:38:45.90ID:F0i6/5MC 三連休使ってrustの勉強してるけど、ようやく慣れてきた
某openGLの本をMacでやっててDSL2のインストールに四苦八苦、、、
なんかこいつだけCargo.tomlの書き方が、、、
急ぎ足せずrustのとこにある蟹表示するやつ写経してクレートの追加覚えた
先は長いね、、、
頑張る
某openGLの本をMacでやっててDSL2のインストールに四苦八苦、、、
なんかこいつだけCargo.tomlの書き方が、、、
急ぎ足せずrustのとこにある蟹表示するやつ写経してクレートの追加覚えた
先は長いね、、、
頑張る
463453
2023/10/09(月) 01:16:03.20ID:VBg3Yonc464デフォルトの名無しさん
2023/10/09(月) 01:21:45.86ID:L6ciWwId465デフォルトの名無しさん
2023/10/09(月) 01:24:15.18ID:TA+AoWAa リストと配列比較してるやつ全員馬鹿です
466デフォルトの名無しさん
2023/10/09(月) 13:24:27.74ID:gMk1hFfQ そんな香具師いたか?
467デフォルトの名無しさん
2023/10/09(月) 18:01:30.12ID:416rm9Ab appendできないListってダサい
468デフォルトの名無しさん
2023/10/09(月) 18:16:49.87ID:TA+AoWAa おるやん!
469デフォルトの名無しさん
2023/10/11(水) 15:06:20.59ID:UxaO0GW9 Rust検索したらゲームの方が出てきてお前じゃないってなって情報収集が捗らない
470デフォルトの名無しさん
2023/10/11(水) 15:25:39.99ID:kTxLNWR8 それで困ったこと今まで一度もないんだがどういう検索でそうなるの?
普段からゲーム関係の検索したりサイト閲覧してたりする?
普段からゲーム関係の検索したりサイト閲覧してたりする?
471デフォルトの名無しさん
2023/10/11(水) 16:05:36.62ID:jfZ9hs4j ゲームの方もやってますね
Rust初心者が簡単なゲーム作ろうとしてまして
(Pythonのpygameでブロック崩し作れる程度)
検索方法がまずいのかもしれませんね
描画したり、画像をはったり、それを縦横動かしたいだけなのですが
icedか?eguiか?みたいなとこまで来てるけど、まだ使い方がよくわからんですね
どこの関数が初期設定の一発実行で、どこの関数が60fpsの毎回実行なのかとか
プロではなく趣味なので言葉選びが毎回曖昧です
Rust初心者が簡単なゲーム作ろうとしてまして
(Pythonのpygameでブロック崩し作れる程度)
検索方法がまずいのかもしれませんね
描画したり、画像をはったり、それを縦横動かしたいだけなのですが
icedか?eguiか?みたいなとこまで来てるけど、まだ使い方がよくわからんですね
どこの関数が初期設定の一発実行で、どこの関数が60fpsの毎回実行なのかとか
プロではなく趣味なので言葉選びが毎回曖昧です
472デフォルトの名無しさん
2023/10/11(水) 17:42:19.71ID:Pu4uPjjn なるほどそういう感じなのか
検索ワードに”game”とかも含んでるなら
月並みだけどprogrammingを足してみたりゲームの方にだけ特徴的なワード(surviveやsurvivalとか)を除外してみたりするといいんじゃないかな
検索ワードに”game”とかも含んでるなら
月並みだけどprogrammingを足してみたりゲームの方にだけ特徴的なワード(surviveやsurvivalとか)を除外してみたりするといいんじゃないかな
473デフォルトの名無しさん
2023/10/11(水) 20:52:08.31ID:OZznE1k0474デフォルトの名無しさん
2023/10/11(水) 23:18:11.74ID:vJm7EO/F >>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));
}
>>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));
}
475デフォルトの名無しさん
2023/10/11(水) 23:57:55.35ID:2xINBvCy はあ
馬鹿なんですね
馬鹿なんですね
476デフォルトの名無しさん
2023/10/12(木) 11:14:39.52ID:u59ybXeV たしかに Rust ゲーム 造り方 で検索するとゲームの方ばっかり出る罠
477デフォルトの名無しさん
2023/10/12(木) 11:17:21.26ID:u59ybXeV >>474
mut 使ったら負け
mut 使ったら負け
478デフォルトの名無しさん
2023/10/12(木) 12:51:53.05ID:5Y8Kw2UP479デフォルトの名無しさん
2023/10/12(木) 12:52:32.93ID:5Y8Kw2UP480デフォルトの名無しさん
2023/10/12(木) 13:19:12.59ID:SguY35qe mut使ったら負けとは俺は思わないが断じて表層的なことではない
本質的に重要な違いだからこそRustでは明確に区別してるわけなので
それにconcatもpartitionもmut使ってない
本質的に重要な違いだからこそRustでは明確に区別してるわけなので
それにconcatもpartitionもmut使ってない
481デフォルトの名無しさん
2023/10/12(木) 13:31:42.25ID:IQy1JHL6 単方向リストと両方向リストの区別もついていない馬鹿だからしょうがないね
482デフォルトの名無しさん
2023/10/12(木) 14:04:37.89ID:29Fh0rnH 標準ライブラリのソース見たら
concatもpartitionもmut使ってるな
最終的にあらゆるmutになるのか
concatもpartitionもmut使ってるな
最終的にあらゆるmutになるのか
483デフォルトの名無しさん
2023/10/12(木) 14:35:37.70ID:+nxBPiMF すべてがmutになる 森鴎外
484デフォルトの名無しさん
2023/10/12(木) 14:56:18.33ID:oQimRC1z 「ボクの考えた最強の汚コードを批判するな!」
485デフォルトの名無しさん
2023/10/12(木) 14:58:53.27ID:X9LcShxS486デフォルトの名無しさん
2023/10/12(木) 15:06:20.95ID:pri3rXDa 複オジが劣化したのだろうか
それとも複オジ劣化版が新たに出現したのだろうか
それとも複オジ劣化版が新たに出現したのだろうか
487デフォルトの名無しさん
2023/10/12(木) 15:24:09.95ID:VkfPx0C5 mutを使わずにできることは読み出しとムーブとコピーだけ
488453
2023/10/12(木) 19:51:44.10ID:viHBcoi7 今度は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())
};
}
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())
};
}
489453
2023/10/12(木) 23:01:31.11ID:viHBcoi7 こういう書き方もできた
こっちのほうが雰囲気出てるかな?
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])
};
}
こっちのほうが雰囲気出てるかな?
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])
};
}
490デフォルトの名無しさん
2023/10/13(金) 08:06:18.09ID:q0Ayf65Z >>482
RustはCと同じ高速で動作する手続き型言語だから少なくとも最下層はmutが基本になる
たとえばイテレータからVecへcollectする場合
特殊ケースはunsafe最適化
一般ケースはlet mut vec = Vec::new();してextend
その一方でプログラミングする時はその最下層を意識しなくても知らなくてもいい
mutを必要としないiter.collect()と抽象的に書ける
RustはCと同じ高速で動作する手続き型言語だから少なくとも最下層はmutが基本になる
たとえばイテレータからVecへcollectする場合
特殊ケースはunsafe最適化
一般ケースはlet mut vec = Vec::new();してextend
その一方でプログラミングする時はその最下層を意識しなくても知らなくてもいい
mutを必要としないiter.collect()と抽象的に書ける
491デフォルトの名無しさん
2023/10/13(金) 08:24:52.90ID:NdZOKZ+T 最強Rust始めたわい
mutの話が出てるから質問
シャドーイングっていう性質使えばmutなくても書けそうな気がしてる(まだ書けてない)んだけど
シャドーイングしたときと、mutではメモリの動き何か変わるのかな?と
シャドーイング
let z = x + y;
その後z使って処理
let z = x - y; // z宣言して前回のz上書き
その後z使って処理
mutの話が出てるから質問
シャドーイングっていう性質使えばmutなくても書けそうな気がしてる(まだ書けてない)んだけど
シャドーイングしたときと、mutではメモリの動き何か変わるのかな?と
シャドーイング
let z = x + y;
その後z使って処理
let z = x - y; // z宣言して前回のz上書き
その後z使って処理
492デフォルトの名無しさん
2023/10/13(金) 12:19:34.60ID:tPfYbY0d >>491
それを1億行書いたとする。たぶんスタック溢れるんじゃね?
それを1億行書いたとする。たぶんスタック溢れるんじゃね?
493デフォルトの名無しさん
2023/10/13(金) 12:43:08.68ID:zQ1dnjfM 1億行書く意味が分からんが
そんな問題ではないだろw
そんな問題ではないだろw
494デフォルトの名無しさん
2023/10/13(金) 18:31:34.80ID:Q91zX7Uf ドロップしないの?
495デフォルトの名無しさん
2023/10/13(金) 19:31:02.96ID:/Zwm785x ちょっと前にJSONシリアライズでの最適化の話出たけど
goは空気感が不安になるよな
rust->システムプログラミングよりの言語で、速度やらいろいろうるさそうなやつが
集まってて、そんなやつらの作るライブラリだからパフォーマンスとか心配しなくてよさそう
C#->.NET開発チームが毎年長文ブログでがんばってるアピール
go->言語機能とかほぼ完成しちゃってるんだろうが
アピールもない、この空気感
goは空気感が不安になるよな
rust->システムプログラミングよりの言語で、速度やらいろいろうるさそうなやつが
集まってて、そんなやつらの作るライブラリだからパフォーマンスとか心配しなくてよさそう
C#->.NET開発チームが毎年長文ブログでがんばってるアピール
go->言語機能とかほぼ完成しちゃってるんだろうが
アピールもない、この空気感
496デフォルトの名無しさん
2023/10/13(金) 19:35:26.71ID:/Zwm785x https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/
今年の.netのパフォーマンス改善はこれ
goはシンプル言語で標準ライブラリも最小限だから
もうあまりやることないのか?
今年の.netのパフォーマンス改善はこれ
goはシンプル言語で標準ライブラリも最小限だから
もうあまりやることないのか?
497デフォルトの名無しさん
2023/10/14(土) 14:19:51.05ID:MfcWhKX5 >>491
不使用領域は再利用されるから単純な順次処理ならシャドーイングで十分
mutが欲しくなる理由の1つは繰り返し処理だな(長さ不定のリストの集計とか)
関数型言語みたいに再帰使えばmutなしでも何とかなるけど慣れないとややこしい
あとは全部作り直すのが不合理なデータの部分的な書き換えでもmut使いたい
不使用領域は再利用されるから単純な順次処理ならシャドーイングで十分
mutが欲しくなる理由の1つは繰り返し処理だな(長さ不定のリストの集計とか)
関数型言語みたいに再帰使えばmutなしでも何とかなるけど慣れないとややこしい
あとは全部作り直すのが不合理なデータの部分的な書き換えでもmut使いたい
498デフォルトの名無しさん
2023/10/14(土) 19:31:37.47ID:FeWBHDoO for文で値を変えるカウンタとかフラグとかもmutじゃないと書けないな。
まぁ for 文より iter で書けという一派も多いかもしれんけど。
まぁ for 文より iter で書けという一派も多いかもしれんけど。
499デフォルトの名無しさん
2023/10/14(土) 19:57:12.00ID:jlnlui4T モジュールの内部では (性能上の理由で) mut を使っても、
外側に見せるインターフェイスは
(不自然ではない範囲で) mut を避けるのは自然な方針だと思う。
外側に見せるインターフェイスは
(不自然ではない範囲で) mut を避けるのは自然な方針だと思う。
500デフォルトの名無しさん
2023/10/15(日) 09:39:38.68ID:M8zy/AR3 Cで書いたプログラムを Rustで書いたらこうなります
っていうのをひたすら集めた本がほしい
っていうのをひたすら集めた本がほしい
501デフォルトの名無しさん
2023/10/15(日) 10:09:58.67ID:Xnkvwbkm 全銀システムでJavaの信頼が失墜した今こそrustのチャンスだな
502デフォルトの名無しさん
2023/10/15(日) 11:00:17.07ID:2BZrn9hr 全銀はまだCOBOLだろ
ほんといつもいつも嘘ばっかりだな
ほんといつもいつも嘘ばっかりだな
503デフォルトの名無しさん
2023/10/16(月) 10:19:13.28ID:kgcCjrnK504デフォルトの名無しさん
2023/10/16(月) 10:21:08.50ID:kgcCjrnK 全銀協のフォーマットって今も変わってないんだろうけど
半角カタカナだらけでRustで扱うのは大変かも知れないね
半角カタカナだらけでRustで扱うのは大変かも知れないね
505デフォルトの名無しさん
2023/10/16(月) 10:35:49.58ID:enUIFRpv 扱う文字については適当なライブラリを整備すればそんなに問題にならなさそうに思うが
506デフォルトの名無しさん
2023/10/16(月) 11:26:02.88ID:SeIR9j3q507デフォルトの名無しさん
2023/10/16(月) 12:22:46.59ID:SkmcjqYw 半角しかないのに外字とは
508デフォルトの名無しさん
2023/10/16(月) 13:30:20.84ID:kgcCjrnK 今のうちに Rust でハンカクカタカナ自由自在な crate 造っておけば
将来ライセンス料でシッポリ儲かりますか?
将来ライセンス料でシッポリ儲かりますか?
509デフォルトの名無しさん
2023/10/17(火) 11:40:48.89ID:xDsy3kB7 Rustに慣れるとCのifで()付け忘れたわ
510デフォルトの名無しさん
2023/10/19(木) 14:52:32.31ID:rcYEOPS6 Vec の iter() と into_iter() の違いは?
511デフォルトの名無しさん
2023/10/19(木) 14:53:04.92ID:rcYEOPS6 Vec の iter() と into_iter() の違いは?
512デフォルトの名無しさん
2023/10/19(木) 15:12:31.11ID:V7scna43513デフォルトの名無しさん
2023/10/20(金) 01:20:11.96ID:/f3Rr7gK514デフォルトの名無しさん
2023/10/20(金) 06:13:09.90ID:3+q+Er7L Cで安全に書いたときと同じ生成コードにはなるけどRustでは抽象度の高い表現をするからなあ
例えばメモリのある範囲の領域を順に読み取る(書き込む)というC言語だとポインタをインクリメントしていくだけの場合でも
Rustだとまずメモリの領域をスライスという安全な抽象表現で扱い可変性もライフタイムも付随してスライスが指す元の安全に確保されている領域(配列やベクタなど)も必須というところからスタート
そのうえでスライスのイテレータにより必ずその範囲内のみを順に安全に指し示す参照(または可変参照)が次々と得られて順に読み取る(書き込む)ことが達成される
さらにRustではこれをfor文ではなく抽象度の高いイテレータメソッドチェーンで書くことも多いからCコードとの対応はますます難しくなるね
例えばメモリのある範囲の領域を順に読み取る(書き込む)というC言語だとポインタをインクリメントしていくだけの場合でも
Rustだとまずメモリの領域をスライスという安全な抽象表現で扱い可変性もライフタイムも付随してスライスが指す元の安全に確保されている領域(配列やベクタなど)も必須というところからスタート
そのうえでスライスのイテレータにより必ずその範囲内のみを順に安全に指し示す参照(または可変参照)が次々と得られて順に読み取る(書き込む)ことが達成される
さらにRustではこれをfor文ではなく抽象度の高いイテレータメソッドチェーンで書くことも多いからCコードとの対応はますます難しくなるね
515デフォルトの名無しさん
2023/10/20(金) 06:56:18.50ID:/M3RKJCH unsafe {
Rust で C ポインタやりたいなら
let p = *mut hoge;
p+=1;
std::slice::from_raw_part(p. 1)[0] = hage;
}
Rust で C ポインタやりたいなら
let p = *mut hoge;
p+=1;
std::slice::from_raw_part(p. 1)[0] = hage;
}
516デフォルトの名無しさん
2023/10/20(金) 09:04:11.56ID:6mF1sPPt >>513
同じように書けないからこそ対比したものが欲しいと言う話だろうに
同じように書けないからこそ対比したものが欲しいと言う話だろうに
517デフォルトの名無しさん
2023/10/20(金) 09:27:32.12ID:/M3RKJCH >>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); }
でちょっとマシになるくらい
クソでたらめだが真面目に実装するとマジ面倒
>>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); }
でちょっとマシになるくらい
518デフォルトの名無しさん
2023/10/20(金) 09:40:03.83ID:2W9ATkqE マクロでウヒヒ
519デフォルトの名無しさん
2023/10/20(金) 11:03:08.72ID:+Ixb2Hv2 近代的な言語の仕組みってのは大規模なプログラムをどうやってまとめるかという方向で進歩してるから
小さなサンプルで比較しても設計理念は身につかんのだ。
小さなサンプルで比較しても設計理念は身につかんのだ。
520デフォルトの名無しさん
2023/10/20(金) 13:13:02.21ID:iA9G36tB 設計理念を身につける話なんて誰もしとらんだろw
521デフォルトの名無しさん
2023/10/20(金) 15:12:25.73ID:+Ixb2Hv2 してないから問題だと述べてるんだが。
俺が学生のときに英語の長文の全ての単語の横に(単語ごとに!)日本語の単語を書いてたやつがいたことを思い出したわ。
本に載る程度の規模(ひとつあたり数ページくらい?)のプログラムを対比するってのはそういうことだよ。
言語の設計理念に基づいた構造こそが重要で、構造を論じるほどの規模にならないならたいした違いは見えてこない。
俺が学生のときに英語の長文の全ての単語の横に(単語ごとに!)日本語の単語を書いてたやつがいたことを思い出したわ。
本に載る程度の規模(ひとつあたり数ページくらい?)のプログラムを対比するってのはそういうことだよ。
言語の設計理念に基づいた構造こそが重要で、構造を論じるほどの規模にならないならたいした違いは見えてこない。
522デフォルトの名無しさん
2023/10/20(金) 16:07:06.67ID:/M3RKJCH CでもPythonでもRustでも全部の行にあほみたいなコメント描く香具師はうざいけど
Rustのcrateでdocsにcomment100%達成するためにはアホなコメント描かされてダサい設計思想だと思う
Rustのcrateでdocsにcomment100%達成するためにはアホなコメント描かされてダサい設計思想だと思う
523デフォルトの名無しさん
2023/10/20(金) 16:34:14.75ID:HySp0Cr6 >>521
日本語の設計理念wが身についてないみたいだなw
日本語の設計理念wが身についてないみたいだなw
524デフォルトの名無しさん
2023/10/20(金) 17:24:55.57ID:/f3Rr7gK unsafe使うならCでいいんだよなw
525デフォルトの名無しさん
2023/10/20(金) 19:40:13.76ID:3+q+Er7L >>524
それは違う
unsafeを使ってsafeなインターフェースを提供する部分だけ人間が安全性を保証すれば
それ以外の部分はすべてRustが安全性を保証してくれる
その方針でRustの標準ライブラリやunsafeを用いる一部クレートが作られている
それは違う
unsafeを使ってsafeなインターフェースを提供する部分だけ人間が安全性を保証すれば
それ以外の部分はすべてRustが安全性を保証してくれる
その方針でRustの標準ライブラリやunsafeを用いる一部クレートが作られている
526デフォルトの名無しさん
2023/10/20(金) 20:06:04.22ID:9sHhryb+527デフォルトの名無しさん
2023/10/21(土) 12:29:35.28ID:sf7W/HH9 関数型最強(キリω
ですねわかります
ですねわかります
528デフォルトの名無しさん
2023/10/21(土) 21:43:10.75ID:sGOhbjn7 Linuxでも、結局のところ「C言語でいいじゃん」という結論になりそうよね
リーヌスもなんかやっぱRustはなぁ・・・ってトーンダウンしてきてるし
リーヌスもなんかやっぱRustはなぁ・・・ってトーンダウンしてきてるし
529デフォルトの名無しさん
2023/10/22(日) 00:35:28.61ID:GiKl9Asx >>528
カーネルなんて低レイヤーのポインタ操作とかビット演算しかしないからな
カーネルなんて低レイヤーのポインタ操作とかビット演算しかしないからな
530デフォルトの名無しさん
2023/10/22(日) 00:50:06.85ID:n0l+NFKj Linux カーネルの中にだって Rust が適している場所も
あるといえば有るだろうけど現時点でそれなりに検証が済んで
安定して動いているものを「置き換え」するほどではないだろうな。
適しているからといって各部を別の言語で書いたりすると
接続箇所で面倒になったりもするし。
あるといえば有るだろうけど現時点でそれなりに検証が済んで
安定して動いているものを「置き換え」するほどではないだろうな。
適しているからといって各部を別の言語で書いたりすると
接続箇所で面倒になったりもするし。
531デフォルトの名無しさん
2023/10/22(日) 11:49:16.17ID:IKvVj0uW カーネルで流行らないならもう流行るところないんじゃ…
532デフォルトの名無しさん
2023/10/22(日) 19:50:36.55ID:NN1UsPSx どの言語からどの言語への場合でも既に動いているものを別の言語に移植するだけだとコストがかかる
それでもスクリプト言語からRustへ置き換えるなら実行速度と省メモリの効果がコストを上回りやすいためよく行われている
一方でC/C++からRustへ換えても実行速度と省メモリの効果はない
だからシステム設計を変えるなど大きな更改タイミングでRust化することが多い
特にマイクロサービス化されているものは個別に更改できるためシステム全体の一部Rust化に向いている
最も向いておらずハードル高いのがモノリシックになっているOSカーネル
その場合でも分離されているデバイスドライバは最近のデバイス複雑化と更新対応の多さからもRust化が向いているため進んでいる
それでもスクリプト言語からRustへ置き換えるなら実行速度と省メモリの効果がコストを上回りやすいためよく行われている
一方でC/C++からRustへ換えても実行速度と省メモリの効果はない
だからシステム設計を変えるなど大きな更改タイミングでRust化することが多い
特にマイクロサービス化されているものは個別に更改できるためシステム全体の一部Rust化に向いている
最も向いておらずハードル高いのがモノリシックになっているOSカーネル
その場合でも分離されているデバイスドライバは最近のデバイス複雑化と更新対応の多さからもRust化が向いているため進んでいる
533デフォルトの名無しさん
2023/10/22(日) 19:58:13.61ID:fijCTFBo534デフォルトの名無しさん
2023/10/22(日) 21:57:00.47ID:xV2fKCwr 構造体をキャストするものでも、hoge_storage_t みたいに最大サイズを規定するパターンと
char foo[0]; を積極的に利用するパターンと 真っ二つにわかれるしねぇ
後者はRustでどうすんだろ
char foo[0]; を積極的に利用するパターンと 真っ二つにわかれるしねぇ
後者はRustでどうすんだろ
535デフォルトの名無しさん
2023/10/22(日) 22:15:56.13ID:fijCTFBo 結局構造体もパケットのバイト列にパックするからね
その時unsafeを使うことになる
その時unsafeを使うことになる
536デフォルトの名無しさん
2023/10/22(日) 22:45:30.49ID:EpprGwAf 構造体はunsafeいらん
タグ無し共用体はunsafe
タグ無し共用体はunsafe
537デフォルトの名無しさん
2023/10/22(日) 23:15:20.26ID:HWj9itUZ 流行るから価値ある、流行らないから価値なしって評価基準はジャパニーズカルチャーのガラパゴス
538デフォルトの名無しさん
2023/10/22(日) 23:23:05.72ID:/1lQw0Ls >>534
後者も普通に表現できるしCとのFFIも可能
後者も普通に表現できるしCとのFFIも可能
539デフォルトの名無しさん
2023/10/22(日) 23:28:57.61ID:zUgjdRO9 Redox(https://www.redox-os.org/)みたいなRust製のUnix系OSプロジェクトならもうあるし
無理してLinuxに食い込む必要はないと思うんだけどLinux開発者でもRust使いたい人はいるんでしょ
Linuxは一部のモジュールがRust製になる程度で中核は最後までCで通すと思う
というかRustで置き換えるなら名前変えてほしい
無理してLinuxに食い込む必要はないと思うんだけどLinux開発者でもRust使いたい人はいるんでしょ
Linuxは一部のモジュールがRust製になる程度で中核は最後までCで通すと思う
というかRustで置き換えるなら名前変えてほしい
540デフォルトの名無しさん
2023/10/23(月) 00:13:38.68ID:tCssLiBK541デフォルトの名無しさん
2023/10/23(月) 05:58:05.37ID:3382hDjx >>533
実際にはCでもバッファオーバーランしないからRustでは、unsafe必要ないでしょ
実際にはCでもバッファオーバーランしないからRustでは、unsafe必要ないでしょ
542デフォルトの名無しさん
2023/10/23(月) 06:59:33.53ID:8gpCEC0e543453
2023/10/24(火) 00:55:17.36ID:Ei0IGfb9 >>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;
}
今度は逆に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;
}
544デフォルトの名無しさん
2023/10/24(火) 13:32:38.68ID:oyxcPsiu スレチ
545デフォルトの名無しさん
2023/10/24(火) 16:02:23.69ID:ju9L4gE1 cargo 経由で rustc にコンパイルオプションを渡したいとき
RUSTFLAG=hogehoge
で成功はしたのですがパッケージ全体が再コンパイルされて遅いです
特定のファイルだけにコンパイルオプションを適用したいのですが
cargo にはそういうオプションはありませんか?
RUSTFLAG=hogehoge
で成功はしたのですがパッケージ全体が再コンパイルされて遅いです
特定のファイルだけにコンパイルオプションを適用したいのですが
cargo にはそういうオプションはありませんか?
546デフォルトの名無しさん
2023/10/24(火) 18:21:38.30ID:u/7eM1yW >>545
ありません
ありません
547デフォルトの名無しさん
2023/10/24(火) 20:07:58.68ID:dncTx+4h 大文字小文字が混在する言語って気持ち悪い
548453
2023/10/24(火) 22:19:05.86ID:yQ/jFyOv549デフォルトの名無しさん
2023/10/25(水) 09:06:18.67ID:9oOV85NF >>545
試してないけど
やるとしたら
cmdとかterminal(shell)を2つ以上別ウィンドウで開いておいて
それぞれ別のRUSTFLAG=を設定しておく(環境毎に独立なはず)
片方でbuildしたあと適用したいファイルだけ修正してもう片方でbuildするとうまくいかんかな
試してないけど
やるとしたら
cmdとかterminal(shell)を2つ以上別ウィンドウで開いておいて
それぞれ別のRUSTFLAG=を設定しておく(環境毎に独立なはず)
片方でbuildしたあと適用したいファイルだけ修正してもう片方でbuildするとうまくいかんかな
550デフォルトの名無しさん
2023/10/25(水) 10:10:31.38ID:p3+NCv68 特定のファイルにだけ適用したいコンパイルオプションて何なの?
551デフォルトの名無しさん
2023/10/25(水) 10:43:36.55ID:dKf07X6i crateで分割したらいけるんじゃね
552デフォルトの名無しさん
2023/10/25(水) 11:35:23.44ID:CN7zqSRs そらそうやろと言いたいところだが
今はcrate単位の指定はできなくてパッケージ単位のみ
今はcrate単位の指定はできなくてパッケージ単位のみ
553デフォルトの名無しさん
2023/10/25(水) 13:57:15.42ID:0w7kqvd/ crate で別れてる前提で
その crate を使う2つの bin (まあまあそっくりな main) を造って
それぞれをそれぞれの RUSTFLAGS= で build したら
うまく使い別けられました
とりあえず速度は気にならないからしばらくこれで逝く
アイディア呉れた人thx
その crate を使う2つの bin (まあまあそっくりな main) を造って
それぞれをそれぞれの RUSTFLAGS= で build したら
うまく使い別けられました
とりあえず速度は気にならないからしばらくこれで逝く
アイディア呉れた人thx
554デフォルトの名無しさん
2023/10/26(木) 14:45:03.06ID:6bJ9rmmH しつもんです
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 されてないものを取って来てくれるとも限らない訳だが
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 されてないものを取って来てくれるとも限らない訳だが
555デフォルトの名無しさん
2023/10/26(木) 15:53:54.89ID:wO29ziTZ cargo treeを使うといいよ
556デフォルトの名無しさん
2023/10/26(木) 21:41:03.08ID:pAbfpEYj Rust で書かれた WebAssembly/Canvas 上の
FlashPlayer のエミュレータ Ruffle の実装が
凄い勢いで進んでるけど
世界の凄腕プログラマも参戦してるみたい。
このスレで貢献してる人ひょっとしている?
エミュレータ実装て武者修行になるのかな。
FlashPlayer のエミュレータ Ruffle の実装が
凄い勢いで進んでるけど
世界の凄腕プログラマも参戦してるみたい。
このスレで貢献してる人ひょっとしている?
エミュレータ実装て武者修行になるのかな。
557デフォルトの名無しさん
2023/10/26(木) 23:18:45.93ID:oN20rU1J エミュレーターを作り始めるスタートは完全な仕様の資料を手にいれることで、それがないことも良くあることだから調査がしんどいんだよ。
そんで実装は仕様通りにやるだけのひたすらに地道な作業だからあまり面白味はない。
動くだけじゃなくて性能を出そうと思ったら色々と工夫の余地はあるんだけど……
そんで実装は仕様通りにやるだけのひたすらに地道な作業だからあまり面白味はない。
動くだけじゃなくて性能を出そうと思ったら色々と工夫の余地はあるんだけど……
558デフォルトの名無しさん
2023/10/27(金) 10:08:58.42ID:d8VwEqUV 古いゲーム機のエミュレータを書いたことがあるが結構面白いぞ
昔のソフトはクロックタイミングに依存することも珍しくないから、性能だけでなく再現精度にも気を配らなくちゃいけない
腕試しとしてはちょうどいいと思うよ
昔のソフトはクロックタイミングに依存することも珍しくないから、性能だけでなく再現精度にも気を配らなくちゃいけない
腕試しとしてはちょうどいいと思うよ
559デフォルトの名無しさん
2023/10/27(金) 12:30:38.77ID:xuiID3+p もっと良いサイトあったんだけど消滅してる?
http://sunlight.cocolog-nifty.com/sunlight/2005/08/post_1ff6.html
http://www.sm.rim.or.jp/~shishido/tick.html
http://sunlight.cocolog-nifty.com/sunlight/2005/08/post_1ff6.html
http://www.sm.rim.or.jp/~shishido/tick.html
560デフォルトの名無しさん
2023/10/27(金) 22:25:37.09ID:2hH60kIl561デフォルトの名無しさん
2023/10/27(金) 22:44:06.00ID:nnq2nBUF web上で再発明するの好きなやつ多いよね
でも失敗率高めじゃないか?
でも失敗率高めじゃないか?
562デフォルトの名無しさん
2023/10/28(土) 14:23:38.78ID:AMpKEF3U 自己鍛錬で再発明するのは好きにすればいいがそれでサーチエンジンの上位を占拠するのはマジ迷惑だ
563453
2023/10/28(土) 18:50:08.51ID:U0JINWpQ >>548 c
https://ideone.com/Rp476I
・ノードへのポインタとしてリストを表現していた(>>548)のを廃止
・共用体でリストを表現したことによりBoxの位置?がRust版(>>453)と同じに
・特に意味もなくループ文を再帰に置き換え
https://ideone.com/Rp476I
・ノードへのポインタとしてリストを表現していた(>>548)のを廃止
・共用体でリストを表現したことによりBoxの位置?がRust版(>>453)と同じに
・特に意味もなくループ文を再帰に置き換え
564デフォルトの名無しさん
2023/10/29(日) 12:47:29.07ID:IsQ6p7Vf uBlacklist が猿人検出阻止してくれるそうだ
sejuku とか techacademy とか KENTA とか入れると良い
sejuku とか techacademy とか KENTA とか入れると良い
565デフォルトの名無しさん
2023/11/03(金) 14:51:57.32ID:fSSaeY5g === 複製おじさん(通称複おじ)について ===
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が複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
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が複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
566デフォルトの名無しさん
2023/11/03(金) 20:56:04.34ID:uUmiO3VU Generatorはコードがごちゃっとしてたからgen fn/blockはありがたいな
567デフォルトの名無しさん
2023/11/03(金) 22:49:04.51ID:Q6dMbwrG 2024 editionから?
568デフォルトの名無しさん
2023/11/04(土) 04:29:37.91ID:xhYE5yZM Rustの学習を始めたが、所有権面倒くさい。まあでも安全性は高められそうな感じはする。
569デフォルトの名無しさん
2023/11/04(土) 12:29:53.92ID:eFHrirh7 Better C的なRustが欲しい
C++と張り合って仕様が複雑になってる
C++と張り合って仕様が複雑になってる
570デフォルトの名無しさん
2023/11/04(土) 12:45:03.68ID:whQSHNtc571デフォルトの名無しさん
2023/11/04(土) 13:26:02.22ID:ocaBqo/v Rust は別に C++ と張り合ってなんかいないよ。
現実に使うものはどうやったってどこかで汚くなるってだけ。
綺麗なものは使われてないものだ。
現実に使うものはどうやったってどこかで汚くなるってだけ。
綺麗なものは使われてないものだ。
572デフォルトの名無しさん
2023/11/04(土) 14:22:45.66ID:nDDUhOSB573デフォルトの名無しさん
2023/11/05(日) 00:55:20.60ID:Frni44mO >>569
Carbon
Carbon
574デフォルトの名無しさん
2023/11/05(日) 13:27:00.92ID:bq/z7Mod >>567
「gen」予約keyword化はそうだね
「gen」予約keyword化はそうだね
575デフォルトの名無しさん
2023/11/09(木) 15:19:57.39ID:j64EPVX0 すまんが、VSCode上から/examples下にあるものをデバッグしたい場合ってどうやんの?
他人の作ったクレートのコードを読む上で、これを楽にできると個人的にはありがたいんだけど・・・・
他人の作ったクレートのコードを読む上で、これを楽にできると個人的にはありがたいんだけど・・・・
576デフォルトの名無しさん
2023/11/09(木) 22:37:41.41ID:vNSbYVSe バージョンと拡張機能によりそうだけど自分の環境(Windows)だと
examples内でもfn main()の上に
|> Run | Debug
みたいなinlayが表示されてとりあえずそこからデバッグ実行できた
設定作ればほかの起動方法もあるはず
たぶんrust-analyserの機能だけどデバッガは環境依存だからわからん
examples内でもfn main()の上に
|> Run | Debug
みたいなinlayが表示されてとりあえずそこからデバッグ実行できた
設定作ればほかの起動方法もあるはず
たぶんrust-analyserの機能だけどデバッガは環境依存だからわからん
577デフォルトの名無しさん
2023/11/12(日) 02:38:23.29ID:O0gb6uIB gen はいわゆる協調スレッドなのか。
言語機能として取り込むにはちょっと豪華すぎる気もするな。
言語機能として取り込むにはちょっと豪華すぎる気もするな。
578デフォルトの名無しさん
2023/11/12(日) 04:55:58.85ID:2kP6dQwH genはasyncと同じでコルーチンだよね?
そしてasyncと同じく単純な状態マシンで実装だよね?
そしてasyncと同じく単純な状態マシンで実装だよね?
579デフォルトの名無しさん
2023/11/12(日) 07:45:09.87ID:sBWcqg0h >>576
ありがとう!バッチリできたぜ!!!
ありがとう!バッチリできたぜ!!!
580あぼーん
NGNGあぼーん
581デフォルトの名無しさん
2023/11/12(日) 11:30:27.32ID:cviedAAA >>580
既にやってるよ
既にやってるよ
582デフォルトの名無しさん
2023/11/14(火) 12:58:29.06ID:SRCspH78583デフォルトの名無しさん
2023/11/19(日) 15:31:52.34ID:J3g/JpQ/ rust初心者です。
cだとポインタに対してキャストすることで完全にプログラマ任せのキャストが出来ます。
例えば文字列を参照するポインタを強引に数値として解釈させるなど、好きなように出来ます。
rustでは簡単に調べたところparse().unwrap()などが必要だそうです。
rustはcのようにバイナリフォーマットをプログラマ任せにして自由にキャストさせる習慣はないということでしょうか?
cだとポインタに対してキャストすることで完全にプログラマ任せのキャストが出来ます。
例えば文字列を参照するポインタを強引に数値として解釈させるなど、好きなように出来ます。
rustでは簡単に調べたところparse().unwrap()などが必要だそうです。
rustはcのようにバイナリフォーマットをプログラマ任せにして自由にキャストさせる習慣はないということでしょうか?
584デフォルトの名無しさん
2023/11/19(日) 16:23:14.27ID:/G2k3fWt あるよ
585デフォルトの名無しさん
2023/11/19(日) 16:29:48.57ID:eJPqaRZx #[repr(C)]
as *const T
as *mut T
as usize
bytemuck
slice::from_raw_parts
as *const T
as *mut T
as usize
bytemuck
slice::from_raw_parts
586デフォルトの名無しさん
2023/11/19(日) 16:46:38.60ID:ib2hIQe1 バイナリや文字列と内部表現・の相互変換(シリアライズとデシリアライズ)ならば
Rustではdeser crateファミリーを使って専業分離することが多いね
Rustではdeser crateファミリーを使って専業分離することが多いね
587デフォルトの名無しさん
2023/11/19(日) 18:17:50.06ID:b3b61WiC シリアライズ関連のクレートを使った方が楽だし、もうちょっと簡易的にやる場合でも from_le_bytes などの組み合わせで安全にやれるから不必要にプログラマの責任で管理するべきではないよ。
C でもいまどきは高レイヤのプログラムならそんなに気軽に未定義の型変換はしない。(もっとも、高レイヤではあまり C を使わないけど)
C でもいまどきは高レイヤのプログラムならそんなに気軽に未定義の型変換はしない。(もっとも、高レイヤではあまり C を使わないけど)
588デフォルトの名無しさん
2023/11/19(日) 18:43:57.48ID:ib2hIQe1 ごめん、アホなスペルミスしてる
deserでなくてserde
あとserde_bytesやbincodeを併用
deserでなくてserde
あとserde_bytesやbincodeを併用
589デフォルトの名無しさん
2023/11/19(日) 23:58:07.78ID:J3g/JpQ/ 少し調べてより明確に言語化出来ました。
Rustはゼロコストのserderができますか?
Cだとしばしばそれができます。構造体の要素次第ですが。
で、調べてみるとrkyvというフレームワークが近いことを可能にしているようです。
ゼロコピーと謳っていますが、何らかの演算コストが生じているのかどうか。
Cなら構造体を注意深く設計すればキャスト一発で実行時コストゼロでserderが完了するのです。
Rustはゼロコストのserderができますか?
Cだとしばしばそれができます。構造体の要素次第ですが。
で、調べてみるとrkyvというフレームワークが近いことを可能にしているようです。
ゼロコピーと謳っていますが、何らかの演算コストが生じているのかどうか。
Cなら構造体を注意深く設計すればキャスト一発で実行時コストゼロでserderが完了するのです。
590デフォルトの名無しさん
2023/11/20(月) 02:05:15.84ID:ilBq5gGe591デフォルトの名無しさん
2023/11/20(月) 02:16:16.40ID:UjbzCz3W592デフォルトの名無しさん
2023/11/20(月) 02:16:45.62ID:K0+PyRHv #[repr(C)]付けてstruct/enum/unionをCと同じ使い方すればC互換のレイアウトになるはず
593デフォルトの名無しさん
2023/11/20(月) 06:49:29.19ID:dNsGQu4G >>589
Cと同じことがしたいだけならrepr(C)で構造体定義して
std::mem::transmuteでキャストすればいい
rkyvみたいなフレームワークはもっと高度なデータ型(ハッシュマップとか)で同じことをやるためのもの
Cと同じことがしたいだけならrepr(C)で構造体定義して
std::mem::transmuteでキャストすればいい
rkyvみたいなフレームワークはもっと高度なデータ型(ハッシュマップとか)で同じことをやるためのもの
594デフォルトの名無しさん
2023/11/20(月) 08:53:23.51ID:LwcosZwN 抽象度の高いレイヤを挟んでもかなり最適化で消えるよ。
逆に自由なキャストのコストはゼロではない。
ハードウェアの癖、処理系の癖を理解している人がうまくチューニングすれば性能はあがることも多いけどキャストして直接に読み替えたら実行時コストが低くなるとは限らない。
逆に自由なキャストのコストはゼロではない。
ハードウェアの癖、処理系の癖を理解している人がうまくチューニングすれば性能はあがることも多いけどキャストして直接に読み替えたら実行時コストが低くなるとは限らない。
595デフォルトの名無しさん
2023/11/20(月) 13:51:58.80ID:MS7hPbOQ >抽象度の高いレイヤを挟んでもかなり最適化で消えるよ。
それはもちろん判ってて
その上で厳密にゼロじゃないから問題視してんじゃん
それはもちろん判ってて
その上で厳密にゼロじゃないから問題視してんじゃん
596デフォルトの名無しさん
2023/11/20(月) 15:34:39.51ID:JXHwx0JF 具体的にRustを使うメリットよりデメリットが上回る例があるならそれを出さないと話がわからない
色んなバイナリプロトコルもRustで実装されて問題になっていない
色んなバイナリプロトコルもRustで実装されて問題になっていない
597デフォルトの名無しさん
2023/11/20(月) 17:27:20.27ID:cTETCu/a transmuteだとalign合わせるためにコピーする場合がありそうだから
本気でCと同じゼロコストで読み替えするならポインタ(参照じゃない)をとって
as *const T(as *mut T)で目的の型にキャストして参照(&T, &mut T)に戻す感じかな
どうせunsafeだからunion使う方がいいかもしれないけど
本気でCと同じゼロコストで読み替えするならポインタ(参照じゃない)をとって
as *const T(as *mut T)で目的の型にキャストして参照(&T, &mut T)に戻す感じかな
どうせunsafeだからunion使う方がいいかもしれないけど
598デフォルトの名無しさん
2023/11/20(月) 17:54:17.33ID:PG0EBfXZ Cから移植する場合でtagged unionをうまく移植する方法はないだろうか
unsafe使わずに
struct tagged_value {
enum tag t;
union {
hoge h;
fuga f;
} u;
};
みたいなの
unsafe使わずに
struct tagged_value {
enum tag t;
union {
hoge h;
fuga f;
} u;
};
みたいなの
599デフォルトの名無しさん
2023/11/20(月) 18:11:32.44ID:NaWZknyA >>598
enumで
enumで
600デフォルトの名無しさん
2023/11/20(月) 18:17:00.50ID:ieYqPgSw >>595
最適化の話は「どちらにしてもゼロとは限らない」という話のための前ふり。
仮にその場所に限ってはゼロになったとしても周囲の最適化の足を引っ張ることもある。
総合的な速さを出すには諸々を加味したチューニングが必要なので単純にキャストしたほうが速いとは考えるなというのが主旨。
もちろん諸々を考慮して検証した上で実際に速くなることが確かめられるならそれを否定したりはしないよ。割に合うことは少ないとも思うけど。
最適化の話は「どちらにしてもゼロとは限らない」という話のための前ふり。
仮にその場所に限ってはゼロになったとしても周囲の最適化の足を引っ張ることもある。
総合的な速さを出すには諸々を加味したチューニングが必要なので単純にキャストしたほうが速いとは考えるなというのが主旨。
もちろん諸々を考慮して検証した上で実際に速くなることが確かめられるならそれを否定したりはしないよ。割に合うことは少ないとも思うけど。
601デフォルトの名無しさん
2023/11/20(月) 21:13:04.59ID:ojqzhkRS ちゃんと考えるよ。
角度とか
角度とか
602デフォルトの名無しさん
2023/11/20(月) 23:02:22.90ID:QHUUbGYT 重要なのは、Rustで書くと遅くなる(コストがかかる)パターンを、実際に発見できたのかどうか?
もしそのようなパターンを発見できて、(Cによる)速い方法でも安全性に問題がないのならば、
Rustの歴史ではそれを(必要なら)unsafeで記述してライブラリの中に安全に閉じ込めてきた
そのためRustで一般プログラマーがunsafeを使わずに記述しても、ほとんどのケースでCと同等の速さが出る
もしそのようなパターンを発見できて、(Cによる)速い方法でも安全性に問題がないのならば、
Rustの歴史ではそれを(必要なら)unsafeで記述してライブラリの中に安全に閉じ込めてきた
そのためRustで一般プログラマーがunsafeを使わずに記述しても、ほとんどのケースでCと同等の速さが出る
603デフォルトの名無しさん
2023/11/21(火) 04:05:24.41ID:60zWiP9n 個人的な懸念点は処理のゼロコピー化においてCに劣るのか?という点
Rust界隈でゼロコピーフレームワークが色々あるがどういう工夫が行われているのか
調査は時間がかかりすぎるからやらないw
Rust界隈でゼロコピーフレームワークが色々あるがどういう工夫が行われているのか
調査は時間がかかりすぎるからやらないw
604デフォルトの名無しさん
2023/11/21(火) 04:13:54.83ID:60zWiP9n データ転送はCPU上の演算と比較してかなり遅い処理なので
ゼロコピーで劣ると一部の処理でかなり遅くなる
そしてベンチマーク系のプログラムではゼロコピーはあまり問題にならない。
ゼロコピーで劣ると一部の処理でかなり遅くなる
そしてベンチマーク系のプログラムではゼロコピーはあまり問題にならない。
605デフォルトの名無しさん
2023/11/21(火) 04:16:28.76ID:60zWiP9n ゼロコピーが問題になるのはserder、通信
あとたぶんOSの実装でも問題になるはず
だから数学的計算というよりはシステム間の垣根を超えるようなところで問題になる
RustがベンチマークでC並といっても、あくまで数値計算系の話
あとたぶんOSの実装でも問題になるはず
だから数学的計算というよりはシステム間の垣根を超えるようなところで問題になる
RustがベンチマークでC並といっても、あくまで数値計算系の話
606デフォルトの名無しさん
2023/11/21(火) 08:42:33.89ID:UPhRR3yr ゼロコピーってのはオリジナルのバッファ以外には追加でヒープアロケーションをせずに処理をするという意味
607デフォルトの名無しさん
2023/11/21(火) 10:07:46.27ID:ZzleWc4x ウザイからttf_parserのコードでも読んでくれば
608デフォルトの名無しさん
2023/11/21(火) 11:00:12.68ID:HSO31doi unsafe という名前が誤解の元になってる
unsafe に描く内容って結局安全な内容しか描いてはいけない訳だ
そして unsafe は使ってはいけない機能ではなくむしろ積極的に使って良い機能
unsafe に描く内容って結局安全な内容しか描いてはいけない訳だ
そして unsafe は使ってはいけない機能ではなくむしろ積極的に使って良い機能
609デフォルトの名無しさん
2023/11/21(火) 11:55:27.06ID:pNsPVZam こういうやつがいるからこそunsafeという名前に価値があるんだよな
610デフォルトの名無しさん
2023/11/21(火) 12:57:54.74ID:4vFkathr >>605
それらRustで書くことで遅くなった事例がない
むしろ例えばCDN世界トップのCloudflareは
Cで書かれたnginxを全面的にRustで作り直すことで
CPUリソースとメモリリソースを1/3に削減することに成功している
それらRustで書くことで遅くなった事例がない
むしろ例えばCDN世界トップのCloudflareは
Cで書かれたnginxを全面的にRustで作り直すことで
CPUリソースとメモリリソースを1/3に削減することに成功している
611デフォルトの名無しさん
2023/11/21(火) 15:25:53.24ID:OibZ9mzY Cloudflareのやつはnginxがスレッドベースで処理をブロッキングしてしまう(CPU時間とメモリを占有してしまう)から
マイクロスレッドで作り直した=基本設計を大きく変更したというだけで、Rustだからパフォーマンスが向上したというわけではない
マイクロスレッドで作り直した=基本設計を大きく変更したというだけで、Rustだからパフォーマンスが向上したというわけではない
612デフォルトの名無しさん
2023/11/21(火) 16:18:31.31ID:Pb5WKpvw stdをunsafeで検索するとUnsafeCellしか出てこなくて
unsafeな関数の名前がほとんどuncheckedなのは
let x = unsafe { do_something_unsafe() };
だとアホっぽいからかな
unsafeな関数の名前がほとんどuncheckedなのは
let x = unsafe { do_something_unsafe() };
だとアホっぽいからかな
613デフォルトの名無しさん
2023/11/21(火) 18:24:54.78ID:Fzh9NpIU 検索方法が間違ってる
そしてuncheckedはunsafeとは意味が違う
そしてuncheckedはunsafeとは意味が違う
614デフォルトの名無しさん
2023/11/21(火) 23:10:58.28ID:lumDzvUR615デフォルトの名無しさん
2023/11/21(火) 23:28:16.17ID:u3FDf3nL 外部入力をtransmuteとか地雷臭がハンパない
どうぞご安全に〜
どうぞご安全に〜
616デフォルトの名無しさん
2023/11/21(火) 23:39:45.33ID:lumDzvUR transmute使わなくてすむsafeなライブラリ関数が揃ってるからね
617デフォルトの名無しさん
2023/11/25(土) 09:15:59.95ID:rKTwm3uz Rust って同じ変数名なのに違う型に出来るよね?
同じスコープで再定義出来ると言うか上書き出来る
名前が変わらないから便利って思うかも知れないが
気を付けてソース観ていないと途中で型が変わってるやん!ってなる
なかなか嫌な構文だね
可読性低下しない?勘違いしそう
同じスコープで再定義出来ると言うか上書き出来る
名前が変わらないから便利って思うかも知れないが
気を付けてソース観ていないと途中で型が変わってるやん!ってなる
なかなか嫌な構文だね
可読性低下しない?勘違いしそう
618デフォルトの名無しさん
2023/11/25(土) 09:18:00.86ID:rKTwm3uz あと上書きされたとき前のリソースは上書きされたタイミングで消えてない
明示的に drop していれば消えるがしなかったら実は生きたまま
迷惑仕様じゃないかな
明示的に drop していれば消えるがしなかったら実は生きたまま
迷惑仕様じゃないかな
619デフォルトの名無しさん
2023/11/25(土) 10:20:51.65ID:ytuM+CNS >>618
同じスコープ内でシャドウィングする時は意味的に同じものを入れるようにする
前のリソースがすぐにドロップされないのはシャドウィング時にそのリソースへの参照を使う事で不要なアロケーションを避けられるから
同じスコープ内でシャドウィングする時は意味的に同じものを入れるようにする
前のリソースがすぐにドロップされないのはシャドウィング時にそのリソースへの参照を使う事で不要なアロケーションを避けられるから
620デフォルトの名無しさん
2023/11/25(土) 12:38:39.68ID:EEEndPKs シャドウイングされた時に勝手に消える方が迷惑仕様だな
その時点で他から参照されてるかもしれないし
その時点で他から参照されてるかもしれないし
621デフォルトの名無しさん
2023/11/25(土) 13:46:10.54ID:V6cVkJ+M >>617
Rustはプログラマーに優しい強い静的型付けの言語だから型が違えばエラーになるため混乱もなく大丈夫
また、型変換するたびに別の変数名にしなければいけなかった言語よりも便利でプログラミングも快適だよ
Rustはプログラマーに優しい強い静的型付けの言語だから型が違えばエラーになるため混乱もなく大丈夫
また、型変換するたびに別の変数名にしなければいけなかった言語よりも便利でプログラミングも快適だよ
622デフォルトの名無しさん
2023/11/25(土) 16:27:51.72ID:81rqCYd0 Rustの欠点は誰も使ってない所だけ
623デフォルトの名無しさん
2023/11/25(土) 17:24:40.07ID:4EAT4Ovg >>622
どうしてそんな悲しいこと言うの!
どうしてそんな悲しいこと言うの!
624デフォルトの名無しさん
2023/11/25(土) 18:44:41.46ID:vlc4nTzz 誰も使ってないのってカッコいいな
625デフォルトの名無しさん
2023/11/25(土) 23:55:37.33ID:B979bnCG 俺だけが知っている
626デフォルトの名無しさん
2023/11/26(日) 09:12:21.52ID:k38CbPq9 ユーザーが少ないのはアドバンテージだってポール・グレアムも言ってる。
627デフォルトの名無しさん
2023/11/26(日) 09:20:04.49ID:OE1+8Rl8 GAFAMで使われるようになった時点で言語として消え去る可能性は十分下がったし
別にこれ以上使う人増えなくてもいいんじゃないかな
日本のSIerにまで広まるなんてまずないだろうし
別にこれ以上使う人増えなくてもいいんじゃないかな
日本のSIerにまで広まるなんてまずないだろうし
628デフォルトの名無しさん
2023/11/26(日) 10:05:44.56ID:Deg4O8Si 言語じゃないけどBlenderみたいにいつの間にか覇権を取ってたりすることもあり得る
629デフォルトの名無しさん
2023/11/26(日) 11:39:45.82ID:d/KzVdDP おまえが使ってるのに誰も使ってないって可笑しなことを言うのな
もしかしておまえも使ってないだろ?正直に言え
もしかしておまえも使ってないだろ?正直に言え
630デフォルトの名無しさん
2023/11/26(日) 11:42:35.06ID:Deg4O8Si 「俺の周りじゃ」
631デフォルトの名無しさん
2023/11/26(日) 12:18:50.10ID:d/KzVdDP ぼっちってこと?
632デフォルトの名無しさん
2023/11/26(日) 12:23:12.23ID:oOwLuMql Rust「きゃー、私のために争わないで
633デフォルトの名無しさん
2023/11/26(日) 12:32:50.97ID:iMOX0Yuj クズがこっちに移動してきたか
まかせろ
まかせろ
634デフォルトの名無しさん
2023/11/26(日) 13:04:33.25ID:oOwLuMql crateのバージョンが1.0になってないのが多いから、まだまだだなーって思う
635デフォルトの名無しさん
2023/11/27(月) 02:23:02.91ID:hnitA9Px ぼっちざRust
636デフォルトの名無しさん
2023/11/27(月) 03:19:17.53ID:shAL5QFI >>635
ちょっとかっこいいじゃん
ちょっとかっこいいじゃん
637デフォルトの名無しさん
2023/11/27(月) 10:05:45.61ID:7/k6/GSg638デフォルトの名無しさん
2023/11/28(火) 08:31:02.24ID:t7+ip2Xg Rustって名前が良くない
639デフォルトの名無しさん
2023/11/28(火) 08:45:48.68ID:ruCnqVCc Cナントカじゃそれこそカビが生えてる
640デフォルトの名無しさん
2023/12/03(日) 08:34:26.30ID:JMjzgwiz >>638
go-langよりはマシ
go-langよりはマシ
641デフォルトの名無しさん
2023/12/03(日) 18:40:27.28ID:kcDV2U5x go は何が駄目といってネーミングがクソすぎるからな
あとマスコットがキモすぎる
あとマスコットがキモすぎる
642デフォルトの名無しさん
2023/12/03(日) 20:05:06.19ID:KItL/kTG ogleとセットで売り出せていれば多少は救われたかもしれない
文字型runeの中二感は好きなんだけど
文字型runeの中二感は好きなんだけど
643デフォルトの名無しさん
2023/12/08(金) 13:43:21.24ID:QsZXn/jV VSCodeのrust_analyzerが、全く関係のないC#のプロジェクトでも勝手に動き始めるようになっちゃった
みんなのところどう?他の言語とか使ってたら起動しちゃったりしてる???
みんなのところどう?他の言語とか使ってたら起動しちゃったりしてる???
644デフォルトの名無しさん
2023/12/08(金) 15:21:20.43ID:FH+GH+Zi645デフォルトの名無しさん
2023/12/10(日) 04:46:02.96ID:RGphax9G ʕ◔ϖ◔ʔ < お呼びですか?
646デフォルトの名無しさん
2023/12/10(日) 11:57:04.81ID:1MxEINjf つべでrust検索するとゲームばっかり出る
647デフォルトの名無しさん
2023/12/21(木) 16:58:33.82ID:HvDn5p2W GAFAMで使われてるから廃れることないし、
コミュニティに変な人が入って来ない方が居心地が良いまである
コミュニティに変な人が入って来ない方が居心地が良いまである
648デフォルトの名無しさん
2023/12/21(木) 17:12:16.21ID:JI0UYSEL gopher はちいかわと同じヤバみを感じる
649デフォルトの名無しさん
2023/12/21(木) 17:13:31.75ID:HvDn5p2W 言語のマスコットネタは寒いよなあ
650デフォルトの名無しさん
2023/12/22(金) 13:35:06.75ID:lJtOGqn+ カニのフェリスも割りと一般的な名前
651デフォルトの名無しさん
2023/12/25(月) 09:35:30.12ID:734EcmtL 「Rust」言語向けの“ビジュアルタイムトラベルデバッガー”「FireDBG」が公開
https://forest.watch.impress.co.jp/docs/news/1557204.html
https://forest.watch.impress.co.jp/docs/news/1557204.html
652デフォルトの名無しさん
2023/12/25(月) 10:28:47.95ID:7mXOqNeO タイムトラベル?使い物になるのか?
653デフォルトの名無しさん
2023/12/25(月) 12:40:39.37ID:Sk+Bp6T/ タイムトラベル知らんのか
654デフォルトの名無しさん
2023/12/26(火) 01:14:24.20ID:79CvGGY2 >>652
CやC++やJavaでも昔からコールスタックは遡れたけど、あれのビジュアル良くしたやつとは違うのかね?
CやC++やJavaでも昔からコールスタックは遡れたけど、あれのビジュアル良くしたやつとは違うのかね?
655デフォルトの名無しさん
2023/12/26(火) 01:58:52.00ID:DHuhCQvi656デフォルトの名無しさん
2023/12/26(火) 04:22:44.20ID:hadQuCYF657デフォルトの名無しさん
2023/12/26(火) 04:22:50.25ID:hadQuCYF658デフォルトの名無しさん
2023/12/26(火) 08:35:59.69ID:P1ddGMJS >>656
セマンティックバージョニングのせいだよ。
バージョンナンバーの付け方は基準があって互換性が維持されるときとされないときで数値の上げかたが違う。
しかしメジャーバージョンがゼロのときは基準の適用外で勝手にしていいことになってる。
初期は試行錯誤があって当然だからね。
キッチリした管理なんかしたくないからまだまだ初期だという体裁でゼロのままにしたほうが楽なんだよ。
セマンティックバージョニングのせいだよ。
バージョンナンバーの付け方は基準があって互換性が維持されるときとされないときで数値の上げかたが違う。
しかしメジャーバージョンがゼロのときは基準の適用外で勝手にしていいことになってる。
初期は試行錯誤があって当然だからね。
キッチリした管理なんかしたくないからまだまだ初期だという体裁でゼロのままにしたほうが楽なんだよ。
659デフォルトの名無しさん
2023/12/26(火) 08:50:16.75ID:RJv1OlmX660デフォルトの名無しさん
2023/12/26(火) 09:58:50.36ID:4qW9SvtE Rustの要であるfutures futures-coreなども0.3のままだな
hyperは先月ようやく正式1.0になり先週1.1になった
h2が0.3から0.4に上がった
hyperは先月ようやく正式1.0になり先週1.1になった
h2が0.3から0.4に上がった
661デフォルトの名無しさん
2023/12/26(火) 10:02:59.91ID:QVgSLMrU どうでもいいな
662デフォルトの名無しさん
2023/12/26(火) 11:10:33.20ID:rdxjbOn3 メジャーバージョンが0のライブラリなんて怖くてよう使わん
Julia並みの破壊的変更が来ても文句言えんからな
Julia並みの破壊的変更が来ても文句言えんからな
663デフォルトの名無しさん
2023/12/26(火) 11:17:02.90ID:RJv1OlmX そういう日が来たら全部壊して書き直した方が早いよ
自分の書いてる所の効率も洗練されて良くなるし
自分の書いてる所の効率も洗練されて良くなるし
664デフォルトの名無しさん
2023/12/26(火) 11:53:58.51ID:druMhfTB まあこういう感じの真面目にサポートとかする気のない人しか使ってない言語なんだろうな
665デフォルトの名無しさん
2023/12/26(火) 12:09:12.16ID:aCwAChA1 >>656
それ他の言語でも散見されるぞ
1.0は枯れ切った後に出て実質でかい機能追加は行わなくなったところでつけることが多い
大抵凄腕の人のライブラリに多いような気がする
SemVerが浸透する前からこの状態だったし
それ他の言語でも散見されるぞ
1.0は枯れ切った後に出て実質でかい機能追加は行わなくなったところでつけることが多い
大抵凄腕の人のライブラリに多いような気がする
SemVerが浸透する前からこの状態だったし
666デフォルトの名無しさん
2023/12/26(火) 15:06:21.44ID:iSUEMnuj Inkscapeは一生1.0に上がらないと思ってた
667デフォルトの名無しさん
2023/12/26(火) 16:49:51.67ID:KvBUmVJg GitHub Issueが2627件あるZigはどうするつもりなんだろう
668デフォルトの名無しさん
2023/12/26(火) 17:19:43.95ID:Y/g/LC26 どうでもいいな
ライブラリの質はSemverで測るものじゃないから
ライブラリの質はSemverで測るものじゃないから
669デフォルトの名無しさん
2023/12/26(火) 17:33:22.23ID:E/z8PERd ライブラリの質にsemver考慮しない人間、仕事にRust使う気がなさそう
趣味プログラムで一年も生かす気がないコードならまあわかる
仕事で限られた工数で長期サポートするならsemver気にしないはありえん
まあRustなんて所詮趣味プログラミング向けなのかもな
まともな仕事には使えん
趣味プログラムで一年も生かす気がないコードならまあわかる
仕事で限られた工数で長期サポートするならsemver気にしないはありえん
まあRustなんて所詮趣味プログラミング向けなのかもな
まともな仕事には使えん
670デフォルトの名無しさん
2023/12/26(火) 17:36:00.58ID:APrQ9KVs 個々のバージョンにおいて出来が良いかどうかはともかくとして、
長期的な互換性に対する姿勢を測る指針のひとつにはなる。
長期的な互換性に対する姿勢を測る指針のひとつにはなる。
671デフォルトの名無しさん
2023/12/26(火) 17:43:23.74ID:AKSTTleD672デフォルトの名無しさん
2023/12/26(火) 18:34:35.78ID:6dPf9R/w ライブラリを選ぶときや使うときには当然Semverは気にする
でもそれは質を測るものではない
その違いが分からないとか理解に苦しむ
ま、どうでもいいけど
でもそれは質を測るものではない
その違いが分からないとか理解に苦しむ
ま、どうでもいいけど
673デフォルトの名無しさん
2023/12/26(火) 18:42:19.39ID:krXurI2c rustを使う人は、みんな凄腕で無ければ自分で実装するイメージ。
674デフォルトの名無しさん
2023/12/26(火) 20:02:46.87ID:E/z8PERd675デフォルトの名無しさん
2023/12/26(火) 20:12:35.91ID:RJv1OlmX 出来たばっかりの言語にやってきて
1系になってるライブラリまるでない使えねー!
お前はJavaに帰れ
1系になってるライブラリまるでない使えねー!
お前はJavaに帰れ
676デフォルトの名無しさん
2023/12/26(火) 20:20:41.08ID:E/z8PERd >>675
古いって言ってももう開発開始から17年なんだよな
Javaリリースから27年であり、正直そこまで差はないだろ
正式リリースからは8年だけど、リリースが遅かったことを評価することは出来んし、正直そこまで差はないと思わざるを得ない
正直、いつまで新しい言語みたいな顔してるんだよって気持ちだ
まるで自分を若いと勘違いしているおっさんみたいだ
古いって言ってももう開発開始から17年なんだよな
Javaリリースから27年であり、正直そこまで差はないだろ
正式リリースからは8年だけど、リリースが遅かったことを評価することは出来んし、正直そこまで差はないと思わざるを得ない
正直、いつまで新しい言語みたいな顔してるんだよって気持ちだ
まるで自分を若いと勘違いしているおっさんみたいだ
677デフォルトの名無しさん
2023/12/26(火) 20:30:47.94ID:rdxjbOn3 しかしJavaに帰れってのも悲しい発言だな
結局仕事ならJavaって>>675も思ってるってことなんだもんな
結局仕事ならJavaって>>675も思ってるってことなんだもんな
678デフォルトの名無しさん
2023/12/26(火) 20:34:34.53ID:4qW9SvtE 他の言語と比較したい人は言語比較スレへ
アンチ活動したい人はアンチスレへ
アンチ活動したい人はアンチスレへ
679デフォルトの名無しさん
2023/12/26(火) 22:38:40.65ID:ewLNJPek >>674
メジャーバージョンが1.0以上かどうかはサポート品質を測る指標にならないんだよ
実際にいろんなライブラリをきちんと調べて使った経験があれば誰にでもわかる常識的なこと
エアプで批判だけしたかったのだとしたらもう少し別の観点から攻めた方がいい
メジャーバージョンが1.0以上かどうかはサポート品質を測る指標にならないんだよ
実際にいろんなライブラリをきちんと調べて使った経験があれば誰にでもわかる常識的なこと
エアプで批判だけしたかったのだとしたらもう少し別の観点から攻めた方がいい
680デフォルトの名無しさん
2023/12/26(火) 23:11:29.12ID:exfh4uMB >>679
いや仕様が安定しているというのはオープンなライブラリが提供可能な最大のサポートだが
まあでもそう思わない分野があるのは理解できるよ
多分君の業界では一度書いたコードが1年以上使われることはないのだろう
そういう業界ではライブラリが変わりまくって新機能が追加されることをサポートと呼ぶだろうし、それはまあわからんではない
でも0.9で止めるみたいな、特に新機能付けるわけでもないけどfixする気もありません。好きな時に変えたいですみたいなのはサポートとは程遠いよね?
いや仕様が安定しているというのはオープンなライブラリが提供可能な最大のサポートだが
まあでもそう思わない分野があるのは理解できるよ
多分君の業界では一度書いたコードが1年以上使われることはないのだろう
そういう業界ではライブラリが変わりまくって新機能が追加されることをサポートと呼ぶだろうし、それはまあわからんではない
でも0.9で止めるみたいな、特に新機能付けるわけでもないけどfixする気もありません。好きな時に変えたいですみたいなのはサポートとは程遠いよね?
681デフォルトの名無しさん
2023/12/26(火) 23:13:25.69ID:exfh4uMB 0.9は関係なかったな
682デフォルトの名無しさん
2023/12/27(水) 00:41:46.65ID:3CBetLUr683デフォルトの名無しさん
2023/12/27(水) 00:49:37.20ID:JhhYq7wG >>682
書いてないことを読み込んで妄想で勝手にまとめる読解力すごいな
書いてないことを読み込んで妄想で勝手にまとめる読解力すごいな
684デフォルトの名無しさん
2023/12/27(水) 00:53:03.07ID:6D5uPlZV >>682
まぁワッチョイスレから逃げ回ってるような荒らしなんだから構うのはやめとこうぜ
まぁワッチョイスレから逃げ回ってるような荒らしなんだから構うのはやめとこうぜ
685デフォルトの名無しさん
2023/12/27(水) 05:17:40.43ID:/OnGyPrY そこまでNGされるのが嫌なのか
686デフォルトの名無しさん
2023/12/27(水) 21:49:50.71ID:feQ9KdG1 自然淘汰とかいうけど
それを人為的にやったらただの私刑じゃないかね
それを人為的にやったらただの私刑じゃないかね
687デフォルトの名無しさん
2023/12/27(水) 22:20:54.47ID:/OnGyPrY 改行NGにすれば全部消えるよ
俺は一時期それにしてたけどおもちゃが見えなくなるのは寂しいからやめた
どうしても消したい場合はそれ推奨
俺は一時期それにしてたけどおもちゃが見えなくなるのは寂しいからやめた
どうしても消したい場合はそれ推奨
688デフォルトの名無しさん
2023/12/27(水) 22:55:48.52ID:+Ixmj89w Polonius期待
689デフォルトの名無しさん
2023/12/28(木) 08:10:24.28ID:7EmcMJDG 1.0 出てても信頼できるかどうかは結局のところ内情ちゃんと見ないとわからないからなぁ。
パッチバージョンで破壊的な事するOSSはとても多い。
パッチバージョンで破壊的な事するOSSはとても多い。
690デフォルトの名無しさん
2023/12/28(木) 08:35:00.47ID:uitX+xsl >>689
Rustならば
①バージョン上がろうがバージョン指定のまま使い続けられる
➁ソース内のテスト及びカバレッジの仕組により意図しない破壊的ミスを防げる
➂意図した破壊的変更は1.xから2.0へ上げるルールが守られているため①により1.*指定で安心して使える
Rustならば
①バージョン上がろうがバージョン指定のまま使い続けられる
➁ソース内のテスト及びカバレッジの仕組により意図しない破壊的ミスを防げる
➂意図した破壊的変更は1.xから2.0へ上げるルールが守られているため①により1.*指定で安心して使える
691デフォルトの名無しさん
2023/12/28(木) 09:01:37.54ID:JG4/aLYi そのルールが厳格に守られてなんかいないって話なんやが。
692デフォルトの名無しさん
2023/12/28(木) 09:05:11.24ID:tRLYlD1D 1.0を超えたら信頼出来るなんて言ってる奴は居ないんだよな
1.0を超えてないのは問題外だが
1.0を超えてないのは問題外だが
693デフォルトの名無しさん
2023/12/28(木) 11:02:26.82ID:TCyyQhqN694デフォルトの名無しさん
2023/12/28(木) 11:34:37.14ID:PHYdezLP695デフォルトの名無しさん
2023/12/28(木) 11:35:52.30ID:PHYdezLP お前が勝手に信頼しているだけで、開発者も想定していない信頼を受けて困っているだろう
696デフォルトの名無しさん
2023/12/28(木) 11:47:36.08ID:PHYdezLP 普通に考えて欲しいんだが、自分がライブラリ開発者の立場だったとして、1.0に上げていないライブラリを安定してて信頼できるものとして使うユーザーがいたら「ちょっと待って」って思うだろ
697デフォルトの名無しさん
2023/12/28(木) 11:54:18.66ID:jeZ/sYb6 使わせてもらってる立場から、使ってやってるに増長するキッズ
文句言うならサポート契約でも結んでからにしろクズ
文句言うならサポート契約でも結んでからにしろクズ
698デフォルトの名無しさん
2023/12/28(木) 11:58:34.84ID:uitX+xsl Rustと関係ない話なら他のスレでやれ
ここで話すなら具体的にRustのどのクレートの話か示せ
ここで話すなら具体的にRustのどのクレートの話か示せ
699デフォルトの名無しさん
2023/12/28(木) 11:59:02.76ID:N5v1piyg バージョン関係なくTHIS SOFTWARE IS PROVIDED "AS IS"なライセンスのライブラリでなに勘違いしてんだろこいつとは思う
700デフォルトの名無しさん
2023/12/28(木) 12:00:19.07ID:N5v1piyg701デフォルトの名無しさん
2023/12/28(木) 12:00:19.20ID:PHYdezLP 開発者の意思表示を正しく読めよ
1.0になってないものを勝手に信頼するな
それはユーザーの心構えが出来ていない
1.0になってないものを勝手に信頼するな
それはユーザーの心構えが出来ていない
702デフォルトの名無しさん
2023/12/28(木) 12:02:39.92ID:jJTXzrLr703デフォルトの名無しさん
2023/12/28(木) 12:07:24.88ID:N5v1piyg705デフォルトの名無しさん
2023/12/28(木) 12:15:29.31ID:PHYdezLP >>703
不十分なのが特定の機能だけなら全体を1.0に上げてからその機能をexperimentalとして提供して良いだろ
だから特定の機能が不安定とかはバージョンニングと独立では?
俺なんか勘違いしてるか?
不十分なのが特定の機能だけなら全体を1.0に上げてからその機能をexperimentalとして提供して良いだろ
だから特定の機能が不安定とかはバージョンニングと独立では?
俺なんか勘違いしてるか?
706デフォルトの名無しさん
2023/12/28(木) 12:19:43.58ID:uitX+xsl 具体的にどのクレートの話か出せない時点で机上の空論
707デフォルトの名無しさん
2023/12/28(木) 12:25:11.39ID:N5v1piyg >>705
具体的な領域の限定や条件の明示なく絶対的な「信頼」が存在すると思っている
それがv1リリースで示されると思っている、ってあたりを勘違いしてるんじゃないかな……
セキュリティを語るときに「この前提が崩れない限り」安全としか語れないのと似ている
具体的な領域の限定や条件の明示なく絶対的な「信頼」が存在すると思っている
それがv1リリースで示されると思っている、ってあたりを勘違いしてるんじゃないかな……
セキュリティを語るときに「この前提が崩れない限り」安全としか語れないのと似ている
708デフォルトの名無しさん
2023/12/28(木) 12:30:33.09ID:PHYdezLP709デフォルトの名無しさん
2023/12/28(木) 12:35:25.46ID:N5v1piyg710デフォルトの名無しさん
2023/12/28(木) 12:35:38.49ID:ySYWG+kx お前まともにRust使ったことないだろう
なんでこのスレにいるの?
なんでこのスレにいるの?
711デフォルトの名無しさん
2023/12/28(木) 12:39:55.64ID:9fQ265/7 仕様の安定度を知りたいなら1.0未満かどうかなんてゴミのような基準使わなくても他にいくらでもマシな方法があるだろうに
712デフォルトの名無しさん
2023/12/28(木) 12:43:17.71ID:PHYdezLP713デフォルトの名無しさん
2023/12/28(木) 12:46:56.09ID:N5v1piyg714デフォルトの名無しさん
2023/12/28(木) 12:49:05.73ID:PHYdezLP >>713
絶対的な信頼が可能なものなど存在しないのが当たり前なので俺はこれまで話題にも上げなかったが、どうしてもその話をしたいようなので、そんなものはないという点については当たり前のこととして同意することをここに記す
絶対的な信頼が可能なものなど存在しないのが当たり前なので俺はこれまで話題にも上げなかったが、どうしてもその話をしたいようなので、そんなものはないという点については当たり前のこととして同意することをここに記す
715デフォルトの名無しさん
2023/12/28(木) 12:50:06.29ID:3VbosFG3 ほんとにどうでもいい話だったな
716デフォルトの名無しさん
2023/12/28(木) 12:52:12.25ID:DH0jKNBE 最近のMicrosoftやApple、Googleなんて安定しているとはいいがたく商用でも責任なんて取らないがみんな使っている
717デフォルトの名無しさん
2023/12/28(木) 14:56:05.00ID:PHYdezLP ほんとうにどうでも良い話だったな
俺に噛みついてきた人間、逆裏対偶理解していない数IA未履修者と、わざわざ1.0未満で止めているものを勝手に信頼し始めるやべー奴しかいなかった
俺に噛みついてきた人間、逆裏対偶理解していない数IA未履修者と、わざわざ1.0未満で止めているものを勝手に信頼し始めるやべー奴しかいなかった
718デフォルトの名無しさん
2023/12/28(木) 15:03:10.32ID:13cJB/jM やっぱりワッチョイは必要だという結論しか出て来ない
ワッチョイ無しは荒らしに構うから伸びてるだけだわ……
ワッチョイ無しは荒らしに構うから伸びてるだけだわ……
719デフォルトの名無しさん
2023/12/28(木) 15:54:11.64ID:uitX+xsl720デフォルトの名無しさん
2023/12/28(木) 17:10:51.72ID:QN4uwoNP721デフォルトの名無しさん
2023/12/28(木) 20:36:54.93ID:JQwnhIVp722デフォルトの名無しさん
2023/12/29(金) 08:33:17.51ID:CCwb5Mxd バージョン0.9は「信頼してはいけない」という解釈が可能
複数通りの解釈を発生させた戦犯は謝罪するべきという解釈も可能
複数通りの解釈を発生させた戦犯は謝罪するべきという解釈も可能
723デフォルトの名無しさん
2023/12/29(金) 08:38:26.10ID:sHM61QvB 0.1.234 みたいにパッチバージョン爆発させてる OSS は継続性という点でわりと信頼感がある。
724デフォルトの名無しさん
2023/12/29(金) 09:12:11.91ID:a+GKJrq8 たしかに234.0.0と0.1.234なら1.0未満とはいえ後者のほうがいいな
725デフォルトの名無しさん
2023/12/29(金) 09:59:51.90ID:CCwb5Mxd セマンティックだから1通り以上の解釈がある
無意味かつ無リスクな数字にすれば0通り
無意味かつ無リスクな数字にすれば0通り
726デフォルトの名無しさん
2023/12/29(金) 10:19:20.55ID:DHnfEKbi >バージョン0.9は「信頼してはいけない」という解釈が可能
じゃ0.10にすればいいんですねww
じゃ0.10にすればいいんですねww
727デフォルトの名無しさん
2023/12/29(金) 10:25:18.94ID:f2oltWq4 >>723
誰もがお行儀良くone by oneでincrementしてるとは限らないよ
誰もがお行儀良くone by oneでincrementしてるとは限らないよ
728デフォルトの名無しさん
2023/12/29(金) 10:30:28.27ID:CUdroGt9 ライブラリを選ぶときは過去にリリースしたバージョン数、期間、頻度、メンテナンス状況、リリースノートの内容、ドキュメントの内容、Dependencies、Dependentsあたりの基本的項目くらいはみんな確認するよね?
バージョン番号だけで評価しようとする意味がわからない
バージョン番号だけで評価しようとする意味がわからない
729デフォルトの名無しさん
2023/12/29(金) 10:36:02.78ID:0cvltfsQ730デフォルトの名無しさん
2023/12/29(金) 11:52:32.00ID:fWvRNSV1 急に「だけで」みたいな条件を脳内補完し始める人間、数IA未履修者っぽい気配がする
731デフォルトの名無しさん
2023/12/29(金) 11:57:48.80ID:gPoT6KCM732デフォルトの名無しさん
2023/12/29(金) 12:12:05.81ID:PikwmNJc 番号見てあれこれ想像してないで受け入れテスト書けよ
733デフォルトの名無しさん
2023/12/29(金) 12:18:04.06ID:pF6WWzLY >>732
ほんとそれ
あちこちに直接組み込んだら
別ライブラリ使いたいの度に全部書き直しやんけ
自前のちょっとしたラッパー書いて
同プロジェクトから呼ぶときはラッパー通せば良くね?
一度バージョン上げてみてテスト通らないので、時間出来るまで見送りですねーってやれば終わり
ほんとそれ
あちこちに直接組み込んだら
別ライブラリ使いたいの度に全部書き直しやんけ
自前のちょっとしたラッパー書いて
同プロジェクトから呼ぶときはラッパー通せば良くね?
一度バージョン上げてみてテスト通らないので、時間出来るまで見送りですねーってやれば終わり
734デフォルトの名無しさん
2023/12/29(金) 12:42:41.12ID:1/HEfF20 ちょっとH2とH2に依存しているライブラリの使っている機能全てのラッパー書いてラッパーのメンテナンスしてくれる人いるー?
できれば別ライブラリ使いたくなった時も対応してくれるいいなー
できれば別ライブラリ使いたくなった時も対応してくれるいいなー
735デフォルトの名無しさん
2023/12/29(金) 12:45:01.14ID:gPoT6KCM736デフォルトの名無しさん
2023/12/29(金) 13:03:50.04ID:ymW7FjRY737デフォルトの名無しさん
2023/12/29(金) 13:50:41.57ID:CCwb5Mxd 標準ライブラリのたぐいを自作ライブラリでラップするのは
自己肯定感というか個人主義の成功体験がないと難しいんじゃないか
自己肯定感というか個人主義の成功体験がないと難しいんじゃないか
738デフォルトの名無しさん
2023/12/29(金) 14:08:03.03ID:5mnDPveJ ぽまいらGRUBも使ってなかったの?
あれなんかあんな便利なのにずーっと0.9だったでしょ
あんなに人類に役立つソフトなかなかないで
あれなんかあんな便利なのにずーっと0.9だったでしょ
あんなに人類に役立つソフトなかなかないで
739デフォルトの名無しさん
2023/12/29(金) 14:12:05.35ID:gPoT6KCM ラップすることは本質ではなくただ単にラップするのは本末転倒
抽象化のために自分側の関数をそれぞれ作ってその中に外部ライブラリを閉じ込めるのが一般的
結果的にラップの一形態となっているにすぎない
抽象化のために自分側の関数をそれぞれ作ってその中に外部ライブラリを閉じ込めるのが一般的
結果的にラップの一形態となっているにすぎない
740デフォルトの名無しさん
2023/12/29(金) 14:12:37.90ID:Y5pppiMt GRUBの仕様が変わったら面倒って状態になったことないので流石に別の話では
741デフォルトの名無しさん
2023/12/29(金) 16:21:20.54ID:GcW4fAIp742デフォルトの名無しさん
2023/12/29(金) 16:40:37.66ID:fjXA5V8+ >>729
>「だけで」と言ってるやつはいないよ。
「だけで」と言ってるやつはいないけど「だけで」判断してるマヌケはいるよね?
まぁほぼ君だけなんだけどさ↓
「メジャーバージョンが0のライブラリなんて怖くてよう使わん」
「0.9で止めるみたいな、特に新機能付けるわけでもないけどfixする気もありません。好きな時に変えたいですみたいなのはサポートとは程遠い」
「1.0を超えてないのは問題外」
「1.0に上げていないライブラリを安定してて信頼できるものとして使うユーザーがいたら「ちょっと待って」って思うだろ」
「1.0になってないものを勝手に信頼するな」
「わざわざ1.0未満で止めているものを勝手に信頼し始めるやべー奴しかいなかった」
>「だけで」と言ってるやつはいないよ。
「だけで」と言ってるやつはいないけど「だけで」判断してるマヌケはいるよね?
まぁほぼ君だけなんだけどさ↓
「メジャーバージョンが0のライブラリなんて怖くてよう使わん」
「0.9で止めるみたいな、特に新機能付けるわけでもないけどfixする気もありません。好きな時に変えたいですみたいなのはサポートとは程遠い」
「1.0を超えてないのは問題外」
「1.0に上げていないライブラリを安定してて信頼できるものとして使うユーザーがいたら「ちょっと待って」って思うだろ」
「1.0になってないものを勝手に信頼するな」
「わざわざ1.0未満で止めているものを勝手に信頼し始めるやべー奴しかいなかった」
743デフォルトの名無しさん
2023/12/29(金) 18:22:07.42ID:v1Foeynd 確かにどう見てもバージョンナンバーだけで判断してるな
744デフォルトの名無しさん
2023/12/29(金) 19:11:58.37ID:fWvRNSV1745デフォルトの名無しさん
2023/12/29(金) 19:28:31.50ID:fWvRNSV1 ああ、それとも「仕様が安定していて信頼出来る」と「あるプロダクトの依存として採用する」の方が良いかな
746デフォルトの名無しさん
2023/12/29(金) 19:32:39.94ID:0cvltfsQ 関連しそうなクレートを全て精査するのは無理なんだから分かりやすい基準で足切りラインを設定するのは普通の処置なんじゃないの。
それがバージョンナンバーでも作者でもダウンロード数でもいいけど、バージョンナンバーでマシそうなのを選出してから細かい絞り混みをするのはそんなに不自然なこととは思わないけどな。
クレートを使う側の選出では偽陰性が増えてでも疑陽性が少ないほうが絞り混みやすいわけだし。
それがバージョンナンバーでも作者でもダウンロード数でもいいけど、バージョンナンバーでマシそうなのを選出してから細かい絞り混みをするのはそんなに不自然なこととは思わないけどな。
クレートを使う側の選出では偽陰性が増えてでも疑陽性が少ないほうが絞り混みやすいわけだし。
747デフォルトの名無しさん
2023/12/29(金) 20:54:47.18ID:CCwb5Mxd ベン図も三角関数も
何の役に立つのかを分かりやすく示さなければ足切られる側なんだよな
何の役に立つのかを分かりやすく示さなければ足切られる側なんだよな
748デフォルトの名無しさん
2023/12/29(金) 21:21:00.48ID:qZkdUj+g749デフォルトの名無しさん
2023/12/29(金) 21:52:37.44ID:fWvRNSV1 バージョンナンバーを考慮することはないって意見、同意はしないけど逆裏対偶みたいな基本的な誤りはないのでまあ分野によってはそうかもって感じ
俺も年単位でサポートする気がない書き捨てに近いプログラム書くときはそうだし
俺も年単位でサポートする気がない書き捨てに近いプログラム書くときはそうだし
750デフォルトの名無しさん
2023/12/29(金) 23:21:04.71ID:QVcmgKmp バージョンおじさん見苦しい
751デフォルトの名無しさん
2023/12/30(土) 00:00:54.19ID:xE8SJEDn 所有権の複製のときといっしょの流れになってない?w
しょーもないところで食い下がってゴールポスト動かして居座るやつ
しょーもないところで食い下がってゴールポスト動かして居座るやつ
752デフォルトの名無しさん
2023/12/30(土) 00:42:52.50ID:slhZof7h 対偶と裏の違いがわかってないから変なゴールポストを幻視してしまうのでは?
753デフォルトの名無しさん
2023/12/30(土) 01:02:25.15ID:CdBdHENn 『「バージョン1未満」は「信頼出来ない」と判断しているが「バージョンだけで判断」していない』
複製オジさんもビックリしてそう
複製オジさんもビックリしてそう
754デフォルトの名無しさん
2023/12/30(土) 01:56:09.99ID:slhZof7h755デフォルトの名無しさん
2023/12/30(土) 04:10:17.11ID:+VY2mXpj >>754
具体的にどのクレートをバージョンナンバーにより採用した採用しなかったのかを書きなさい
具体的にどのクレートをバージョンナンバーにより採用した採用しなかったのかを書きなさい
756デフォルトの名無しさん
2023/12/30(土) 04:20:00.71ID:slhZof7h757デフォルトの名無しさん
2023/12/30(土) 04:25:37.61ID:slhZof7h いやそれはそれと俺が選ばなかったライブラリの話、真面目に答えると結構ちゃんと選ばないと分野がバレるな
758デフォルトの名無しさん
2023/12/30(土) 04:26:52.37ID:+VY2mXpj >>756
一度も具体的な話を書けないエアプログラマーはこのスレから去れ
一度も具体的な話を書けないエアプログラマーはこのスレから去れ
759デフォルトの名無しさん
2023/12/30(土) 04:56:11.37ID:slhZof7h760デフォルトの名無しさん
2023/12/30(土) 05:03:26.73ID:slhZof7h 不毛な話に返信している自覚はあるので、俺に言及する奴が消えたら俺も書かなくはなるんだよな
ID:+VY2mXpjが具体的な話をしてくれたらそっちに話題が移るんじゃないだろうか
ID:+VY2mXpjが具体的な話をしてくれたらそっちに話題が移るんじゃないだろうか
761デフォルトの名無しさん
2023/12/30(土) 05:10:37.63ID:+VY2mXpj762デフォルトの名無しさん
2023/12/30(土) 05:19:08.00ID:slhZof7h >>761
「出してください」な
「出してください」な
763デフォルトの名無しさん
2023/12/30(土) 05:21:27.73ID:slhZof7h まあちゃんと「出してください」って言われても俺の分野がバレない奴があったか悩ましいが
764デフォルトの名無しさん
2023/12/30(土) 05:28:06.55ID:slhZof7h こういうのは具体的を出すということ自体が結構難しいんだよな
>>761が使っているライブラリでバージョンが1未満のものを上げるとかしてくれたら話が早い
>>761が使っているライブラリでバージョンが1未満のものを上げるとかしてくれたら話が早い
765デフォルトの名無しさん
2023/12/30(土) 06:29:39.39ID:GnED1sKw Rust勉強中。アノテーション注釈が出てきたところで流行らない理由をなんとなく察する
ヌルポとメモリーリークを防げるから個人開発で使う分にはいいけど。会社で広める気にはならない
学習コスト高いわ
ヌルポとメモリーリークを防げるから個人開発で使う分にはいいけど。会社で広める気にはならない
学習コスト高いわ
766デフォルトの名無しさん
2023/12/30(土) 10:07:43.55ID:bcJEqtzR async traitが安定化されてる!!!
https://blog.rust-lang.org/2023/12/28/Rust-1.75.0.html
https://blog.rust-lang.org/2023/12/28/Rust-1.75.0.html
767デフォルトの名無しさん
2023/12/30(土) 10:32:04.21ID:QGv3PFfa768デフォルトの名無しさん
2023/12/30(土) 11:16:50.31ID:kCUZZSzY769デフォルトの名無しさん
2023/12/30(土) 11:33:27.15ID:d4YZn3CY the book はきついよね
770デフォルトの名無しさん
2023/12/30(土) 11:41:42.24ID:scaDM36O staticを自粛する言語はみんな高コスト
チェリーピッキングみたいに最高値の近辺だけが高いという指摘はうさんくさい
チェリーピッキングみたいに最高値の近辺だけが高いという指摘はうさんくさい
771デフォルトの名無しさん
2023/12/30(土) 12:22:34.64ID:WjlNag1n772デフォルトの名無しさん
2023/12/30(土) 18:18:48.80ID:Ycw4kjfb >>759
自分が具体的なことを書いていないという指摘は否定しないw
自分が具体的なことを書いていないという指摘は否定しないw
773デフォルトの名無しさん
2023/12/31(日) 05:11:31.11ID:15iRFp/+ >>765
ライフタイム注釈はたいてい一意に定まりその時は省略できるから面倒にならないよ
省略できず明示的にライフタイム注釈を指定しないといけない場合は
例えば複数の参照を受け取り参照を返す関数などでそれら参照間の関係を指定する
ライフタイム注釈はたいてい一意に定まりその時は省略できるから面倒にならないよ
省略できず明示的にライフタイム注釈を指定しないといけない場合は
例えば複数の参照を受け取り参照を返す関数などでそれら参照間の関係を指定する
774デフォルトの名無しさん
2023/12/31(日) 10:19:28.53ID:kd8WxVq5775デフォルトの名無しさん
2023/12/31(日) 10:35:21.39ID:NOiZF6ke なまじライフタイムを省略できるせいでライフタイム未修得でも書けてしまう言語なので、いざライフタイム省略出来ない時が来た時に脳がバグる
776デフォルトの名無しさん
2023/12/31(日) 11:15:14.55ID:sbs7ggSq ライフタイムの記述は省略できることはあっても常にライフタイムを意識しながら書かなきゃいけない
それに省略できない場面にも日々遭遇するから「省略できるから面倒にならない」みたいな初心者釣りはやめた方がいい
暗黙的に意識しなきゃいけないC++に比べればある意味面倒ではないという程度
それに省略できない場面にも日々遭遇するから「省略できるから面倒にならない」みたいな初心者釣りはやめた方がいい
暗黙的に意識しなきゃいけないC++に比べればある意味面倒ではないという程度
777デフォルトの名無しさん
2023/12/31(日) 11:24:54.37ID:rKdc/qeD マクロやFFIのようなやや高度な機能を除いた基本機能の中ではライフタイムが一番難しくて一番面倒
性能と引き換えに受け入れなければいけない面倒臭さ
性能と引き換えに受け入れなければいけない面倒臭さ
778デフォルトの名無しさん
2023/12/31(日) 12:07:26.58ID:8Uv46fmp ライフタイム意識しなくても良いと騙されて書き始めた人間のがライフタイムに恐れを抱いて迂回しながら書いた至る所でcloneして値渡するコード
779デフォルトの名無しさん
2023/12/31(日) 13:31:13.38ID:K3mMRoqD まあ C++ と比較するとおおよそ良くなってると思うが C++ で不都合なく寿命管理できる能力があるなら Rust でライフタイムを明記するのを面倒と感じることはあるだろうな。
人類は駄目なので実際には頻繁に問題を起こすという現実があるんだけどさ。 わかってても間違うのが人類。
人類は駄目なので実際には頻繁に問題を起こすという現実があるんだけどさ。 わかってても間違うのが人類。
780デフォルトの名無しさん
2023/12/31(日) 13:50:46.98ID:PS1jMjj+ お金を賭ければ失敗することもあるけど賭けなければどうということはない
どっちも現実なんだけどリスク回避=現実逃避だと思ってるのが人類あるある
どっちも現実なんだけどリスク回避=現実逃避だと思ってるのが人類あるある
781デフォルトの名無しさん
2023/12/31(日) 14:00:16.32ID:8Uv46fmp C++で不都合なく寿命管理出来る能力があったらライフタイム管理なんて数文字タイプが増えるだけになのでは
782デフォルトの名無しさん
2023/12/31(日) 14:02:49.07ID:JAX3toXP >>779
Rustで性能&安全性優位になるのは積極的にスタックに積んで参照使いまくった場合だろうけど、c++だとスマートポインタとアロケータで最適化しとけという話になるからなぁ。
どんくらい性能差あるのかわからん。
Rustで性能&安全性優位になるのは積極的にスタックに積んで参照使いまくった場合だろうけど、c++だとスマートポインタとアロケータで最適化しとけという話になるからなぁ。
どんくらい性能差あるのかわからん。
783デフォルトの名無しさん
2023/12/31(日) 14:05:38.66ID:K3mMRoqD >>781
出来ると思ってるが実際には出来てないって話さ
出来ると思ってるが実際には出来てないって話さ
784デフォルトの名無しさん
2023/12/31(日) 16:01:28.24ID:r3ulhjhy もうRustじゃ無理なんだよ
785デフォルトの名無しさん
2023/12/31(日) 17:31:22.31ID:15iRFp/+ >>784
Rustが有利という話の流れの中で唐突にRustが何か無理なことある?
Rustが有利という話の流れの中で唐突にRustが何か無理なことある?
786デフォルトの名無しさん
2023/12/31(日) 18:02:32.92ID:K3mMRoqD プログラミング出来ない人は本当に出来ない。
C++ を使えているくらいの人なら Rust を (良いと思うかどうかは別として) 真面目に学べば使いこなせるだろうけど、初心者が最初に学び始めるには全く向いてないなぁと思うくらいのハードルの高さはあると思う。
C++ を使えているくらいの人なら Rust を (良いと思うかどうかは別として) 真面目に学べば使いこなせるだろうけど、初心者が最初に学び始めるには全く向いてないなぁと思うくらいのハードルの高さはあると思う。
787デフォルトの名無しさん
2023/12/31(日) 18:29:47.72ID:15iRFp/+ プログラミング出来ない人にRustはハードルが高いという主張か
788デフォルトの名無しさん
2023/12/31(日) 19:12:47.61ID:SnRIdEnt ゴミには何触らせてもゴミ
789デフォルトの名無しさん
2023/12/31(日) 20:25:01.01ID:d6XbubcX >>786
単に最近のスクリプト言語が簡単過ぎるだけだと思うけどね
ブイブイ言わせてる()モダンなスクリプト言語使いが
俺たちRustも書けるっしょwみたいなノリで挑戦して
書けなくて諦めるというのを何度も見てきた
本来プログラミングってのはこの程度は難しいものよ
単に最近のスクリプト言語が簡単過ぎるだけだと思うけどね
ブイブイ言わせてる()モダンなスクリプト言語使いが
俺たちRustも書けるっしょwみたいなノリで挑戦して
書けなくて諦めるというのを何度も見てきた
本来プログラミングってのはこの程度は難しいものよ
790デフォルトの名無しさん
2023/12/31(日) 20:41:56.95ID:Asz1BteV Rustを書けず断念するような低レベルの人ならば
他の言語でもまともなプログラムは書けないと思うけどな
他の言語でもまともなプログラムは書けないと思うけどな
791デフォルトの名無しさん
2023/12/31(日) 22:03:37.75ID:682wQwxe バージョンおじさんの次はスクリプトコンプおじさんか
792デフォルトの名無しさん
2023/12/31(日) 22:07:53.39ID:fB+p+szm ライフタイムは関数に渡すときborrowするだけなら何も難しいことはないんだが型に参照を含めていろんな操作をしたり持ち回ったりし始めると複雑度が急上昇する
793デフォルトの名無しさん
2023/12/31(日) 22:22:03.06ID:Asz1BteV そこは同じ
型に含まれてる参照のライフタイムがその型にも付くだけ
型に含まれてる参照のライフタイムがその型にも付くだけ
794デフォルトの名無しさん
2024/01/01(月) 00:50:09.76ID:X6Py91w/ あけましておめでとうございます
ライフタイム面倒なので捨ててstaticにしたいそんな貴方へ魔法の関数プレゼント!
fn to_static_str(input: &str) -> &'static str {
input.to_owned().leak()
}
ライフタイム面倒なので捨ててstaticにしたいそんな貴方へ魔法の関数プレゼント!
fn to_static_str(input: &str) -> &'static str {
input.to_owned().leak()
}
795デフォルトの名無しさん
2024/01/01(月) 19:58:44.82ID:SMFNndU8 the book で勉強中だけど覚えること多いなあ
構文を覚えるだけで70時間はかかりそう
デザインパターンの勉強は必要なさそうだけど
実践投入するには読経も20時間分ぐらい必要だろうな
構文を覚えるだけで70時間はかかりそう
デザインパターンの勉強は必要なさそうだけど
実践投入するには読経も20時間分ぐらい必要だろうな
796デフォルトの名無しさん
2024/01/01(月) 22:17:40.22ID:nmIunYxl 90時間でも約11日稼働ならオンボーディングで
極端に辛いというほどじゃなくね
極端に辛いというほどじゃなくね
797デフォルトの名無しさん
2024/01/01(月) 22:29:17.37ID:pmJAVvpO798デフォルトの名無しさん
2024/01/02(火) 00:14:27.39ID:SHn+5kOU Rustの勉強が大変なら勉強なんかせんでええ
Copilotに書かせてコンパイル通ればOKや!
Copilotに書かせてコンパイル通ればOKや!
799デフォルトの名無しさん
2024/01/02(火) 08:32:02.80ID:xTyEZXhx copilot は予測変換の賢いやつって感じ。
個々の場面では思ったよりも賢くて使い物になるが全体を構成するのに人の思考がいらないほど、全部丸投げ出来るほどではない。
出来る人が楽をするツールであって、できない人が使ってもまともなものは作れない。
個々の場面では思ったよりも賢くて使い物になるが全体を構成するのに人の思考がいらないほど、全部丸投げ出来るほどではない。
出来る人が楽をするツールであって、できない人が使ってもまともなものは作れない。
800デフォルトの名無しさん
2024/01/02(火) 22:18:53.42ID:3cCPTdjI >>792
どっちかというとそういうもち回しによる複雑な操作するなってのがrustの思想だろ
どっちかというとそういうもち回しによる複雑な操作するなってのがrustの思想だろ
801デフォルトの名無しさん
2024/01/03(水) 00:45:56.91ID:cT5UAedN 他の言語の習慣を捨てないとなかなか実践できないと思う
しばらく使ってるとRust特有のプラクティスが見えてくるけど
しばらく使ってるとRust特有のプラクティスが見えてくるけど
802デフォルトの名無しさん
2024/01/03(水) 00:58:25.14ID:WEsHc8Hy 全体を構成する部分が問題になってRustにノータイムで移行できない人間が書くスクリプト言語で書かれたプログラム、読みたくなさすぎる
803デフォルトの名無しさん
2024/01/03(水) 18:10:43.49ID:AJuUFyM+ VSCodeとrust-analyzerでrustを書いている人にちょっとお聞きしたいんだけど、
rustのコード補完で、必ずabc順になっちゃうんだけど
直前に使用したメソッドを優先的に上位に表示させることってできないの?
VSCodeのエディタの設定でrecently usedを設定してもabc順でしか表示さない
InteliJIdeaでは学習した結果、使用頻度の高いものを上位に表示してくれてたのに・・
rustのコード補完で、必ずabc順になっちゃうんだけど
直前に使用したメソッドを優先的に上位に表示させることってできないの?
VSCodeのエディタの設定でrecently usedを設定してもabc順でしか表示さない
InteliJIdeaでは学習した結果、使用頻度の高いものを上位に表示してくれてたのに・・
804デフォルトの名無しさん
2024/01/03(水) 23:00:13.67ID:parSgmbo 質問の仕方が間違っているぞ
そういう時は「補完もまともに出来ないクソ言語」って言えば信者が頑張って探してくれる
そういう時は「補完もまともに出来ないクソ言語」って言えば信者が頑張って探してくれる
805デフォルトの名無しさん
2024/01/04(木) 17:30:55.33ID:mYBU2Jpa InteliJでは出来てたって書いてあるの読めない人なのかな?
こういう人がテストケースとか書いてると思うと怖くてたまらんね
こういう人がテストケースとか書いてると思うと怖くてたまらんね
806デフォルトの名無しさん
2024/01/04(木) 17:56:16.02ID:dLQyUrS8 >>804は頭の弱いRustアンチの人だから無視しとけ
807デフォルトの名無しさん
2024/01/04(木) 18:21:30.81ID:mYBU2Jpa ごめんよ
rustが難しくて理解できない可愛そうな人だったか
rustが難しくて理解できない可愛そうな人だったか
808デフォルトの名無しさん
2024/01/04(木) 19:32:15.16ID:lFo5UMLf 誰も問題解決出来てなくて草
マジで糞言語なのか?
VSCodeでもPythonなら出来るぞこれ
マジで糞言語なのか?
VSCodeでもPythonなら出来るぞこれ
809デフォルトの名無しさん
2024/01/04(木) 20:05:26.49ID:9Tnu7Lk1810デフォルトの名無しさん
2024/01/04(木) 20:44:14.40ID:5w1EWT82 普通にバグ報告すればいいのに
811デフォルトの名無しさん
2024/01/04(木) 20:47:26.53ID:mYBU2Jpa >>808
あらためてVSCode再起動したら普通に直近に選択したメソッドや変数が上位に表示されるようになった
ごめんね ぺこり
ちなPythonは入れ子のループの内側から外側のbreakができないから嫌い
あらためてVSCode再起動したら普通に直近に選択したメソッドや変数が上位に表示されるようになった
ごめんね ぺこり
ちなPythonは入れ子のループの内側から外側のbreakができないから嫌い
812デフォルトの名無しさん
2024/01/04(木) 21:51:07.65ID:dt0a6v34 InteliJ は rust-analyzer 使ってないんじゃなかった?
開発支援機能の基盤が違えば細かい挙動が一致しないのなんて当たり前過ぎて何が言いたいのかわからない。
開発支援機能の基盤が違えば細かい挙動が一致しないのなんて当たり前過ぎて何が言いたいのかわからない。
813デフォルトの名無しさん
2024/01/04(木) 22:28:32.21ID:4GGvVaU9 >>795の読経って何?
814デフォルトの名無しさん
2024/01/05(金) 08:39:06.77ID:wSd1e+VK815デフォルトの名無しさん
2024/01/05(金) 09:40:39.59ID:K2XmLAOd Rustで書かれたLinux互換OS「Maestro」が爆誕
https://softantenna.com/blog/rust-maestro/
https://softantenna.com/blog/rust-maestro/
816デフォルトの名無しさん
2024/01/05(金) 09:43:03.49ID:QSnLODWj >>814
ああ、コードを読むのを読経と言ってるのか。ありがとう。
ああ、コードを読むのを読経と言ってるのか。ありがとう。
817デフォルトの名無しさん
2024/01/05(金) 13:58:06.60ID:p8td/CWz 読経なんかせんでええ
GPTに書かせろ
GPTに書かせろ
818デフォルトの名無しさん
2024/01/05(金) 14:50:07.45ID:5Ddnqo9+ ソースはお経じゃねえぞ
819デフォルトの名無しさん
2024/01/05(金) 16:26:15.51ID:qm5+loRz 写すと写経
読むと読経か
般若心経に波羅蜜多という単語が出て来る
修行の意味だが、修行を行った量という意味でもあり
英単語のparameterと同語源だという
引数か
ヤシの木palmとparameterも同語源って説がある
palmは手の平の意味だが手の指で文字を数えるとも繋がる
これがまた修行の量とか引数って概念に繋がる
またヤシの葉で分厚いパルミラヤシと呼ばれるものは経文を書くのに使われていた
経文を書いた量がまた修行のパラメーターとなった
ナツメヤシのことをdateというが日にちも数えるもの、デートも日にちを重ねて交流を深めるものとされた
ヤシの葉と修行と日にちと引数は常に数えるものとされた
一方で波羅蜜、パラミツというスイカの5倍くらいある果物もある
果実を輪切りにするとアナログ時計のように果肉が並び
時間を象徴するものだから?という話があるが、パラミツと波羅蜜多は特に関係がないという方が多い
インドにRust外注したら動くものは帰ってくるのかどうか
読むと読経か
般若心経に波羅蜜多という単語が出て来る
修行の意味だが、修行を行った量という意味でもあり
英単語のparameterと同語源だという
引数か
ヤシの木palmとparameterも同語源って説がある
palmは手の平の意味だが手の指で文字を数えるとも繋がる
これがまた修行の量とか引数って概念に繋がる
またヤシの葉で分厚いパルミラヤシと呼ばれるものは経文を書くのに使われていた
経文を書いた量がまた修行のパラメーターとなった
ナツメヤシのことをdateというが日にちも数えるもの、デートも日にちを重ねて交流を深めるものとされた
ヤシの葉と修行と日にちと引数は常に数えるものとされた
一方で波羅蜜、パラミツというスイカの5倍くらいある果物もある
果実を輪切りにするとアナログ時計のように果肉が並び
時間を象徴するものだから?という話があるが、パラミツと波羅蜜多は特に関係がないという方が多い
インドにRust外注したら動くものは帰ってくるのかどうか
820デフォルトの名無しさん
2024/01/05(金) 17:09:23.62ID:FktlJzQH parameterのpara-はギリシア語由来の「離れている」では
parallel(平行)のpara-
parallel(平行)のpara-
821デフォルトの名無しさん
2024/01/05(金) 19:03:58.53ID:kJ7MyVdE822デフォルトの名無しさん
2024/01/06(土) 15:29:56.82ID:NPThFXTg 無理にひねくれたこと書かんでよろしい
823デフォルトの名無しさん
2024/01/07(日) 02:08:36.16ID:eqr3i2HS rustちょっと書いたけどなんかハマらんな
つまんない
刺激が少ない
俺は別に言語に安全性なんて求めてないんだ
刺激がほしいんだ
つまんない
刺激が少ない
俺は別に言語に安全性なんて求めてないんだ
刺激がほしいんだ
824デフォルトの名無しさん
2024/01/07(日) 02:15:40.93ID:k7dl9y2N >>823
お前のチームのバグ出しまくる同僚に使わせたら?
お前のチームのバグ出しまくる同僚に使わせたら?
825デフォルトの名無しさん
2024/01/07(日) 02:41:23.33ID:KA2Mqlfb プログラミングそのものに刺激を求めるんじゃない
刺激はプログラミングで実現したいものに求めろ
刺激はプログラミングで実現したいものに求めろ
826デフォルトの名無しさん
2024/01/07(日) 09:36:48.73ID:qkYZiPZe rustはコンパイラにムチを打たれながらコーディングする性癖ドM言語だよ
自身の性癖と合う言語を使ってけ
自身の性癖と合う言語を使ってけ
827デフォルトの名無しさん
2024/01/07(日) 15:48:04.06ID:ujkX2rEF Rustがムチ打つかレビューでムチ打つかの違いでしかないんだよな
誰にも見せないコードなら関係ないけど
誰にも見せないコードなら関係ないけど
828デフォルトの名無しさん
2024/01/07(日) 16:53:56.32ID:FD9BMc1I 男は黙ってSegmentation Fault
829デフォルトの名無しさん
2024/01/07(日) 21:59:04.51ID:k7dl9y2N830デフォルトの名無しさん
2024/01/08(月) 12:20:12.43ID:JTfbpR0w 刺激ってメモリリークでクラッシュとか、ストレージフォーマットとかか?
831デフォルトの名無しさん
2024/01/08(月) 20:41:35.20ID:6GvPzxXI スマートポインタについて勉強中。強い参照、弱い参照という概念が出てきて目が回る
RefCell……所有権の共有が発生する参照……参照???
言葉遊びが過ぎないか。。。
RefCell……所有権の共有が発生する参照……参照???
言葉遊びが過ぎないか。。。
832デフォルトの名無しさん
2024/01/08(月) 21:50:36.68ID:VjyRCTjd 何書いてるかによるけど、出来ればスマートポインタ使わずに書きたい
833デフォルトの名無しさん
2024/01/08(月) 21:56:10.69ID:a9mjVCEv >>831
強い参照、弱い参照はRustやC++だけでなくJavaやC#、PythonやJavaScriptでさえ出てくる一般的な概念だぞ
RefCellは所有権の共有じゃないぞ
スマートポインタや参照という言葉もRustの定義を理解した上で学ぶ必要があるんだけどちゃんとした資料で勉強してるか?
強い参照、弱い参照はRustやC++だけでなくJavaやC#、PythonやJavaScriptでさえ出てくる一般的な概念だぞ
RefCellは所有権の共有じゃないぞ
スマートポインタや参照という言葉もRustの定義を理解した上で学ぶ必要があるんだけどちゃんとした資料で勉強してるか?
834デフォルトの名無しさん
2024/01/08(月) 22:02:17.92ID:6GvPzxXI835デフォルトの名無しさん
2024/01/08(月) 22:04:58.02ID:6GvPzxXI836デフォルトの名無しさん
2024/01/08(月) 22:45:23.91ID:U+1fQP74837デフォルトの名無しさん
2024/01/08(月) 22:56:58.99ID:DdO69zqE >>835
まず前提環境が重要になる
たとえば並行はあるのか?並列はあるのか?両方あるのか?
あるとしても共有が必要なそれらの範囲はどこまでなのか?
それとは別の話で参照の共有と所有権の共有についても前者だけで済むのか後者も必要なのか?
など
まず前提環境が重要になる
たとえば並行はあるのか?並列はあるのか?両方あるのか?
あるとしても共有が必要なそれらの範囲はどこまでなのか?
それとは別の話で参照の共有と所有権の共有についても前者だけで済むのか後者も必要なのか?
など
838デフォルトの名無しさん
2024/01/09(火) 00:03:40.70ID:8DV95bbu839デフォルトの名無しさん
2024/01/09(火) 00:15:41.68ID:nS4EcHpr 配列にどんどん詰め込んでいって
ポインタのかわりにインデックスで管理するという方法も取れなくはない。
Rust で参照の取り扱いが面倒くさくなったときは割とよく使われる。
ポインタのかわりにインデックスで管理するという方法も取れなくはない。
Rust で参照の取り扱いが面倒くさくなったときは割とよく使われる。
840デフォルトの名無しさん
2024/01/09(火) 00:41:55.42ID:p6fXuzFt Rustだから面倒になるのではなく
同じ方針ならばC/C++でも同じようになる
そしてどの言語でも同じく色んな方針を取ることができる
たとえばプログラム終了まであるメモリを解放しない&しなくてよい状況と方針ならば
CだけでなくRustでもそのようにプログラミングすることで簡単になる
同じ方針ならばC/C++でも同じようになる
そしてどの言語でも同じく色んな方針を取ることができる
たとえばプログラム終了まであるメモリを解放しない&しなくてよい状況と方針ならば
CだけでなくRustでもそのようにプログラミングすることで簡単になる
841デフォルトの名無しさん
2024/01/09(火) 00:48:52.81ID:71QF1ibn Array/VecとMapでやる方が普通
てかスマートポインタで胃が重いとか言ってる人にFST実装させようとするのはどうなのか
学生さんの宿題ならいいんだけど
てかスマートポインタで胃が重いとか言ってる人にFST実装させようとするのはどうなのか
学生さんの宿題ならいいんだけど
842デフォルトの名無しさん
2024/01/09(火) 13:46:52.23ID:cAvIdAYQ >>815
windowsこそrustで書き直して欲しい
windowsこそrustで書き直して欲しい
843デフォルトの名無しさん
2024/01/09(火) 14:29:03.17ID:ZeSQ9HCg いやWindowsは消滅してくれ
Windowsのパス区切り文字がバックスラッシュだと面倒くさいんだよ
いつになったら他のOSのようにスラッシュになるんだ
Windowsのパス区切り文字がバックスラッシュだと面倒くさいんだよ
いつになったら他のOSのようにスラッシュになるんだ
844デフォルトの名無しさん
2024/01/09(火) 14:42:13.51ID:W90zSzbf そこでいまどき困るか?
ライブラリで吸収してくれるだろ
ライブラリで吸収してくれるだろ
845デフォルトの名無しさん
2024/01/09(火) 15:03:46.95ID:mDjH0FU9 困るのはそんなポイントではないわな
846デフォルトの名無しさん
2024/01/09(火) 15:51:14.16ID:LmJT0Ko+ UNIX
https://learn.microsoft.com/ja-jp/cpp/c-runtime-library/unix
プログラムを UNIX に移植する場合は、次のガイドラインに従ってください。
・引数としてパスとファイル名を表す文字列を実行するルーチンでは、UNIX と互換性のあるパス区切り記号を使用します。 UNIX は、この目的でスラッシュ (/) のみをサポートしますが、Win32 オペレーティング システムでは、円記号 (\) とスラッシュ (/) の両方をサポートします。
https://learn.microsoft.com/ja-jp/cpp/c-runtime-library/unix
プログラムを UNIX に移植する場合は、次のガイドラインに従ってください。
・引数としてパスとファイル名を表す文字列を実行するルーチンでは、UNIX と互換性のあるパス区切り記号を使用します。 UNIX は、この目的でスラッシュ (/) のみをサポートしますが、Win32 オペレーティング システムでは、円記号 (\) とスラッシュ (/) の両方をサポートします。
847デフォルトの名無しさん
2024/01/09(火) 16:00:24.31ID:OfKvL6VZ WindowsはWSL2のおかげで立ち位置を少し取り戻した感ある
Docker×WSL最強なんだ
Docker×WSL最強なんだ
848デフォルトの名無しさん
2024/01/09(火) 16:26:04.96ID:dEgljR3a Rustを学習していてよくわかんないんだけど、なんで&mut演算子って=の右側に書くの?
演算子を分けて&を右でmutを左にすべきことじゃないのか
演算子を分けて&を右でmutを左にすべきことじゃないのか
849デフォルトの名無しさん
2024/01/09(火) 16:31:10.75ID:T7+wXIHZ >>848
変数がmutなのと参照がmutなのと意味が違うでしょ
変数がmutなのと参照がmutなのと意味が違うでしょ
850デフォルトの名無しさん
2024/01/09(火) 16:38:48.96ID:7APTEGxI 不変なT型 T
不変な不変参照 &T
不変な可変参照 &mut T
可変なT型 mut T
可変な不変参照 mut &T
可変な可変参照 mut &mut T
不変な不変参照 &T
不変な可変参照 &mut T
可変なT型 mut T
可変な不変参照 mut &T
可変な可変参照 mut &mut T
851デフォルトの名無しさん
2024/01/09(火) 16:51:10.28ID:/HMizx3H それ複オジがよく書いてたやつだけど
そうやって書くと型の違いと変数のmutabilityの違いを混同しちゃうから良くないんだよね
そうやって書くと型の違いと変数のmutabilityの違いを混同しちゃうから良くないんだよね
852デフォルトの名無しさん
2024/01/09(火) 16:57:39.62ID:FRUFivso fn main() {
let mut foo = String::from("foo");
let mut bar = String::from("bar");
let a1 = &foo;
// a1の値も参照先(foo)も変更できない
// a1.push('o'); // 不可
// a1 = &bar; // 不可
println!("{a1}"); // foo
let a2 = &mut foo;
// a2の値は変更できないが参照先(foo)は変更できる
a2.push('o');
// a2 = &mut bar; // 不可
println!("{a2}"); // fooo
let mut a3 = &foo;
// a3の値は変更できるが参照先(foo)は変更できない
// a3.push('o'); // 不可
a3 = &bar;
println!("{a3}"); // bar
let mut a4 = &mut foo;
// a4の値も参照先(foo)も変更できる
a4.push('o');
a4 = &mut bar;
println!("{foo} {a4}"); // foooo bar
}
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
}
853デフォルトの名無しさん
2024/01/09(火) 17:54:54.96ID:yDV9ZPsZ >>815
先にfirefox互換のブラウザをRustで作れよ
先にfirefox互換のブラウザをRustで作れよ
854デフォルトの名無しさん
2024/01/09(火) 20:29:20.32ID:OfKvL6VZ855デフォルトの名無しさん
2024/01/09(火) 21:43:46.90ID:ba97u6j0 JythonみたいにRinuxとか呼ばれる様になるんかね
856デフォルトの名無しさん
2024/01/09(火) 23:30:54.91ID:kFOi0b9p >>847
わかる
わかる
857デフォルトの名無しさん
2024/01/09(火) 23:33:35.76ID:kFOi0b9p858デフォルトの名無しさん
2024/01/09(火) 23:44:10.92ID:VWF/HjAU >>857
なんでmut& Tやmut& mut Tのほうがいいと思うの?
なんでmut& Tやmut& mut Tのほうがいいと思うの?
859デフォルトの名無しさん
2024/01/10(水) 00:26:25.61ID:50jzIioV 変数は不変 参照先も不変
【Rust】 let ptr: &i32 = ...
【C/C++】 const int* const ptr = ...
変数は可変 参照先は不変
【Rust】 let mut ptr: &i32 = ...
【C/C++】 const int* ptr = ...
変数は不変 参照先は可変
【Rust】 let ptr: &mut i32 = ...
【C/C++】 int* const ptr = ...
変数は可変 参照先も可変
【Rust】 let mut ptr: &mut i32 = ...
【C/C++】 int* ptr = ...
【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 = ...
860デフォルトの名無しさん
2024/01/15(月) 07:32:23.77ID:GWa8/EJ0 プログラミングをしていて最も出現頻度が高いのがその4つのうちこのパターンだな
>変数は不変 参照先も不変
>【Rust】 let ptr: &i32 = ...
>【C/C++】 const int* const ptr = ...
したがって可変部分のみmutを付加するRust方式が理に適っている
>変数は不変 参照先も不変
>【Rust】 let ptr: &i32 = ...
>【C/C++】 const int* const ptr = ...
したがって可変部分のみmutを付加するRust方式が理に適っている
861デフォルトの名無しさん
2024/01/15(月) 09:26:21.36ID:87NFfbL3 C/C++のconstとRustのletを対比するなよ
コンパイル時の定数と変数は違うから
コンパイル時の定数と変数は違うから
862デフォルトの名無しさん
2024/01/15(月) 10:46:44.96ID:6ZDKWey9 C/C++のconstはコンパイル時の定数とは限らない
> 変数は不変 参照先も不変
C++はconst int*で定義した変数経由では参照先を変更出来なくても他から参照先が変更されることがあるので「参照先が不変」とは言えない
> 変数は不変 参照先も不変
C++はconst int*で定義した変数経由では参照先を変更出来なくても他から参照先が変更されることがあるので「参照先が不変」とは言えない
863デフォルトの名無しさん
2024/01/15(月) 11:01:12.76ID:AliX8x8r864デフォルトの名無しさん
2024/01/15(月) 11:06:03.10ID:YtourOsv C/C++のconstはコンパイル時の定数となることもあるのがややこしいところ
constexprはそれを矯正するもの
1対1の単純な比較では抜け落ちるものが多すぎる
constexprはそれを矯正するもの
1対1の単純な比較では抜け落ちるものが多すぎる
865デフォルトの名無しさん
2024/01/15(月) 18:27:24.64ID:8IhMbXbn イミュータブルの観点でこの対応は合ってる。
Rust: let foo: &i32 = ...
C++: const int* const foo = ...
ただし違いとしては、
Rustではfooが生きている間は参照先が(内部可変性を除いて)真に書き変わらない保証がある点が異なる。
Rust: let foo: &i32 = ...
C++: const int* const foo = ...
ただし違いとしては、
Rustではfooが生きている間は参照先が(内部可変性を除いて)真に書き変わらない保証がある点が異なる。
866デフォルトの名無しさん
2024/01/17(水) 18:48:37.40ID:6S0S7+zy この件はC++と比較しても刺激が少ない
mutがない関数型言語と比較するほうがいい
mutがない関数型言語と比較するほうがいい
867デフォルトの名無しさん
2024/01/17(水) 19:39:11.45ID:gS91WelD ミュータブルを無くすと美しく見える反面
ガベージコレクションが多数発生し効率が悪くなる
アルゴリズムも制約を受けてしまい効率が悪くなる
ガベージコレクションが多数発生し効率が悪くなる
アルゴリズムも制約を受けてしまい効率が悪くなる
868デフォルトの名無しさん
2024/01/17(水) 19:42:50.91ID:NPS8JVAZ Linuxカーネルについに実用的なコードが
マージされたと話題になってるな
マージされたと話題になってるな
869デフォルトの名無しさん
2024/01/17(水) 20:07:47.38ID:ouelKdFS >>868
新規追加するドライバにだけ採用とか前に言ってなかったっけ?
新規追加するドライバにだけ採用とか前に言ってなかったっけ?
870デフォルトの名無しさん
2024/01/17(水) 21:08:18.79ID:6S0S7+zy871デフォルトの名無しさん
2024/01/17(水) 21:16:06.79ID:gS91WelD872デフォルトの名無しさん
2024/01/17(水) 23:31:19.01ID:6S0S7+zy cloneに似た処理をしてからオリジナルをdropするんだよね
873デフォルトの名無しさん
2024/01/18(木) 04:18:08.52ID:p4+mv2Ay RustはカーネルやOSコアの開発で存分に活躍してくれ🙏
874デフォルトの名無しさん
2024/01/18(木) 06:21:12.49ID:vxth9lRp ぺたんこおっぱい
ぽっこりおなか
つるつるわれめ
ぽっこりおなか
つるつるわれめ
875デフォルトの名無しさん
2024/01/19(金) 01:46:37.00ID:qsekRxP5 プログラミング言語利用実態調査でRustが急落
https://www.nikkei.com/article/DGXZQOUC223M10S3A221C2000000/
https://www.nikkei.com/article/DGXZQOUC223M10S3A221C2000000/
876デフォルトの名無しさん
2024/01/19(金) 08:43:59.73ID:q7Fi5Auv >>875
それ日本だけのアンケートじゃん
それ日本だけのアンケートじゃん
877デフォルトの名無しさん
2024/01/19(金) 08:55:08.16ID:v7odrc0V 登録が必要な記事貼るとか
878デフォルトの名無しさん
2024/01/19(金) 10:17:52.92ID:9hGbEahh >>875
日本でもクソ言語ってバレ始めてるなw
日本でもクソ言語ってバレ始めてるなw
879デフォルトの名無しさん
2024/01/19(金) 10:49:32.99ID:Z0EBK6tx そもそもrustを使う場面があるか?って話
wasmは始まる前からオワコンだし、組み込みシステム開発してる人なんて割合で見ればプログラマの中でごく一部だし
wasmは始まる前からオワコンだし、組み込みシステム開発してる人なんて割合で見ればプログラマの中でごく一部だし
880デフォルトの名無しさん
2024/01/19(金) 11:13:07.05ID:vjpbBz8R881デフォルトの名無しさん
2024/01/19(金) 11:19:17.56ID:EYCY+PGA >>875
ちゃんとリンク貼れ無能
スキルアップしたい言語はPythonとJavaScript、不動の不人気言語はCOBOL
安藤 正芳 日経クロステック/日経コンピュータ
https://xtech.nikkei.com/atcl/nxt/column/18/02670/112900003/
ちゃんとリンク貼れ無能
スキルアップしたい言語はPythonとJavaScript、不動の不人気言語はCOBOL
安藤 正芳 日経クロステック/日経コンピュータ
https://xtech.nikkei.com/atcl/nxt/column/18/02670/112900003/
882デフォルトの名無しさん
2024/01/19(金) 11:27:47.52ID:uugkJRQ7 「実際に仕事で使われているプログラミング言語」(2023)
https://qiita.com/mmake/items/b346cb32ccc3bcb5d03f
日本でのRustの使用実態が全く見られないの笑えるな
https://qiita.com/mmake/items/b346cb32ccc3bcb5d03f
日本でのRustの使用実態が全く見られないの笑えるな
883デフォルトの名無しさん
2024/01/19(金) 11:34:00.68ID:EoDClT2o Rustは業務で使用する言語ではない
884デフォルトの名無しさん
2024/01/19(金) 11:36:55.28ID:arzVgFZ3 使われてる言語ランキング見てると、CやC++、Rustみたいな組み込み開発用言語は全体から見ればもはやプログラミングの中でもマニアックな分類なんやね
ブログラマといえばWebサービス関連の人ってイメージになっちゃった
ブログラマといえばWebサービス関連の人ってイメージになっちゃった
885デフォルトの名無しさん
2024/01/19(金) 11:48:30.00ID:vjpbBz8R とはいえそれを支えるホスト環境 (OS) や処理系は大抵の場合に C とかで書かれてるんだけどな。
886デフォルトの名無しさん
2024/01/19(金) 11:49:23.47ID:pW7O4nZv RustがC/C++の代わりになるのは間違いないのだけれどね
富士通さんはRustの普及をもっと頑張ってくれよ
富士通さんはRustの普及をもっと頑張ってくれよ
887デフォルトの名無しさん
2024/01/19(金) 12:01:24.14ID:pW7O4nZv888デフォルトの名無しさん
2024/01/19(金) 12:05:10.29ID:pW7O4nZv889デフォルトの名無しさん
2024/01/19(金) 12:05:22.87ID:vjpbBz8R デバイスドライバとかは C のほうが楽だけど
言語処理系くらいのレイヤだと大部分は Rust で書いたほうが楽そうだなーとは思う。
言語処理系くらいのレイヤだと大部分は Rust で書いたほうが楽そうだなーとは思う。
890デフォルトの名無しさん
2024/01/19(金) 12:26:38.25ID:CZFLW0PQ そろそろ実装に入れそうだけど。Rustを勉強したことを少し後悔ぎみ
オブジェクト指向言語しか触ったことなかったから取得するのにガチで一ヶ月(130時間)かかった
chatgptに聞いた感じだと、これでも割と早い方らしい。おとなしくC/C++を使えばよかった
オブジェクト指向言語しか触ったことなかったから取得するのにガチで一ヶ月(130時間)かかった
chatgptに聞いた感じだと、これでも割と早い方らしい。おとなしくC/C++を使えばよかった
891デフォルトの名無しさん
2024/01/19(金) 12:33:55.04ID:3hcnICbb 【AI】Googleの医療面接特化AI「AMIE」は人間よりも正確な診断が可能&患者への印象に優れるという研究結果 [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705583722/l50
【AI】Google DeepMindが数学オリンピックレベルの幾何学問題を解けるAIを発表、人間の金メダリストに近い性能を発揮 [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705583476/l50
【AI】大学入試共通テスト、3つのチャットAIに解かせてみたら? GPT-4はバケモノだった [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705585402/l50
【ナゾロジー】「株価の変動を粒子の振動として理解」量子力学で株式市場の法則を読む! [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705583580/l50
【AI】NTT、自分の分身AIを低コストで作る技術。自分の合成音声を簡単に作れる技術も [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1705583313/l50
ボイス・トォ・スカルのコアプログラムの一部は上記を統合している
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
ボイス・トォ・スカルのコアプログラムの一部は上記を統合している
892デフォルトの名無しさん
2024/01/19(金) 13:26:04.84ID:eEzmAF9q893デフォルトの名無しさん
2024/01/19(金) 13:41:00.69ID:CZFLW0PQ C/C++, java, pythonの経験があるから、Rustを取得するのに50時間かからないだろうと思ってた時期が僕にもありました
ヌルポが怖いからRustを使うけど……歯を食いしばって捻出した130時間を投資回収できるかは神のみぞ知る
ヌルポが怖いからRustを使うけど……歯を食いしばって捻出した130時間を投資回収できるかは神のみぞ知る
894デフォルトの名無しさん
2024/01/19(金) 13:47:10.87ID:vjpbBz8R C/C++ の経験があってそんなに時間かかるか?
「習得」というのがどの程度の基準で見るかにもよるけど
いわゆる the book を一通り読んだ後なら
コンパイラがあまり助けてくれないところ (unsafe) を除けば
マニュアルを見ながら書けばだいたいなんとかなる程度には使えそうなもんだと思うんだが。
「習得」というのがどの程度の基準で見るかにもよるけど
いわゆる the book を一通り読んだ後なら
コンパイラがあまり助けてくれないところ (unsafe) を除けば
マニュアルを見ながら書けばだいたいなんとかなる程度には使えそうなもんだと思うんだが。
895デフォルトの名無しさん
2024/01/19(金) 13:56:01.98ID:arzVgFZ3 C/C++を適当にやってたせいでRustでつまづくってのはありそう
896デフォルトの名無しさん
2024/01/19(金) 14:12:09.59ID:CZFLW0PQ >>894
最近はpythonで仕事する機会が多くて、C/C++を4年ほど触ってなかったのと、
仕事の後に疲れた頭で勉強したから体力的にキツかったのと。。。
the bookを読むだけで90時間はかかったわ。検索モジュールを開発しようと思ってるんだけど
いきなり実装に入るより読経した方がマシな感じで、regexのコードを読んでる
既に10時間読経に捧げて、あと10時間は追加の読経が必要な感じ
この後、形態素解析エンジンのコードも読む必要があるから、追加で20時間はお勉強する予定であわせて130時間
……重いです
最近はpythonで仕事する機会が多くて、C/C++を4年ほど触ってなかったのと、
仕事の後に疲れた頭で勉強したから体力的にキツかったのと。。。
the bookを読むだけで90時間はかかったわ。検索モジュールを開発しようと思ってるんだけど
いきなり実装に入るより読経した方がマシな感じで、regexのコードを読んでる
既に10時間読経に捧げて、あと10時間は追加の読経が必要な感じ
この後、形態素解析エンジンのコードも読む必要があるから、追加で20時間はお勉強する予定であわせて130時間
……重いです
897デフォルトの名無しさん
2024/01/19(金) 14:23:24.55ID:arzVgFZ3 >>896
おつかれよくがんばった
おつかれよくがんばった
898デフォルトの名無しさん
2024/01/19(金) 14:50:46.17ID:tvouuqwU >>896
the bookでの90時間の中身がわからないので何とも言えないかな
bookだけを読んだのか
それともdocsやreferenceと行き来して読んだのか
サンプルコードくらいのことを書けるようになっただけなのか
それとも各機構や機能を本質的に理解したのでdocsなど見ればbookに書かれてないことも書けるようになったのか
などピンキリだよね
the bookでの90時間の中身がわからないので何とも言えないかな
bookだけを読んだのか
それともdocsやreferenceと行き来して読んだのか
サンプルコードくらいのことを書けるようになっただけなのか
それとも各機構や機能を本質的に理解したのでdocsなど見ればbookに書かれてないことも書けるようになったのか
などピンキリだよね
899デフォルトの名無しさん
2024/01/19(金) 15:08:45.88ID:IG9zAVYP >>890
一般的にですが、
自分が使いたい新たな言語の学習で、辛いとかキツいとか後悔とか感じる人はプログラマーに向いていません。
プログラマーに向いてる人たちにとっては、新たな学習や会得はワクワク楽しくてその時間を後悔することもありません。
一般的にですが、
自分が使いたい新たな言語の学習で、辛いとかキツいとか後悔とか感じる人はプログラマーに向いていません。
プログラマーに向いてる人たちにとっては、新たな学習や会得はワクワク楽しくてその時間を後悔することもありません。
900デフォルトの名無しさん
2024/01/19(金) 15:23:39.42ID:w30sYh7E >>899
禿同だな
禿同だな
901デフォルトの名無しさん
2024/01/19(金) 15:25:17.10ID:1KLWZB9m 件の人は質問がどれもバカっぽかったから習得からは程遠い印象
902デフォルトの名無しさん
2024/01/19(金) 16:19:14.85ID:vjpbBz8R Rust の個々の機能が難しいとは感じないけど
綺麗に噛み合うように全体を設計するのは C++ とは違う感覚が要るから
大きいプログラムを綺麗に設計しようとしたら最初はしんどいかも。
ボトムアップ的なスタイルで書いていくのをオススメする。
綺麗に噛み合うように全体を設計するのは C++ とは違う感覚が要るから
大きいプログラムを綺麗に設計しようとしたら最初はしんどいかも。
ボトムアップ的なスタイルで書いていくのをオススメする。
903デフォルトの名無しさん
2024/01/19(金) 16:39:45.44ID:8qrrLmZj 逆かな
みんなリファクタリングが機能しないからRustだとボトムアップじゃだめだと分かっかんだよ
みんなリファクタリングが機能しないからRustだとボトムアップじゃだめだと分かっかんだよ
904デフォルトの名無しさん
2024/01/19(金) 16:40:26.29ID:Rx8gKVuk the book自体の難しさがあるというか
905デフォルトの名無しさん
2024/01/19(金) 17:22:29.33ID:5TL7zSTv the bookを頭から読むやつなんているんだ
大してわかりやすくもないし
説明が冗長な感じだからChatGPT使った方が良いぞ
大してわかりやすくもないし
説明が冗長な感じだからChatGPT使った方が良いぞ
906デフォルトの名無しさん
2024/01/19(金) 17:23:51.53ID:vjpbBz8R 初心者にとって知らんことが書いてあるんだからそんなにスラスラとは読めないのは当たり前だし、文章自体に問題があるようには感じないな。
改善すべき点がゼロなわけではないが、少なくとも C++ を分かっているくらいの人が最初に読むには十分すぎるほどに良書じゃないの。
改善すべき点がゼロなわけではないが、少なくとも C++ を分かっているくらいの人が最初に読むには十分すぎるほどに良書じゃないの。
907デフォルトの名無しさん
2024/01/19(金) 17:34:10.12ID:vjpbBz8R 説明対象がもつ難易度より分かりやすい説明があったとしたらその説明は嘘であるか不足しているってことだ。
本来の難易度は後にならないと分からないから学習者本人には見分けられない。
本来の難易度は後にならないと分からないから学習者本人には見分けられない。
908デフォルトの名無しさん
2024/01/19(金) 17:55:40.81ID:88sLHWJm ガリ勉完璧主義者ほど隅から隅まで理解しようとするけど
要領よくChatGPTを使いこなすチャラ男に天然GPTとしてカモられている
要領よくChatGPTを使いこなすチャラ男に天然GPTとしてカモられている
909デフォルトの名無しさん
2024/01/19(金) 18:00:19.70ID:88sLHWJm 天然GPT本人はマウントして気持ち良くなりたいから他のみんなと勉強会じゃなくて家でガリ勉なんだ
910デフォルトの名無しさん
2024/01/19(金) 18:05:32.43ID:5TL7zSTv 作りたいものを決めてそれを実現するための知識をChatGPTで調べるというやり方のほうがはるかに効率が良いよ
多少間違ったこと教えてきたり
古かったりするけどそれはもう気にしてたら仕方がないので
無視してどんどん手を動かすほうが良い
多少間違ったこと教えてきたり
古かったりするけどそれはもう気にしてたら仕方がないので
無視してどんどん手を動かすほうが良い
911デフォルトの名無しさん
2024/01/19(金) 18:15:21.92ID:1hwMDgMT The Bookは簡潔にまとめるために説明をやや端折り気味
書いてる内容自体が難しいわけじゃないけど深い理解には至らないから腹落ち感を得にくい
あんまり期待しすぎず無料で読める基本チュートリアルとして捉えておくべき
書いてる内容自体が難しいわけじゃないけど深い理解には至らないから腹落ち感を得にくい
あんまり期待しすぎず無料で読める基本チュートリアルとして捉えておくべき
912デフォルトの名無しさん
2024/01/19(金) 18:26:39.26ID:OWRF5bQs ところでこのスレには組み込み開発でRustを使ってる人はいるの?
913デフォルトの名無しさん
2024/01/19(金) 18:38:50.67ID:5qNxVIXw 組み込みは頭おじいちゃんが支配してるからRust使える人いないよ
914デフォルトの名無しさん
2024/01/19(金) 18:49:19.87ID:AbS8PLZw そう組み込みも重要な分野だから、これにRustが皆無な時点で大手では大々的に採用されていないって事、せいぜい窓際
「実際に仕事で使われているプログラミング言語」(2023)
https://qiita.com/mmake/items/b346cb32ccc3bcb5d03f
「実際に仕事で使われているプログラミング言語」(2023)
https://qiita.com/mmake/items/b346cb32ccc3bcb5d03f
915デフォルトの名無しさん
2024/01/19(金) 18:52:09.31ID:wGMq60ju そうだ窓際追い出し目的でおじいちゃんにRustやらよう
916デフォルトの名無しさん
2024/01/19(金) 18:53:27.57ID:wGMq60ju そうだ窓際追い出し目的でおじいちゃんにRustやらせよう
本当にあるな
本当にあるな
917デフォルトの名無しさん
2024/01/19(金) 18:54:40.94ID:75Zji/CQ 今時の組み込みって何使ってるんだろ?
918デフォルトの名無しさん
2024/01/19(金) 18:55:15.30ID:Nlxayr7x919デフォルトの名無しさん
2024/01/19(金) 19:00:48.51ID:SK8TlxrV920デフォルトの名無しさん
2024/01/19(金) 19:08:03.87ID:pqBZI8v7 格言おじいちゃん、窓際組み込み?
921デフォルトの名無しさん
2024/01/19(金) 19:08:58.61ID:pqBZI8v7 格言は説得力とは真逆だと思うの
922デフォルトの名無しさん
2024/01/19(金) 19:10:50.73ID:+7/a4sFt 自分がこうだから他人もこうあれ
って考えは時代にそぐわない老害感がある
って考えは時代にそぐわない老害感がある
923デフォルトの名無しさん
2024/01/19(金) 19:11:44.46ID:pqBZI8v7 論理的でもなく屁理屈にも劣ります
924デフォルトの名無しさん
2024/01/19(金) 19:12:08.48ID:SK8TlxrV >>896
Rustは絶壁の学習曲線だから、段階的な学習は難しい。少なくともスタックフレームの動きを意識できないとキツイと思う。
Rustを使った開発も、小さく始める段階的開発とかきついんじゃない?ひたすらスクラップ&ビルド繰り返しそう。
Rustは絶壁の学習曲線だから、段階的な学習は難しい。少なくともスタックフレームの動きを意識できないとキツイと思う。
Rustを使った開発も、小さく始める段階的開発とかきついんじゃない?ひたすらスクラップ&ビルド繰り返しそう。
925デフォルトの名無しさん
2024/01/19(金) 20:04:18.16ID:U1u9K+K0926デフォルトの名無しさん
2024/01/19(金) 21:01:18.97ID:vjpbBz8R 全体を綺麗に構成することはしづらくても小さなモジュール単位でならそれなりに構成できるからそれを繰り返せばいい。
全体の構成を考えてから作るよりは汚いだろうけど、綺麗な全体の構成を考えるなんていう出来もしないことをやるよりはそういうボトムアップ方式のほうが少なくとも途中まではまあまあに出来る。
もちろんちゃんと全部をまともに構成できるだけの能力を身に付けられるならそれに越したことはないよ。
でも実際問題として初心者にはできないじゃんと思ったからボトムアップ方式のほうが(初心者の内は)よさそうと考えてる。
全体の構成を考えてから作るよりは汚いだろうけど、綺麗な全体の構成を考えるなんていう出来もしないことをやるよりはそういうボトムアップ方式のほうが少なくとも途中まではまあまあに出来る。
もちろんちゃんと全部をまともに構成できるだけの能力を身に付けられるならそれに越したことはないよ。
でも実際問題として初心者にはできないじゃんと思ったからボトムアップ方式のほうが(初心者の内は)よさそうと考えてる。
927デフォルトの名無しさん
2024/01/19(金) 21:22:17.40ID:U1u9K+K0 他の言語と同じ
そこにRust固有の問題はないな
そこにRust固有の問題はないな
928デフォルトの名無しさん
2024/01/19(金) 22:20:52.17ID:5TL7zSTv929デフォルトの名無しさん
2024/01/19(金) 22:39:11.81ID:vjpbBz8R 変数の寿命と連動するから意識するよ。
C/C++ の世界だと当たり前のことだから意識してる自覚すらないレベルで自然に考えてるけど。
C/C++ の世界だと当たり前のことだから意識してる自覚すらないレベルで自然に考えてるけど。
930デフォルトの名無しさん
2024/01/19(金) 22:39:43.86ID:eEzmAF9q 人格をもたない書物は効率が悪いという風潮は面白い
人格がなければ報酬とか私刑とかができないってことだろうか
人格がなければ報酬とか私刑とかができないってことだろうか
931デフォルトの名無しさん
2024/01/19(金) 22:43:52.06ID:Hr4uH45j 進行が早くなったのでいつもの
次スレはなしで既存のワッチョイスレにしよう
過疎るのは既定路線なので頃合いでしょ
次スレはなしで既存のワッチョイスレにしよう
過疎るのは既定路線なので頃合いでしょ
932デフォルトの名無しさん
2024/01/19(金) 23:05:04.70ID:Rx8gKVuk 「スタックフレームを意識する」というのはどの程度を指してるんだろう。
どれがスタックに積まれるかとどうスタックに積まれるかは違うわけで。
どれがスタックに積まれるかとどうスタックに積まれるかは違うわけで。
933デフォルトの名無しさん
2024/01/19(金) 23:24:13.49ID:LbAGY+B7934デフォルトの名無しさん
2024/01/19(金) 23:35:33.58ID:QqY+6sl7 オラから『Rustの練習帳』って新刊が出るんだね
タイトルがエモい
タイトルがエモい
935デフォルトの名無しさん
2024/01/19(金) 23:44:43.13ID:NtpPLEep ワクワクすっぞ
936デフォルトの名無しさん
2024/01/20(土) 00:29:37.21ID:zhjwtCng オライリーをオラと略す人は初めて見た
937デフォルトの名無しさん
2024/01/20(土) 00:46:25.56ID:B5JkVzvF そう?
オラの村では普通だでね
オラの村では普通だでね
938デフォルトの名無しさん
2024/01/20(土) 01:10:08.13ID:ppE6WkEJ 都会は進んでるなあー
939デフォルトの名無しさん
2024/01/20(土) 01:16:50.20ID:zhjwtCng ミスチルはわかるんだ
ミスター・チルドレンは長いから
サザンもサザンオールスターズは長いからわかる
マクドもマクドナルドは長いからギリわかる
オライリーをオラは無いだろ
たかが2文字略すなと思った
ま、どうでもいいんだがな
ミスター・チルドレンは長いから
サザンもサザンオールスターズは長いからわかる
マクドもマクドナルドは長いからギリわかる
オライリーをオラは無いだろ
たかが2文字略すなと思った
ま、どうでもいいんだがな
940デフォルトの名無しさん
2024/01/20(土) 01:51:39.52ID:HZE0SdTu スクリプト言語出身者が増えたせいだよ
スタックフレームやヒープなんてCSやってりゃ習うでしょ
コンパイラかコンピュータアーキテクチャでやる
スクリプト言語はスタックフレームの開放も全てGCがやることになるから
全く意識しないんだよな
スタックフレームやヒープなんてCSやってりゃ習うでしょ
コンパイラかコンピュータアーキテクチャでやる
スクリプト言語はスタックフレームの開放も全てGCがやることになるから
全く意識しないんだよな
941デフォルトの名無しさん
2024/01/20(土) 01:55:10.81ID:ppE6WkEJ スクリプト言語に限らず、C/C++を書かなければそこら辺に気を使う機会はないよ
942デフォルトの名無しさん
2024/01/20(土) 07:57:38.44ID:lqSANakz >>937
公式にオラの村ってのがあるよね
公式にオラの村ってのがあるよね
943デフォルトの名無しさん
2024/01/20(土) 08:33:10.42ID:QXcnqV7m GCありでパフォーマンスも関係ないなら、スコープだけ気にしていれば困らないしね。
944デフォルトの名無しさん
2024/01/20(土) 08:49:07.11ID:G76ZEaWY >>939
マクドじゃなくてマックね
マクドじゃなくてマックね
945デフォルトの名無しさん
2024/01/20(土) 09:18:20.17ID:viZi/CYZ webサービスまわりは全部スクリプト言語かGCランタイム付き言語だもんなあ
946デフォルトの名無しさん
2024/01/20(土) 11:01:53.93ID:ppE6WkEJ 最近は組み込みもC/C++を使う理由がないことが多い
947デフォルトの名無しさん
2024/01/20(土) 11:38:27.03ID:lE+lj03S オラは「Rust for Rustaceans」の訳書出さないな
本格的にRustやるなら必読書なんだけどな
本格的にRustやるなら必読書なんだけどな
948デフォルトの名無しさん
2024/01/20(土) 11:42:02.65ID:o5qofGYG スクリプト言語はともかく静的にコンパイルする言語ならGC言語でもスタック/ヒープは意識するけどね
949デフォルトの名無しさん
2024/01/20(土) 12:07:36.77ID:KBzblFQB >>945
CPU時間(ミリ秒)あたりで課金されるからこそのRustだよ
CPU時間(ミリ秒)あたりで課金されるからこそのRustだよ
950デフォルトの名無しさん
2024/01/20(土) 12:23:09.39ID:+uoYRouQ オンプレミスでも同じ
Rustで書くかスクリプト言語で書くかでサーバーやメモリの必要量が何倍も変わる
電気代も節約できRustはエコにも貢献
Rustで書くかスクリプト言語で書くかでサーバーやメモリの必要量が何倍も変わる
電気代も節約できRustはエコにも貢献
951デフォルトの名無しさん
2024/01/20(土) 12:30:18.74ID:KBzblFQB そう、CO2排出量を考えたら、Rust以外で書くのは社会にとっての悪
952デフォルトの名無しさん
2024/01/20(土) 12:33:36.69ID:wJQgtkwZ 昔は全体の性能に余裕があって I/O (ストレージと通信) が極端に足を引っ張る状況だったから言語処理系の動作速度は問題にならなかったけど今は全ての性能をギリギリまで絞り出す勝負に変わってる感じだね。
953デフォルトの名無しさん
2024/01/20(土) 12:46:54.29ID:+pH1NoHl Rust言語は
・タイプセーフ、メモリセーフによる高い安全性
・並列プログラミング処理設計
・ガベージコレクタのようなランタイム無しに動作
だから、これらを活かせる製品に採用したらいいんじゃないかな
いまどきそんなのは組み込みロボットとかカーネルやエンコーダデコーダくらいしかないような気がするけど
・タイプセーフ、メモリセーフによる高い安全性
・並列プログラミング処理設計
・ガベージコレクタのようなランタイム無しに動作
だから、これらを活かせる製品に採用したらいいんじゃないかな
いまどきそんなのは組み込みロボットとかカーネルやエンコーダデコーダくらいしかないような気がするけど
954デフォルトの名無しさん
2024/01/20(土) 12:56:12.54ID:UT8XEnd7955デフォルトの名無しさん
2024/01/20(土) 13:15:54.83ID:KWXCbsaH ウェブっていうかwasmじゃね?
rustじゃないけどffmpegのwasm実装は使ったことある
rustじゃないけどffmpegのwasm実装は使ったことある
956デフォルトの名無しさん
2024/01/20(土) 13:17:39.73ID:NDqmkpk/ >>954
Webって言っても大規模なユーザーがいるようなものじゃない?
大した事無いサービスで、スペック高い人が必要なRustはまだまだ辛い気がする。Javascript並みに誰でも使えますって世の中になったらRust一択でも良いのかもしれないけれど。
Webって言っても大規模なユーザーがいるようなものじゃない?
大した事無いサービスで、スペック高い人が必要なRustはまだまだ辛い気がする。Javascript並みに誰でも使えますって世の中になったらRust一択でも良いのかもしれないけれど。
957デフォルトの名無しさん
2024/01/20(土) 13:22:10.20ID:KBzblFQB AWSもGCPもサーバーレス環境とかのランタイムや下周りがだいたいRustで書いてある
958デフォルトの名無しさん
2024/01/20(土) 13:22:24.95ID:lxegQoou CO2排出量は難しいな
Rust書けない人間がCO2排出するだけのうんこ生産機になってしまうのもあんまエコじゃない気がする
Rust書けない人間がCO2排出するだけのうんこ生産機になってしまうのもあんまエコじゃない気がする
959デフォルトの名無しさん
2024/01/20(土) 13:24:24.78ID:tKcafxZR actix-webはどうなん?自分はよく知らんのだが使ってる人いるんけ?
960デフォルトの名無しさん
2024/01/20(土) 13:24:56.70ID:NDqmkpk/ >>958
そんなこと言ってると、Rustへのリスキリング時のco2排出量もRustのコストって言われちゃうぞ。
そんなこと言ってると、Rustへのリスキリング時のco2排出量もRustのコストって言われちゃうぞ。
961デフォルトの名無しさん
2024/01/20(土) 13:27:59.09ID:KBzblFQB CO2排出量を考えて、コンパイル中は息を止めている
962デフォルトの名無しさん
2024/01/20(土) 13:34:01.02ID:vYJJrZqN JavaがOracle事件で終わって脱SpringでRustのActixがついに普及するかなと思ったらC#のASP.NETにみんな行っちゃった
963デフォルトの名無しさん
2024/01/20(土) 13:39:08.81ID:tKcafxZR >>962
そうなんか…
そうなんか…
964デフォルトの名無しさん
2024/01/20(土) 13:57:32.93ID:ngmk9luX Javaが脱Springなんて馬鹿げた事言い出してるのかと見間違えたが
脱Javaの話か
Rustは学習コスト高いからJavaでやってた様な大人数プロジェクトには向かんだろう
脱Javaの話か
Rustは学習コスト高いからJavaでやってた様な大人数プロジェクトには向かんだろう
965デフォルトの名無しさん
2024/01/20(土) 14:59:14.28ID:ppE6WkEJ みんな経済合理性でRustを選択するんだよな
966デフォルトの名無しさん
2024/01/20(土) 15:49:27.64ID:w9m16ZcP >>952
特に機械学習ではその方向が顕著
MLIRみたいにSIMDやGPUを使う前提でIRが設計されてる
Node.jsが切り開いた非同期IOの登場もでかい
これによってIOの比重が高いプログラムでもIO待ちがなくなり
さらにマルチコア、GPUを活かせる環境が整った
一方Rustはtokioなどの非同期IOを実現できるフレームワークが山のようにある
さらにSIMD命令を直接使える仕様も整備されてきている
(LLVMの最適化によって勝手に使われることも多いが)
マルチスレッドは言わずもがな
他の言語でこれらを全てサポートしている言語はない
現在の最先端の環境を活かせる言語は他に選択肢がない
特に機械学習ではその方向が顕著
MLIRみたいにSIMDやGPUを使う前提でIRが設計されてる
Node.jsが切り開いた非同期IOの登場もでかい
これによってIOの比重が高いプログラムでもIO待ちがなくなり
さらにマルチコア、GPUを活かせる環境が整った
一方Rustはtokioなどの非同期IOを実現できるフレームワークが山のようにある
さらにSIMD命令を直接使える仕様も整備されてきている
(LLVMの最適化によって勝手に使われることも多いが)
マルチスレッドは言わずもがな
他の言語でこれらを全てサポートしている言語はない
現在の最先端の環境を活かせる言語は他に選択肢がない
967デフォルトの名無しさん
2024/01/20(土) 16:00:45.48ID:tKcafxZR RustのWebアプリケーションは未履修だけどぜひやりたいなあ
968デフォルトの名無しさん
2024/01/20(土) 18:46:27.21ID:PTOG17pe969デフォルトの名無しさん
2024/01/20(土) 18:55:33.87ID:I+Fu8n3P >>964
90年代後半にコボラーがJavaでWebアプリを作れるようになるための学習コストに比べればRustの学習コストは断然低い
90年代後半にコボラーがJavaでWebアプリを作れるようになるための学習コストに比べればRustの学習コストは断然低い
970デフォルトの名無しさん
2024/01/20(土) 19:12:06.87ID:6DBgVQg4 >>969
その時期にいた純粋コボラーって定年間際のジジイじゃん。そりゃ学習コスト高いわ。
その時期にいた純粋コボラーって定年間際のジジイじゃん。そりゃ学習コスト高いわ。
971デフォルトの名無しさん
2024/01/20(土) 19:21:51.44ID:w9m16ZcP httpclientもそれぞれのイベントループに対応したものをつかわないとダメだから割と面倒なんだよね
使い方もフレームワークによってかなりクセが違っていて面倒だし
ぶっちゃけWebはGoやpythonでいいんじゃねーかって思う
使い方もフレームワークによってかなりクセが違っていて面倒だし
ぶっちゃけWebはGoやpythonでいいんじゃねーかって思う
972デフォルトの名無しさん
2024/01/20(土) 19:26:03.92ID:tKcafxZR Goでいいは分かる
973デフォルトの名無しさん
2024/01/20(土) 19:56:32.80ID:k6CjZuQW Go のランタイムサポートは分厚めだがどうせ要るもの(やること)と考えればそんなに速度的に不利なわけではないよな。
974デフォルトの名無しさん
2024/01/20(土) 20:11:15.24ID:u/fg5YR1 速度的にはGoで十分なんだけど型とか貧弱すぎるんだよな…
sumタイプとパターンマッチくらいは欲しい
sumタイプとパターンマッチくらいは欲しい
975デフォルトの名無しさん
2024/01/20(土) 20:17:19.49ID:tNrs3Odf976デフォルトの名無しさん
2024/01/20(土) 21:17:45.54ID:w9m16ZcP >>975
いやデファクトがあるのは良いけど
例えばコマンド実行1つとっても
tokio::process::commandとか使わなきゃいけなくてなんだかなあと
非同期版じゃないのと区別しなきゃいけなくて嫌気が刺す
まあpythonもasync使えば同じことなのだけど
いやデファクトがあるのは良いけど
例えばコマンド実行1つとっても
tokio::process::commandとか使わなきゃいけなくてなんだかなあと
非同期版じゃないのと区別しなきゃいけなくて嫌気が刺す
まあpythonもasync使えば同じことなのだけど
977デフォルトの名無しさん
2024/01/20(土) 21:24:03.71ID:w9m16ZcP まあ俺はRust信者だから使うのだけど普通の人はなかなか辛いんじゃないかなーと
その点Goは何も考えなくて良いしpythonもasync使わなけりゃ同期的に書けるし
その点Goは何も考えなくて良いしpythonもasync使わなけりゃ同期的に書けるし
978デフォルトの名無しさん
2024/01/20(土) 21:48:04.29ID:USm4U3n4 >>976
PythonもasyncはそうだしJavaScript(Node)も同期execと非同期exec分かれているし
動作が異なるのだから別になるのは当たり前
もちろんRustでも同様で
そもそも関数の返り値が異なる
だから関数が分かれているのは正しい
したがって一番下位のライブラリが別であることに何ら問題はない
一方で中位ライブラリ作成側の視点に立つと
同期か非同期かだけの違いでasync/awitを除いて全く同じ構造の関数を作ることになる
そのため『?async』キーワードによるジェネリック化がRustでは進められている
期待しているのはこの話でよいのか?
PythonもasyncはそうだしJavaScript(Node)も同期execと非同期exec分かれているし
動作が異なるのだから別になるのは当たり前
もちろんRustでも同様で
そもそも関数の返り値が異なる
だから関数が分かれているのは正しい
したがって一番下位のライブラリが別であることに何ら問題はない
一方で中位ライブラリ作成側の視点に立つと
同期か非同期かだけの違いでasync/awitを除いて全く同じ構造の関数を作ることになる
そのため『?async』キーワードによるジェネリック化がRustでは進められている
期待しているのはこの話でよいのか?
979デフォルトの名無しさん
2024/01/20(土) 23:05:04.71ID:w9m16ZcP >>978
いや見た目は似ててもpythonとはだいぶ違うよ
まずpythonでのasync defは単なるコルーチンオブジェクトなので非同期とか関係ない
これにより恐ろしい柔軟性を持ってる
さらにWebにおいてはASGIという非同期Webフレームワークが満たすべき仕様をまず決めた
その仕様を満たしさえすればどのような実装でも非同期の機能を満たせるような仕様となっている
そこにはもうイベントループなどの概念は消え去っている
さらに同期版と同居できる仕様となっている
なのでdjangoなどは同期版と非同期版の切り替えが可能となっている
このように明らかにユーザーフレンドリーな姿勢を貫いている
いや見た目は似ててもpythonとはだいぶ違うよ
まずpythonでのasync defは単なるコルーチンオブジェクトなので非同期とか関係ない
これにより恐ろしい柔軟性を持ってる
さらにWebにおいてはASGIという非同期Webフレームワークが満たすべき仕様をまず決めた
その仕様を満たしさえすればどのような実装でも非同期の機能を満たせるような仕様となっている
そこにはもうイベントループなどの概念は消え去っている
さらに同期版と同居できる仕様となっている
なのでdjangoなどは同期版と非同期版の切り替えが可能となっている
このように明らかにユーザーフレンドリーな姿勢を貫いている
980デフォルトの名無しさん
2024/01/20(土) 23:17:14.31ID:wyzQTwgG981デフォルトの名無しさん
2024/01/20(土) 23:26:48.19ID:HZE0SdTu >>980
コルーチンではないでしょ
コルーチンではないでしょ
982デフォルトの名無しさん
2024/01/20(土) 23:49:39.00ID:nUH4CzWh Rustのasyncはstackless croutineでstate machineとなっている
個別stackのresouceもswitchingも不要なため軽くて有利
個別stackのresouceもswitchingも不要なため軽くて有利
983デフォルトの名無しさん
2024/01/20(土) 23:50:29.43ID:u/fg5YR1 Rustのasyncは(スタックレス)コルーチンである
Rustのasyncは(スタックフル)コルーチンではない
どっちも正しいとは思うけど
Rustのasyncは(スタックフル)コルーチンではない
どっちも正しいとは思うけど
984デフォルトの名無しさん
2024/01/21(日) 10:13:23.50ID:VnWGTEfZ985デフォルトの名無しさん
2024/01/21(日) 11:18:24.63ID:JCOE1HZY DAD御用達?
986デフォルトの名無しさん
2024/01/21(日) 11:24:54.33ID:8LqvrPkW 物理攻撃にソフトウェアを活用するってある意味「お花畑」だよな
987デフォルトの名無しさん
2024/01/21(日) 11:29:12.59ID:7K9itJgV パパ活か?DoDだろ
DoD御用達はAdaだぞ
DoD御用達はAdaだぞ
988デフォルトの名無しさん
2024/01/21(日) 11:46:34.67ID:VnWGTEfZ やっぱりAdaしかないか
プリプロセッサ使うのもNGだからマクロがダメなんかな
プリプロセッサ使うのもNGだからマクロがダメなんかな
989デフォルトの名無しさん
2024/01/21(日) 11:59:39.08ID:dFB+Bg2+ とはいえF-35はC++だったんだし、そのうちRust採用されてもおかしくはないけどな
990デフォルトの名無しさん
2024/01/21(日) 12:09:12.81ID:4CYZ0hXB The Book読んでコード打ち込んだりしたが理解できた気がしない
次はどうすればいいの
次はどうすればいいの
991デフォルトの名無しさん
2024/01/21(日) 13:24:30.49ID:8LqvrPkW 仕様の次は実装とか
いま極端なところにいる奴は次はもう一方の極端に行けばいいし
ちょうどいい位置にいる奴は一生そこに居続ければいいのでは?
いま極端なところにいる奴は次はもう一方の極端に行けばいいし
ちょうどいい位置にいる奴は一生そこに居続ければいいのでは?
992デフォルトの名無しさん
2024/01/21(日) 14:20:11.30ID:sCtD39A+ >>990
理解できてないと感じるのがunsafeやasyncやマクロ辺りならそこは一旦放置して小さいCLIツールをいくつか書いて実践経験を一度積むほうがいいかもしれない
逆にownership/reference/lifetime/generic/traitといったコアなところが理解できてないと感じるならオライリー本など別の入門書をすすめる
理解できてないと感じるのがunsafeやasyncやマクロ辺りならそこは一旦放置して小さいCLIツールをいくつか書いて実践経験を一度積むほうがいいかもしれない
逆にownership/reference/lifetime/generic/traitといったコアなところが理解できてないと感じるならオライリー本など別の入門書をすすめる
993デフォルトの名無しさん
2024/01/21(日) 15:14:08.20ID:eSjvKxMy994デフォルトの名無しさん
2024/01/21(日) 15:15:15.91ID:eSjvKxMy F-15は50年以上空を飛んでいることを思い出してほしい
Rustは50年後存在しない
Rustは50年後存在しない
995デフォルトの名無しさん
2024/01/21(日) 15:44:39.63ID:cX88PWDV996デフォルトの名無しさん
2024/01/21(日) 15:46:08.09ID:4rk7TZPC 統計学的に会社や国家、生物種の存続見込みを解析した例を見たことが有るな。
これまでの歴史が長いものはこれからも長く続く可能性が高い。
これまでの歴史が長いものはこれからも長く続く可能性が高い。
997デフォルトの名無しさん
2024/01/21(日) 15:50:57.32ID:eziZnnQK >>996
Javaみたいにホストがアホなことするとすぐ廃れるけどな
Javaみたいにホストがアホなことするとすぐ廃れるけどな
998デフォルトの名無しさん
2024/01/21(日) 16:55:47.23ID:4CYZ0hXB >>992
ありがと
ありがと
999デフォルトの名無しさん
2024/01/21(日) 19:43:22.00ID:/dcZ0aWP1000デフォルトの名無しさん
2024/01/21(日) 20:22:28.74ID:mpR7a4j6 >>994
C++みたいに、色々な実装がでてくれは、50年後にも生きてるんじゃない?
C++みたいに、色々な実装がでてくれは、50年後にも生きてるんじゃない?
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 158日 21時間 57分 50秒
新しいスレッドを立ててください。
life time: 158日 21時間 57分 50秒
10021002
Over 1000Thread 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国国営メディア「沖縄は日本ではない」… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★2 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」 [ぐれ★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 俳優 高岡蒼佑「エジプト出身とかナイジェリア出身とかの人が、日本の代表顔して移民の事とか話してるの見るとなんか違う気がする」★2 [Anonymous★]
- 「稼ぐのよ!」高市総理が電話ガチャ切りで伝えたこと 鈴木憲和農林水産大臣が国政報告会に出席 自身が目指す農政の方針語る [煮卵★]
- 【悲報】台湾「中国にパンダ返還した馬鹿な国があるらしい🤭」 [616817505]
- 【高市悲報】片山さつき、円安進行を受けコメント「為替の変動を緊張感を持って見極める」 [888298477]
- 中国国営放送「日本は琉球をただちに中国に返還せよ」 キタ━━━━(゚∀゚)━━━━!!!!! [314039747]
- 自民「高市の一言でこれまで積み上げてきた関係が駄目になる。言葉の重みを分かっていない。自分でまいた種は自分で刈り取ってもらう」 [256556981]
- 【高市悲報】アメリカ戦争省「あのさ、何回シミュレートしてもわーくに中国に負けちゃうんだよね🤗」 [359965264]
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
