公式
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 part22
https://mevius.5ch.net/test/read.cgi/tech/1705760500/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
探検
Rust part23
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2024/02/23(金) 17:37:52.13ID:CheDQupm2024/02/23(金) 18:14:46.11ID:7HXLfctb
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/
2024/02/23(金) 18:15:20.65ID:7HXLfctb
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/
2024/02/24(土) 14:37:44.58ID:TvelBLvi
前スレ終盤がRust特有の型🔵ナニー症候群の典型(この用語は出典参照)
https://mevius.5ch.net/test/read.cgi/tech/1705760500/977-
Netflixは2年かけて気が付いたけど凡人程のめり込む沼
出典
https://www.youtube.com/watch?v=6gwF8mG3UUY
Haskellの時と同様、概念だけ触れたら他の言語に活かすのが良い
長居していると症候群認定される危険性があるから
https://mevius.5ch.net/test/read.cgi/tech/1705760500/977-
Netflixは2年かけて気が付いたけど凡人程のめり込む沼
出典
https://www.youtube.com/watch?v=6gwF8mG3UUY
Haskellの時と同様、概念だけ触れたら他の言語に活かすのが良い
長居していると症候群認定される危険性があるから
2024/02/24(土) 14:48:37.96ID:cR8FpHrN
6デフォルトの名無しさん
2024/02/24(土) 16:14:50.39ID:yK1YDROT Rustから前スレ終盤の型オナニーをなくしたような言語があれば使いたいけど、ないから仕方なくRustを使っている
7デフォルトの名無しさん
2024/02/24(土) 16:23:38.76ID:GLkrdyDg 静的型チェックレベルを高めつつジェネリクス等による汎化を活用しようとすれば大なり小なり型オナニーは避けられない
RustやTypeScriptだけでなくC++のtemplateやPythonの型ヒントでも同じこと
単独のTraitだけの話で型オナニーとか言ってるやつはオナニーレベルが低過ぎ
静的型チェックへの適性がないのでRustも辞めた方がいい
RustやTypeScriptだけでなくC++のtemplateやPythonの型ヒントでも同じこと
単独のTraitだけの話で型オナニーとか言ってるやつはオナニーレベルが低過ぎ
静的型チェックへの適性がないのでRustも辞めた方がいい
2024/02/24(土) 16:34:30.38ID:vVxC7GCC
型オナニーより所有権やライフタイム管理の方が面倒だけどな
それが型と絡むからさらにややこしくなる
それが型と絡むからさらにややこしくなる
2024/02/24(土) 17:03:48.32ID:4NvD6VS8
動的型付け言語しか慣れてない初心者が静的型付け言語に慣れるまで時間がかかるのは当たり前
GC前提言語しか慣れてない初心者がそうでない言語に慣れるまで時間がかかるのは当たり前
プログラミングに向いてる人ならどちらもすぐに慣れる
そんなことで文句を言っているようではプログラミングに向いていない
GC前提言語しか慣れてない初心者がそうでない言語に慣れるまで時間がかかるのは当たり前
プログラミングに向いてる人ならどちらもすぐに慣れる
そんなことで文句を言っているようではプログラミングに向いていない
10デフォルトの名無しさん
2024/02/24(土) 17:13:41.82ID:V+W4sktV Rustの型オナニーは「本当は1つにまとめても良いんだけど歴史的経緯で2種類あります」みたいなのが稀にあって気持ち良くない
2024/02/24(土) 17:33:53.05ID:rpcvr5yl
>>10
妄想楽しいですか?
妄想楽しいですか?
2024/02/24(土) 18:25:50.38ID:+fQ0JdTj
>>8 それRust特有だよね 時間がどんどん溶ける
13デフォルトの名無しさん
2024/02/24(土) 18:33:24.91ID:Sbx59RJL asはそろそろFrom/TryFromに統一してほしいんだけど
14デフォルトの名無しさん
2024/02/24(土) 20:45:24.03ID:Mj/QkYpd 型オナニーって全部習得するまでにいったいどれだけ時間かかるんだ
15デフォルトの名無しさん
2024/02/24(土) 20:47:39.26ID:fAQkBdOO 型オナニー四十八手
2024/02/24(土) 22:10:17.16ID:SuzjS9X3
>>13
機能が異なるので統一されない
asはcastなので変換From/TryFromとは異なる
例えばi32からu8の場合は変換できない値があるため
impl From<i32> for u8は実装がなく
impl TryFrom<i32> for u8の実装があり
u8::try_from(-3_i32)は変換できずErrとなる
一方でasはcastなので-3_i32 as u8は8bitに切り捨てられ252となる
機能が異なるので統一されない
asはcastなので変換From/TryFromとは異なる
例えばi32からu8の場合は変換できない値があるため
impl From<i32> for u8は実装がなく
impl TryFrom<i32> for u8の実装があり
u8::try_from(-3_i32)は変換できずErrとなる
一方でasはcastなので-3_i32 as u8は8bitに切り捨てられ252となる
2024/02/24(土) 22:13:12.85ID:SuzjS9X3
打ち間違い
252でなく253ね
252でなく253ね
18デフォルトの名無しさん
2024/02/24(土) 22:51:22.10ID:Sbx59RJL >>16
それだけならstdにimpl From<i32> for Wrapping<u8>でも入ってくれれば事足りると思うが……
asって手軽なだけで変換元と変換先の型ごとに意味が複数あるのが複雑で嫌いなんじゃ
C++のC形式キャストみたいな印象
それだけならstdにimpl From<i32> for Wrapping<u8>でも入ってくれれば事足りると思うが……
asって手軽なだけで変換元と変換先の型ごとに意味が複数あるのが複雑で嫌いなんじゃ
C++のC形式キャストみたいな印象
19デフォルトの名無しさん
2024/02/24(土) 22:53:55.08ID:Sbx59RJL え、てかそもそも演算オーバーフローはpanicするのにキャストはpanicしないのか
だるっ
そういうとこやぞ
だるっ
そういうとこやぞ
2024/02/24(土) 23:26:44.50ID:1jp0hNdJ
生演算子はオーバーフローせずラッピングされる
panicはデバッグ時のみ
明示的にラッピングしたいときはwrapping_add
オーバーフローを処理したいときはchecked_addやoverflowing_addまたはsaturating_add
panicはデバッグ時のみ
明示的にラッピングしたいときはwrapping_add
オーバーフローを処理したいときはchecked_addやoverflowing_addまたはsaturating_add
21デフォルトの名無しさん
2024/02/25(日) 01:04:03.14ID:/M3V/hwr 型オナニーって複雑な型パズルを解いて悦に入ることを言ってるのかと思いきや
標準ライブラリの基本的な使い方を覚えることなのかよ
オナニー要素ゼロじゃん
そんなマインドではRustに限らず言語習得は無理だぞ
標準ライブラリの基本的な使い方を覚えることなのかよ
オナニー要素ゼロじゃん
そんなマインドではRustに限らず言語習得は無理だぞ
22デフォルトの名無しさん
2024/02/25(日) 01:05:34.01ID:PHCSkV3G そんなマインドでもGo言語なら習得出来るんだよなあ
2024/02/25(日) 01:14:51.15ID:Y4TucXFt
バカはGoへ行くしかないよ
Rustなどは一般的なプログラミング能力がある人向け
Rustなどは一般的なプログラミング能力がある人向け
24デフォルトの名無しさん
2024/02/25(日) 01:52:59.15ID:5QMstwYR >>22
それはたまたま動いてるようなもんだぞ。
それはたまたま動いてるようなもんだぞ。
2024/02/25(日) 09:14:13.54ID:F2CUOiYD
Rustの開発って時間掛かりそうなイメージある
とりあえず作ってみて後でリファクタリングって作り方ができない感じ?
とりあえず作ってみて後でリファクタリングって作り方ができない感じ?
26デフォルトの名無しさん
2024/02/25(日) 09:49:58.55ID:JC//7tos termuxよりscreen派なんだよなぁ。ライセンスはgplよりbsdのが好きなんだけど。
2024/02/25(日) 10:13:55.36ID:CWUdGBuB
2024/02/25(日) 10:16:51.38ID:m/LZ7YZH
>>25
リファクタリングってのは外部から見た時の挙動を変えないのが原則なので
少なくとも型やライフタイムについては辻褄が合っていることを保証できる仕組みは
リファクタリングでも便利なんだぞ。
内部的な処理でもあまり柔軟には変えづらいということはあるけど
変えづらいところは (外部に対する保証に関わってくるので) 変えてはならない箇所だってことがわかる。
リファクタリングってのは外部から見た時の挙動を変えないのが原則なので
少なくとも型やライフタイムについては辻褄が合っていることを保証できる仕組みは
リファクタリングでも便利なんだぞ。
内部的な処理でもあまり柔軟には変えづらいということはあるけど
変えづらいところは (外部に対する保証に関わってくるので) 変えてはならない箇所だってことがわかる。
29デフォルトの名無しさん
2024/02/25(日) 10:21:38.07ID:UdSUU0Ni2024/02/25(日) 11:59:50.84ID:sgD3xFEl
2024/02/25(日) 12:12:53.79ID:swktBlsa
>>26
screenってまだメンテされてんの?
screenってまだメンテされてんの?
2024/02/25(日) 12:43:55.95ID:JQupN8F5
>>28
例えばpythonとかだと型とかプログラム構造気にせずにパパッと書いて
ある程度動くスクラッチでレビューして内容詰めて
スクラッチから流用できそうなら作り込んでリファクタリングみたいにできるけど
Rustだとそういう風にできなさそう
例えばpythonとかだと型とかプログラム構造気にせずにパパッと書いて
ある程度動くスクラッチでレビューして内容詰めて
スクラッチから流用できそうなら作り込んでリファクタリングみたいにできるけど
Rustだとそういう風にできなさそう
33デフォルトの名無しさん
2024/02/25(日) 12:48:37.70ID:AFiN8NTf >>23
こういうのに限ってgoでもろくなもの書けない
こういうのに限ってgoでもろくなもの書けない
2024/02/25(日) 12:50:53.73ID:lnNUwEQk
>>32
Pythonだとそのリファクタリング前後で挙動が変わってしまわないように気を遣うのがしんどいな
そういうとりあえず試しに作るケースだとユニットテストなんかも当然ない状況なんで
Rustに限らず静的型ならその辺をだいたいコンパイルエラーで拾えるのが楽
Pythonだとそのリファクタリング前後で挙動が変わってしまわないように気を遣うのがしんどいな
そういうとりあえず試しに作るケースだとユニットテストなんかも当然ない状況なんで
Rustに限らず静的型ならその辺をだいたいコンパイルエラーで拾えるのが楽
2024/02/25(日) 13:03:20.25ID:WCq5qF7l
>>27
「僕は基本Traitがよくわからない => それはRustのマイナス面」
この発想が幼稚さがわからないのかな?
他の言語と比べたときのRustのマイナス面はたくさんあるがそういう話のレベルじゃないだろ
「僕は基本Traitがよくわからない => それはRustのマイナス面」
この発想が幼稚さがわからないのかな?
他の言語と比べたときのRustのマイナス面はたくさんあるがそういう話のレベルじゃないだろ
2024/02/25(日) 13:05:42.89ID:Y4TucXFt
2024/02/25(日) 13:18:05.49ID:Y4TucXFt
どんな言語にもマイナス面がありRustにもある
しかしマイナス面を上回る莫大なメリットがRustにはいくつもあるからIT業界をあげてRustを支援&採用している
揚げ足取りでRustを叩きたいだけの人はアンチスレへ行け
しかしマイナス面を上回る莫大なメリットがRustにはいくつもあるからIT業界をあげてRustを支援&採用している
揚げ足取りでRustを叩きたいだけの人はアンチスレへ行け
2024/02/25(日) 13:23:45.23ID:/3HpHAOM
>>36
知らないのかもしれないけど今のPythonはどちらもできる
知らないのかもしれないけど今のPythonはどちらもできる
39デフォルトの名無しさん
2024/02/25(日) 13:29:34.11ID:cAT3nYdz2024/02/25(日) 13:33:19.74ID:m/LZ7YZH
漸進的型付けは静的片付けと動的型付けのどちらも出来るわけではなくて漸進的型付けという別物だと解釈すべきだと思うよ。
2024/02/25(日) 13:35:59.16ID:m/LZ7YZH
42デフォルトの名無しさん
2024/02/25(日) 13:47:25.26ID:cAT3nYdz43デフォルトの名無しさん
2024/02/25(日) 13:51:18.30ID:qsle6rXj Rustで有名アルゴリズムに挑戦 第16回 Rustで機械学習に挑戦 - k近傍法でアヤメの分類をしよう
https://news.mynavi.jp/techplus/article/rustalgorithm-16/
共同作戦で壊滅したマルウェア「Qakbot」復活、米国は犯行グループを逮捕できず
https://news.mynavi.jp/techplus/article/20240225-2885670/
悪意あるPythonパッケージを2つ発見、DLLサイドローディング技術悪用
https://news.mynavi.jp/techplus/article/20240225-2889952/
充電式バイブレータからマルウェア検出、USB充電デバイスに注意
https://news.mynavi.jp/techplus/article/20240224-2889949/
https://news.mynavi.jp/techplus/article/rustalgorithm-16/
共同作戦で壊滅したマルウェア「Qakbot」復活、米国は犯行グループを逮捕できず
https://news.mynavi.jp/techplus/article/20240225-2885670/
悪意あるPythonパッケージを2つ発見、DLLサイドローディング技術悪用
https://news.mynavi.jp/techplus/article/20240225-2889952/
充電式バイブレータからマルウェア検出、USB充電デバイスに注意
https://news.mynavi.jp/techplus/article/20240224-2889949/
2024/02/25(日) 13:53:04.35ID:Y4TucXFt
ここはRustユーザが集うRustスレ
叩きたいだけのキチガイはアンチスレへ行け
叩きたいだけのキチガイはアンチスレへ行け
2024/02/25(日) 13:56:41.04ID:Y4TucXFt
46デフォルトの名無しさん
2024/02/25(日) 14:00:42.93ID:qsle6rXj C++の後継目指すプログラミング言語「Carbon Language」、Googleの技術者が実験的公開。C++は技術的負債で改良が困難と
https://www.publickey1.jp/blog/22/ccarbon_languagegooglec.html
https://www.publickey1.jp/blog/22/ccarbon_languagegooglec.html
2024/02/25(日) 14:05:55.86ID:gx/ep+tD
48デフォルトの名無しさん
2024/02/25(日) 14:10:17.03ID:cAT3nYdz Jobで判断するのはちょっとなあ
Jobの要件にするのってその言語さえ出来れば良い人を探す時じゃん
Rustってまだそのフェーズではないんだよな
Jobの要件にするのってその言語さえ出来れば良い人を探す時じゃん
Rustってまだそのフェーズではないんだよな
2024/02/25(日) 14:19:17.62ID:2NfnhAyO
2024/02/25(日) 14:25:08.84ID:zbRFIfV6
2024/02/25(日) 14:32:26.24ID:is3AzB4D
>>49
次々とRust製へ変わっていってる
リソース面すなわち経済的にもエコ的にもRustが有利なので今後次々とRust製へ置き換わっていく
ソース
>【クラウド世界トップシェアAWS】
>https://japan.zdnet.com/article/35183866/
>Rustで構築されたAWSサービスの例としては、
>コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
>「Amazоn Simple Storage Service(S3)」、
>「Аmazоn Elastic Compute Cloud(EC2)」、
>コンテンツ配信ネットワーク「Аmazоn CloudFront」、
>LinuxベースのコンテナーOS「Bottlerocket」などがある。
>【CDN世界トップシェアClоudflare】
>https://www.publickey1.jp/blog/22/cloudflarenginxrusthttppingoracdncpu31.html
>CDNプロバイダのCloudflareは、同社のグローバルなCDNの基盤として長らく利用してきたNGINXに代えて、
>同社自身がRust製のHTTPプロキシである「Pingora」を開発し利 用していることを明らかにしました。
次々とRust製へ変わっていってる
リソース面すなわち経済的にもエコ的にもRustが有利なので今後次々とRust製へ置き換わっていく
ソース
>【クラウド世界トップシェアAWS】
>https://japan.zdnet.com/article/35183866/
>Rustで構築されたAWSサービスの例としては、
>コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
>「Amazоn Simple Storage Service(S3)」、
>「Аmazоn Elastic Compute Cloud(EC2)」、
>コンテンツ配信ネットワーク「Аmazоn CloudFront」、
>LinuxベースのコンテナーOS「Bottlerocket」などがある。
>【CDN世界トップシェアClоudflare】
>https://www.publickey1.jp/blog/22/cloudflarenginxrusthttppingoracdncpu31.html
>CDNプロバイダのCloudflareは、同社のグローバルなCDNの基盤として長らく利用してきたNGINXに代えて、
>同社自身がRust製のHTTPプロキシである「Pingora」を開発し利 用していることを明らかにしました。
2024/02/25(日) 14:38:19.37ID:+AfYZ5AE
Rustは知らず知らずのうちに技術的負債を量産しそうな気配だな
Rustは既に違法建築だから
前スレで言われる矮小化オンパレードで笑ったw
前スレ
https://mevius.5ch.net/test/read.cgi/tech/1705760500/9
>>https://mevius.5ch.net/test/read.cgi/tech/1692105879/990
一応知らない人のために書いておくけど
「Rustがunsafeコード一切なしでメモリアンセーフ」な事が判明してから半年近く経ってる
特定の機能導入のタイミングでコードが発見されたけど、
「Rustの仕様バグ」だと認識されていて直せない
>>4
そんな事並べて理解したつもりでも、分からないと言っている人の側の主張が正当なんだよ
最近はここでも保証って言われなくなっただろ、当たり前だよRustの仕様に健全性が無いのだから
たぶん知っていて話を逸らしているのか、過去スレでスルーしたかで、この指摘も無理やり矮小化してくるからな
(githubの議論でも矮小化して放置)
気を付けろよ
https://github.com/rust-lang/rust/issues/114936
Rustは既に違法建築だから
前スレで言われる矮小化オンパレードで笑ったw
前スレ
https://mevius.5ch.net/test/read.cgi/tech/1705760500/9
>>https://mevius.5ch.net/test/read.cgi/tech/1692105879/990
一応知らない人のために書いておくけど
「Rustがunsafeコード一切なしでメモリアンセーフ」な事が判明してから半年近く経ってる
特定の機能導入のタイミングでコードが発見されたけど、
「Rustの仕様バグ」だと認識されていて直せない
>>4
そんな事並べて理解したつもりでも、分からないと言っている人の側の主張が正当なんだよ
最近はここでも保証って言われなくなっただろ、当たり前だよRustの仕様に健全性が無いのだから
たぶん知っていて話を逸らしているのか、過去スレでスルーしたかで、この指摘も無理やり矮小化してくるからな
(githubの議論でも矮小化して放置)
気を付けろよ
https://github.com/rust-lang/rust/issues/114936
2024/02/25(日) 14:45:16.11ID:8UflVtOh
2024/02/25(日) 14:48:00.26ID:3ePlkypT
誰も問題視していないどうでもいいことでしかRustを叩けない状況
アンチが追い込まれている
アンチが追い込まれている
2024/02/25(日) 14:53:16.67ID:8UflVtOh
2024/02/25(日) 14:56:15.69ID:8UflVtOh
2024/02/25(日) 14:59:17.67ID:GfahaNNz
2024/02/25(日) 15:03:11.52ID:h80FlwFJ
2024/02/25(日) 15:09:15.42ID:h80FlwFJ
2024/02/25(日) 15:10:35.35ID:h80FlwFJ
2024/02/25(日) 15:27:26.81ID:GfahaNNz
2024/02/25(日) 15:30:50.61ID:na8ub8Oh
2024/02/25(日) 15:48:37.00ID:3ZfnE9eN
64デフォルトの名無しさん
2024/02/25(日) 16:02:53.19ID:4fScDWQR >>62
恣意的ってそういう意味じゃないですよ
恣意的ってそういう意味じゃないですよ
2024/02/25(日) 16:07:08.08ID:na8ub8Oh
例出せないならお前が偉そうに言うことではないぞ
どの立場からもの言ってるんだ?
どの立場からもの言ってるんだ?
2024/02/25(日) 16:10:58.09ID:37W0dlDW
>>62>>65
化けの皮が剥がれるの早すぎて草
化けの皮が剥がれるの早すぎて草
2024/02/25(日) 16:11:46.86ID:na8ub8Oh
俺の質問に答えずに訳のわからないことを言うしかできないんですね
くだらないクズが
くだらないクズが
2024/02/25(日) 16:14:14.27ID:wVCQJTWx
2024/02/25(日) 16:19:05.44ID:5Lw05PSN
2024/02/25(日) 16:21:52.97ID:na8ub8Oh
いや煽ってきたのはお前だろw
何を勘違いしてるんだ
何を勘違いしてるんだ
2024/02/25(日) 16:23:31.57ID:na8ub8Oh
自分が攻撃するのは良くて攻撃されるのは嫌か?
そういうやつには徹底的にやるから覚悟しろよ
俺に攻撃するってことはそういうことだ
そういうやつには徹底的にやるから覚悟しろよ
俺に攻撃するってことはそういうことだ
72デフォルトの名無しさん
2024/02/25(日) 16:24:39.64ID:4fScDWQR 誰やねん
2024/02/25(日) 16:27:11.46ID:LjVpirDf
自分以外が全部同一人物だと思い込んでるアタオカの着火点は意味不明だよな
2024/02/25(日) 16:31:47.21ID:wVCQJTWx
2024/02/25(日) 16:36:11.19ID:sIg5Fob3
>>71 誰も攻撃してないのにこの人怖い、やめてくれませんか
心理的安全性を通り越して身の危険を感じる((((;゚Д゚))))ガクガクブルブル
心理的安全性を通り越して身の危険を感じる((((;゚Д゚))))ガクガクブルブル
76デフォルトの名無しさん
2024/02/25(日) 16:37:37.04ID:4fScDWQR 例の#25860、ジェネリクスとかマクロ生成の裏で意図しないでこのパターン踏んだりしない?
絶対ない?
絶対ない?
77デフォルトの名無しさん
2024/02/25(日) 16:37:39.99ID:muM7k3Ml rustでリファクタリングしながらの開発ってなると多分unsafeを途中経過で入れたりとか
そういうテクニックが必要になると思う。
その辺の整備が進めば割と広まるかもね。
そういうテクニックが必要になると思う。
その辺の整備が進めば割と広まるかもね。
2024/02/25(日) 16:45:35.35ID:wVCQJTWx
79デフォルトの名無しさん
2024/02/25(日) 16:50:17.61ID:4fScDWQR >>78
理由は?
理由は?
2024/02/25(日) 16:51:49.35ID:zhB6NxSY
2024/02/25(日) 16:52:52.76ID:hjrqLcFN
>>77
unsafeは基本的に不要
必要だと思ってもまず標準ライブラリにその機能がないか調べる
次にクレートにその機能がないか調べる
どこにも存在しない場合
unsafeを安全に閉じ込めて安全に使うことができる有用な機能を発見したのならばラッキー
それをクレートとして公開するとよい
unsafeは基本的に不要
必要だと思ってもまず標準ライブラリにその機能がないか調べる
次にクレートにその機能がないか調べる
どこにも存在しない場合
unsafeを安全に閉じ込めて安全に使うことができる有用な機能を発見したのならばラッキー
それをクレートとして公開するとよい
82デフォルトの名無しさん
2024/02/25(日) 17:06:44.48ID:4fScDWQR Rustコンパイラチームは意図せず発生する可能性を否定していない様子
ここのヤツはやっぱりテキトー言ってるだけか
https://hackmd.io/@rust-compiler-team/SkkrA1DCK#Variance
> https://github.com/rust-lang/rust/issues/25860
> root issue of most variance issues
> ⚠🚨⚠ can potentially just happen by accident
ここのヤツはやっぱりテキトー言ってるだけか
https://hackmd.io/@rust-compiler-team/SkkrA1DCK#Variance
> https://github.com/rust-lang/rust/issues/25860
> root issue of most variance issues
> ⚠🚨⚠ can potentially just happen by accident
2024/02/25(日) 17:26:51.68ID:O13egj5J
>>77
同じ構造体の一部を参照しながら別の一部を書き換える大きめのメソッドを
複数のメソッドに分割しようとするとborrow checkerに引っかかる的な話かな
他の言語のクラスと同じ感覚で構造体作るとたまに嵌る
Rustの構造体はRDBのテーブルを正規化する雰囲気で分割した方がいい
同じ構造体の一部を参照しながら別の一部を書き換える大きめのメソッドを
複数のメソッドに分割しようとするとborrow checkerに引っかかる的な話かな
他の言語のクラスと同じ感覚で構造体作るとたまに嵌る
Rustの構造体はRDBのテーブルを正規化する雰囲気で分割した方がいい
2024/02/25(日) 17:30:07.94ID:hjrqLcFN
>>82
Rustのvariance仕様だから発生させることはできるけど
現実に使うコードでは発生しない
意図的にその仕様の狭間をつく現実的でないコードでのみ発生する
そのためその2015年からそのまま放置で誰も困っていない
Rustのvariance仕様だから発生させることはできるけど
現実に使うコードでは発生しない
意図的にその仕様の狭間をつく現実的でないコードでのみ発生する
そのためその2015年からそのまま放置で誰も困っていない
85デフォルトの名無しさん
2024/02/25(日) 17:45:11.19ID:4fScDWQR >>84
by accidentを辞書で引いてこい
by accidentを辞書で引いてこい
2024/02/25(日) 17:51:15.22ID:hjrqLcFN
2024/02/25(日) 17:55:53.01ID:bLJeGl/a
>>81
>unsafeは基本的に不要
>...ラッキー
嘘で始まって運頼みで締めるとはw
信者の心の支えの大手のあそこは
見境なくunsafeを使わざるを得なくなって
Rustでやった意味が無くなってるってよ
>unsafeは基本的に不要
>...ラッキー
嘘で始まって運頼みで締めるとはw
信者の心の支えの大手のあそこは
見境なくunsafeを使わざるを得なくなって
Rustでやった意味が無くなってるってよ
2024/02/25(日) 17:56:42.46ID:m/LZ7YZH
可能性を論じるならお前の頭に隕石が落ちてくる可能性だってあるが、そんなことを心配したことある?
2024/02/25(日) 18:03:36.71ID:c6Ww7brW
RustはVec等のCVE前科があるからなぁ
頭に隕石が落ちたんじゃね?
頭に隕石が落ちたんじゃね?
2024/02/25(日) 18:07:11.51ID:e56nXER6
開発プログラムでunsafeを直接使うことはほとんどない
unsafeが閉じ込められ安全なインターフェースが公開されている形で間接的にのみ用いる
どうしてもunsafeが必要になった場合でもそのように安全な形で分離して用いる
unsafeが閉じ込められ安全なインターフェースが公開されている形で間接的にのみ用いる
どうしてもunsafeが必要になった場合でもそのように安全な形で分離して用いる
91デフォルトの名無しさん
2024/02/25(日) 18:10:03.77ID:4fScDWQR 隕石であれ何であれそれがエンジニアリング可能な対象なら問題を特定して語る意味はあるだろう
2024/02/25(日) 18:19:05.40ID:e56nXER6
>>89
Dropで型がpanicする時にその要素をた用いたVec::from_iter()で二重解放のバグが発見された件か
もちろん他の言語と同様に全ての言語においてライブラリにバグが見つかることは当然ある
Rustはその点でも少ない方なので信頼して使える
Dropで型がpanicする時にその要素をた用いたVec::from_iter()で二重解放のバグが発見された件か
もちろん他の言語と同様に全ての言語においてライブラリにバグが見つかることは当然ある
Rustはその点でも少ない方なので信頼して使える
2024/02/25(日) 18:30:56.08ID:F3hFw1lw
2024/02/25(日) 18:43:22.50ID:hlYoDW1g
Rustの2023年のCVEはCargoで名前をエスケープし忘れた1件のみ
Rustの2022年のCVEは0件
つまりRustコンパイラについて過去2年間でCVEなし
信頼度が高いと言える
Rustの2022年のCVEは0件
つまりRustコンパイラについて過去2年間でCVEなし
信頼度が高いと言える
95デフォルトの名無しさん
2024/02/25(日) 18:49:05.16ID:cAT3nYdz Rust以外のコンパイラってそんな言うほどバグないか?
2024/02/25(日) 19:34:08.90ID:O13egj5J
普通にあるけどみんなで使うから大部分はリリース前に潰される
コンパイラというよりライブラリのバグみたいだけど他の言語より未定義動作にシビアだから
バグ扱いされる事例が増えるのは仕方ない
コンパイラというよりライブラリのバグみたいだけど他の言語より未定義動作にシビアだから
バグ扱いされる事例が増えるのは仕方ない
97デフォルトの名無しさん
2024/02/25(日) 19:46:15.91ID:pvICb5ke2024/02/25(日) 19:49:21.58ID:+aJmKKn5
今となっては未定義動作の多い言語を使うのは悪行だ
Rustを使うべし
Rustを使うべし
2024/02/25(日) 20:11:25.55ID:yYiD0TuW
100デフォルトの名無しさん
2024/02/25(日) 20:15:02.43ID:yYiD0TuW101デフォルトの名無しさん
2024/02/25(日) 20:24:50.38ID:0y8maAN+102デフォルトの名無しさん
2024/02/25(日) 21:16:46.71ID:4fScDWQR 事実を書かれただけで批判だと思っちゃうようじゃ生きづらかろうな
103デフォルトの名無しさん
2024/02/25(日) 21:34:47.98ID:E/2LoMBL >>101
これが矮小化と言うやつか
7割がバグ潰しを「最優先」と回答している事実
直したくても直せないまま何年も経過、unsafe無しでメモリ安全ではない(事実)、Rustの不健全仕様(事実)
(unsound=不健全は数学用語、要は矛盾があるという事)
幸運にもRustが使われなさ過ぎで実害がないように見える(または報告がないだけ)
(良心的に考えてRustが広く使われてない内に)バグ潰しをしとけ、がユーザーの9割の意見(中優先含めて)
週明けのテック記事はどう書くのかな
良い所だけ抜き出してビューが取れるハイプ期間は弱まったと思う
それと飛ばし過ぎるといなくなるorz
これが矮小化と言うやつか
7割がバグ潰しを「最優先」と回答している事実
直したくても直せないまま何年も経過、unsafe無しでメモリ安全ではない(事実)、Rustの不健全仕様(事実)
(unsound=不健全は数学用語、要は矛盾があるという事)
幸運にもRustが使われなさ過ぎで実害がないように見える(または報告がないだけ)
(良心的に考えてRustが広く使われてない内に)バグ潰しをしとけ、がユーザーの9割の意見(中優先含めて)
週明けのテック記事はどう書くのかな
良い所だけ抜き出してビューが取れるハイプ期間は弱まったと思う
それと飛ばし過ぎるといなくなるorz
104デフォルトの名無しさん
2024/02/25(日) 21:37:20.20ID:PFD3HMoN アンチもMozillaが変なことやってるだけで
firefoxに導入できるわけがない一般人が
使えるようになるのは妄想とか
言ってた頃に比べると細かい実装の穴を
ネチネチやるまでになって大変だなあ
firefoxに導入できるわけがない一般人が
使えるようになるのは妄想とか
言ってた頃に比べると細かい実装の穴を
ネチネチやるまでになって大変だなあ
105デフォルトの名無しさん
2024/02/25(日) 22:03:27.18ID:cpTMj4Oj >>103
根本的なことを理解できてないようなので一点だけ
unsafeがプログラム全体に散らばっている他の言語に対して
Rustはunsafeを局所的に閉じ込めて安全なインタフェイスを公開しそれを使ってプログラミングする言語
よく使われる基本機能は標準ライブラリとしてunsafeを閉じ込めてあるが
必要なら自作を含めてunsafeを閉じ込めたライブラリを使ってよい
他の言語と比べてunsafeを局所的に閉じ込めた部分のみ注視すればよいことがRustのメリット
根本的なことを理解できてないようなので一点だけ
unsafeがプログラム全体に散らばっている他の言語に対して
Rustはunsafeを局所的に閉じ込めて安全なインタフェイスを公開しそれを使ってプログラミングする言語
よく使われる基本機能は標準ライブラリとしてunsafeを閉じ込めてあるが
必要なら自作を含めてunsafeを閉じ込めたライブラリを使ってよい
他の言語と比べてunsafeを局所的に閉じ込めた部分のみ注視すればよいことがRustのメリット
106デフォルトの名無しさん
2024/02/25(日) 22:16:32.90ID:uv4EdbLT >>105
unsafeに閉じ込められなかった事実を提示されてるんだが何言ってるんだ?
unsafeに閉じ込められなかった事実を提示されてるんだが何言ってるんだ?
107デフォルトの名無しさん
2024/02/25(日) 22:32:50.41ID:cAT3nYdz Rustコンパイラにバグがあるのはかなりキモくて嫌だけど、Rustの利用をやめるほど致命的かというとな
108デフォルトの名無しさん
2024/02/25(日) 22:47:36.07ID:m/LZ7YZH C++ の未定義を踏んでもおかまいなしってよりは原則として問題は検出する (けどちょっとはバグもある) Rust のほうがだいぶんマシな言語設計ではある。
109デフォルトの名無しさん
2024/02/25(日) 23:03:18.85ID:AXW02Nd1 unsafeなライブラリがRust用の安全なインターフェースを公開することにより保証される安全性とは
もちろん呼び出される側の安全性ではない
呼び出す側だけが検査される
しかも検査が完璧かどうかは実装依存
じゃあ言語仕様により保証されるのは何か
言語仕様は、あとは検査が通るか通らないかを確かめればよいというところまで仕様を確定しなければならない
もちろん呼び出される側の安全性ではない
呼び出す側だけが検査される
しかも検査が完璧かどうかは実装依存
じゃあ言語仕様により保証されるのは何か
言語仕様は、あとは検査が通るか通らないかを確かめればよいというところまで仕様を確定しなければならない
110デフォルトの名無しさん
2024/02/25(日) 23:10:45.79ID:Wz/bOaUk プログラム全体がunsafeなC/C++は使いたくない
未定義な動作も多すぎる
未定義な動作も多すぎる
111デフォルトの名無しさん
2024/02/25(日) 23:49:12.62ID:bSwN5N4x112デフォルトの名無しさん
2024/02/26(月) 00:02:36.23ID:cKYYV9zq 反論できないときは関連するワードを含むRustの宣伝文句をぶつける
いつもの流れです
いつもの流れです
113デフォルトの名無しさん
2024/02/26(月) 00:08:01.38ID:GUFKxV6c 難易度は高くとも増加するユーザー、Rustチーム2023年調査「State of Rust Survey」 難易度は高くとも増加するユーザー、Rustチーム2023年調査「State of Rust Survey」
https://news.mynavi.jp/techplus/article/20240222-2889545/
https://news.mynavi.jp/techplus/article/20240222-2889545/
114デフォルトの名無しさん
2024/02/26(月) 00:10:06.79ID:nyM0yI5t115デフォルトの名無しさん
2024/02/26(月) 05:11:35.79ID:G5weOmRY >>前スレ992
Derefは演算子
・そのためstd::ops::Derefにある (変換std::convert::AsRefと対照的)
・演算子*によりderefされる
・&**へとcoerceされる
Derefは演算子
・そのためstd::ops::Derefにある (変換std::convert::AsRefと対照的)
・演算子*によりderefされる
・&**へとcoerceされる
116デフォルトの名無しさん
2024/02/26(月) 13:22:06.51ID:vLFZOOEE Derefの名前の由来は*演算子(dereference:参照解決)だろうけど
機能は&**へのcoerceを前提にしてて結果的にrefのままだからややこしいな
現状だとInnerRefの方がしっくりくる
機能は&**へのcoerceを前提にしてて結果的にrefのままだからややこしいな
現状だとInnerRefの方がしっくりくる
117デフォルトの名無しさん
2024/02/26(月) 13:34:26.79ID:vLFZOOEE 意味的にはFollowRefの方が自然かな
まあ*演算子で使われるtraitだからDerefでいいんだけど
まあ*演算子で使われるtraitだからDerefでいいんだけど
118デフォルトの名無しさん
2024/02/26(月) 17:12:18.82ID:hotfpUjh 【AI】Stable Diffusion 3発表、Soraで話題の拡散トランスフォーマーを採用 [すらいむ★]
http://egg.5ch.net/test/read.cgi/scienceplus/1708865670/l50
ボイス・トォ・スカるしている者も攻撃を受けるようになりました
http://egg.5ch.net/test/read.cgi/scienceplus/1708865670/l50
ボイス・トォ・スカるしている者も攻撃を受けるようになりました
119デフォルトの名無しさん
2024/02/26(月) 18:21:55.22ID:K4z1iUSz120デフォルトの名無しさん
2024/02/26(月) 19:05:39.95ID:CpQkWMmQ Rustて、演算子と関数を(意味論的に)区別していたっけ?
中間記法によるややこしい結合順の違いがあるぐらいで、構文解析後は等価だから、あんまりこだわっても仕方が無い気が。
中間記法の演算子は人間の算数の記法に配慮しているだけの悪習でしか無いから、積極的に差異をつけないほうが良い気がするけど。
中間記法によるややこしい結合順の違いがあるぐらいで、構文解析後は等価だから、あんまりこだわっても仕方が無い気が。
中間記法の演算子は人間の算数の記法に配慮しているだけの悪習でしか無いから、積極的に差異をつけないほうが良い気がするけど。
121デフォルトの名無しさん
2024/02/26(月) 19:26:28.00ID:pFLZLcAJ Deref に関しては * 演算子として機能する以外に型強制の規則があるという話の文脈。
122デフォルトの名無しさん
2024/02/26(月) 19:44:24.36ID:vLFZOOEE +に対するAdd, &=に対するBitAndAssignと同じ位置づけで
(*T)に対するDerefがstd::opsに入ってるイメージだけど
(*T)自体は
let x: Box<String> = Box::new(String::from("foo"));
let y: String = *x;
みたいに参照先の値を取り出す使い方ができてむしろそっちが本来の意味なのに
それができないtrait DerefがDerefを名乗ってるのが微妙だと思った
(*T)に対するDerefがstd::opsに入ってるイメージだけど
(*T)自体は
let x: Box<String> = Box::new(String::from("foo"));
let y: String = *x;
みたいに参照先の値を取り出す使い方ができてむしろそっちが本来の意味なのに
それができないtrait DerefがDerefを名乗ってるのが微妙だと思った
123デフォルトの名無しさん
2024/02/26(月) 19:45:57.01ID:CpQkWMmQ124デフォルトの名無しさん
2024/02/26(月) 19:57:36.80ID:31wdHwrp125デフォルトの名無しさん
2024/02/26(月) 20:43:46.74ID:YO//rx0m 関数と同じでは困るものといえば && || が有名だけど = が一番やばい
初期化とか代入とかコピーとか移動とか
初期化とか代入とかコピーとか移動とか
126デフォルトの名無しさん
2024/02/26(月) 20:52:21.27ID:isya6kWo127デフォルトの名無しさん
2024/02/26(月) 21:10:51.91ID:ucgwnOih Rustにおける = は心の中でバインド演算子って呼んでるわ
128デフォルトの名無しさん
2024/02/27(火) 01:03:26.56ID:38wv4xDP >>124
>Derefはoperatorなのでstd::opsにある
https://doc.rust-lang.org/std/ops/index.html
ここ見ればわかると思うけど各Traitの説明に”The ~ operator”と書いてるものがoperator
Derefは”Used for immutable dereferencing operations, like *v.”とあるようにDerefそのものはoperatorではない
>Derefでも&T→Tと実装されている
Deref<Target=T> for &Tの実装が提供されてるのは別の役割のため
その実装が実行されて&T→Tになっているのではない
Box<T>→Tなんかも正確に言えば&Box<T>→&T
>Derefによるcoerceは&**となる
全然わからない
何か一つくらい根拠を提示してくださいな
>Derefはoperatorなのでstd::opsにある
https://doc.rust-lang.org/std/ops/index.html
ここ見ればわかると思うけど各Traitの説明に”The ~ operator”と書いてるものがoperator
Derefは”Used for immutable dereferencing operations, like *v.”とあるようにDerefそのものはoperatorではない
>Derefでも&T→Tと実装されている
Deref<Target=T> for &Tの実装が提供されてるのは別の役割のため
その実装が実行されて&T→Tになっているのではない
Box<T>→Tなんかも正確に言えば&Box<T>→&T
>Derefによるcoerceは&**となる
全然わからない
何か一つくらい根拠を提示してくださいな
129デフォルトの名無しさん
2024/02/27(火) 01:17:48.86ID:keoFxKh8 Derefによるcoerceは&**となるのが全然わからないって本気なのかな?
「corece後の参照」= &**「corece前の参照」
となるのがDerefによるcoerceだよ
「corece後の参照」= &**「corece前の参照」
となるのがDerefによるcoerceだよ
130デフォルトの名無しさん
2024/02/27(火) 03:35:57.72ID:Q3TDZDiV READ THE FUCKING MANUAL
https://doc.rust-lang.org/beta/reference/type-coercions.html#coercion-types
https://doc.rust-lang.org/beta/reference/type-coercions.html#coercion-types
131デフォルトの名無しさん
2024/02/27(火) 05:16:27.87ID:2XUMNloz132デフォルトの名無しさん
2024/02/27(火) 08:57:02.46ID:+775Shg6 上の一連の流れ見てるだけでRustしんどそうに見える
133デフォルトの名無しさん
2024/02/27(火) 10:40:40.53ID:90WdzyYj >>129
なるほどそういう風に捉えてるのか
ちょっと独特だね
それはcoercionの動きというよりderefのシグニチャを
内部的にderefを使ってる*演算子で再定義しようとしてるので
循環が気持ち悪いけど一つの見方として頭の隅にしまっておく
ちなみにThe Bookにある一つの例ではderef coercionがなければ*が余計に必要と説明されてる
https://doc.rust-lang.org/book/ch15-02-deref.html#implicit-deref-coercions-with-functions-and-methods
それに&**とは必ずしも等価じゃないからDeref Coercionを説明するのにはあまり勧められないかな
let x = "Hello".to_string();
let y = Box::new(x);
let z = &**y; //zは&strになる
let z:&str = y; //これはcoerceしないのでコンパイルエラー
なるほどそういう風に捉えてるのか
ちょっと独特だね
それはcoercionの動きというよりderefのシグニチャを
内部的にderefを使ってる*演算子で再定義しようとしてるので
循環が気持ち悪いけど一つの見方として頭の隅にしまっておく
ちなみにThe Bookにある一つの例ではderef coercionがなければ*が余計に必要と説明されてる
https://doc.rust-lang.org/book/ch15-02-deref.html#implicit-deref-coercions-with-functions-and-methods
それに&**とは必ずしも等価じゃないからDeref Coercionを説明するのにはあまり勧められないかな
let x = "Hello".to_string();
let y = Box::new(x);
let z = &**y; //zは&strになる
let z:&str = y; //これはcoerceしないのでコンパイルエラー
134デフォルトの名無しさん
2024/02/27(火) 10:44:06.64ID:HDl/V1Sy こんな議論が発生する時点でかなりややこしくて面倒な言語がであることは認めざるを得ない
135デフォルトの名無しさん
2024/02/27(火) 11:23:28.24ID:gx7SRESn そんなことよりDerefの定義の中で参照外ししている↓が無限ループにならない理由でも調べてみたほうが面白いよ
https://doc.rust-lang.org/src/alloc/boxed.rs.html#1927
https://doc.rust-lang.org/src/alloc/boxed.rs.html#1927
136デフォルトの名無しさん
2024/02/27(火) 11:27:25.60ID:90WdzyYj >>135
それが&T→TはDerefの役割ではないという話
それが&T→TはDerefの役割ではないという話
137デフォルトの名無しさん
2024/02/27(火) 11:56:56.99ID:xI+UYr05 rustは使い勝手のために暗黙にokにした構文が逆にわかりづらさを生んでる。
138デフォルトの名無しさん
2024/02/27(火) 12:07:27.17ID:NfALWDmT139デフォルトの名無しさん
2024/02/27(火) 12:18:37.87ID:Q3TDZDiV >>136
*selfはそれでいいけど、**selfはそれじゃ説明付かんぞ
*selfはそれでいいけど、**selfはそれじゃ説明付かんぞ
140デフォルトの名無しさん
2024/02/27(火) 17:59:37.59ID:KfBq61Mu >>139
&T→Tと同じでBox<T>に対する*演算子もコンパイラビルトインだからDerefのimplは使われない
&T→Tと同じでBox<T>に対する*演算子もコンパイラビルトインだからDerefのimplは使われない
141デフォルトの名無しさん
2024/02/27(火) 18:12:58.39ID:lr8nToMg Rustってなんでzipを「簡単」に操作するクレートが一つもないんだ?
Tauriがこなれてきたからそろそろ.NETからアプリをRustにポーティングしようかなと思ったらエコシステムがまるで成長していない・・・
Tauriがこなれてきたからそろそろ.NETからアプリをRustにポーティングしようかなと思ったらエコシステムがまるで成長していない・・・
142デフォルトの名無しさん
2024/02/27(火) 18:13:56.86ID:7nYMkiDR >>133
まず基本を理解しよう
deref coreceは必ず参照から参照へのみ起きる
Box自体は当然deref coreceされない
その例だと
let b = Box::new("Hello".to_string());
まずc0は単なるBox参照
let c0: &Box<String> = &b;
このc1とc2がderef corece
let c1: &String = &b;
let c2: &str = &b;
そのc1とc2を明示的に書くとこうなる
let c1: &String = &**(&b);
let c2: &str = &**(&**(&b));
この暗黙に適用される&**がderef corece
この自動適用のおかげでstrのメソッドが使える
assert!(b.starts_with("He"));
フルに書くとこうでもちろん対象はbではなく&b
assert!(str::starts_with(&b, "He"));
この&bが前述の通り自動的に&**(&**(&b))となり&str型へcoreceされている
まず基本を理解しよう
deref coreceは必ず参照から参照へのみ起きる
Box自体は当然deref coreceされない
その例だと
let b = Box::new("Hello".to_string());
まずc0は単なるBox参照
let c0: &Box<String> = &b;
このc1とc2がderef corece
let c1: &String = &b;
let c2: &str = &b;
そのc1とc2を明示的に書くとこうなる
let c1: &String = &**(&b);
let c2: &str = &**(&**(&b));
この暗黙に適用される&**がderef corece
この自動適用のおかげでstrのメソッドが使える
assert!(b.starts_with("He"));
フルに書くとこうでもちろん対象はbではなく&b
assert!(str::starts_with(&b, "He"));
この&bが前述の通り自動的に&**(&**(&b))となり&str型へcoreceされている
143デフォルトの名無しさん
2024/02/27(火) 18:33:30.42ID:p5E54fv2144デフォルトの名無しさん
2024/02/27(火) 19:01:36.79ID:MCZ6xJKz145デフォルトの名無しさん
2024/02/27(火) 19:26:56.87ID:kSGISY6y Rustもちょっと前の熱狂はなくなってしまった感じ
入込数が減ってると思う
入込数が減ってると思う
146デフォルトの名無しさん
2024/02/27(火) 19:39:57.60ID:ptyRkm62 まあ熱狂系の人は実用言語嫌いそうだし、熱狂系がいなくなったのは良いことでは
147デフォルトの名無しさん
2024/02/27(火) 19:51:34.77ID:gLAGJv50 >>144
発音[US] kouə́ːrʒən | [UK] kouə́ːʃən
カナ[US]コウアァジョン、[UK]コウアーション
参考:https://eow.alc.co.jp/search?q=coercion
自分はコアジョン派
発音[US] kouə́ːrʒən | [UK] kouə́ːʃən
カナ[US]コウアァジョン、[UK]コウアーション
参考:https://eow.alc.co.jp/search?q=coercion
自分はコアジョン派
148デフォルトの名無しさん
2024/02/27(火) 20:18:10.37ID:p5E54fv2 >>144
コアーション派
コアーション派
149デフォルトの名無しさん
2024/02/27(火) 20:23:00.40ID:20aYglde >>147
サンクス。愛してる
サンクス。愛してる
150デフォルトの名無しさん
2024/02/27(火) 21:54:58.65ID:Tx+RemT0 Tのスマートポインタの参照 -> Tの参照
文字の配列の参照 -> 文字のスライス
一連の流れを見るとみんなポインタに熱狂している
文字の配列の参照 -> 文字のスライス
一連の流れを見るとみんなポインタに熱狂している
151デフォルトの名無しさん
2024/02/27(火) 22:22:03.42ID:TDjpaGuA >>150
そこはポインタと参照の根本的な違いを理解しできるかどうかかな
「Boxというスマートポインタ」の参照を扱うから意外に感じているのかもしれないが
「Boxというスマートポインタ」はヒープ領域の解放責任つまり所有権を持つ
したがってBox自体を他の関数などへ渡してしまってはmoveしてしまい継続して使えなくなる
だからスマートポインタの参照を渡すことになる
一見するとこれはポインタのポインタで無駄な間接参照に感じるかもしれない
しかし参照=ポインタではなく参照は抽象的なものなのだ
そこはポインタと参照の根本的な違いを理解しできるかどうかかな
「Boxというスマートポインタ」の参照を扱うから意外に感じているのかもしれないが
「Boxというスマートポインタ」はヒープ領域の解放責任つまり所有権を持つ
したがってBox自体を他の関数などへ渡してしまってはmoveしてしまい継続して使えなくなる
だからスマートポインタの参照を渡すことになる
一見するとこれはポインタのポインタで無駄な間接参照に感じるかもしれない
しかし参照=ポインタではなく参照は抽象的なものなのだ
152デフォルトの名無しさん
2024/02/27(火) 22:43:38.35ID:NfALWDmT Rust の参照は借用規則に関わることを除けばポインタとそんなに差はないし普通にオブジェクトの一種なんだよな。
C++ の参照はオブジェクトではなく参照の参照もとれないし参照のポインタもないし、
参照のサイズも取得できないというのに比べたら Rust の参照は実体のあるものとして感じられてしまう。
C++ の参照はオブジェクトではなく参照の参照もとれないし参照のポインタもないし、
参照のサイズも取得できないというのに比べたら Rust の参照は実体のあるものとして感じられてしまう。
153デフォルトの名無しさん
2024/02/27(火) 22:57:53.18ID:FQe9Y4YD その橋渡し役がDeref coercion
&Box<T>はそのままだとTのポインタを持つBoxへのポインタとなってしまうが
Box<T>→TのDerefがあるため
&Box<T>→&TとDeref coercionが適用できる
静的にコンパイル時点で行われるため実行時コストはかからない
&Box<T>はそのままだとTのポインタを持つBoxへのポインタとなってしまうが
Box<T>→TのDerefがあるため
&Box<T>→&TとDeref coercionが適用できる
静的にコンパイル時点で行われるため実行時コストはかからない
154デフォルトの名無しさん
2024/02/27(火) 23:09:15.00ID:xLBlGeUv155デフォルトの名無しさん
2024/02/27(火) 23:37:04.57ID:IkmURqSK >>142
>deref coreceは必ず参照から参照へのみ起きる
&**との違いを認識してもらうための例を出したんだけど伝わらなかったみたいだね
それは別にいいんだけど書いてる内容を見る限り
Deref Coercionの動きを単に擬似的に再定義しようとして&**になると言ってるだけじゃなく
実際に&**が適用されると思ってるみたいに感じるね
だとしたらそれは完全な間違い
derefの実装の中で*演算子が使われることはあってもDeref Coercion自体は*演算子とは関係ないんだよ
Boxのderef実装だって*演算子を使わずself.ptr.as_ref()的な実装で実現してもいいわけだし
>deref coreceは必ず参照から参照へのみ起きる
&**との違いを認識してもらうための例を出したんだけど伝わらなかったみたいだね
それは別にいいんだけど書いてる内容を見る限り
Deref Coercionの動きを単に擬似的に再定義しようとして&**になると言ってるだけじゃなく
実際に&**が適用されると思ってるみたいに感じるね
だとしたらそれは完全な間違い
derefの実装の中で*演算子が使われることはあってもDeref Coercion自体は*演算子とは関係ないんだよ
Boxのderef実装だって*演算子を使わずself.ptr.as_ref()的な実装で実現してもいいわけだし
156デフォルトの名無しさん
2024/02/27(火) 23:45:58.16ID:Tx+RemT0 とにかく、間接参照から直接参照を得る演算の名前はderefでいいんだよね
157デフォルトの名無しさん
2024/02/27(火) 23:58:10.03ID:cJjIIFX3 Derefは*
Deref coercionは&**
前者は明示が必要な点が違い
x: &Box<T> とすると
*x: Box<T> (by Deref &T→T)
**x: T (by Deref Box<T>→T)
&**x: &T (xのDeref coercion結果)
x: &Vec<T> とすると
*x: Vec<T> (by Deref &T→T)
**x: [T] (by Deref Vec<T>→[T])
&**x: &[T] (xのDeref coercion結果)
x: &String とすると
*x: String (by Deref &T→T)
**x: str (by Deref String→str)
&**x: &str (xのDeref coercion結果)
Deref coercionは&**
前者は明示が必要な点が違い
x: &Box<T> とすると
*x: Box<T> (by Deref &T→T)
**x: T (by Deref Box<T>→T)
&**x: &T (xのDeref coercion結果)
x: &Vec<T> とすると
*x: Vec<T> (by Deref &T→T)
**x: [T] (by Deref Vec<T>→[T])
&**x: &[T] (xのDeref coercion結果)
x: &String とすると
*x: String (by Deref &T→T)
**x: str (by Deref String→str)
&**x: &str (xのDeref coercion結果)
158デフォルトの名無しさん
2024/02/28(水) 00:29:07.11ID:ZZ90UZAT >>157
とりあえずDerefの定義が
pub trait Deref {
type Target: ?Sized;
// Required method
fn deref(&self) -> &Self::Target;
}
(https://doc.rust-lang.org/std/ops/trait.Deref.html)
でderef()の戻り値には自動的に&がつくから
*x: Box<T>
*x: Vec<T>
*x: String
はDeref traitと関係ないことを抑えておこう
そこに(by Deref…)を書かれると話がおかしくなる
*Tができることの一部をDeref traitではできない
正確な表現かは分からないけどDerefは&の向こう側でしか*を適用できない
とりあえずDerefの定義が
pub trait Deref {
type Target: ?Sized;
// Required method
fn deref(&self) -> &Self::Target;
}
(https://doc.rust-lang.org/std/ops/trait.Deref.html)
でderef()の戻り値には自動的に&がつくから
*x: Box<T>
*x: Vec<T>
*x: String
はDeref traitと関係ないことを抑えておこう
そこに(by Deref…)を書かれると話がおかしくなる
*Tができることの一部をDeref traitではできない
正確な表現かは分からないけどDerefは&の向こう側でしか*を適用できない
159デフォルトの名無しさん
2024/02/28(水) 00:41:03.68ID:PK7EwTQ6 こうだろ
x: &Box<T> とすると
*x: Box<T> (by Dereference)
**x: T (by Deref Box<T>→T)
&**x: &T (xのDeref coercion結果)
x: &Vec<T> とすると
*x: Vec<T> (by Dereference)
**x: [T] (by Deref Vec<T>→[T])
&**x: &[T] (xのDeref coercion結果)
x: &String とすると
*x: String (by Dereference)
**x: str (by Deref String→str)
&**x: &str (xのDeref coercion結果)
x: &Box<T> とすると
*x: Box<T> (by Dereference)
**x: T (by Deref Box<T>→T)
&**x: &T (xのDeref coercion結果)
x: &Vec<T> とすると
*x: Vec<T> (by Dereference)
**x: [T] (by Deref Vec<T>→[T])
&**x: &[T] (xのDeref coercion結果)
x: &String とすると
*x: String (by Dereference)
**x: str (by Deref String→str)
&**x: &str (xのDeref coercion結果)
160デフォルトの名無しさん
2024/02/28(水) 00:49:10.38ID:ZZ90UZAT なんかゲシュタルト崩壊してきたんだがw
関係ないけど微積のdxとかdyを思い出してしまった
関係ないけど微積のdxとかdyを思い出してしまった
161デフォルトの名無しさん
2024/02/28(水) 01:22:37.90ID:0HAFGBLs C/C++書いてる者からすると勝手に変換してくれて楽ちんだなあって感じ
162デフォルトの名無しさん
2024/02/28(水) 01:32:01.63ID:upo0sX/6 Deref coercion &**のうち
右側の*は参照に対する参照外しで
左側の*はDerefで定義(実装)されてるものなのね
右側の*は参照に対する参照外しで
左側の*はDerefで定義(実装)されてるものなのね
163デフォルトの名無しさん
2024/02/28(水) 04:46:46.07ID:EOw65cJZ let s = String::from("xyz");
let x: &str = &s;
let x: &str = &&s;
let x: &str = &&&s;
これ全てコンパイル通ってderef coercionされるから
『by Deref &T→T』も適用されていると思うぞ
let x: &str = &s;
let x: &str = &&s;
let x: &str = &&&s;
これ全てコンパイル通ってderef coercionされるから
『by Deref &T→T』も適用されていると思うぞ
164デフォルトの名無しさん
2024/02/28(水) 11:30:56.58ID:eNJqE6SH165デフォルトの名無しさん
2024/02/28(水) 17:44:48.30ID:8gSKFNHr >>156
演算の名前はdereference
derefはDerefトレイトに定義してあるメソッドの名前
>>157
>Derefは*
違う
Derefはトレイト
*はdereference operator
>Deref coercionは&**
違う
Deref Coercionとはcoercionが行われる場合に「&Tを&<T as Deref>::Target」にcoerceすること
Deref Coercionと*などの演算子は全く別の独立したものとして扱われている
それぞれの処理の一部で必要に応じてDerefに定義されたderefメソッドを活用してるというだけ
片方がもう片方に依存してたりもしない
Deref Coercionの処理の一部として呼び出されるderefメソッドを
演算子で擬似的に再定義しようとすれば&**になるというの話はかろうじて理解できるが
前述のように定義が循環してるだけでなく再定義する価値を見いだせない
演算の名前はdereference
derefはDerefトレイトに定義してあるメソッドの名前
>>157
>Derefは*
違う
Derefはトレイト
*はdereference operator
>Deref coercionは&**
違う
Deref Coercionとはcoercionが行われる場合に「&Tを&<T as Deref>::Target」にcoerceすること
Deref Coercionと*などの演算子は全く別の独立したものとして扱われている
それぞれの処理の一部で必要に応じてDerefに定義されたderefメソッドを活用してるというだけ
片方がもう片方に依存してたりもしない
Deref Coercionの処理の一部として呼び出されるderefメソッドを
演算子で擬似的に再定義しようとすれば&**になるというの話はかろうじて理解できるが
前述のように定義が循環してるだけでなく再定義する価値を見いだせない
166デフォルトの名無しさん
2024/02/28(水) 18:08:21.49ID:8fminEVJ なるほどね。勉強になるわ。
167デフォルトの名無しさん
2024/02/28(水) 18:17:32.89ID:8gSKFNHr >>164
&&T→&Tの場合もreference用のビルトインderefが先に動いてDeref for &Tの実装コードは動いてない可能性ない?
&&T→&Tの場合もreference用のビルトインderefが先に動いてDeref for &Tの実装コードは動いてない可能性ない?
168デフォルトの名無しさん
2024/02/28(水) 18:20:50.27ID:nghz9NTX >>164
Deref coercionの定義を理解しよう
Deref T→Uが実装されている時に
(つまり*TがUとなる時に)
&T→&UのDeref coercionが自動適用される
&String→&str (by Deref String→str)
&Vec<T>→&[T] (by Deref Vec<T>→[T])
&Box<T>→&T (by Deref Box<T>→&T)
&&T→&T (by Deref &T→T)
これらはすべてDeref coercion
Deref coercionの定義を理解しよう
Deref T→Uが実装されている時に
(つまり*TがUとなる時に)
&T→&UのDeref coercionが自動適用される
&String→&str (by Deref String→str)
&Vec<T>→&[T] (by Deref Vec<T>→[T])
&Box<T>→&T (by Deref Box<T>→&T)
&&T→&T (by Deref &T→T)
これらはすべてDeref coercion
169デフォルトの名無しさん
2024/02/28(水) 18:22:38.09ID:nghz9NTX >>165
Deref T→Uが実装されている時に
(つまり*TがUとなる時に)
&T→&UのDeref coercionが自動適用される
U=*T
↓ &Tから出発すると
U=**(&T)
↓ 両辺の参照をとると
&U=&**(&T)
つまり
Deref coercionとは&**の自動適用のこと
Deref T→Uが実装されている時に
(つまり*TがUとなる時に)
&T→&UのDeref coercionが自動適用される
U=*T
↓ &Tから出発すると
U=**(&T)
↓ 両辺の参照をとると
&U=&**(&T)
つまり
Deref coercionとは&**の自動適用のこと
170デフォルトの名無しさん
2024/02/28(水) 18:49:11.26ID:T3/1RdIi *xが左辺値なら代入、*xが右辺値なら複製とかいう演算に
ビルトインderefみたいな名前をつけるのが間違っている
ビルトインderefみたいな名前をつけるのが間違っている
171デフォルトの名無しさん
2024/02/28(水) 19:13:20.58ID:fjfA+uEG172デフォルトの名無しさん
2024/02/28(水) 20:06:21.19ID:ZLPgyFVM 判りにくい仕組みだけどこれから開発が進むと
文法変えたりするのかな?
文法変えたりするのかな?
173デフォルトの名無しさん
2024/02/28(水) 20:12:51.73ID:eWXh2LH7 これほど分かりやすくて便利な明確な仕組みはない
他の言語と比較すれば明らか
他の言語と比較すれば明らか
174デフォルトの名無しさん
2024/02/28(水) 21:00:40.37ID:ZLPgyFVM これが分かりやすいと思ってる人間には聞いてないよ
175デフォルトの名無しさん
2024/02/28(水) 21:10:22.04ID:RYfxXFlC 他の言語でこれより良いものが存在しないね
RustのDeref
・自動適用されプログラマーの負担を軽減し利便性も良い
・魔法ではなくtrait Derefの実装に基づき動作して分かりやすく自作の型にも適用可能
・コンパイル時に静的に解決され実行時の付加コストゼロで高速動作
RustのDeref
・自動適用されプログラマーの負担を軽減し利便性も良い
・魔法ではなくtrait Derefの実装に基づき動作して分かりやすく自作の型にも適用可能
・コンパイル時に静的に解決され実行時の付加コストゼロで高速動作
176デフォルトの名無しさん
2024/02/28(水) 23:39:05.31ID:T3/1RdIi177デフォルトの名無しさん
2024/02/28(水) 23:49:09.85ID:ZZ90UZAT Derefなのに&が消えてない(小並感)
背景を理解しないと引っかかりやすいRustの七不思議候補
背景を理解しないと引っかかりやすいRustの七不思議候補
178デフォルトの名無しさん
2024/02/29(木) 01:04:43.74ID:rccXx8PF この仕組みがベストであるという主張は3種類ある
一つは馬鹿な信者が言ってるだけという可能性
一つは本当にこの仕組みがベストである可能性
最後は信者ではないけど素直な馬鹿だからもっと良い仕組みを知らない可能性
このどれであるかは賢い人間がもっと良い仕組みを教えてあげると判別できる
馬鹿な反論が返ってきたら馬鹿な信者
合理的な反論が返ってきたら本当にこの仕組みがベストかもしれない
意見を翻されたら素直な馬鹿
一つは馬鹿な信者が言ってるだけという可能性
一つは本当にこの仕組みがベストである可能性
最後は信者ではないけど素直な馬鹿だからもっと良い仕組みを知らない可能性
このどれであるかは賢い人間がもっと良い仕組みを教えてあげると判別できる
馬鹿な反論が返ってきたら馬鹿な信者
合理的な反論が返ってきたら本当にこの仕組みがベストかもしれない
意見を翻されたら素直な馬鹿
179デフォルトの名無しさん
2024/02/29(木) 01:16:58.91ID:s7mEAt1S この仕組みがない方が良いということ?
下手で全部書くべきと?
下手で全部書くべきと?
180デフォルトの名無しさん
2024/02/29(木) 01:51:37.80ID:zTVrVDmh RustのDerefとそのcoercion枠組みの利点
・プログラマーの負担が減る
・コードが見やすくなる
・枠組みはDerefトレイト利用で明白かつ汎用的になっている
・自分で作った型にも実装して作動させることができる
・静的に解決しているためミスしてもコンパイル時にわかる
・実行時に付加的な動作がなく高速に実行される
これらの利点を上回る方法があるならば知りたい
既存の言語でも新規の方法でも
・プログラマーの負担が減る
・コードが見やすくなる
・枠組みはDerefトレイト利用で明白かつ汎用的になっている
・自分で作った型にも実装して作動させることができる
・静的に解決しているためミスしてもコンパイル時にわかる
・実行時に付加的な動作がなく高速に実行される
これらの利点を上回る方法があるならば知りたい
既存の言語でも新規の方法でも
181デフォルトの名無しさん
2024/02/29(木) 03:43:48.10ID:JSOAwYd/182デフォルトの名無しさん
2024/02/29(木) 10:19:46.23ID:IetxPnTw183デフォルトの名無しさん
2024/02/29(木) 12:07:39.99ID:/e0OxROz >>178
いずれにせよRust信者は自分の信仰を他人に押し付けるために検証可能性を潰すから、科学とはほど遠い姿勢かと。
いずれにせよRust信者は自分の信仰を他人に押し付けるために検証可能性を潰すから、科学とはほど遠い姿勢かと。
184デフォルトの名無しさん
2024/02/29(木) 12:33:18.56ID:sM99e4qp185デフォルトの名無しさん
2024/02/29(木) 12:41:20.92ID:JSOAwYd/ そんなに比較したいならワッチョイスレ行けばいいんじゃね?
https://mevius.5ch.net/test/read.cgi/tech/1701997063
https://mevius.5ch.net/test/read.cgi/tech/1701997063
186デフォルトの名無しさん
2024/02/29(木) 13:11:40.55ID:WGw1+Mi1 検証可能とはコンパイラが無謬であることではない
ここが難しい
コンパイラが未完成の状況でも人間が正解の一部をなぜか知っていること
これが検証可能
ここが難しい
コンパイラが未完成の状況でも人間が正解の一部をなぜか知っていること
これが検証可能
187デフォルトの名無しさん
2024/02/29(木) 14:11:14.15ID:s7mEAt1S >>182
この仕組みがない方が良いということ?
この仕組みがない方が良いということ?
188デフォルトの名無しさん
2024/02/29(木) 14:14:12.31ID:s7mEAt1S 単に理解できないから難癖つけてるだけだよねこの人
自分の主張も一切ないし
自分の主張も一切ないし
189デフォルトの名無しさん
2024/02/29(木) 14:15:14.41ID:s7mEAt1S 誰かの難癖を自分が思い付いたかのように言ってるだけで
何一つまともな批判はない
何一つまともな批判はない
190デフォルトの名無しさん
2024/02/29(木) 14:15:53.86ID:s7mEAt1S 全く相手にすべき人間ではないと判断する
よって今後無視する
よって今後無視する
191デフォルトの名無しさん
2024/02/29(木) 14:45:30.61ID:NVSKcdtL192デフォルトの名無しさん
2024/02/29(木) 14:51:42.06ID:bXdMb/7T 技術的選択は突き詰めれば必ずトレードオフが生じるもの
利点だけを見て欠点に目をつぶったまま良し悪しを論じるのは愚の骨頂
利点だけを見て欠点に目をつぶったまま良し悪しを論じるのは愚の骨頂
193デフォルトの名無しさん
2024/02/29(木) 14:52:32.46ID:sM99e4qp Rustの方式の利点は>>180に挙げられているから
もし仮にRustより良い言語が存在するならその言語の方式の利点を挙げればいいんじゃね?
もし仮にRustより良い言語が存在するならその言語の方式の利点を挙げればいいんじゃね?
194デフォルトの名無しさん
2024/02/29(木) 15:05:04.64ID:Sa1lr1bM195デフォルトの名無しさん
2024/02/29(木) 17:17:49.66ID:WGw1+Mi1 物的な代案や物的証拠により人の心を折ることが検証だと思っているんじゃないか
196デフォルトの名無しさん
2024/02/29(木) 17:44:22.90ID:JSOAwYd/ や、そもそも「人の心」の認識が無いのだろう
197デフォルトの名無しさん
2024/02/29(木) 18:01:07.55ID:OWFCi11w わざわざRustスレにまでやって来てRust叩きやってる人だから心の病気なのかもな
198デフォルトの名無しさん
2024/02/29(木) 18:25:15.72ID:uwbVoB9N199デフォルトの名無しさん
2024/02/29(木) 18:37:38.45ID:OsB1rmqt ビルトインは*を明示指定しないといけなくない?
coercionは何も指定しなくてもDeref実装があれば自動的に多段に適用してくれるけど
coercionは何も指定しなくてもDeref実装があれば自動的に多段に適用してくれるけど
200デフォルトの名無しさん
2024/02/29(木) 20:49:33.50ID:NE3ms/ho impl Deref for &T
はtrait境界を満たすためだけに定義されてるんだろうな
標準だとDeref境界はPinくらいしか使ってないけど
はtrait境界を満たすためだけに定義されてるんだろうな
標準だとDeref境界はPinくらいしか使ってないけど
201デフォルトの名無しさん
2024/02/29(木) 23:55:24.58ID:uwbVoB9N >>199
*演算子のときもDeref CoercionのときもビルトインderefがDeref::derefよりも優先して使われるよ
*演算子のときもDeref CoercionのときもビルトインderefがDeref::derefよりも優先して使われるよ
202デフォルトの名無しさん
2024/03/01(金) 08:46:23.47ID:SBTwWOM0 derefの仕方は状況によって使い分けかな
例えばVec<T>からスライス&[T]にする場合
// deref operatorを使う方法
// 一番短く頻出
let slice = &*vec;
// RangeFull Indexを使う方法
// Rangeを変えて汎用的に範囲指定ができるメリット
let slice = &vec[..];
// deref coercion先の型を明示する方法
// 関数呼び出しは引数の型が明記されてるのでこのパターン
let slice: &[T] = &vec;
// deref()メソッドを使う方法
// ただしDerefトレイトのuseが必要
use std::ops::Deref;
let slice = vec.deref();
例えばVec<T>からスライス&[T]にする場合
// deref operatorを使う方法
// 一番短く頻出
let slice = &*vec;
// RangeFull Indexを使う方法
// Rangeを変えて汎用的に範囲指定ができるメリット
let slice = &vec[..];
// deref coercion先の型を明示する方法
// 関数呼び出しは引数の型が明記されてるのでこのパターン
let slice: &[T] = &vec;
// deref()メソッドを使う方法
// ただしDerefトレイトのuseが必要
use std::ops::Deref;
let slice = vec.deref();
203デフォルトの名無しさん
2024/03/01(金) 09:18:59.78ID:LWQ/+31h uv、めちゃ速いな
今までの処理時間はなんだったのか
これはRustの印象を良くするツールになるわ
今までの処理時間はなんだったのか
これはRustの印象を良くするツールになるわ
204デフォルトの名無しさん
2024/03/01(金) 10:14:36.96ID:gvn/awFT uvというとCで書かれた非同期マルチプラットフォームライブラリ(Rustにはmioがある!)が有名だが
そのuvはRust製のPythonパッケージマネージャーなのか
そのuvはRust製のPythonパッケージマネージャーなのか
205デフォルトの名無しさん
2024/03/01(金) 11:06:37.60ID:C9bgbnyF 速さの定義はわかりやすさの定義よりもわかりやすい
206デフォルトの名無しさん
2024/03/01(金) 16:15:12.75ID:lzR4RBgp JavaScriptでも遅いBabelを速いSWC(Rust製)に換えると爆速
207デフォルトの名無しさん
2024/03/01(金) 19:02:46.24ID:I+/u+ffT Pythonの管理ツールまたなんか出たの!?という気分
208デフォルトの名無しさん
2024/03/02(土) 00:14:54.94ID:F+x2UUkM uvはPython版のcargoを目指しているらしい
209デフォルトの名無しさん
2024/03/02(土) 16:13:07.16ID:bMlzFBHT nvidiaのど汚なさを理解してなさげで不安しかないわ
210デフォルトの名無しさん
2024/03/05(火) 04:09:58.03ID:n3bQlkHC RustでDB使う時の定番ライブラリって何ですか?
211デフォルトの名無しさん
2024/03/05(火) 04:14:48.62ID:nMHII26b ORMが好きならdiesel
ORMが嫌いならsqlx
ORMが嫌いならsqlx
212デフォルトの名無しさん
2024/03/05(火) 06:15:07.43ID:Uplx2IYd >>211
それRDBじゃん
それRDBじゃん
213デフォルトの名無しさん
2024/03/05(火) 11:41:51.93ID:6drsihdZ RDBじゃないDBの定番とか聞かんだろJK
214デフォルトの名無しさん
2024/03/05(火) 12:54:04.64ID:iKkb/Eo4 RDBMSが定番だからね。
215デフォルトの名無しさん
2024/03/05(火) 23:56:12.66ID:blmx074I 最近RDB以外のDBの存在を知った人にありがちな反応だよな
216デフォルトの名無しさん
2024/03/07(木) 15:14:21.16ID:/no0RfP4 Rustで一通り文法や機能紹介した入門書の次に読むような定石本ってどのようなのがありますか?C++でいうEffective C++みたいな
217デフォルトの名無しさん
2024/03/07(木) 15:28:53.82ID:5c4tHUTp しゃぶれよ
218デフォルトの名無しさん
2024/03/07(木) 17:13:51.21ID:NLgNYFMG >>216
Rust for Rustaceans
Rust for Rustaceans
219デフォルトの名無しさん
2024/03/10(日) 13:14:05.30ID:XsimGsv7 Rustはデフォルトのhashが遅いという罠
220デフォルトの名無しさん
2024/03/10(日) 20:35:08.28ID:8NU5B5F+ >>219
Rustはデフォルトのハッシュ関数が最強最善の暗号学的ハッシュ関数であるSipHashを採用しているため衝突にも強くハッシュDOS攻撃に対しても安全
もし強い衝突耐性を必要としない用途ならばFxHasherなどの速さ重視のハッシュへと簡単に置き換えられる
type Hasher = std::hash::BuildHasherDefault<FxHasher>;
let mut map = HashMap::<Foo, Hasher>::default();
Rustはデフォルトのハッシュ関数が最強最善の暗号学的ハッシュ関数であるSipHashを採用しているため衝突にも強くハッシュDOS攻撃に対しても安全
もし強い衝突耐性を必要としない用途ならばFxHasherなどの速さ重視のハッシュへと簡単に置き換えられる
type Hasher = std::hash::BuildHasherDefault<FxHasher>;
let mut map = HashMap::<Foo, Hasher>::default();
221デフォルトの名無しさん
2024/03/10(日) 20:38:28.49ID:8NU5B5F+ こうね
HashMap::<Key, Value, Hasher>
HashMap::<Key, Value, Hasher>
222デフォルトの名無しさん
2024/03/10(日) 21:21:36.22ID:yMMzzxd+ 解決案としてはそうなのだが、デフォルト挙動が罠すぎる
デフォルトいらなかったのでは
デフォルトいらなかったのでは
223デフォルトの名無しさん
2024/03/10(日) 21:26:04.39ID:hwVh1yHa Rustは利用者はアホだと思ってる
だから徹底的に厳しくしてくる
だから徹底的に厳しくしてくる
224デフォルトの名無しさん
2024/03/10(日) 21:33:53.98ID:hwVh1yHa 雨が降ってなくても傘を持つように言って来て外出すらさせてくれない
225デフォルトの名無しさん
2024/03/11(月) 00:11:06.91ID:H3LWtGm6 デフォルトのハッシュ関数が遅くて困るってことはよく知らずに使ってたってことでしょ?
そう考えると初心者向けにデフォルト厳しくしておくのは正解な気がするわ、セキュリティに関わるし
まあ言語側はそんな事考えずにとにかく一番スタンダードなものデフォルトにしろって考え方もわかるが
そう考えると初心者向けにデフォルト厳しくしておくのは正解な気がするわ、セキュリティに関わるし
まあ言語側はそんな事考えずにとにかく一番スタンダードなものデフォルトにしろって考え方もわかるが
226デフォルトの名無しさん
2024/03/11(月) 00:47:18.65ID:2r+51Qz1 Rustはimpl std::hash::Hasherで必要なら自由に独自のハッシュ計算器をすぐ作れるし
逆にそれと独立にimpl std::hash::Hashで自分の各型に対してハッシュ計算法を指示できるし
この2種類のトレイトを標準で用意してくれているRustは非常に好環境
逆にそれと独立にimpl std::hash::Hashで自分の各型に対してハッシュ計算法を指示できるし
この2種類のトレイトを標準で用意してくれているRustは非常に好環境
227デフォルトの名無しさん
2024/03/11(月) 00:59:26.53ID:lga6QF6v 「最悪の場合でもほどほど」なやつをデフォルトにするのは妥当だと俺も思う。
状況に合わせて選択できたり自分で作れたりする人はそうするんだから、
デフォルトではそうでない人を想定するだろ。
状況に合わせて選択できたり自分で作れたりする人はそうするんだから、
デフォルトではそうでない人を想定するだろ。
228デフォルトの名無しさん
2024/03/11(月) 02:43:53.87ID:aDyedTxf いやそもそもデフォルトいらんくね?
なんでデフォルト欲しいんだ?
なんでデフォルト欲しいんだ?
229デフォルトの名無しさん
2024/03/11(月) 11:06:00.19ID:WfvY/WS3 掃除機はAI搭載して吸ってはいけないものを吸ったら止まってくれよ
230デフォルトの名無しさん
2024/03/11(月) 11:06:34.84ID:WfvY/WS3 誤爆した!
231デフォルトの名無しさん
2024/03/11(月) 14:30:36.32ID:emAmKvKR デフォルトを用意するかしないかは言語思想によるから正解不正解では語れないよな
rustの場合は何事も「安全」に基づいて設計されてると認識してる
rustの場合は何事も「安全」に基づいて設計されてると認識してる
232デフォルトの名無しさん
2024/03/11(月) 15:25:18.07ID:WOvDUzj/ 適切なハッシュ関数を選択するのってそんな簡単なことじゃないからな
ハッシュ関数の特性だけじゃなくhashbrownの特性も知らないといけないしその両方を組み合わせた際のハッシュDoS耐性の程度も評価できないといけない
HashMapのように基本的なデータ構造を使うのにどんな場合でもいちいちユーザーがその選択しなきゃいけないようだと辛すぎるわな
ハッシュ関数の特性だけじゃなくhashbrownの特性も知らないといけないしその両方を組み合わせた際のハッシュDoS耐性の程度も評価できないといけない
HashMapのように基本的なデータ構造を使うのにどんな場合でもいちいちユーザーがその選択しなきゃいけないようだと辛すぎるわな
233デフォルトの名無しさん
2024/03/11(月) 19:01:47.22ID:srElBTmD HashMapで使われるHashに重いものを使う必要がある局面は限られてる
でも他人のライブラリの外から必要な時にハッシュアルゴリズムを変えることなんかできないので悩ましい人もいるだろう
でも他人のライブラリの外から必要な時にハッシュアルゴリズムを変えることなんかできないので悩ましい人もいるだろう
234デフォルトの名無しさん
2024/03/11(月) 20:05:38.98ID:3y0FGSJo 僕が美少女とセックスするためのプログラムはRustで作れますか
235デフォルトの名無しさん
2024/03/11(月) 21:13:52.07ID:2r+51Qz1236デフォルトの名無しさん
2024/03/11(月) 21:28:56.93ID:vmVry2mm とりあえずデフォルトを使って、必要になったら差し替えればいいんじゃないの?
Rustだとなんか問題あるんだっけ?
Rustだとなんか問題あるんだっけ?
237デフォルトの名無しさん
2024/03/11(月) 21:31:16.84ID:aDyedTxf238デフォルトの名無しさん
2024/03/11(月) 21:41:07.80ID:6xtSsnXH ハッシュ衝突強度安全性が必要かどうかの判断ができない者がRustデフォルトの安全なものを用いることになるのは正しい
そこまで必要としない用途であると判断できた者だけがFxHashなどを用いればいい
RustコンパイラもFxHashを用いている
https://github.com/rust-lang/rustc-hash
そこまで必要としない用途であると判断できた者だけがFxHashなどを用いればいい
RustコンパイラもFxHashを用いている
https://github.com/rust-lang/rustc-hash
239デフォルトの名無しさん
2024/03/11(月) 21:44:11.78ID:uBu+z/S9 安全で高速を名乗ってるくせにライブラリがおっせえ言語だなあ
これ治すにはいちいち依存ライブラリ全てをcloneしてきてチマチマ変更していかないといけないってマジかよ
これ治すにはいちいち依存ライブラリ全てをcloneしてきてチマチマ変更していかないといけないってマジかよ
240デフォルトの名無しさん
2024/03/11(月) 22:02:54.43ID:2hCRIQro 言語とは関係ない
外部からのデータを扱うなど攻撃耐性など必要となる部分には攻撃耐性のあるハッシュが必須
そうでない部分には攻撃耐性は必要ない
各プログラムの中にこれら両者はは共存しうる
この使い分けができているかどうかは各言語の問題ではない
外部からのデータを扱うなど攻撃耐性など必要となる部分には攻撃耐性のあるハッシュが必須
そうでない部分には攻撃耐性は必要ない
各プログラムの中にこれら両者はは共存しうる
この使い分けができているかどうかは各言語の問題ではない
241デフォルトの名無しさん
2024/03/11(月) 22:17:15.26ID:1Ss4PFRT ライブラリやその管理が言語と関係がないとする主張は可能だが、その主張をするとcargoやcratesの存在が言語と関係ないことになり、Rustの良さを支えている理由の大きな割合を失うことになる
やはりエコシステムやそこにある資産も含めての言語の評価だろう
それにユーザーの問題を言語が引き取らないのであればコードを書く人が充分賢いことを仮定することになり、C++で良いということになる
やはりエコシステムやそこにある資産も含めての言語の評価だろう
それにユーザーの問題を言語が引き取らないのであればコードを書く人が充分賢いことを仮定することになり、C++で良いということになる
242デフォルトの名無しさん
2024/03/11(月) 22:22:30.50ID:2hCRIQro243デフォルトの名無しさん
2024/03/11(月) 22:24:26.89ID:1Ss4PFRT244デフォルトの名無しさん
2024/03/11(月) 22:32:51.13ID:Zfy+Gd54245デフォルトの名無しさん
2024/03/11(月) 22:38:01.21ID:1Ss4PFRT >>244
それはJavaScriptやPythonのような馬鹿がライブラリを書いて馬鹿が馬鹿の再生産をすることを推奨している言語の話でしょう?
もしくは仕様だけ緩く決めて実装には何の責任も取らない言語か
それはJavaScriptやPythonのような馬鹿がライブラリを書いて馬鹿が馬鹿の再生産をすることを推奨している言語の話でしょう?
もしくは仕様だけ緩く決めて実装には何の責任も取らない言語か
246デフォルトの名無しさん
2024/03/11(月) 22:39:37.27ID:1Ss4PFRT スクリプト言語だと速度は求められないという了解があるし
247デフォルトの名無しさん
2024/03/11(月) 22:53:49.00ID:lga6QF6v Rust や C++ の思想でいう速さはゼロコスト抽象のことだよ。
抽象化にはコストはない (または十分に小さい) が実行すれば実行内容に相応の実行コストが生じるのは当たり前のことだし、実行内容を最小限にすることを目指したって単に不便になるだけだ。
抽象化にはコストはない (または十分に小さい) が実行すれば実行内容に相応の実行コストが生じるのは当たり前のことだし、実行内容を最小限にすることを目指したって単に不便になるだけだ。
248デフォルトの名無しさん
2024/03/11(月) 23:24:30.57ID:pnxYU4a7 あらゆる言語のあらゆるプログラムについて以下が成り立つ
【必須】信頼できない外部入力データに対しては攻撃に強いハッシュ関数を用いなければならない
【自由】そうでないデータに対してはどのハッシュ関数を用いてもよい
この状況で安全な言語はデフォルトとして攻撃に強いハッシュ関数が適切
そして後者と判断できるプログラマーのためにハッシュ関数を指定できる仕様が適切
Rustはこの適切な仕様となっている
【必須】信頼できない外部入力データに対しては攻撃に強いハッシュ関数を用いなければならない
【自由】そうでないデータに対してはどのハッシュ関数を用いてもよい
この状況で安全な言語はデフォルトとして攻撃に強いハッシュ関数が適切
そして後者と判断できるプログラマーのためにハッシュ関数を指定できる仕様が適切
Rustはこの適切な仕様となっている
249デフォルトの名無しさん
2024/03/11(月) 23:26:28.61ID:srElBTmD 雨の降らない日に傘をさしてるのがRust
250デフォルトの名無しさん
2024/03/11(月) 23:31:49.34ID:srElBTmD 外に出るときはヘルメットを被って110をすでに入力したスマホを持ちながらおむつをしてコンドームつけてるのがRust
251デフォルトの名無しさん
2024/03/11(月) 23:39:22.87ID:H3LWtGm6 雨が降る日のためにいつでも傘をさしてるだけだろ…
252デフォルトの名無しさん
2024/03/11(月) 23:47:29.47ID:1gRl0SR3 デフォルトとFxHasherで比較してみたけどHashMapへのinsertのみで実行時間1.7倍
現実のプログラムだとそれ以外の部分が大量にあるためそれ次第で誤差だね
これはデフォルトが安全側に倒す形を取っていて正解と思う
現実のプログラムだとそれ以外の部分が大量にあるためそれ次第で誤差だね
これはデフォルトが安全側に倒す形を取っていて正解と思う
253デフォルトの名無しさん
2024/03/11(月) 23:47:55.83ID:eCeLdHKW >>248
>【自由】そうでないデータに対してはどのハッシュ関数を用いてもよい
いやーそれはどうだろう?
ハッシュDoS耐性は不要でも例えばFxHashを使うべきじゃないユースケースも普通にあるよね?
stdに1つしかHasherが用意されておらずサードパーティ頼みな現状は言語的には結構不親切
>【自由】そうでないデータに対してはどのハッシュ関数を用いてもよい
いやーそれはどうだろう?
ハッシュDoS耐性は不要でも例えばFxHashを使うべきじゃないユースケースも普通にあるよね?
stdに1つしかHasherが用意されておらずサードパーティ頼みな現状は言語的には結構不親切
254デフォルトの名無しさん
2024/03/11(月) 23:55:39.88ID:srElBTmD hash自体は基本的にアホでも作れる
それが適切なのかどうかは不明
それが適切なのかどうかは不明
255デフォルトの名無しさん
2024/03/11(月) 23:59:34.73ID:o1bdd8gz Rustはデフォルトハッシュ関数が用意されていておかしいと言うけど
すべての言語で用意されてるでしょ?
Rustは様々なハッシュ関数が標準ライブラリにないと言うけど
それが普通でしょ?
さらにRustの標準ライブラリはなるべく小さくする方針ね
すべての言語で用意されてるでしょ?
Rustは様々なハッシュ関数が標準ライブラリにないと言うけど
それが普通でしょ?
さらにRustの標準ライブラリはなるべく小さくする方針ね
256デフォルトの名無しさん
2024/03/12(火) 00:02:16.02ID:YqCvYydB257デフォルトの名無しさん
2024/03/12(火) 00:06:26.32ID:hhdv8qp2 普通に考えて攻撃に強いハッシュ関数がデフォルトとなってるのがベストだよね
攻撃の可能性のない部分のみを後でチューンアップつまり弱いハッシュ関数で置き換えるだけだから
これより良い策があるの?
攻撃の可能性のない部分のみを後でチューンアップつまり弱いハッシュ関数で置き換えるだけだから
これより良い策があるの?
258デフォルトの名無しさん
2024/03/12(火) 00:07:45.67ID:YqCvYydB 攻撃の可能性のある部分をチューンナップ
259デフォルトの名無しさん
2024/03/12(火) 00:10:05.78ID:hhdv8qp2260デフォルトの名無しさん
2024/03/12(火) 00:10:10.84ID:YqCvYydB 江戸時代士農工商の身分制度があって
雨の日だけ農民も下駄を履いてよかった
雨の日だけ農民も下駄を履いてよかった
261デフォルトの名無しさん
2024/03/12(火) 00:11:17.84ID:YqCvYydB >>259
攻撃されないのに攻撃態勢をつける馬鹿
攻撃されないのに攻撃態勢をつける馬鹿
262デフォルトの名無しさん
2024/03/12(火) 00:13:45.61ID:c71xUORt みんなの言語思想発表会をするのはいいけどRustをそれに巻き込むなよ
263デフォルトの名無しさん
2024/03/12(火) 00:15:25.47ID:YqCvYydB IDコロコロ全肯定君
攻撃されるかもしれないのに攻撃の耐性をつけてない人に
対するフールプルーフのために一律全てのコードを遅くする
そもそもその人が設計ミスってるんだろう
攻撃されるかもしれないのに攻撃の耐性をつけてない人に
対するフールプルーフのために一律全てのコードを遅くする
そもそもその人が設計ミスってるんだろう
264デフォルトの名無しさん
2024/03/12(火) 00:15:58.38ID:ltF5NefG SafeSlowHashMapみたいな名前にすれば良いのに
265デフォルトの名無しさん
2024/03/12(火) 00:16:19.18ID:YqCvYydB >>264
少なくともこれかな
少なくともこれかな
266デフォルトの名無しさん
2024/03/12(火) 00:27:26.16ID:hEPMmb8p267デフォルトの名無しさん
2024/03/12(火) 00:32:47.44ID:YqCvYydB >>266
HashMap::new()すらしたことないのかな?
HashMap::new()すらしたことないのかな?
268デフォルトの名無しさん
2024/03/12(火) 00:33:47.12ID:P8rBcnCc269デフォルトの名無しさん
2024/03/12(火) 00:35:30.45ID:YqCvYydB こいつは結論が先にあってRustのすべてが正しいから後で理屈をつけているだけ
いつもおかしなことを言ってる
いつもおかしなことを言ってる
270デフォルトの名無しさん
2024/03/12(火) 00:36:58.41ID:4FnCuSr/ ripgrepとかuvとかの既に実用が始まってるRust製アプリでは
デフォルトのハッシュ関数使ってるの?
デフォルトのハッシュ関数使ってるの?
271デフォルトの名無しさん
2024/03/12(火) 01:00:19.76ID:hEPMmb8p >>267
やっぱりRustを使ったことないんだな
impl<K, V, S> HashMap<K, V, S>にfn new()は存在しないため
HashMap::<Key, Value, BuildHasherDefault<Hasher>>::default()のように使う
やっぱりRustを使ったことないんだな
impl<K, V, S> HashMap<K, V, S>にfn new()は存在しないため
HashMap::<Key, Value, BuildHasherDefault<Hasher>>::default()のように使う
272デフォルトの名無しさん
2024/03/12(火) 01:04:13.79ID:YqCvYydB ほらこんな壊れたレスしかできないんだよ
脳が死んでる
脳が死んでる
273デフォルトの名無しさん
2024/03/12(火) 01:05:51.45ID:YqCvYydB 常に論点ずらし
何の生産性もない
何の生産性もない
274デフォルトの名無しさん
2024/03/12(火) 01:42:25.91ID:O5aTP+Ks いつもRustを叩いてRustスレを荒らしてるアンチの言動はいつもワンパターン
今回のHashMapの件で例えると
もしデフォルトのハッシュ関数が安全でなく速いものだと「Rustはデフォルトが安全でない!」と叩く
もしデフォルトのハッシュ関数が安全で遅いものだと「Rustはデフォルトが遅い!」と叩く
どちらになっていても叩くことが目的のキチガイ
今回のHashMapの件で例えると
もしデフォルトのハッシュ関数が安全でなく速いものだと「Rustはデフォルトが安全でない!」と叩く
もしデフォルトのハッシュ関数が安全で遅いものだと「Rustはデフォルトが遅い!」と叩く
どちらになっていても叩くことが目的のキチガイ
275デフォルトの名無しさん
2024/03/12(火) 09:25:30.86ID:2ftxmqwc 「俺が高速なプログラムを作れるのは言語のおかげ」は合ってるが
「俺が低速なプログラムしか作れないのは言語のせい」は間違ってる
「俺が低速なプログラムしか作れないのは言語のせい」は間違ってる
276デフォルトの名無しさん
2024/03/12(火) 15:42:43.44ID:qP6Ph9LT 『「俺が低速なプログラムしか作れないのは言語のせい」は間違っている』という立場、ユーザーが充分賢いことを仮定しているのでそれならPythonとC++で良い
277デフォルトの名無しさん
2024/03/12(火) 16:02:50.20ID:O51IPiXd ほんとどうでもいいな
自転車置き場というより豚小屋の議論
自転車置き場というより豚小屋の議論
278デフォルトの名無しさん
2024/03/12(火) 16:28:46.76ID:6k71yQCv プログラムしかしない人はこういうことしか考えることがないんよ
279デフォルトの名無しさん
2024/03/12(火) 17:33:47.15ID:+dm3OZRm 知識があれば高速化が可能な場合があるのは、言語や項目に関わらず一般的な話。
安全方針のRustとしては、ハッシュ衝突強度を知らなくてもデフォルトで安全がベター。
安全方針のRustとしては、ハッシュ衝突強度を知らなくてもデフォルトで安全がベター。
280デフォルトの名無しさん
2024/03/12(火) 18:00:43.49ID:ZUpYWJV7 デフォルトいらんが
ハッシュも自分で選べんガイジがハッシュマップ使うな
ハッシュも自分で選べんガイジがハッシュマップ使うな
281デフォルトの名無しさん
2024/03/12(火) 18:49:06.95ID:hIsWcrJS282デフォルトの名無しさん
2024/03/12(火) 18:51:51.27ID:wv71s4mp 弱いハッシュでも困るようなプログラム書く人は、自分で判断できるんじゃないの?デフォルトはパフォーマンス優先で良いと思うけどな。
283デフォルトの名無しさん
2024/03/12(火) 19:50:55.41ID:WtXn1sYk 攻撃で困るかどうか攻撃されるまで初心者は判断できないと思う。
そして攻撃されてから対処するのでは遅いかもしれない。
パフォーマンスチューニングは遅いことが問題になってからやるので深刻ではなかろう。
そして攻撃されてから対処するのでは遅いかもしれない。
パフォーマンスチューニングは遅いことが問題になってからやるので深刻ではなかろう。
284デフォルトの名無しさん
2024/03/12(火) 19:59:05.75ID:1eKk9IjK >>283
同意
同意
285デフォルトの名無しさん
2024/03/12(火) 20:00:13.63ID:uVbV4a/I RustのDefaultHasherは安全かつパフォーマンスのいいSipHashを使っているので普通は気にする必要ない
もちろんPythonやJavaScript(v8)やSwiftなど多くの言語がこのSipHashを使っている
そのうえでRustは必要とするHashMap毎にFxHashなどさらに高速なものを簡単に指定できる
もちろんPythonやJavaScript(v8)やSwiftなど多くの言語がこのSipHashを使っている
そのうえでRustは必要とするHashMap毎にFxHashなどさらに高速なものを簡単に指定できる
286デフォルトの名無しさん
2024/03/12(火) 20:49:08.64ID:NxLZ8TT6 Pythonはハッシュ値計算したらオブジェクトに保存してるでしょ
287デフォルトの名無しさん
2024/03/12(火) 20:49:29.65ID:+yrdVDIt 他の言語たちがRustを参考に同じように後追いしているのね
>Pythonの文字列やバイト列に対するハッシュアルゴリズムは、HashDoS対策としてPython 3.4から SipHash24が使われていました。
>その後、ラウンド数を減らしたSipHash13でも十分に安全だとして2015年にRustが、2016年にRubyが、SipHash24からSipHash13への切り替えを行いました。
>Rust や Ruby からは数年遅れましたが、Pythonもデフォルトの文字列ハッシュアルゴリズムがSipHash13に切り替わりました。
>Pythonの文字列やバイト列に対するハッシュアルゴリズムは、HashDoS対策としてPython 3.4から SipHash24が使われていました。
>その後、ラウンド数を減らしたSipHash13でも十分に安全だとして2015年にRustが、2016年にRubyが、SipHash24からSipHash13への切り替えを行いました。
>Rust や Ruby からは数年遅れましたが、Pythonもデフォルトの文字列ハッシュアルゴリズムがSipHash13に切り替わりました。
288デフォルトの名無しさん
2024/03/12(火) 20:56:37.07ID:Bo/PtDeL289デフォルトの名無しさん
2024/03/12(火) 22:08:56.94ID:qGjx1B49290デフォルトの名無しさん
2024/03/12(火) 22:13:42.86ID:qGjx1B49 Python Ruby スクリプト系言語
291デフォルトの名無しさん
2024/03/12(火) 22:30:53.75ID:QLhbtBPI 他の言語もRustと同じハッシュ関数を用いていることが判明したのにRust叩きを続ける一匹
292デフォルトの名無しさん
2024/03/13(水) 01:06:52.67ID:l12NsVZP 他の言語の例としてPythonやRubyのような遅いこと前提でとにかく初心者が書いても動けば良いという思想の言語を持ち出してくるのはおかしいでしょう
293デフォルトの名無しさん
2024/03/13(水) 01:36:16.81ID:yq4Sx3eg Swiftも同じSipHash13だよ
294デフォルトの名無しさん
2024/03/13(水) 06:48:44.81ID:vtWyM3VT >>292
じゃあRustの思想は?
じゃあRustの思想は?
295デフォルトの名無しさん
2024/03/13(水) 07:26:54.50ID:W15vpPlq296デフォルトの名無しさん
2024/03/13(水) 08:05:27.17ID:7ftIQ2tM 必要なことしかやりませんって言語は他にあるからそちら使えばいいのでは?
297デフォルトの名無しさん
2024/03/13(水) 11:53:59.71ID:k71lJTPU 安全と速度は両立するかそれともトレードオフか
トレードしかしない人にとって、コストは支払うと決めたら絶対にキャンセルできない印象があるよね
有償かと思ったけどよく考えたらやっぱゼロコストだったという現象は許せない
トレードしかしない人にとって、コストは支払うと決めたら絶対にキャンセルできない印象があるよね
有償かと思ったけどよく考えたらやっぱゼロコストだったという現象は許せない
298デフォルトの名無しさん
2024/03/13(水) 13:08:21.45ID:zcdQDtji Rustなんかに手を出すのはC++まともに書けない馬鹿なんだから、「充分賢ければ速く書ける」は実質「速く書けない」なんだよな
賢いならRustなんかやらない
賢いならRustなんかやらない
299デフォルトの名無しさん
2024/03/13(水) 13:52:10.04ID:k71lJTPU 自由があればデフォルト設定を強制されないのは自明な事実
ただし、賢い人間が自由を所有しているのか、道具自体が自由度を持っているのか
そもそも「所有している」というのはただの感想なのか客観的事実なのか
ただし、賢い人間が自由を所有しているのか、道具自体が自由度を持っているのか
そもそも「所有している」というのはただの感想なのか客観的事実なのか
300デフォルトの名無しさん
2024/03/13(水) 15:08:41.44ID:EtYMYlMl アホ vs バカの不毛な争いが続くのは隔離スレにワッチョイつけたやつの責任だからな
301デフォルトの名無しさん
2024/03/13(水) 17:12:52.60ID:2jYqKDsd 本スレにワッチョイつけず隔離スレと称して余計なスレ立ててそっちにワッチョイつけるバカども。
5chでRust使ってるって言ってるやつらはそんなもの
5chでRust使ってるって言ってるやつらはそんなもの
302デフォルトの名無しさん
2024/03/13(水) 17:32:48.34ID:k71lJTPU 不毛の判断が早いなあ
後世の歴史家が判断するという定型文に縛られないから早いんだな
後世の歴史家が判断するという定型文に縛られないから早いんだな
303デフォルトの名無しさん
2024/03/13(水) 17:40:34.76ID:EfEhvhMh 安全と速度を両立させたのが
RustやPythonなどが採用しているSipHash13
RustやPythonなどが採用しているSipHash13
304デフォルトの名無しさん
2024/03/13(水) 18:38:09.42ID:9N462qty >>295
いや、unsafeは判断できる人が使うものだろ。
いや、unsafeは判断できる人が使うものだろ。
305デフォルトの名無しさん
2024/03/13(水) 21:22:31.53ID:cNV/vVTe >>300
分かってるんならワッチョイ付きRustスレの盛り上げに協力してくれんかえ
分かってるんならワッチョイ付きRustスレの盛り上げに協力してくれんかえ
306デフォルトの名無しさん
2024/03/13(水) 21:54:19.69ID:Ay/UTMuM ワッチョイなんか盛り上がる訳ねえ
そんな話題あったらこのスレに投下してつまらない議論を流した方が余程生産的
そんな話題あったらこのスレに投下してつまらない議論を流した方が余程生産的
307デフォルトの名無しさん
2024/03/13(水) 22:31:42.96ID:/twoPXVD 高齢化でコーディングできなくなったおじいさんを叩くのは良くないと言う話
308デフォルトの名無しさん
2024/03/13(水) 22:39:35.15ID:vtWyM3VT 30後半でコーディングしてるやつなんて9割コミュ障で出世できなかったやつだろ
309デフォルトの名無しさん
2024/03/13(水) 22:42:16.17ID:6IE1D2aF 出世出来ましたか?
310デフォルトの名無しさん
2024/03/13(水) 22:52:25.45ID:/twoPXVD 能力が低下してコーディングできないのとしないのでは大違い
311デフォルトの名無しさん
2024/03/14(木) 00:41:25.89ID:2hurvpo9 結局スクリプト言語で書かれた原作が必要か
他のジャンルでも原作なしのオリジナルは難しそうだろう
他のジャンルでも原作なしのオリジナルは難しそうだろう
312デフォルトの名無しさん
2024/03/14(木) 12:30:54.13ID:HuCxvvOv Rustで書き直してパフォーマンスが上がったので注目浴びる!みたいなプロダクトはなんか白けるよな。
JSとかPythonの基盤ツールをRustで書き換えて激速!みたいなのはもう汎用言語としてのアイデンティティ捨てられててオワットル。
JSとかPythonの基盤ツールをRustで書き換えて激速!みたいなのはもう汎用言語としてのアイデンティティ捨てられててオワットル。
313デフォルトの名無しさん
2024/03/14(木) 12:34:38.63ID:GaNa4vYx 日本みたいに、何とかするには人投入しよう!スキルどうでもいいからとにかく人集めて!なところじゃね~。
314デフォルトの名無しさん
2024/03/14(木) 13:45:31.80ID:zTrHTca+ おそらく植山類が新しいリンカを作ったあたりが開発ツール高速化の機運の始まりだと思う。
歴史的事情でごちゃごちゃしてて遅いのが仕方がないと思われていたものについて
速度を意識して書いてみたら数百倍単位で速くなってわひゃーーというのが強烈なインパクトだった。
(それは C++ で書かれてるんだけどね。)
商売で開発ツールを提供している会社にとっては少なくともそれと同程度のものを出さないと面子が立たない。
リンカを作ってるところはこぞって高速化に努めた。
リンカ以外にもその機運が波及しているのが今。
で、高速化のキモはデータ構造であるというのが明瞭になったんだけど
メモリ管理の部分を処理系 (ランタイムサポート) の側でやるようなものだとそこんところのチューニングが出来ない。
Rust である必然性が強いわけではないけど C++ とかよりは今なら Rust のほうがいいかなってのはまあ自然な判断ではある。
歴史的事情でごちゃごちゃしてて遅いのが仕方がないと思われていたものについて
速度を意識して書いてみたら数百倍単位で速くなってわひゃーーというのが強烈なインパクトだった。
(それは C++ で書かれてるんだけどね。)
商売で開発ツールを提供している会社にとっては少なくともそれと同程度のものを出さないと面子が立たない。
リンカを作ってるところはこぞって高速化に努めた。
リンカ以外にもその機運が波及しているのが今。
で、高速化のキモはデータ構造であるというのが明瞭になったんだけど
メモリ管理の部分を処理系 (ランタイムサポート) の側でやるようなものだとそこんところのチューニングが出来ない。
Rust である必然性が強いわけではないけど C++ とかよりは今なら Rust のほうがいいかなってのはまあ自然な判断ではある。
315デフォルトの名無しさん
2024/03/15(金) 00:47:31.57ID:eu7fnAy5 コードを書けない
プログラムできなくなるとこういうことしか書けなくなると言う見本
プログラムできなくなるとこういうことしか書けなくなると言う見本
316デフォルトの名無しさん
2024/03/15(金) 10:43:30.71ID:5CgUbd5q だが読むより書くほうが優れているという前提から
原作を正しく読解するよりも正しくない二次創作のほうが優れているという結論が出てくる
原作を正しく読解するよりも正しくない二次創作のほうが優れているという結論が出てくる
317デフォルトの名無しさん
2024/03/15(金) 11:53:24.75ID:94MXVgRN 春だなぁw
318デフォルトの名無しさん
2024/03/15(金) 18:26:51.96ID:5N0PtL1J ai bot
319デフォルトの名無しさん
2024/03/15(金) 20:40:42.93ID:W8LQpOAr320デフォルトの名無しさん
2024/03/15(金) 21:07:06.30ID:8+Y0uCh5 Rustコードを書けない似非技術者系おじいちゃんたちは他のスレでやりとりしなさい
ここはRust専用スレ
ここはRust専用スレ
321デフォルトの名無しさん
2024/03/15(金) 21:26:31.60ID:PnOJWcC7 コーディングが出来なくなると人生はつらいと思うけどな…
322デフォルトの名無しさん
2024/03/15(金) 21:36:49.30ID:3GkeGGWK323デフォルトの名無しさん
2024/03/16(土) 00:23:32.44ID:/iia2JvS 人はいつか何もできなくなって死んでいくんだよな
つまらないね
つまらないね
324デフォルトの名無しさん
2024/03/16(土) 08:54:22.01ID:aeWu0EgX 肉屋がレッドオーシャンになれば豚はブルーだからこれでいい
325デフォルトの名無しさん
2024/03/17(日) 19:33:58.02ID:1VtyMVPz Rust書けるやつ集めるの大変すぎ
326デフォルトの名無しさん
2024/03/17(日) 22:06:35.75ID:BMZldfUE Rustで書けば速くてリソースコスト下げられるうえに保守性も良くていいことずくめだからだな
ただしまともなプログラマーしか使い こなせない
ただしまともなプログラマーしか使い こなせない
327デフォルトの名無しさん
2024/03/18(月) 09:59:50.17ID:ySp1yGcK むしろ変なやつしか使ってない感じだけど…
328デフォルトの名無しさん
2024/03/18(月) 10:20:48.83ID:JObkxwF0 しょーもないこだわり持ってるやつしか使ってない
329デフォルトの名無しさん
2024/03/18(月) 13:49:12.09ID:lCCxn1Q7 今後の仕事考えたらRustだね
330デフォルトの名無しさん
2024/03/18(月) 14:26:36.03ID:1+ObkRXf メモリ安全性ってなんなの?
331デフォルトの名無しさん
2024/03/18(月) 14:49:59.91ID:RRSB5dTk 無効なアドレスを参照しない
運が良ければSegmentation Fault、運が悪ければ変な値が使われて何か起こる
無効なアドレスを更新しない
運が良ければSegmentation Fault、運が悪ければそこの値が壊れて何か起こる
メモリリークは割とどうでもいい
運が良ければSegmentation Fault、運が悪ければ変な値が使われて何か起こる
無効なアドレスを更新しない
運が良ければSegmentation Fault、運が悪ければそこの値が壊れて何か起こる
メモリリークは割とどうでもいい
332デフォルトの名無しさん
2024/03/18(月) 15:00:45.39ID:ZJ4hMg34 >>330
メモリ安全性のうち特に重要な一つがメモリ競合の安全性
まだ使っている値を意図せずに書き換えてしまい矛盾してしまう
プログラミングで起こるバグの代表的な一つ
Rustではこれを防ぐことができる
メモリ安全性のうち特に重要な一つがメモリ競合の安全性
まだ使っている値を意図せずに書き換えてしまい矛盾してしまう
プログラミングで起こるバグの代表的な一つ
Rustではこれを防ぐことができる
333デフォルトの名無しさん
2024/03/18(月) 15:02:35.53ID:1+ObkRXf334デフォルトの名無しさん
2024/03/18(月) 15:07:28.37ID:1+ObkRXf335デフォルトの名無しさん
2024/03/18(月) 18:35:36.34ID:utey1W8X セルフコントならもう少し面白いやつを頼む
336デフォルトの名無しさん
2024/03/20(水) 01:19:02.24ID:6E76csi8 WebAssemblyバイナリの実行環境を提供する「Rust」で作成されたランタイム「Wasmi」に脆弱性が明らかになった。
ttps://www.security-next.com/154875
ttps://www.security-next.com/154875
337デフォルトの名無しさん
2024/03/20(水) 05:37:59.51ID:wTR4SIFK デフォルトで制限よりも多くのパラメーターを指定すると域外に書き込みを行うおそれがある「CVE-2024-28123」が明らかとなった。
2023年12月にリリースされた「同0.31.1」にて脆弱性は修正された。
パラメーターが128個以下であることを確認する回避策についてもアナウンスしている。
2023年12月にリリースされた「同0.31.1」にて脆弱性は修正された。
パラメーターが128個以下であることを確認する回避策についてもアナウンスしている。
338デフォルトの名無しさん
2024/03/20(水) 12:50:32.15ID:/slJg93x >>336
そういうのRust関係ないからわざわざここに書かなくてもいいよ
そういうのRust関係ないからわざわざここに書かなくてもいいよ
339デフォルトの名無しさん
2024/03/20(水) 13:00:27.22ID:3fTCja3E 関係無いわけないでしょw
rustで書かれてたら安全なんじゃなかったん?w
rustで書かれてたら安全なんじゃなかったん?w
340デフォルトの名無しさん
2024/03/20(水) 13:48:07.28ID:i9d3tzeg ガベージコレクションのあるスクリプト言語であるPythonですら脆弱性でCVE出まくってるよ
341デフォルトの名無しさん
2024/03/20(水) 14:22:40.25ID:HLjoI2yW これは「メモリ安全」の外の話?中の話?
342デフォルトの名無しさん
2024/03/20(水) 16:11:18.74ID:sC/F3tDJ unsafe使用箇所だからメモリ安全の外だろうな
インタプリタのスタックフレーム参照で毎回境界チェックする実装も微妙だししゃーない
インタプリタのスタックフレーム参照で毎回境界チェックする実装も微妙だししゃーない
343デフォルトの名無しさん
2024/03/20(水) 16:33:56.60ID:pz7pPV/0 jsonの方も?
344デフォルトの名無しさん
2024/03/20(水) 17:50:49.65ID:w9jt/Hdz コード見てみたが言語関係なくダメな書き方の見本ってだけだな
ttps://github.com/wasmi-labs/wasmi/commit/f7b3200e9f3dc9e2cbca966cb255c228453c792f
ttps://github.com/wasmi-labs/wasmi/blob/v0.31.0/crates/wasmi/src/engine/stack/values/mod.rs#L158-L163
修正コードは毎回境界チェックしてるのと同じ
extendする前に必ずreserve呼ばなければいけないとか反省の色が見られない
ttps://github.com/wasmi-labs/wasmi/commit/f7b3200e9f3dc9e2cbca966cb255c228453c792f
ttps://github.com/wasmi-labs/wasmi/blob/v0.31.0/crates/wasmi/src/engine/stack/values/mod.rs#L158-L163
修正コードは毎回境界チェックしてるのと同じ
extendする前に必ずreserve呼ばなければいけないとか反省の色が見られない
345デフォルトの名無しさん
2024/03/20(水) 18:13:46.74ID:ASk8Mk2n extendという名前も実体と違ってバクの素
346デフォルトの名無しさん
2024/03/20(水) 18:19:15.64ID:sC/F3tDJ 修正コードはhotfixでしょ
masterブランチの方は結構手が入ってると思う
masterブランチの方は結構手が入ってると思う
347デフォルトの名無しさん
2024/03/20(水) 18:27:22.61ID:ihbrcjwp その知識やスキルを活かして出世して欲しい
348デフォルトの名無しさん
2024/03/20(水) 20:04:41.25ID:TrbgWl+Z ダメな書き方でもコンパイルが通れば安全なはずなのではw
349デフォルトの名無しさん
2024/03/20(水) 20:32:22.01ID:sC/F3tDJ んなこたない
ダメなunsafeの使い方すれば安全じゃなくてもコンパイルは通せる
ダメなunsafeの使い方すれば安全じゃなくてもコンパイルは通せる
350デフォルトの名無しさん
2024/03/21(木) 01:05:26.83ID:CBfowBe/ 直接の原因はunsafeなメソッドをsafeメソッドにしたこと
unsafeのsafe wrapperの質は大事
今のコードもunsafeの使い方が怪しくて信頼できない
fn get_release_unchecked_mut(&mut self, index: usize) -> &mut UntypedValue {
debug_assert!(index < self.capacity());
// Safety: This is safe since all wasmi bytecode has been validated
// during translation and therefore cannot result in out of
// bounds accesses.
unsafe { self.entries.get_unchecked_mut(index) }
}
unsafeのsafe wrapperの質は大事
今のコードもunsafeの使い方が怪しくて信頼できない
fn get_release_unchecked_mut(&mut self, index: usize) -> &mut UntypedValue {
debug_assert!(index < self.capacity());
// Safety: This is safe since all wasmi bytecode has been validated
// during translation and therefore cannot result in out of
// bounds accesses.
unsafe { self.entries.get_unchecked_mut(index) }
}
351デフォルトの名無しさん
2024/03/21(木) 01:39:19.40ID:t5wrhqh7 >>350
俺んとこもそのコードはよく書くけれど
今回の敗因は引数のindexが生のusizeであること
そこをusize直接ではなくそのラッピングの専用型にする
そしてその専用型が動く範囲が必ず範囲内であることを保証する形で
get_uncheckefのunsafeを使う関数をsafeに仕上げる
俺んとこもそのコードはよく書くけれど
今回の敗因は引数のindexが生のusizeであること
そこをusize直接ではなくそのラッピングの専用型にする
そしてその専用型が動く範囲が必ず範囲内であることを保証する形で
get_uncheckefのunsafeを使う関数をsafeに仕上げる
352デフォルトの名無しさん
2024/03/21(木) 19:05:54.93ID:QWnK+qvS unsafeを適切に使えないプログラマが書くと全然安全じゃないという事?
353デフォルトの名無しさん
2024/03/21(木) 19:57:12.18ID:7RDAu5V5 全然そういう事
Rustで無闇にunsafeを使うのは日本語で無闇に「全然」を使うくらいやばい
Rustで無闇にunsafeを使うのは日本語で無闇に「全然」を使うくらいやばい
354デフォルトの名無しさん
2024/03/21(木) 20:09:58.67ID:gM/gTjZ5355デフォルトの名無しさん
2024/03/21(木) 20:26:53.11ID:1l7zk65j 俺はむやみに「全然」とか「ヤバい」を使ってるけどトラブルになったことはないな
ガンガンunsafe使ってこーぜ!!
ガンガンunsafe使ってこーぜ!!
356デフォルトの名無しさん
2024/03/21(木) 20:28:39.30ID:7RDAu5V5 >>354
それだと単なる自己言及だから352に対する答えとして不十分では
それだと単なる自己言及だから352に対する答えとして不十分では
357デフォルトの名無しさん
2024/03/21(木) 20:45:04.06ID:t5wrhqh7 少なくとも>>350のindex: usizeは
何らかラッピング { index: usize }と別型にすべきところ
まず範囲外のusizeでうっかり使っても型エラーにできる
そしてラッピング型の動作が必ず範囲内に収まるコードであることを注視するだけで安全性を保証できる
何らかラッピング { index: usize }と別型にすべきところ
まず範囲外のusizeでうっかり使っても型エラーにできる
そしてラッピング型の動作が必ず範囲内に収まるコードであることを注視するだけで安全性を保証できる
358デフォルトの名無しさん
2024/03/21(木) 21:05:14.02ID:7RDAu5V5 NonZeroとかNonNullみたいな固定条件ならいいけど
範囲みたいな可変条件だと型だけじゃ厳しいでしょ
別の条件で作られた同じ型の値を使われるかもしれないし
ライフタイムで条件と関連付けるのも限界がある
結局テストパターン増やしてdebug_assert踏むしかない
範囲みたいな可変条件だと型だけじゃ厳しいでしょ
別の条件で作られた同じ型の値を使われるかもしれないし
ライフタイムで条件と関連付けるのも限界がある
結局テストパターン増やしてdebug_assert踏むしかない
359デフォルトの名無しさん
2024/03/21(木) 21:44:37.76ID:t5wrhqh7360デフォルトの名無しさん
2024/03/21(木) 22:18:44.86ID:cOunjWn7 unsafeをsafeでないのにsafeにしておいて
ある型が使い方によってはunsafeになるかもしれないから注視しろってのはちょっとキツイです
ある型が使い方によってはunsafeになるかもしれないから注視しろってのはちょっとキツイです
361デフォルトの名無しさん
2024/03/21(木) 22:27:42.27ID:WuGieKPN 結局プログラマが色々意識してコーディングしないと安全にはならないのね
こういうのもコンパイラがエラーにしてくれてそれを直していけば安全になるものだと思ってたんですけど
こういうのもコンパイラがエラーにしてくれてそれを直していけば安全になるものだと思ってたんですけど
362デフォルトの名無しさん
2024/03/21(木) 23:07:15.31ID:7RDAu5V5 unsafeに手を出さなければ最悪でも暴走する前にpanicで停止する安全性は確保できる
実際は安全の為でもpanicで止まると困るから色々注意しないといけないし
unsafeで余計なチェック省いたり黒魔術使ったりもする
Rustの安全性のサポートは選択と集中がしやすくなる程度で万能ではない
実際は安全の為でもpanicで止まると困るから色々注意しないといけないし
unsafeで余計なチェック省いたり黒魔術使ったりもする
Rustの安全性のサポートは選択と集中がしやすくなる程度で万能ではない
363デフォルトの名無しさん
2024/03/21(木) 23:12:07.53ID:v/mpoJJ8 >>361
unsafeを使わなれば自動的に安全が保証される
unsafeを使うならその関連箇所に人間による安全保証が必要、それ以外は自動的に安全が保証される
C/C++はすべてのコードがunsafe状態なので自動的に安全が保証されるところがない
unsafeを使わなれば自動的に安全が保証される
unsafeを使うならその関連箇所に人間による安全保証が必要、それ以外は自動的に安全が保証される
C/C++はすべてのコードがunsafe状態なので自動的に安全が保証されるところがない
364デフォルトの名無しさん
2024/03/21(木) 23:22:25.34ID:WuGieKPN いつもの人がきたw
結局レベルの低い人が書くとunsafeも不適切に使われて今回のように脆弱性が出てしまうでしょ
Rustであれば安全と思ってる人が多そうなのでかえってunsafeによる脆弱性が見落とされたり発覚しにくくなって問題だと思うんですけど
結局レベルの低い人が書くとunsafeも不適切に使われて今回のように脆弱性が出てしまうでしょ
Rustであれば安全と思ってる人が多そうなのでかえってunsafeによる脆弱性が見落とされたり発覚しにくくなって問題だと思うんですけど
365デフォルトの名無しさん
2024/03/21(木) 23:58:23.31ID:z414Bs3I > Rustであれば安全と思ってる人が多そう
いや一応言っとくけど多くはないよ流石にw
一部の人が連呼してるだけ
ほかの人はもっと現実的だろな
いや一応言っとくけど多くはないよ流石にw
一部の人が連呼してるだけ
ほかの人はもっと現実的だろな
366デフォルトの名無しさん
2024/03/21(木) 23:59:21.08ID:t5wrhqh7 原則はunsafeを使うな!
これだけだ
理解できていてunsafeを使う場合も
とにかく閉じ込めろ!
専用のクレートを作れ
専用のモジュールを作れ
専用の型を作れ
これだけだ
理解できていてunsafeを使う場合も
とにかく閉じ込めろ!
専用のクレートを作れ
専用のモジュールを作れ
専用の型を作れ
367デフォルトの名無しさん
2024/03/21(木) 23:59:51.15ID:XJ9dJAV6 unsafe使わなければ安全
368デフォルトの名無しさん
2024/03/22(金) 09:16:28.77ID:IQ7X1X+j まあ実際rustはコンパイル通ればいいの思想を強める傾向にはある。
それは意識して気をつけた方がいい。
それは意識して気をつけた方がいい。
369デフォルトの名無しさん
2024/03/22(金) 10:19:34.77ID:avPqaarP ロジックや言語仕様を考えずにコンパイルが通るまでひたすらいじくり回すタイプの人間は本当にいる。
チュートリアルすら読まずに書き始めてなんもわからんから教えてと質問サイトに投稿しちゃうやつはいる。
そういうやつは早めに脱落して欲しいし大抵は脱落していくんだけどどういうわけか生き残ってあらゆるところをワヤにしていく狂人がたまにいるんだよ……
普通に現実を見ながらちゃんと学べる人なら (たまにはミスることもあるだろうけど) 大丈夫だよ。
チュートリアルすら読まずに書き始めてなんもわからんから教えてと質問サイトに投稿しちゃうやつはいる。
そういうやつは早めに脱落して欲しいし大抵は脱落していくんだけどどういうわけか生き残ってあらゆるところをワヤにしていく狂人がたまにいるんだよ……
普通に現実を見ながらちゃんと学べる人なら (たまにはミスることもあるだろうけど) 大丈夫だよ。
370デフォルトの名無しさん
2024/03/22(金) 11:58:26.79ID:7Rs7masV371デフォルトの名無しさん
2024/03/22(金) 12:34:01.41ID:TbCMvv+/ 実行時に範囲が変動するといっても制御下にあるのだからindexがその範囲にある時のみ有効な型を実装すればよい
そうすればその型に対して常に安全にget_uncheckedを使える
そうすればその型に対して常に安全にget_uncheckedを使える
372デフォルトの名無しさん
2024/03/22(金) 14:04:42.65ID:ZrfX32kv Rustは失敗言語
373デフォルトの名無しさん
2024/03/22(金) 14:10:55.04ID:ceR9yHkM 今回の件でRustの安全性が確実になったのが興味深いよな
アンチが必死に探してきた問題も>>350でunsafe利用だった
アンチが必死に探してきた問題も>>350でunsafe利用だった
374デフォルトの名無しさん
2024/03/22(金) 16:00:31.63ID:JqYXTM4B >>371
「indexがその範囲にある時のみ有効な型」の意味がよく分かってないけど
実行時に型の方でindex検査して無効時にpanic起こすなら普通にusizeでgetしてunwrapしようよ
unsafeにする意味がない
「indexがその範囲にある時のみ有効な型」の意味がよく分かってないけど
実行時に型の方でindex検査して無効時にpanic起こすなら普通にusizeでgetしてunwrapしようよ
unsafeにする意味がない
375デフォルトの名無しさん
2024/03/22(金) 17:14:19.13ID:vuLWDWdh376デフォルトの名無しさん
2024/03/22(金) 19:27:28.32ID:G6tKD1fj Adaなら特定の範囲の型作れるみたいよ
377デフォルトの名無しさん
2024/03/22(金) 20:07:18.97ID:vuLWDWdh 今回は範囲が固定ではなく変わり得る
378デフォルトの名無しさん
2024/03/23(土) 23:29:45.64ID:eeq00BcS 誰にでもunsafeが使えてしまうのが問題なのでは?
原則使えないくらいが、バカでも安全になるからRustの方向性に合ってる気がする。
原則使えないくらいが、バカでも安全になるからRustの方向性に合ってる気がする。
379デフォルトの名無しさん
2024/03/24(日) 00:34:36.37ID:iaJ2USO3 Rust の制限は機械的に検証可能な範囲に絞ったらそうなったということであって、その制限の範囲内で十分にプログラムが書けるというものでもない。
まあ思ったよりも足りるけどやっぱり必要だから unsafe はある。
まあ思ったよりも足りるけどやっぱり必要だから unsafe はある。
380デフォルトの名無しさん
2024/03/24(日) 10:55:06.56ID:UXqlkypu381デフォルトの名無しさん
2024/03/24(日) 11:08:34.82ID:BHU0SFkf なるほど、欲しい機能を実装していったら、結構安全になったって感じなのかな。OpenBSDみたいな偏執なのとは違う感じか?
382デフォルトの名無しさん
2024/03/24(日) 11:48:11.45ID:uu8/yG2s indexの境界チェックが律速になるようなコード書いてみてえな
383デフォルトの名無しさん
2024/03/24(日) 20:37:14.59ID:YsO86RjG >>376 型宣言の時に type My_Int is range -1 .. 5; 範囲宣言(マイナスでも、1からでもOK)できて、範囲を越えたらエラー 配列もその範囲指定で自由に作成できる。
384デフォルトの名無しさん
2024/03/24(日) 20:45:58.90ID:Rrl8qRWO >>383
定数じゃなければ結局実行時にチェックするってことだよね
定数じゃなければ結局実行時にチェックするってことだよね
385デフォルトの名無しさん
2024/03/25(月) 01:12:47.74ID:yMlw6u5B >>384
新しい型はint型とは独立した型なんだから変数にしたってその新しい型じゃないとコンパイル時にエラー。
新しい型はint型とは独立した型なんだから変数にしたってその新しい型じゃないとコンパイル時にエラー。
386デフォルトの名無しさん
2024/03/25(月) 07:21:41.59ID:CNajD+3j >>384 何十年も前なのですまそ
array(-2)とかarray(6)をアクセスしたら例外発生 array(-1)はOK
type Month is range 1..12
type Month_Array is array(Month) of Integer;
ma : Month_Array := (1,2,3,4,5,6,7,8,9,10,11,12);
for m in ma'first..ma'last loop // カウンタは1から12
ma(m) = m;
end loop;
array(-2)とかarray(6)をアクセスしたら例外発生 array(-1)はOK
type Month is range 1..12
type Month_Array is array(Month) of Integer;
ma : Month_Array := (1,2,3,4,5,6,7,8,9,10,11,12);
for m in ma'first..ma'last loop // カウンタは1から12
ma(m) = m;
end loop;
387デフォルトの名無しさん
2024/03/25(月) 14:37:28.19ID:x/lXcXel 今回の話は実行時境界チェックを無くす(減らす)実行時コスト削減の話だけど
そのAdaの例だと実行時に範囲外に値が動けてアクセスで例外発生するから何の解決にもなっていないね
そのAdaの例だと実行時に範囲外に値が動けてアクセスで例外発生するから何の解決にもなっていないね
388デフォルトの名無しさん
2024/03/25(月) 16:23:44.40ID:9GDk/VLW How much does Rust's bounds checking actually cost?
https://blog.readyset.io/bounds-checks/
https://blog.readyset.io/bounds-checks/
389デフォルトの名無しさん
2024/03/25(月) 17:27:16.04ID:MT/jL+52 こんなもんjavaの速度低下が境界値チェックによるものじゃないってことで話は終わっとると思ったけどな。
問題は浮動小数の取り扱いだっての。
問題は浮動小数の取り扱いだっての。
390デフォルトの名無しさん
2024/03/25(月) 21:23:48.62ID:x/lXcXel unsafeは可能な限り避けるべきで
safe Rustでの改善をまずすべき
その次にindex checkの有無で意味のあるパフォ向上がある時のみ考える
現実にはsafe Rustでの改善ができてないことが多い
例えばよく見かける例としては
iが動いていくのにa[i]でアクセスしてしまう
これはiの範囲checkとa[i]の範囲checkで二重checkになるbad pattern
参照(ポインタ)化することで範囲checkを1回に減らせる
safe Rustでの改善をまずすべき
その次にindex checkの有無で意味のあるパフォ向上がある時のみ考える
現実にはsafe Rustでの改善ができてないことが多い
例えばよく見かける例としては
iが動いていくのにa[i]でアクセスしてしまう
これはiの範囲checkとa[i]の範囲checkで二重checkになるbad pattern
参照(ポインタ)化することで範囲checkを1回に減らせる
391デフォルトの名無しさん
2024/03/27(水) 15:06:55.14ID:g9hYSxJr unsafeは極力避けろというアドバイスばっかりでunsafeを適切に閉じ込める基本的な考え方や実装パターンの啓蒙が不十分なんだよね
unsafeを良く知れば知るほど自然と避けるようになるから避けろ避けろと言うよりもunsafeに関する知識を深められるようにする方が大事
unsafeを良く知れば知るほど自然と避けるようになるから避けろ避けろと言うよりもunsafeに関する知識を深められるようにする方が大事
392デフォルトの名無しさん
2024/03/27(水) 15:29:03.70ID:pFQTMi8v 「unsafeの閉じ込めにはセンスがいるから、教えてもらわないと出来ないやつはunsafeを使うな」
が言える限界な気がする。現にunsafeを適切に閉じ込めるためのノウハウを継承できる資料とかがないので
が言える限界な気がする。現にunsafeを適切に閉じ込めるためのノウハウを継承できる資料とかがないので
393デフォルトの名無しさん
2024/03/27(水) 16:02:47.08ID:BwG0n/Az unsafeはライブラリ作者とかがハード周りアクセスするために使うもので、コーダーが使うものじゃないだろ。
unsafe可能ソースファイル用の拡張子を別途用意して、rsファイルはunsafe禁止にしてもいいくらいじゃない?
unsafe可能ソースファイル用の拡張子を別途用意して、rsファイルはunsafe禁止にしてもいいくらいじゃない?
394デフォルトの名無しさん
2024/03/27(水) 16:59:36.71ID:LwoOYerE >>393
そしたら全部を unsafe 可能版で書いちゃうのが世の中の現実ってもんなんだよ。
そしたら全部を unsafe 可能版で書いちゃうのが世の中の現実ってもんなんだよ。
395デフォルトの名無しさん
2024/03/27(水) 17:05:39.09ID:6Vj8sISV396デフォルトの名無しさん
2024/03/27(水) 17:08:09.55ID:6japDZ8y windows-rs とか使うと絶望するよな。もうちょいラップして安全なAPIも提供してほしい。
397デフォルトの名無しさん
2024/03/27(水) 18:09:17.85ID:345wycOn >>395
~すればいいだけって言う奴はたいてい本人はやらないんだよなぁ。
~すればいいだけって言う奴はたいてい本人はやらないんだよなぁ。
398デフォルトの名無しさん
2024/03/27(水) 18:27:03.05ID:3NgGdhlw399デフォルトの名無しさん
2024/03/27(水) 18:54:43.86ID:nHNmKGrp その素晴らしい提案がなぜされていないのか考えよう
そしてなぜ自分は実行から逃げているのか考えよう
そしてなぜ自分は実行から逃げているのか考えよう
400デフォルトの名無しさん
2024/03/27(水) 20:42:45.86ID:deTzlgug >>394
Rustが流行りそうな一番の理由は「管理側」が「コーダー」にunsafeみたいなことをやらせたくないということなんだから、どこでもunsafeとか管理側が許さんだろ。
Rustが流行りそうな一番の理由は「管理側」が「コーダー」にunsafeみたいなことをやらせたくないということなんだから、どこでもunsafeとか管理側が許さんだろ。
401デフォルトの名無しさん
2024/03/27(水) 21:06:58.89ID:LwoOYerE unsafe はコンパイラが安全性を「論理的に検証できない」部分であって、理論上の都合で出来た区分だよ。
危険な操作も含まれるけど危険な部分を分けれてるわけではない。
もちろん unsafe を制限する規約のプロジェクトがあったって良いが、そのための機能じゃないよ。
危険な操作も含まれるけど危険な部分を分けれてるわけではない。
もちろん unsafe を制限する規約のプロジェクトがあったって良いが、そのための機能じゃないよ。
402デフォルトの名無しさん
2024/03/27(水) 21:18:47.87ID:deTzlgug403デフォルトの名無しさん
2024/03/27(水) 21:31:01.25ID:LwoOYerE404デフォルトの名無しさん
2024/03/27(水) 21:44:58.62ID:deTzlgug405デフォルトの名無しさん
2024/03/27(水) 21:49:49.48ID:Fy0R0co2 理想をいえばunsafeなんて無いならサイコーだったんだろうね
rust陣営もしゃあなしでunsafe導入したんやろうし
unsafeなしですべてがセーフで効率的だったら
そりゃあrustは本当に素晴らしい文句なしの言語だったやろな
rust陣営もしゃあなしでunsafe導入したんやろうし
unsafeなしですべてがセーフで効率的だったら
そりゃあrustは本当に素晴らしい文句なしの言語だったやろな
406デフォルトの名無しさん
2024/03/27(水) 22:08:33.46ID:toZsv7uT 生ポインタすなわちCPUによるメモリアクセスはunsafe
そこが出発点
unsafeを組み合わせてunsafeを閉じ込めたsafeなインタフェースを提供できる
それがsafe Rustの基本原理
つまりunsafeに行き着くためunsafe無しでは何もできない
これが真理
一方で
unsafeを閉じ込めたライブラリ利用可を前提にすれば
unsafeを用いないsafe Rustでほとんど大抵のことが実現できるのも事実
そこが出発点
unsafeを組み合わせてunsafeを閉じ込めたsafeなインタフェースを提供できる
それがsafe Rustの基本原理
つまりunsafeに行き着くためunsafe無しでは何もできない
これが真理
一方で
unsafeを閉じ込めたライブラリ利用可を前提にすれば
unsafeを用いないsafe Rustでほとんど大抵のことが実現できるのも事実
407デフォルトの名無しさん
2024/03/27(水) 22:24:02.18ID:cgbLYCC5408デフォルトの名無しさん
2024/03/27(水) 22:52:47.09ID:qNf/D02g そこまでsafeな事にこだわるなら、Haskellに行けばいいのでは…?
409デフォルトの名無しさん
2024/03/27(水) 22:57:38.14ID:LwoOYerE410デフォルトの名無しさん
2024/03/27(水) 23:02:28.02ID:toZsv7uT #![forbid(unsafe_code)]
を宣言すればいい
もちろんすべてはunsafeへ行き着くため
unsafeを禁止できるのは自分のコード部分だけ
を宣言すればいい
もちろんすべてはunsafeへ行き着くため
unsafeを禁止できるのは自分のコード部分だけ
411デフォルトの名無しさん
2024/03/27(水) 23:55:45.93ID:pFQTMi8v unsafeな部分の拡張子を変えるというのが有効とはあんま思えんのだよな
平気でunsafe使ってくるガイジは当然平気でunsafeな拡張子を使ってくるだろうという予想する
平気でunsafe使ってくるガイジは当然平気でunsafeな拡張子を使ってくるだろうという予想する
412デフォルトの名無しさん
2024/03/28(木) 07:44:09.91ID:OabXy/xk413デフォルトの名無しさん
2024/03/28(木) 08:15:17.48ID:wHq/ItvK rustもいろいろ問題を抱えてるんだね
プログラマの習熟が必要だっていうなら流行らないだろう
メモリ安全なソフトウェア書くことを優先するなら土方が適当に使えるjavaやc#があるだろうし
新しいc/c++/rustと競合する決定版のような言語が出てきてrustはさらなる傍流に押しやられそう
プログラマの習熟が必要だっていうなら流行らないだろう
メモリ安全なソフトウェア書くことを優先するなら土方が適当に使えるjavaやc#があるだろうし
新しいc/c++/rustと競合する決定版のような言語が出てきてrustはさらなる傍流に押しやられそう
414デフォルトの名無しさん
2024/03/28(木) 08:34:31.08ID:5loDhjzb415デフォルトの名無しさん
2024/03/28(木) 08:48:28.49ID:OabXy/xk416デフォルトの名無しさん
2024/03/28(木) 09:00:19.29ID:5loDhjzb417デフォルトの名無しさん
2024/03/28(木) 10:37:24.50ID:dWo+4s1T 結局いつもの「無知なアンチ vs 無知な信者」の薄っぺらい対立になっちゃうのな
418デフォルトの名無しさん
2024/03/28(木) 14:03:58.90ID:61/ABBlz まあハスケルなんかもinvalidな変数使うようにっての広めるのには役立ったからrustもそういう位置に落ち着くだろ。
419デフォルトの名無しさん
2024/03/28(木) 17:41:01.08ID:Li+1uESY unsafeを使う人はライブラリ作成者がほとんどで、残りはシビアなインフラ作成者
一般プログラマーはunsafeを使わずに、unsafeが閉じ止められたライブラリのsafeなインターフェースのみ用いる
もしunsafeを用いて閉じ込めてsafeなインターフェースを提供できる新たなパターンを発見した時のみ、
その部分だけを切り出してライブラリ作成者になれる
それができない一般プログラマーはunsafeに縁がなく、unsafeを気にする必要がない
一般プログラマーはunsafeを使わずに、unsafeが閉じ止められたライブラリのsafeなインターフェースのみ用いる
もしunsafeを用いて閉じ込めてsafeなインターフェースを提供できる新たなパターンを発見した時のみ、
その部分だけを切り出してライブラリ作成者になれる
それができない一般プログラマーはunsafeに縁がなく、unsafeを気にする必要がない
420デフォルトの名無しさん
2024/03/28(木) 18:27:15.03ID:OabXy/xk >>419
そうならやっぱりデフォルト禁止にすべきだな。一般コーダーはunsafeを使えないようにしてコードの安全性を高めるべき。
Rustのデフォルトムーブとかshared xor mutableとかは安全側に倒しているのに、なんでunsafeだけはユルユルなのかね。
そうならやっぱりデフォルト禁止にすべきだな。一般コーダーはunsafeを使えないようにしてコードの安全性を高めるべき。
Rustのデフォルトムーブとかshared xor mutableとかは安全側に倒しているのに、なんでunsafeだけはユルユルなのかね。
421デフォルトの名無しさん
2024/03/28(木) 18:35:39.73ID:2Ez7VURh unsafeって書かないといけないってのは結構デフォ禁止よりの処置だと思うが
このメッセージが伝わらない相手にはもうunsafeの文法を分けてunsafeだけ難しくするとかしかなさそう
でもわざわざ難しい文法を用意すると言うのも馬鹿らしい話だ
このメッセージが伝わらない相手にはもうunsafeの文法を分けてunsafeだけ難しくするとかしかなさそう
でもわざわざ難しい文法を用意すると言うのも馬鹿らしい話だ
422デフォルトの名無しさん
2024/03/28(木) 18:56:54.80ID:Hx0Q8eMq 必要な各企業、各プロジェクトなどで義務付け
#![forbid(unsafe_code)]
これでunsafeの話はおしまい
他の言語と比べてRustはコーディング規約もAPI規約も公式で楽
Rust公式APIガイドライン
https://rust-lang.github.io/api-guidelines/
#![forbid(unsafe_code)]
これでunsafeの話はおしまい
他の言語と比べてRustはコーディング規約もAPI規約も公式で楽
Rust公式APIガイドライン
https://rust-lang.github.io/api-guidelines/
423デフォルトの名無しさん
2024/03/28(木) 19:45:10.84ID:OabXy/xk >>422
公式のドキュメントで
#![forbid(unsafe_code)]
の説明を探しているんだけど、どこにあるのかしらん?
doc.rust-lang.org/nomicon/safe-unsafe-meaning.html
の1行でおしまい?
公式のドキュメントで
#![forbid(unsafe_code)]
の説明を探しているんだけど、どこにあるのかしらん?
doc.rust-lang.org/nomicon/safe-unsafe-meaning.html
の1行でおしまい?
424デフォルトの名無しさん
2024/03/28(木) 20:08:10.91ID:uNPCtnZO forbidもunsafe_codeもrustcのlintの一部だな
doc.rust-lang.org/rustc/lints/levels.html#forbid
doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html#unsafe-code
doc.rust-lang.org/rustc/lints/levels.html#forbid
doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html#unsafe-code
425デフォルトの名無しさん
2024/03/28(木) 21:59:19.02ID:vhhc95Ef Rust Foundationによる資格認定試験に合格した者だけにunsafe使用パスワードが発行されるようにするしかないな。
426デフォルトの名無しさん
2024/03/28(木) 22:34:58.42ID:jTiWvkZ+ どの開発でも
#![forbid(unsafe_code)]が原則
どうしてもunsafeが必要なら
その安全ロジックを関係者で協議後に
#![deny(unsafe_code)]へそのモジュールのみ変更し
許可する部分のみを
#![allow(unsafe_code)]として監視対象
といった感じが一般的かと
監視対象を極一部に限定できて
全体はコンパイラにより保証できるため
他のプログラミング言語より扱いやすい
#![forbid(unsafe_code)]が原則
どうしてもunsafeが必要なら
その安全ロジックを関係者で協議後に
#![deny(unsafe_code)]へそのモジュールのみ変更し
許可する部分のみを
#![allow(unsafe_code)]として監視対象
といった感じが一般的かと
監視対象を極一部に限定できて
全体はコンパイラにより保証できるため
他のプログラミング言語より扱いやすい
427デフォルトの名無しさん
2024/03/28(木) 22:41:56.41ID:8+kd1npI >>420
一般とそうでない奴は誰がどうやって区別するのさ?
一般とそうでない奴は誰がどうやって区別するのさ?
428デフォルトの名無しさん
2024/03/28(木) 22:42:31.88ID:8+kd1npI >>421
正解
正解
429デフォルトの名無しさん
2024/03/28(木) 23:58:52.21ID:KGiLR8kg 時間がない時はunsafe使っていいよ
430デフォルトの名無しさん
2024/03/29(金) 00:05:51.94ID:B//2x2dm 時間がない時に焦ってunsafe使って書いたコードは長期利用すると大変なことになるので書いてから1時間以内に使って捨てよう
431デフォルトの名無しさん
2024/03/29(金) 00:19:58.75ID:Rgc3qInF432デフォルトの名無しさん
2024/03/29(金) 00:24:32.79ID:Rgc3qInF433デフォルトの名無しさん
2024/03/29(金) 01:57:50.63ID:EplliVDI 壊れたレコードオジ怖い
434デフォルトの名無しさん
2024/03/29(金) 02:36:16.29ID:B//2x2dm >>432
安全性の検討も必要な検討も全部スキップして「えいや」ってやればsafe rustより速く書き上がることもあるのでは?
安全性の検討も必要な検討も全部スキップして「えいや」ってやればsafe rustより速く書き上がることもあるのでは?
435デフォルトの名無しさん
2024/03/29(金) 07:36:27.65ID:9Pm5HVgJ 雑にunsafe使って早く書けるのはFFIくらいかな
FFIはどのみちunsafe必須だけど、事前条件とかの検討せずに雑にsafe化してしまうならそれは確かに早い
pure Rustでunsafeの方が早いケースはちょっと思いつかないな
FFIはどのみちunsafe必須だけど、事前条件とかの検討せずに雑にsafe化してしまうならそれは確かに早い
pure Rustでunsafeの方が早いケースはちょっと思いつかないな
436デフォルトの名無しさん
2024/03/29(金) 08:25:13.35ID:bd1Zch8f437デフォルトの名無しさん
2024/03/29(金) 08:27:22.40ID:bd1Zch8f >>426
それぐらいやらないとRust採用するメリット無さそうだよな。
それぐらいやらないとRust採用するメリット無さそうだよな。
438デフォルトの名無しさん
2024/03/29(金) 08:41:03.04ID:ev5kqnbp 初心者ぼく「禁止しないといけないようなもんが標準で使えるって結局それ危険な言語なんでは?
439デフォルトの名無しさん
2024/03/29(金) 09:16:34.82ID:cTkAvXQI そもそも普通に書いててunsafe使いたいなって場面がない
多人数で書いてるならforbidで落としてもいいけど
コードレビューでちょっとでも見ればunsafe使ってることは明らかなんだし、いずれにしてもどうでもいい
多人数で書いてるならforbidで落としてもいいけど
コードレビューでちょっとでも見ればunsafe使ってることは明らかなんだし、いずれにしてもどうでもいい
440デフォルトの名無しさん
2024/03/29(金) 09:24:57.68ID:vaG7EqUh >>436
じゃunsafe使うな、で済む話じゃん。
じゃunsafe使うな、で済む話じゃん。
441デフォルトの名無しさん
2024/03/29(金) 09:49:54.05ID:AosFf04R442デフォルトの名無しさん
2024/03/29(金) 11:01:08.74ID:8PtB/vi4 rustもプログラマがザコだと使いこなせない言語なんだろ?
人材確保すら苦労するってメジャーになれるのかよ
人材確保すら苦労するってメジャーになれるのかよ
443デフォルトの名無しさん
2024/03/29(金) 11:23:44.57ID:34VMnlB4 unsafeでサッと書いたほうが出世できるぞ
444デフォルトの名無しさん
2024/03/29(金) 11:49:42.05ID:ZM8BmiyA たしかにプログラムの品質がいいから出世するって見たことないわ
逆にクソ過ぎて出世できない奴はいるかも知れんがそういう奴はプログラム云々の問題ではないからな
逆にクソ過ぎて出世できない奴はいるかも知れんがそういう奴はプログラム云々の問題ではないからな
445デフォルトの名無しさん
2024/03/29(金) 11:53:12.39ID:opHbD1qf unsafeは面倒
Rustで書いていてunsafeを使いたい気分になることがない
さらに通常のプログラミングでunsafeを使うメリットがあるケースが訪れることはまずない
Rustで書いていてunsafeを使いたい気分になることがない
さらに通常のプログラミングでunsafeを使うメリットがあるケースが訪れることはまずない
446デフォルトの名無しさん
2024/03/29(金) 11:54:18.08ID:K6ErCtbZ >>442
メジャーになれなくて何か問題あるの?
メジャーになれなくて何か問題あるの?
447デフォルトの名無しさん
2024/03/29(金) 12:08:03.79ID:6hM9S6Vd 初心者や一般的な人は、unsafeの使い所がないなら、unsafeを使うようなすごい人でもミスをしたり理解不足だったりするって事だから、すごい人が精進すれば解決でしょ。
448デフォルトの名無しさん
2024/03/29(金) 12:08:08.24ID:GuqFwMZD449デフォルトの名無しさん
2024/03/29(金) 12:13:58.45ID:E/kaNL72450デフォルトの名無しさん
2024/03/29(金) 12:15:29.32ID:vaG7EqUh >>448
言語機能的にunsafeって書かなければそもそも使えないじゃん。
言語機能的にunsafeって書かなければそもそも使えないじゃん。
451デフォルトの名無しさん
2024/03/29(金) 13:21:21.11ID:l8m+nc89 >>446
時間の無駄
時間の無駄
452デフォルトの名無しさん
2024/03/29(金) 13:35:34.69ID:ZM8BmiyA >>448
そのあたりの管理は開発TLの仕事だと思ってたがPMが兼任することもあるのね
そのあたりの管理は開発TLの仕事だと思ってたがPMが兼任することもあるのね
453デフォルトの名無しさん
2024/03/29(金) 16:25:54.97ID:34VMnlB4 unsafeでサクッと終わらせてどんどん仕事取ろうぜ
safeでチンタラやってる無能に仕事を回すな
safeでチンタラやってる無能に仕事を回すな
454デフォルトの名無しさん
2024/03/29(金) 17:20:13.23ID:Cl3C8AEw アンチはunsafeを使うと早く書けると誤解しているのが面白い
早くもなければ楽でもないので普通は使わない
早くもなければ楽でもないので普通は使わない
455デフォルトの名無しさん
2024/03/29(金) 17:36:40.68ID:cTkAvXQI 「借用エラー出たらとりあえずunsafeと書いとけば回避できる」くらいのイメージなんかね
456デフォルトの名無しさん
2024/03/29(金) 17:56:14.07ID:uhU4IUEm このスレの優秀な人たちを安月給で揃えたチーム作れたらunsafeについて真面目に取り組んでもいいんだが
457デフォルトの名無しさん
2024/03/29(金) 18:02:08.48ID:uhU4IUEm 正常なコミュニケーション力を持った優秀なエンジニア
→こいつらは出世するのでプログラミングスキルは生かされない方向に進む
正常なコミュニケーション力がない優秀なエンジニア
→こいつらはどうでもいいことばかりブツブツ言っててイマイチスキルが生かされない
どうしたら優秀なエンジニア揃えられるんや…
→こいつらは出世するのでプログラミングスキルは生かされない方向に進む
正常なコミュニケーション力がない優秀なエンジニア
→こいつらはどうでもいいことばかりブツブツ言っててイマイチスキルが生かされない
どうしたら優秀なエンジニア揃えられるんや…
458デフォルトの名無しさん
2024/03/29(金) 18:06:18.85ID:fG0MAqjd カチョー「では進捗を報告してください」
unsafe_man「アノー、チョット時間かかってオリマシテ、アンセーフが、ソノー(怒涛の勢いで難しいことを話し続ける)」
カチョー「???」
unsafe_man「アノー、チョット時間かかってオリマシテ、アンセーフが、ソノー(怒涛の勢いで難しいことを話し続ける)」
カチョー「???」
459デフォルトの名無しさん
2024/03/29(金) 18:22:45.54ID:TAofIzHh460デフォルトの名無しさん
2024/03/29(金) 18:29:23.69ID:/REVrZ9A >>459
すまん、集まってるとこの実名あげてくれんか?
すまん、集まってるとこの実名あげてくれんか?
461デフォルトの名無しさん
2024/03/29(金) 19:20:01.67ID:GuqFwMZD >>458
いきなり人格攻撃かよ?Rustらしいな
いきなり人格攻撃かよ?Rustらしいな
462デフォルトの名無しさん
2024/03/29(金) 19:31:34.50ID:wqpOcL9O NとかFとかは優秀な人がいるイメージがない
463デフォルトの名無しさん
2024/03/29(金) 19:54:25.38ID:M7FjmHlu unsafe使う機会ってほぼないよな
よほどシビアな低レベルライブラリ作成かFFI部分くらいじゃないか
よほどシビアな低レベルライブラリ作成かFFI部分くらいじゃないか
464デフォルトの名無しさん
2024/03/29(金) 19:58:01.23ID:wqpOcL9O 優秀なエンジニアは担当している仕事がいつ頃終わるか明確に答えられる人
でunsafeを使いこなせるかどうかなんか無関係
これいつまでかかるのと聞かれていつまでに終わるか言えて理由も言える人
でunsafeを使いこなせるかどうかなんか無関係
これいつまでかかるのと聞かれていつまでに終わるか言えて理由も言える人
465デフォルトの名無しさん
2024/03/29(金) 19:59:06.31ID:0Uoml8t7 システムプログラミング用途も売りにしてなかった?
Cと同等のことをしてみせようってんなら
unsafeくらい当たり前に常用するやろ?しらんけど
ボクは使いません!みたいな意見は誰も求めてないからw
Cと同等のことをしてみせようってんなら
unsafeくらい当たり前に常用するやろ?しらんけど
ボクは使いません!みたいな意見は誰も求めてないからw
466デフォルトの名無しさん
2024/03/29(金) 20:37:55.25ID:TAofIzHh unsafe使うと変更する時にだるくなるからできるだけ使わない
グローバル変数使うのと同じ気分
「グローバル変数くらい当たり前に常用するやろ?しらんけど
ボクは使いません!みたいな意見は誰も求めてないからw」
とか言われたら知らん
グローバル変数使うのと同じ気分
「グローバル変数くらい当たり前に常用するやろ?しらんけど
ボクは使いません!みたいな意見は誰も求めてないからw」
とか言われたら知らん
467デフォルトの名無しさん
2024/03/29(金) 20:41:59.79ID:wqpOcL9O 誰にも影響及ぼさないなら勝手に使えばいい
468デフォルトの名無しさん
2024/03/29(金) 20:47:48.55ID:0Uoml8t7 使う必要があるからunsafeってもんがあるんであって
使う必要がない人の意見や感想は求められてないんよ
使うべきとか使うべきじゃないとか
普通はどうとか普通はどうじゃないとか
無意味な応酬はやめよう
使う必要がない人の意見や感想は求められてないんよ
使うべきとか使うべきじゃないとか
普通はどうとか普通はどうじゃないとか
無意味な応酬はやめよう
469デフォルトの名無しさん
2024/03/29(金) 21:08:57.87ID:bd1Zch8f コーダーの「使う使わない」の問題じゃなくて、管理者の「許可する禁止する」の問題なんだよ。
470デフォルトの名無しさん
2024/03/29(金) 21:45:08.79ID:DW6NdCQ6471デフォルトの名無しさん
2024/03/29(金) 21:46:36.17ID:wXELlTG7 >>468
一連のunsafeコントで初めてまともな意見だな
一連のunsafeコントで初めてまともな意見だな
472デフォルトの名無しさん
2024/03/29(金) 21:52:31.85ID:TAofIzHh エンジニアが判断すべき問題を管理者が決定してるようなレベルの開発現場まで
Rustが普及する日は来るんだろうか
上の方でも言われてたけどコーダー集まらない問題に直面しそうだが
Rustが普及する日は来るんだろうか
上の方でも言われてたけどコーダー集まらない問題に直面しそうだが
473デフォルトの名無しさん
2024/03/29(金) 22:06:45.92ID:wqpOcL9O Rustはコーダーは集まらんだろ
普通は外注先がほぼコーディングできない新人を連れてきて実質的にこちらが教育する羽目になる
ある程度使えるようになるとそいつがどこか単価の高いところに送られてまた代わりの新人が送られてくる
大手だとこれの繰り返しだがRustはそれが難しい
普通は外注先がほぼコーディングできない新人を連れてきて実質的にこちらが教育する羽目になる
ある程度使えるようになるとそいつがどこか単価の高いところに送られてまた代わりの新人が送られてくる
大手だとこれの繰り返しだがRustはそれが難しい
474デフォルトの名無しさん
2024/03/29(金) 22:29:09.47ID:wqpOcL9O 意図的にどこかで誰かが資金を投入してRustコーダーを栽培()しないと
増えるわけがない
javaやpythonじゃないんだから
野良Rustコーダーなんて存在しない
使える人間は100%C++使いなので引っ張ってこれない
増えるわけがない
javaやpythonじゃないんだから
野良Rustコーダーなんて存在しない
使える人間は100%C++使いなので引っ張ってこれない
475デフォルトの名無しさん
2024/03/29(金) 22:30:50.06ID:UmT7/PmU エンジニアの趣味なら高尚な言語追求してもいいと思うけど、ビジネスで使う言語はあくまでビジネスメリットが大きなもの選ばないと立ちいかなくなるよな
476デフォルトの名無しさん
2024/03/29(金) 22:35:31.54ID:B//2x2dm まあJavaとかC++のバケモノみたいな分量のコーディング規約の存在を考えると、「Unsafe使うな」の一言で済むRustは原理的にはビジネス的なメリットありそう
477デフォルトの名無しさん
2024/03/29(金) 22:48:02.40ID:0Uoml8t7 それよりもホントにシステムプログラミングできてんのかが興味あるわ
CからはOSならばUnixやLinuxやWindowsが生まれてきたけど
Rustからは一体どんな素晴らしいものが生まれてくるんだろうか?
Cより書きやすくて? 安全なんだよね? 期待していいんよね?
Systems programming
https://en.wikipedia.org/wiki/Systems_programming
e.g. operating systems, computational science applications, game engines, industrial automation, and software as a service applications
CからはOSならばUnixやLinuxやWindowsが生まれてきたけど
Rustからは一体どんな素晴らしいものが生まれてくるんだろうか?
Cより書きやすくて? 安全なんだよね? 期待していいんよね?
Systems programming
https://en.wikipedia.org/wiki/Systems_programming
e.g. operating systems, computational science applications, game engines, industrial automation, and software as a service applications
478デフォルトの名無しさん
2024/03/29(金) 23:01:23.64ID:B//2x2dm 今更OSを書いたところでビジネスに出来るのは一握りの人間だからCの頃とは話がちょっと違いそうではある
でも期待するのは自由だ
Rustファンはみんな期待している
でも期待するのは自由だ
Rustファンはみんな期待している
479デフォルトの名無しさん
2024/03/29(金) 23:11:14.94ID:JKQcuRe5 >>477
interfaceって組み込み専門誌は毎月お題スレみたいな問題を解く記事が出てたり、Rust特集の時でもOSを作るどころか、OS乗らないような環境(Cとアセンブラの独壇場。C++不可の世界)で組み込みRust使う記事とかあったよ。
ビジネスになるかはともかく、技術的には余裕なはず。
interfaceって組み込み専門誌は毎月お題スレみたいな問題を解く記事が出てたり、Rust特集の時でもOSを作るどころか、OS乗らないような環境(Cとアセンブラの独壇場。C++不可の世界)で組み込みRust使う記事とかあったよ。
ビジネスになるかはともかく、技術的には余裕なはず。
480デフォルトの名無しさん
2024/03/29(金) 23:55:56.73ID:VDRjyKLu 既にネットインフラは次々とRust製
ソースは>>51
ソースは>>51
481デフォルトの名無しさん
2024/03/30(土) 00:06:31.16ID:v9pXWAWc >>472
Rustは仕様や周辺ツールが飛びぬけて優秀な故
JavaやPHP等他の言語と違って素人でも適当に書いても
大した問題は起こらないから「技術者の立ち位置」を守る観点で見ると
大規模開発現場で普及する事はこれからも無いよ。
Rustは仕様や周辺ツールが飛びぬけて優秀な故
JavaやPHP等他の言語と違って素人でも適当に書いても
大した問題は起こらないから「技術者の立ち位置」を守る観点で見ると
大規模開発現場で普及する事はこれからも無いよ。
482デフォルトの名無しさん
2024/03/30(土) 01:01:10.58ID:7ofxl8DK それで守られるのはITコン猿の立ち位置じゃね?
エンジニアは長期的な保身より目の前の利便性に飛びつきそうだが
エンジニアは長期的な保身より目の前の利便性に飛びつきそうだが
483デフォルトの名無しさん
2024/03/30(土) 01:46:17.09ID:v9pXWAWc 知ってる人間は黙ってRustの恩恵を受けておけば良くて
人売りサル業界は人/月だコミュニケーションスキルだと
喚いていれば良い。
人売りサル業界は人/月だコミュニケーションスキルだと
喚いていれば良い。
484デフォルトの名無しさん
2024/03/30(土) 07:28:24.91ID:6WvjgMqi C++が流行った経緯知ってる奴なら想像できるだろ。
C++が出た当初はSTLもテンプレートもなかったしライブラリなんかはObjective-Cのほうが多いくらいだった。
でも流行ったのはC++。
C++が出た当初はSTLもテンプレートもなかったしライブラリなんかはObjective-Cのほうが多いくらいだった。
でも流行ったのはC++。
485デフォルトの名無しさん
2024/03/30(土) 13:15:43.05ID:Kpt9p6/a C++はわかりやすく拡張されたCだからさ
ライブラリのAPIとかCばかりだから最悪そのまんまCでも良かった
NEXTSTEPでObjecive-C開発は呪術で入門書もなく上手くいかなくても何が悪いのかさっぱりわからない
日本語の書籍がないのが一番つらかった
ライブラリのAPIとかCばかりだから最悪そのまんまCでも良かった
NEXTSTEPでObjecive-C開発は呪術で入門書もなく上手くいかなくても何が悪いのかさっぱりわからない
日本語の書籍がないのが一番つらかった
486デフォルトの名無しさん
2024/03/30(土) 20:58:56.17ID:IReUP+am 当時NeXTに触れてたやつおるん?
たまげたなぁ
俺なんか図書館の奥に潜んでるObjective-Cの本読んでたよ
いつごろだったかなぁ日本語のやつあったけどなぁ
まさかmacOSで脚光浴びるとは思いもせずに
たまげたなぁ
俺なんか図書館の奥に潜んでるObjective-Cの本読んでたよ
いつごろだったかなぁ日本語のやつあったけどなぁ
まさかmacOSで脚光浴びるとは思いもせずに
487デフォルトの名無しさん
2024/03/30(土) 21:08:50.38ID:Kpt9p6/a 研究室にあったんよ
当時でももう型オチででも予算無いからリプレースも出来ず
MOのデータを消しながら使ってた
古いUNIX系の雑誌の特集見てそれをポチポチやってクソうるさくて遅いHDDの音聞きながらコンパイル待って…と言う感じで
自分は図書館に埋もれたModulaの本を読んでた
当時でももう型オチででも予算無いからリプレースも出来ず
MOのデータを消しながら使ってた
古いUNIX系の雑誌の特集見てそれをポチポチやってクソうるさくて遅いHDDの音聞きながらコンパイル待って…と言う感じで
自分は図書館に埋もれたModulaの本を読んでた
488デフォルトの名無しさん
2024/03/30(土) 21:14:51.55ID:IReUP+am 羨ましい
俺は演習室のBSDのWMをafterstepにしてニマニマしてただけ
あー羨ましい
俺は演習室のBSDのWMをafterstepにしてニマニマしてただけ
あー羨ましい
489デフォルトの名無しさん
2024/03/30(土) 22:32:19.21ID:VLAlfJh3 モーモーちゃんに入れている人は居たな
490デフォルトの名無しさん
2024/03/31(日) 11:42:27.74ID:lJUXuXT4 C の宣言の文法が無茶苦茶なのを C++ で改良するかどうか迷った話は D&E に書いてある。
結局は C のままでいくと判断した。
良くなるのだとしても、少なくとも一時的には大きな混乱が起こることを C++ は許容しなかった。
言語ってのはそれを取り巻くエコシステム (言語ユーザーやドキュメントも含む) と離れて成立することはないってこと。
C++ は C のツールチェインにほとんどそのまま乗っかる形で (最初は) 普及したし。
Rust はツールチェインの整備も一緒に取り組んだというのは普及の一助になったとは思うけど、
今までに作られた膨大なソフトウェア資源の最も低レイヤの部分は結局は C なんだよね。
そもそも ABI が C を基準にした仕様だったりするので
他の言語と接続するときは皆が C に合わせる形になる。
もしこれから Rust がもっと普及することがあったとしても低レイヤでは C の残滓はいつまでも消えないと思う。
結局は C のままでいくと判断した。
良くなるのだとしても、少なくとも一時的には大きな混乱が起こることを C++ は許容しなかった。
言語ってのはそれを取り巻くエコシステム (言語ユーザーやドキュメントも含む) と離れて成立することはないってこと。
C++ は C のツールチェインにほとんどそのまま乗っかる形で (最初は) 普及したし。
Rust はツールチェインの整備も一緒に取り組んだというのは普及の一助になったとは思うけど、
今までに作られた膨大なソフトウェア資源の最も低レイヤの部分は結局は C なんだよね。
そもそも ABI が C を基準にした仕様だったりするので
他の言語と接続するときは皆が C に合わせる形になる。
もしこれから Rust がもっと普及することがあったとしても低レイヤでは C の残滓はいつまでも消えないと思う。
491デフォルトの名無しさん
2024/03/31(日) 15:29:48.98ID:dXzgmT0X ABI stableにするのはエディション単位でいいんだからさっさとやればいいのにとは思う
492デフォルトの名無しさん
2024/03/31(日) 16:44:42.12ID:PaHOJUqO >>490
Rustで書いたOSが大流行でもしない限りCと同じようにはならない。
ただ、Linux は Rust を取り込み始めたので何十年も掛けてゆっくり Rust 化する可能性はある。
そうなると移行したライブラリは増え続け、50年後ぐらいには今のCと同じようになっているかも知れない。
もちろんその頃には別の新言語が出てきていて Rust が時代遅れな言語になっているわけだが。
Rustで書いたOSが大流行でもしない限りCと同じようにはならない。
ただ、Linux は Rust を取り込み始めたので何十年も掛けてゆっくり Rust 化する可能性はある。
そうなると移行したライブラリは増え続け、50年後ぐらいには今のCと同じようになっているかも知れない。
もちろんその頃には別の新言語が出てきていて Rust が時代遅れな言語になっているわけだが。
493デフォルトの名無しさん
2024/03/31(日) 19:15:56.54ID:r1rO2LMH ABI部分のコーディングする人はプログラマーの1%もいないんだから影響は昔も今後もない
多言語システムはそれより多いけどそこはABIではなく様々な通信プロトコルなどを介する
多言語システムはそれより多いけどそこはABIではなく様々な通信プロトコルなどを介する
494デフォルトの名無しさん
2024/03/31(日) 19:55:09.30ID:T95JlUSJ ABIこそ良い奴が出たら置き換えられそうだけどな
現状良い奴がないだけで
現状良い奴がないだけで
495デフォルトの名無しさん
2024/03/31(日) 21:03:45.67ID:rhKYEfc8496デフォルトの名無しさん
2024/03/31(日) 22:06:47.20ID:HimKkZni いやまあ1%もいないんじゃない?
497デフォルトの名無しさん
2024/03/31(日) 23:37:37.59ID:PUonJ710 そりゃABIがらみのプログラミングよりはProtocol Buffersなど使う方が多いんだろうけど
498デフォルトの名無しさん
2024/04/01(月) 19:53:32.69ID:QJf4H8j7 そんなん言ったらrustを必要とするプログラマこそ1%もおらんけどな。
499デフォルトの名無しさん
2024/04/01(月) 20:06:07.63ID:lQvViLVK C++より多いから問題ない
500デフォルトの名無しさん
2024/04/01(月) 22:56:49.63ID:wqqAiPYQ 「ソフトウェアはメモリ安全でなければならない」との声明を発表、米ホワイトハウス:「C」「C++」よりも「Rust」などの言語を推奨
https://atmarkit.itmedia.co.jp/ait/articles/2403/18/news045.html
https://atmarkit.itmedia.co.jp/ait/articles/2403/18/news045.html
501デフォルトの名無しさん
2024/04/02(火) 08:53:54.00ID:i0O60K8Z >>500
メモリ安全というならSafe Rustのみだな。Unsafe Rustは禁止すべき。
c++標準も、Safe Rust に倣って
c++ subset for safe programming
とか 作ればいいのに。
メモリ安全というならSafe Rustのみだな。Unsafe Rustは禁止すべき。
c++標準も、Safe Rust に倣って
c++ subset for safe programming
とか 作ればいいのに。
502デフォルトの名無しさん
2024/04/02(火) 09:19:58.94ID:D6QICSr8 メモリの具体的な番地やレイアウトに依存する低レイヤの事情が消えてなくなるわけじゃないからな。
503デフォルトの名無しさん
2024/04/02(火) 09:39:48.87ID:EeET/S7r java, python みたいな言語ならメモリ安全だよ。お前らの用途ならそれで十分だろ。
504デフォルトの名無しさん
2024/04/02(火) 11:06:55.03ID:lti1kN7b >>503
安全じゃ無いぞ
安全じゃ無いぞ
505デフォルトの名無しさん
2024/04/02(火) 14:49:37.59ID:b3hi6lw5506デフォルトの名無しさん
2024/04/02(火) 17:14:03.69ID:kERS+9TD >>503
nullポイントがある時点で…
一応JavaはStream APIと同じくらいのタイミングでOptional<T>が追加されてたはずだけど,だからといって従来の「失敗したらnullを返すメソッド」がOptionalを返すように修正されたわけじゃないしなぁ
nullポイントがある時点で…
一応JavaはStream APIと同じくらいのタイミングでOptional<T>が追加されてたはずだけど,だからといって従来の「失敗したらnullを返すメソッド」がOptionalを返すように修正されたわけじゃないしなぁ
507デフォルトの名無しさん
2024/04/02(火) 17:14:28.23ID:kERS+9TD nullポインタだ
ごめんなさい
ごめんなさい
508デフォルトの名無しさん
2024/04/02(火) 18:23:13.98ID:mnREx4SD ぬるぽ例外で止まるのはNone.unwrap()のpanicで止まるのと同じで安全に分類される
nullから何かを読み出して動き続けると危険
nullから何かを読み出して動き続けると危険
509デフォルトの名無しさん
2024/04/02(火) 18:43:54.77ID:0YGJ2wff510デフォルトの名無しさん
2024/04/02(火) 18:54:06.54ID:mnREx4SD メモリ安全の文脈だからそういう次元の話ではないのだが
511デフォルトの名無しさん
2024/04/02(火) 18:55:57.61ID:i0O60K8Z >>505
コーダー向けだから別言語でいいよ。
new deleteは禁止していいし、ポインタ演算その他のポインタ処理は全部禁止でいい。生ポインタのヒープ領域コピーも禁止していいし、そもそも生ポインタ禁止で参照のみ可にしてもいい。
operator関数定義も禁止でいいんじゃない?
コーダー向けだから別言語でいいよ。
new deleteは禁止していいし、ポインタ演算その他のポインタ処理は全部禁止でいい。生ポインタのヒープ領域コピーも禁止していいし、そもそも生ポインタ禁止で参照のみ可にしてもいい。
operator関数定義も禁止でいいんじゃない?
512デフォルトの名無しさん
2024/04/02(火) 19:03:35.75ID:mnREx4SD ちょっと何が禁止なのか分からないのでローカル変数の参照をreturnしておきますね
513デフォルトの名無しさん
2024/04/02(火) 19:19:41.72ID:qL7KDCYj rustって楽しい?
514デフォルトの名無しさん
2024/04/02(火) 19:20:30.34ID:kERS+9TD どの言語にも共通するけど,書けるようになってくると楽しいよ
515デフォルトの名無しさん
2024/04/02(火) 19:40:54.12ID:lti1kN7b でもってライブラリが足りて無いなって思って「使えね」ってなるんだよね
516デフォルトの名無しさん
2024/04/02(火) 19:43:54.71ID:ptOw8ylO >>512
あ、未定義と定義されているのも全部禁止ね。
あ、未定義と定義されているのも全部禁止ね。
517デフォルトの名無しさん
2024/04/02(火) 20:13:32.30ID:+hiVU8fL >>500
これでRustの知名度も上がるし普及も加速しそう
これでRustの知名度も上がるし普及も加速しそう
518デフォルトの名無しさん
2024/04/02(火) 20:26:12.86ID:lti1kN7b >>517
結構前にもNASAが同じ様な事言って今やんw
結構前にもNASAが同じ様な事言って今やんw
519デフォルトの名無しさん
2024/04/02(火) 20:31:06.25ID:EeET/S7r rustを無理に使ってまですることがぬるぽ対策とかアホだよね
520デフォルトの名無しさん
2024/04/02(火) 20:45:15.37ID:lti1kN7b521デフォルトの名無しさん
2024/04/02(火) 21:20:14.32ID:+5bQ5ala522デフォルトの名無しさん
2024/04/02(火) 21:56:04.08ID:mnREx4SD Rust愛用者だけど今のホワイトハウスに推されると逆に不安になるんだがw
ONCDは健全なのかな
ONCDは健全なのかな
523デフォルトの名無しさん
2024/04/02(火) 22:51:50.04ID:ZP8DsSPi524デフォルトの名無しさん
2024/04/02(火) 23:24:29.45ID:JjgiIhmH ワロタ
NSAとNASAの区別もできんとはww
メッセージを出してるところが広がってトーンも厳しくなってきてるのは確か
2022/11 NSA
2023/09 CISA
2023/12 CISA+NSA,+FBI+Five Eyesの各機関
2024/02 White House(ONCD)
NSAとNASAの区別もできんとはww
メッセージを出してるところが広がってトーンも厳しくなってきてるのは確か
2022/11 NSA
2023/09 CISA
2023/12 CISA+NSA,+FBI+Five Eyesの各機関
2024/02 White House(ONCD)
525デフォルトの名無しさん
2024/04/02(火) 23:39:08.04ID:/KZzSXx2 とりあえず良いcrateが増えまくってほしいな
526デフォルトの名無しさん
2024/04/02(火) 23:51:33.79ID:DOFjhDY0527デフォルトの名無しさん
2024/04/02(火) 23:57:17.27ID:ULMcj34Q 外部のお墨付きを欲しがる時点でオワっとるんよ
言語として
ここでそういう話題使って必死で盛り上げようとして
消えそうな火に風送ってるつもりかしらんけど
言語として
ここでそういう話題使って必死で盛り上げようとして
消えそうな火に風送ってるつもりかしらんけど
528デフォルトの名無しさん
2024/04/03(水) 00:07:33.86ID:xB8sPKZQ IT大手ライバル同士が
GAFAMからHUAWEIまで一致団結して
Rust Foundationを設立した時点で未来は確定していた
そしてRustに対抗できるライバル言語の芽が今も存在しない
GAFAMからHUAWEIまで一致団結して
Rust Foundationを設立した時点で未来は確定していた
そしてRustに対抗できるライバル言語の芽が今も存在しない
529デフォルトの名無しさん
2024/04/03(水) 05:31:15.82ID:SWmJ9bDO >>527
話題にも上がらないよりまし
話題にも上がらないよりまし
530デフォルトの名無しさん
2024/04/03(水) 07:36:47.52ID:ClJR5oeK Rustの代替になる思想の言語が全くそれ以降全く見ないからな。
今のところGCレスでメモリ安全に向き合った唯一の言語でねえの?
後発の言語は Rust みたいに複雑なコンパイル時の検証を最初から書こうなんてそうそう思えないんじゃないかな。
今のところGCレスでメモリ安全に向き合った唯一の言語でねえの?
後発の言語は Rust みたいに複雑なコンパイル時の検証を最初から書こうなんてそうそう思えないんじゃないかな。
531デフォルトの名無しさん
2024/04/03(水) 08:17:45.92ID:OgaFV8I4532デフォルトの名無しさん
2024/04/03(水) 08:58:53.93ID:7dkIXzmY >>530
メモリ安全に向き合う、程度ならそれこそc++11が先駆けだろ。
過去互換性のせいで徹底できないけど。
それよりもRustはスタックフレーム指向であることに価値がある。
スタック is god, 再帰 is god.
メモリ安全に向き合う、程度ならそれこそc++11が先駆けだろ。
過去互換性のせいで徹底できないけど。
それよりもRustはスタックフレーム指向であることに価値がある。
スタック is god, 再帰 is god.
533デフォルトの名無しさん
2024/04/03(水) 11:38:42.38ID:TbyA9/um534デフォルトの名無しさん
2024/04/03(水) 11:38:56.67ID:zWYr6uc2535デフォルトの名無しさん
2024/04/03(水) 13:08:37.11ID:VOIzFFgw536デフォルトの名無しさん
2024/04/03(水) 13:33:20.93ID:7LWlVk3J Rustで過去に結構破壊的変更がされてたらしいけどそれは普及してなかったからじゃないのか
wikipedia
> 2015年に1.0版がリリースされるまでにいくつもの破壊的な仕様変更があったが、1.0版以降は基本的には後方互換を保って6週間間隔で定期的にリリースされている。
wikipedia
> 2015年に1.0版がリリースされるまでにいくつもの破壊的な仕様変更があったが、1.0版以降は基本的には後方互換を保って6週間間隔で定期的にリリースされている。
537デフォルトの名無しさん
2024/04/03(水) 21:45:24.20ID:ClJR5oeK GCやJITは銀の弾丸と思われていろんな後発言語に取り込まれたけど、所有権は最初から組み込むには高度すぎるがエコシステム成熟前に組み込まないといけないという制約が大きいんだろうな。
538デフォルトの名無しさん
2024/04/03(水) 22:40:40.78ID:7LWlVk3J 後発言語???
539デフォルトの名無しさん
2024/04/04(木) 03:50:23.61ID:6dtGhNgR >>537
所有権は最終的にはプログラム間の境界の問題になるから、c++のスマートポインタのようにアダプタで管理範囲を調整することで改善可能。
適切なアダプタを用意しても境界のプロトコルをどうやって徹底するかという問題は残るから、Rustみたいに言語レベルで強制できると頑強になる。
ただ、Rustみたいにガチガチにすると設計の柔軟性を失うから、実装も早すぎる最適化になりがち。Rustの絶壁の学習曲線と相まって、開発初期のRust導入はプロジェクトを破綻させる要因となりうる。Rustが適しているのは、ある程度枯れた設計の実装を置き換えるようなプロジェクトかと。
所有権は最終的にはプログラム間の境界の問題になるから、c++のスマートポインタのようにアダプタで管理範囲を調整することで改善可能。
適切なアダプタを用意しても境界のプロトコルをどうやって徹底するかという問題は残るから、Rustみたいに言語レベルで強制できると頑強になる。
ただ、Rustみたいにガチガチにすると設計の柔軟性を失うから、実装も早すぎる最適化になりがち。Rustの絶壁の学習曲線と相まって、開発初期のRust導入はプロジェクトを破綻させる要因となりうる。Rustが適しているのは、ある程度枯れた設計の実装を置き換えるようなプロジェクトかと。
540デフォルトの名無しさん
2024/04/04(木) 04:13:47.93ID:KZy/sIny Rustはむしろリファクタリングにも向いていてなかなか良い言語だぜ
とりあえず動くように雑に書いて動かしてみて
次に機能追加充実させる上で整理しながらモジュール化や共通事項のtrait化など
このようなリファクタリング過程で
他の言語だとメモリ安全性だけでなく書き換え競合やヌル値エラー値取り扱いミスなどエンバグすることも多いが
Rustではコンパイル通せばそれらの心配がなくリファクタリングできる
とりあえず動くように雑に書いて動かしてみて
次に機能追加充実させる上で整理しながらモジュール化や共通事項のtrait化など
このようなリファクタリング過程で
他の言語だとメモリ安全性だけでなく書き換え競合やヌル値エラー値取り扱いミスなどエンバグすることも多いが
Rustではコンパイル通せばそれらの心配がなくリファクタリングできる
541デフォルトの名無しさん
2024/04/04(木) 08:02:04.20ID:KuogGH/c そもそもGC無しの言語ってニッチじゃない?
当面は、Rustで充足されて安泰な気がする。
当面は、Rustで充足されて安泰な気がする。
542デフォルトの名無しさん
2024/04/04(木) 08:06:01.77ID:wZ/e8tnl うむり、実用言語では現時点で安全性とスピードを高い次元で両立できてるのはRustだけかもね。
関数型言語にも良いのあるけど、普及しなさそうだしね…。
(OCamlとか次世代HaskellらしいIdrisとか)
それにCとアセンブラしかない分野(C++不可なくらい低スペックな組み込み)でC++以降のモダンな言語が使えるのは大きい。
関数型言語にも良いのあるけど、普及しなさそうだしね…。
(OCamlとか次世代HaskellらしいIdrisとか)
それにCとアセンブラしかない分野(C++不可なくらい低スペックな組み込み)でC++以降のモダンな言語が使えるのは大きい。
543デフォルトの名無しさん
2024/04/04(木) 08:41:03.15ID:VIrJEXhK 学問的には合理的な型システムとか検証器とかの研究は大きく進んでるけど
メモリの動作モデルをそこそこちゃんと仕様にしてるのは C/C++ しかないんだよね。
LLVM が C/C++ を前提にしてるところもあるし、
Rust もそれに合わせる形になってるところもある。
C/C++ 的な分野をよりよくやる言語と考えると Rust はとても良い。
メモリの動作モデルをそこそこちゃんと仕様にしてるのは C/C++ しかないんだよね。
LLVM が C/C++ を前提にしてるところもあるし、
Rust もそれに合わせる形になってるところもある。
C/C++ 的な分野をよりよくやる言語と考えると Rust はとても良い。
544デフォルトの名無しさん
2024/04/04(木) 12:25:37.65ID:Gnl54rZ8 すまんが↓これが動く理由を教えて欲しいんだけどさあ
https://paiza.io/projects/uhC43ajorg-qaLG7mXbw7w
一見すると5行目で所有権が失われて、6行目で使ってるように見えるんだけど・・・・
これって5行目が借用に推定されてるの?
それともリテラルを引数にした場合だと5行目で「1」が他のスタックにコピーされて、所有権が失われる問題なんか起きないのかな?
へるぷみい
https://paiza.io/projects/uhC43ajorg-qaLG7mXbw7w
一見すると5行目で所有権が失われて、6行目で使ってるように見えるんだけど・・・・
これって5行目が借用に推定されてるの?
それともリテラルを引数にした場合だと5行目で「1」が他のスタックにコピーされて、所有権が失われる問題なんか起きないのかな?
へるぷみい
545デフォルトの名無しさん
2024/04/04(木) 12:36:31.67ID:xh1kANkn マクロだからセーフ
546デフォルトの名無しさん
2024/04/04(木) 12:40:39.97ID:yz59nStO >>544
値とその所有権が複製されて関数fに渡される分とそのまま残る分の2つになる
値とその所有権が複製されて関数fに渡される分とそのまま残る分の2つになる
547デフォルトの名無しさん
2024/04/04(木) 12:49:08.15ID:w8P1RFve 値が複製されて、複製された値の所有権が関数fに渡るだな。
所有権の複製とかいうクソワードは避けてくれ。
所有権の複製とかいうクソワードは避けてくれ。
548デフォルトの名無しさん
2024/04/04(木) 14:09:00.66ID:VIrJEXhK549デフォルトの名無しさん
2024/04/04(木) 14:21:30.05ID:Gnl54rZ8 そう言うことなのか、ありがとう!
理由が分からなかったから不気味だったぜ
理由が分からなかったから不気味だったぜ
550デフォルトの名無しさん
2024/04/04(木) 15:21:14.87ID:AF0jRQyM551デフォルトの名無しさん
2024/04/04(木) 15:34:13.46ID:1vyOHDUL 「違和感を感じる」という表現に違和感を感じる
552デフォルトの名無しさん
2024/04/04(木) 18:59:50.97ID:mbQWc9lN >>551
滑ってるぞ
滑ってるぞ
553デフォルトの名無しさん
2024/04/04(木) 19:04:00.82ID:mNkWQBjH 感じてるから違和「感」だからね
要は頭痛が痛いと同じ
要は頭痛が痛いと同じ
554デフォルトの名無しさん
2024/04/04(木) 19:08:09.03ID:v0TcrcAn 違和感がある。これでどうだ
555デフォルトの名無しさん
2024/04/04(木) 19:17:51.63ID:v7LceGlx556デフォルトの名無しさん
2024/04/04(木) 20:07:49.07ID:xDxHg+AD >>542
embedded 対応アーキ少なくね?
embedded 対応アーキ少なくね?
557デフォルトの名無しさん
2024/04/04(木) 23:05:07.77ID:94OMF7T7 >>553
「違和感を感じる」は「頭痛が痛い」とは違って重言ではないよ
https://togetter.com/li/2067771
https://www.nhk.or.jp/bunken/research/kotoba/20240101_4.html
「違和感を感じる」は「頭痛が痛い」とは違って重言ではないよ
https://togetter.com/li/2067771
https://www.nhk.or.jp/bunken/research/kotoba/20240101_4.html
558デフォルトの名無しさん
2024/04/04(木) 23:18:56.70ID:94OMF7T7559デフォルトの名無しさん
2024/04/05(金) 00:09:35.95ID:Lw8p7kTG560デフォルトの名無しさん
2024/04/05(金) 00:21:09.11ID:dub3Z8tI 後発言語?
561デフォルトの名無しさん
2024/04/05(金) 00:50:16.55ID:Lw8p7kTG 少し前まで次世代言語と言われてた程度には後発。
鯖向け言語で終わると思ってたら、マジでC/アセンブラの牙城を崩し始めるとは思わんかった。
むしろ崩し始めることすら無理だと思ってた。
鯖向け言語で終わると思ってたら、マジでC/アセンブラの牙城を崩し始めるとは思わんかった。
むしろ崩し始めることすら無理だと思ってた。
562デフォルトの名無しさん
2024/04/05(金) 05:07:52.53ID:CPVE6BHF563デフォルトの名無しさん
2024/04/05(金) 08:11:28.72ID:Lw8p7kTG Rust知ってれば安全性の高いシステム組めますと言うアピールになるし、C++にもその安全性のための知見は役立つ。
複数言語使えますってだけでもアピールになるしね。
Rustは多分仕事自体はまだ多くない。
これからアピールして増やしていく感じなので、両方使えてた方がいい。
複数言語使えますってだけでもアピールになるしね。
Rustは多分仕事自体はまだ多くない。
これからアピールして増やしていく感じなので、両方使えてた方がいい。
564デフォルトの名無しさん
2024/04/06(土) 22:48:03.64ID:4i1Gvjc8 rustというものがありながらなぜ大部分のコードはC言語なのかを知るために現場に行くのもアリ
565デフォルトの名無しさん
2024/04/06(土) 23:06:32.76ID:7kpWL/Du Rustが実用的になったのは2020年
それ以降の新規案件はRustになっている
それ以降の新規案件はRustになっている
566デフォルトの名無しさん
2024/04/07(日) 01:26:10.29ID:Hmt7T+4v Rustへの移行は始まったばかりだからまだまだCが残っているのは当たり前
567デフォルトの名無しさん
2024/04/07(日) 10:55:29.15ID:QD1FKAnH 絶壁の学習曲線。
貧弱なライブラリと人材。
早すぎる最適化。
しばらくは既存コード置き換えが中心だし、今後もプロジェクト初期のプロトタイピングで使われることは無いだろう。
貧弱なライブラリと人材。
早すぎる最適化。
しばらくは既存コード置き換えが中心だし、今後もプロジェクト初期のプロトタイピングで使われることは無いだろう。
568デフォルトの名無しさん
2024/04/07(日) 14:17:46.28ID:vzw88H1n P系言語の糞思考に染まっていない初心者こそ
最初にRustを学ぶべき
最初にRustを学ぶべき
569デフォルトの名無しさん
2024/04/07(日) 18:04:59.36ID:Sj2oLPpI >>567
移植なんて無駄な作業はどの言語間でも行われることが少なく
移植なんて無駄な作業はどの言語間でも行われることが少なく
570デフォルトの名無しさん
2024/04/07(日) 18:05:33.79ID:nD4MmBKu 初手Rustは冗談抜きで2024以降だと選択肢に入るんじゃないか
571デフォルトの名無しさん
2024/04/07(日) 18:09:00.76ID:Sj2oLPpI572デフォルトの名無しさん
2024/04/07(日) 18:16:09.73ID:TV6Dkj8m573デフォルトの名無しさん
2024/04/08(月) 02:24:45.08ID:BHlkyWwA574デフォルトの名無しさん
2024/04/08(月) 03:09:59.48ID:BqmMXmQi 単なる感想を必死にウソ扱いして何がしたいんだコイツw
575デフォルトの名無しさん
2024/04/08(月) 11:48:22.86ID:hzcejt90 ライブラリはPythonと比べると流石に貧弱
特に数値計算とか物理・機械学習系
簡単な数値計算の時点でnumpy•scipyのようなデファクトがなく、雑魚が乱立している
もっと高度な計算系ではもっと雑魚が乱立しているか、そもそもない
特に数値計算とか物理・機械学習系
簡単な数値計算の時点でnumpy•scipyのようなデファクトがなく、雑魚が乱立している
もっと高度な計算系ではもっと雑魚が乱立しているか、そもそもない
576デフォルトの名無しさん
2024/04/08(月) 12:32:47.46ID:64QjhTLf >>575
キチガイアンチ
すべての分野でライブラリが充実している言語は存在しない
ある分野で一番充実している言語を棍棒にしたら他のすべての言語が負けるのは当たり前
そういう無意味なことをして叩いて楽しいか?
キチガイアンチ
すべての分野でライブラリが充実している言語は存在しない
ある分野で一番充実している言語を棍棒にしたら他のすべての言語が負けるのは当たり前
そういう無意味なことをして叩いて楽しいか?
577デフォルトの名無しさん
2024/04/08(月) 13:16:14.61ID:JoalanBl578デフォルトの名無しさん
2024/04/08(月) 14:02:16.22ID:7wfBslr8 >>576
そこは「Rustなら〇〇分野のライブラリがどの他言語より充実している」と反論するところだろ。
そこは「Rustなら〇〇分野のライブラリがどの他言語より充実している」と反論するところだろ。
579デフォルトの名無しさん
2024/04/08(月) 14:10:54.87ID:7wfBslr8580デフォルトの名無しさん
2024/04/08(月) 14:43:36.67ID:IC0NBj1d Crypto分野はRustが他言語よりも充実してるかもね
581デフォルトの名無しさん
2024/04/08(月) 15:06:06.34ID:rjHvzTUw ライブラリの多さってイコールでユーザの多さなんだよ
更にいうとその言語開発者の意欲の表れでもある
ライブラリが少ないという事はユーザが少ない
更に少ないユーザの中でも意欲の有る人間は少数って証明なんだよね
更にいうとその言語開発者の意欲の表れでもある
ライブラリが少ないという事はユーザが少ない
更に少ないユーザの中でも意欲の有る人間は少数って証明なんだよね
582デフォルトの名無しさん
2024/04/08(月) 15:43:54.88ID:JoalanBl いやまあ数はあるんよ数は
意欲のある人はいるっぽいんだけど、デファクトとるようなライブラリってやっぱりそれなりの人数でちゃんと資金とって作られてるんだよな
資金取るのは個人の意欲だけじゃなくて、お金のある人を納得させる理屈が必要で、少し前までのRustは少なくとも数値計算の分野でそれが出来る言語ではなかったと思う
意欲のある人はいるっぽいんだけど、デファクトとるようなライブラリってやっぱりそれなりの人数でちゃんと資金とって作られてるんだよな
資金取るのは個人の意欲だけじゃなくて、お金のある人を納得させる理屈が必要で、少し前までのRustは少なくとも数値計算の分野でそれが出来る言語ではなかったと思う
583デフォルトの名無しさん
2024/04/08(月) 16:39:42.51ID:9qnuy4NE てかrustユーザーってnvidiaのcudaサポートの酷さにガチギレするような奴ばっかでしょ。
そんなんで数値計算ライブラリが入るわけがない。
そんなんで数値計算ライブラリが入るわけがない。
584デフォルトの名無しさん
2024/04/08(月) 17:11:27.78ID:7wfBslr8 初心者向けのSimplified Rustと、
c/c++ライブラリバインドを強化したAdaptor Rustあたりは欲しいなぁ。
Safe Rustじゃ難しそうだし。
c/c++ライブラリバインドを強化したAdaptor Rustあたりは欲しいなぁ。
Safe Rustじゃ難しそうだし。
585デフォルトの名無しさん
2024/04/08(月) 17:54:43.90ID:JoalanBl ゼロからプログラム書くならSafe rustが一番簡単だよ
こいつに従っているだけで割と見通しが良くてバグりにくいコードが書ける
まあGoto 多用しているようなFortran おじいちゃんとは相性が悪いかもしれんが
こいつに従っているだけで割と見通しが良くてバグりにくいコードが書ける
まあGoto 多用しているようなFortran おじいちゃんとは相性が悪いかもしれんが
586デフォルトの名無しさん
2024/04/08(月) 19:05:28.67ID:ifgKIXku C++を完全に理解した者のための言語それがRust
故に誰も
故に誰も
587デフォルトの名無しさん
2024/04/08(月) 20:39:36.28ID:cqL1RV99 C++を使ったことないけど
Rustで困ったことないな
Rust理解で必要なことはポインタとスタックとヒープとRAIIくらいかな
所有権は単なるヒープ解放責任だから大したことではない
所有権を他へ譲渡しないとRAIIによって自動解放されるというだけの話
非常にシンプル
Rustで困ったことないな
Rust理解で必要なことはポインタとスタックとヒープとRAIIくらいかな
所有権は単なるヒープ解放責任だから大したことではない
所有権を他へ譲渡しないとRAIIによって自動解放されるというだけの話
非常にシンプル
588デフォルトの名無しさん
2024/04/08(月) 21:02:11.65ID:YkdU7kgc 所有権を複製するとか間違った事を言い続けてる人が良く言うわw
589デフォルトの名無しさん
2024/04/09(火) 00:09:53.71ID:pItuq1gX >>588
それは俺じゃないぞ
それは俺じゃないぞ
590デフォルトの名無しさん
2024/04/09(火) 02:45:12.09ID:hsAXyuRl >>589
誰だよお前。
誰だよお前。
591デフォルトの名無しさん
2024/04/09(火) 09:16:17.69ID:OXfvzIgi 今のところ>>458が一番面白い
592デフォルトの名無しさん
2024/04/09(火) 10:16:36.65ID:Po0ZJOeT 昭和ギャグ?
ちょっと意味がわかりません
ちょっと意味がわかりません
593デフォルトの名無しさん
2024/04/09(火) 11:01:29.74ID:cj+QXWpg 今どきイジりを面白いとか、イジメ肯定派かよ。
594デフォルトの名無しさん
2024/04/09(火) 13:18:19.32ID:9AcR/8+u 進化論肯定派じゃないの
人を淘汰することを志している
人を淘汰することを志している
595デフォルトの名無しさん
2024/04/09(火) 17:18:23.86ID:+rnauHt3 カチョー「???」じゃなくて
カチョー「で?」なら共感できたかも
カチョー「で?」なら共感できたかも
596デフォルトの名無しさん
2024/04/10(水) 01:14:02.81ID:/k7xUJZy rustだいぶ分かってきたつもりだけど
ライフタイムとジェネリクスとクロージャが一斉に襲いかかってくると無理
好きな言語だけど世の中にはプログラミング言語に強い興味を示す奴が稀なので厳しいなぁと感じる
ライフタイムとジェネリクスとクロージャが一斉に襲いかかってくると無理
好きな言語だけど世の中にはプログラミング言語に強い興味を示す奴が稀なので厳しいなぁと感じる
597デフォルトの名無しさん
2024/04/10(水) 08:03:56.89ID:ltqciZ07598デフォルトの名無しさん
2024/04/10(水) 11:01:40.54ID:5Js//1cu >>596
moonbit くらいならどうかな?
moonbit くらいならどうかな?
599デフォルトの名無しさん
2024/04/10(水) 11:35:35.51ID:AS+TZoYk >>596
それぞれ理解していれば組み合わさって困ることはないんじゃないかな
Rust特有のライフタイム注釈は構造体なら「参照を持ってるよ」の印で関数なら「この引数の参照は返り値の参照に対応するよ」の印であとは有効期間を満たすだけなど
それぞれ理解していれば組み合わさって困ることはないんじゃないかな
Rust特有のライフタイム注釈は構造体なら「参照を持ってるよ」の印で関数なら「この引数の参照は返り値の参照に対応するよ」の印であとは有効期間を満たすだけなど
600デフォルトの名無しさん
2024/04/10(水) 16:55:22.63ID:yZA7mDLP Rustってfunctionをfnって略すくらい気が短いのに、なんでメソッド定義時にはわざわざselfみたいなPython臭いの入力しないとだめなんですか?めんどいんですけど
601デフォルトの名無しさん
2024/04/10(水) 17:30:31.18ID:Fk7YBwaR メソッドをそうでない普通の関数と区別するためにはなんらかのマークは要るじゃろ。
602デフォルトの名無しさん
2024/04/10(水) 17:38:51.91ID:t7JkSWKp self/ mut self/&self/&mut selfの区別もいるしな
self自体これ以上短くしてもよくわからん単語になるしまぁ妥当では
self自体これ以上短くしてもよくわからん単語になるしまぁ妥当では
603デフォルトの名無しさん
2024/04/10(水) 17:52:25.08ID:5Js//1cu C++ の ref-qualifier とか無理のある文法だもんな。
そこに書くんか!? という変な驚きがある。
引数の一種ということにしたほうがかなり単純でよい。
実際、 C++ でも C++23 から this を明示的な引数に取れる文法が追加された。 (deducing this)
そこに書くんか!? という変な驚きがある。
引数の一種ということにしたほうがかなり単純でよい。
実際、 C++ でも C++23 から this を明示的な引数に取れる文法が追加された。 (deducing this)
604デフォルトの名無しさん
2024/04/10(水) 17:58:48.34ID:Q64PiueS RustでPython実装すりゃ良いんじゃね
605デフォルトの名無しさん
2024/04/10(水) 18:34:01.75ID:3h5gXXiJ606デフォルトの名無しさん
2024/04/10(水) 19:34:40.80ID:8DE+tVvz selfより短ければ良いのか、それともC++みたいに省略できてしまってどこで定義されてるのかようわからんくなるのが好きなのか
607デフォルトの名無しさん
2024/04/10(水) 19:44:04.66ID:y0DX5npz ぜひとも >>605 の考える最高にイケてる構文を教えてほしい
Rustを今から変えるのは無理でも、後継言語に採用されるかもしれんし
Rustを今から変えるのは無理でも、後継言語に採用されるかもしれんし
608デフォルトの名無しさん
2024/04/10(水) 19:47:55.68ID:IjfZ+vUr609デフォルトの名無しさん
2024/04/10(水) 20:06:03.20ID:AS+TZoYk610デフォルトの名無しさん
2024/04/10(水) 21:28:15.02ID:8DE+tVvz selfじゃくてthisならC++マニアも納得
611デフォルトの名無しさん
2024/04/10(水) 21:34:35.54ID:6SjCdg5T >>608
nimを知らないけど、Rustのassociated functionもその二種類の呼び出し方法がとれる点は同じだね
Vec::push(&mut vec, 123);
(&mut vec).push(123);
vec.push(123);
この&mutを省略できてRust便利
nimを知らないけど、Rustのassociated functionもその二種類の呼び出し方法がとれる点は同じだね
Vec::push(&mut vec, 123);
(&mut vec).push(123);
vec.push(123);
この&mutを省略できてRust便利
612デフォルトの名無しさん
2024/04/10(水) 21:37:52.75ID:Mpv09JwO thisはたまにselfの代理で使われてるな
Rc::into_innerとか
Rc::into_innerとか
613デフォルトの名無しさん
2024/04/10(水) 23:19:28.12ID:AS+TZoYk deref後のinto_inner適用と区別のため
敢えてself使わないことでメソッド呼び出し形式をできなくして
明示的にRc::into_inner呼び出しさせるパターンだね
敢えてself使わないことでメソッド呼び出し形式をできなくして
明示的にRc::into_inner呼び出しさせるパターンだね
614デフォルトの名無しさん
2024/04/10(水) 23:45:41.84ID:Fk7YBwaR メソッドを呼び出すことと関数の第一引数に渡すことを同一視する構文は
LISP 用に作られたオブジェクトシステム new flavors でやってた。
LISP 用に作られたオブジェクトシステム new flavors でやってた。
615デフォルトの名無しさん
2024/04/11(木) 02:11:03.37ID:4f6XcC0j それは同一視というか構文が1つしかないだけでは
616デフォルトの名無しさん
2024/04/11(木) 02:14:15.06ID:7FNbL3Xb 呼び出し時には与えない引数って紛らわしくね?
617614
2024/04/11(木) 02:45:03.24ID:C4qhk0zm >>615
メッセージを送る構文と関数呼出しの構文の両方があって構文糖として扱える仕組みになってたという話。
new flavors の前に flavors というのがあって、それはメッセージを送る構文しかなかったのだけど
new flavors で改良 (かどうかわからんけど) された。
メッセージを送る構文と関数呼出しの構文の両方があって構文糖として扱える仕組みになってたという話。
new flavors の前に flavors というのがあって、それはメッセージを送る構文しかなかったのだけど
new flavors で改良 (かどうかわからんけど) された。
618デフォルトの名無しさん
2024/04/11(木) 04:57:52.23ID:r6y9Ju0a >>616
むしろ逆かな
target.method(arg1, arg2, ...)という
targetへのメソッドコールを実現するのを関数で表すと
method(target, arg1, arg2, ...)とする言語が多い
Rustでも同じでこのtargetをselfと書く
targetは送る側から見た視点
selfは受け取った側から見た視点
各実装は受け取った側でなされるためself
むしろ逆かな
target.method(arg1, arg2, ...)という
targetへのメソッドコールを実現するのを関数で表すと
method(target, arg1, arg2, ...)とする言語が多い
Rustでも同じでこのtargetをselfと書く
targetは送る側から見た視点
selfは受け取った側から見た視点
各実装は受け取った側でなされるためself
619デフォルトの名無しさん
2024/04/11(木) 08:24:38.80ID:McLA6Ner UFCSは第一引数を1つ目だからというだけの理由で特別扱いするのが気持ち悪いんだよな
レシーバとして扱われるなら構文上も特別であってほしい
レシーバとして扱われるなら構文上も特別であってほしい
620デフォルトの名無しさん
2024/04/11(木) 08:39:59.21ID:UjbgXeUt >>619
何が気持ち悪いのかさっぱりわからない
まず、全ては関数呼び出しになりそれ以外の方法はない、というのはいいよね?
次に、その関数呼び出しでのレシーバの渡し方は最初の引数になる、というのも自然だよね?
ほとんどの言語がこの方式なのに何を気持ち悪がっているのだろう
何が気持ち悪いのかさっぱりわからない
まず、全ては関数呼び出しになりそれ以外の方法はない、というのはいいよね?
次に、その関数呼び出しでのレシーバの渡し方は最初の引数になる、というのも自然だよね?
ほとんどの言語がこの方式なのに何を気持ち悪がっているのだろう
621デフォルトの名無しさん
2024/04/11(木) 08:49:57.16ID:azFLg2co 言うほどほとんどの言語がこれか?
pythonは後付けでOOPぶっこんだからただの関数の引数にSelfなんだ
これがPythonいまいちだなって思うところ
c++も似た様な理由でstaticでthis
後発で考慮する余裕あるのにそれを引っ張ってる
pythonは後付けでOOPぶっこんだからただの関数の引数にSelfなんだ
これがPythonいまいちだなって思うところ
c++も似た様な理由でstaticでthis
後発で考慮する余裕あるのにそれを引っ張ってる
622デフォルトの名無しさん
2024/04/11(木) 09:02:17.34ID:NXydgA7G >>621
君の感性がおかしいんじゃね?
NimもZigもRustもPythonと同じ標準方式
foo(receiver, arg1, arg2, ..)
または
receiver.foo(arg1, arg2, ..)
君の感性がおかしいんじゃね?
NimもZigもRustもPythonと同じ標準方式
foo(receiver, arg1, arg2, ..)
または
receiver.foo(arg1, arg2, ..)
623デフォルトの名無しさん
2024/04/11(木) 09:02:43.98ID:7FNbL3Xb >>618
なるほどちょっと納得した
なるほどちょっと納得した
624デフォルトの名無しさん
2024/04/11(木) 09:11:33.28ID:azFLg2co >>622
実質Pythonフォロワーを含めて言われても…
実質Pythonフォロワーを含めて言われても…
625デフォルトの名無しさん
2024/04/11(木) 09:14:09.83ID:azFLg2co C言語のときはOOPじゃなくてただの関数の第一引数に構造体を指定してた
それがOOP言語になって指定不要になった
それがまたC言語時代に逆戻り
それがOOP言語になって指定不要になった
それがまたC言語時代に逆戻り
626デフォルトの名無しさん
2024/04/11(木) 09:15:22.73ID:NXydgA7G627デフォルトの名無しさん
2024/04/11(木) 09:17:05.47ID:azFLg2co あらかじめ書いておくけどreceiver.Foo()じゃないメソッドがあるのは
receiverがNullの可能性がある場合でそう設計されてただけ
receiverがNullの可能性がある場合でそう設計されてただけ
628デフォルトの名無しさん
2024/04/11(木) 09:20:43.92ID:NXydgA7G 代案を出せないってことはRustに言いがかりをつけてるだけだな
629デフォルトの名無しさん
2024/04/11(木) 09:24:05.56ID:azFLg2co 別に他のOOP言語のように関数にマークつけてこれはこのインスタンスのメソッドですよと言えばいいだけ
その表記は時間をかけて考えたらいい
その表記は時間をかけて考えたらいい
630デフォルトの名無しさん
2024/04/11(木) 09:30:34.30ID:cvuvfjXO >>625
レシーバは必ず必要
Goでも
func (receiver ReceiverType) Foo(引数…) {
return receiver.xxx + receiver.yyy
}
と書く
レシーバ指定不要という主張は理解できない
レシーバは必ず必要
Goでも
func (receiver ReceiverType) Foo(引数…) {
return receiver.xxx + receiver.yyy
}
と書く
レシーバ指定不要という主張は理解できない
631デフォルトの名無しさん
2024/04/11(木) 09:45:56.75ID:gYo8nOa5 レシーバの名前を自由につけられると人によってバラバラで読みづらいんだよな
selfなら必ず揃うし予約語としてシンタックスハイライトされるのもいい
selfなら必ず揃うし予約語としてシンタックスハイライトされるのもいい
632デフォルトの名無しさん
2024/04/11(木) 09:51:28.66ID:azFLg2co いやいやw
無知って怖いねとしか…
無知って怖いねとしか…
633デフォルトの名無しさん
2024/04/11(木) 09:52:17.20ID:azFLg2co634デフォルトの名無しさん
2024/04/11(木) 10:19:57.47ID:UmgPKlgb635デフォルトの名無しさん
2024/04/11(木) 10:33:59.60ID:Nlu6ipA3636デフォルトの名無しさん
2024/04/11(木) 11:00:57.82ID:azFLg2co IDころころお爺さんは明らかに話を理解できないな
637デフォルトの名無しさん
2024/04/11(木) 11:23:46.71ID:CaCoKmZ3 Rustは小文字selfが値、大文字Selfが型を示していて使いやすいよな
型指定にSelfやSelf::Itemなど使えるだけでなく
Self::CONSTANT_NAMEやSelf::function_without_self()などの呼び出しもできる
Selfによって自分自身であるとわかりコードが読みやすい
型名変更の影響も受けず読みやすいメンテしやすい
ダメな言語だと以下のダメなパターンがある
・Selfの代わりに型名を書かなくてはいけない言語 (自分自身だとわかりにくくメンテ性も悪い)
・Selfの代わりにself(やthis)を用いてしまう言語 (値と型の区別がつかない)
・Selfを使わずに名前空間の区別がない言語 (間違いが起きやすく自分自身だとわかりくくメンテ性が悪い)
型指定にSelfやSelf::Itemなど使えるだけでなく
Self::CONSTANT_NAMEやSelf::function_without_self()などの呼び出しもできる
Selfによって自分自身であるとわかりコードが読みやすい
型名変更の影響も受けず読みやすいメンテしやすい
ダメな言語だと以下のダメなパターンがある
・Selfの代わりに型名を書かなくてはいけない言語 (自分自身だとわかりにくくメンテ性も悪い)
・Selfの代わりにself(やthis)を用いてしまう言語 (値と型の区別がつかない)
・Selfを使わずに名前空間の区別がない言語 (間違いが起きやすく自分自身だとわかりくくメンテ性が悪い)
638デフォルトの名無しさん
2024/04/11(木) 11:57:27.19ID:17a5lmDN 関係ない長文でごまかすフェーズに入ってるってことは内心恥ずかしくて死にそうになってるんやろうな……
639デフォルトの名無しさん
2024/04/11(木) 11:57:34.08ID:6x2Zth+c 複オジは見えてる範囲が狭過ぎる
だから長文になればなるほど勘違い度や害悪度が高まる
だから長文になればなるほど勘違い度や害悪度が高まる
640デフォルトの名無しさん
2024/04/11(木) 12:47:47.10ID:ZruVErXu 自分が使ってきた特殊な仕様の言語に慣れ親しんでいると
一般的なの仕様のRustに違和感を感じて文句をつけたくなる気持ちはわからんでもない
Rustを叩く前に視野を広く持つべきだな
Rustの仕様はよく考えられ機能的に洗練されている
一般的なの仕様のRustに違和感を感じて文句をつけたくなる気持ちはわからんでもない
Rustを叩く前に視野を広く持つべきだな
Rustの仕様はよく考えられ機能的に洗練されている
641デフォルトの名無しさん
2024/04/11(木) 12:59:00.66ID:AZdBjU6j >>640
Rustに無いからといってUFCS叩くのはさすがにアホかと。
Rustに無いからといってUFCS叩くのはさすがにアホかと。
642デフォルトの名無しさん
2024/04/11(木) 13:15:55.80ID:4f6XcC0j そんなことよりError::sourceの戻り値に'static要求されるのってなんでなん
643デフォルトの名無しさん
2024/04/11(木) 15:57:20.01ID:R8LZpbjl >>642
エラー返す時に参照してるリソースをつかんだままにしたくないからじゃない
エラー返す時に参照してるリソースをつかんだままにしたくないからじゃない
644デフォルトの名無しさん
2024/04/11(木) 15:59:23.14ID:v1XXdeLJ くだらないレスは頻繁にするのにまともな質問が来ると急に黙るの面白い
645デフォルトの名無しさん
2024/04/11(木) 16:41:03.54ID:KhnNkcJ8 まともな質問にいつものノリで適当に答えて嘘だったら良くないしね
646デフォルトの名無しさん
2024/04/11(木) 17:01:08.25ID:TWMZ6q+3 そっか
俺の答えも間違ってたしな
正しくはdowncastのために必要らしい
詳しくはfix_errorのRFC見て
俺の答えも間違ってたしな
正しくはdowncastのために必要らしい
詳しくはfix_errorのRFC見て
647デフォルトの名無しさん
2024/04/11(木) 17:41:58.72ID:McIjmFt1 Playgroundがwebsocket接続のタイムアウトエラー(504:Gateway Time-out)で全然動かないんだが俺環?
648デフォルトの名無しさん
2024/04/11(木) 17:48:38.15ID:McIjmFt1649デフォルトの名無しさん
2024/04/11(木) 18:55:11.06ID:4f6XcC0j downcastなんて別にしないからいらねーよって思ったけど
そういえば内部で似たようなことやってるあれがあったな、どっちかっていうとあれのためか
ヒントありがとう
そういえば内部で似たようなことやってるあれがあったな、どっちかっていうとあれのためか
ヒントありがとう
650デフォルトの名無しさん
2024/04/11(木) 19:06:32.42ID:VFM//2+p 複おじはc++も使ってなかったんだな
651デフォルトの名無しさん
2024/04/11(木) 20:25:23.50ID:81s1BzdD >>641
UFCSはメソッド名空間の汚染であるため、まともな言語では採用されていない。
RustはUFCSを採用しないだけでなく、更に厳しく孤児ルールによってメソッド名空間の汚染を防いでる。
Rustでのメソッド追加拡張は、そのための新たなトレイトを用意することで、その利用空間に限定して安全に行うことができる。
UFCSはメソッド名空間の汚染であるため、まともな言語では採用されていない。
RustはUFCSを採用しないだけでなく、更に厳しく孤児ルールによってメソッド名空間の汚染を防いでる。
Rustでのメソッド追加拡張は、そのための新たなトレイトを用意することで、その利用空間に限定して安全に行うことができる。
652デフォルトの名無しさん
2024/04/11(木) 20:52:12.80ID:AZdBjU6j >>651
UFCSはそもそもメソッドとか無いんだから、ありもしないメソッド空間の汚染とか考えるだけ無駄。
それに、メソッド呼び出しは人間の思考パターン(大域から局所に絞り込む)に従った自然な記述方法なんだから、それを拡張困難なメソッドだけに限定するのは酷い制約かと。カス文法のPythonを思い浮かべますな。
UFCSはそもそもメソッドとか無いんだから、ありもしないメソッド空間の汚染とか考えるだけ無駄。
それに、メソッド呼び出しは人間の思考パターン(大域から局所に絞り込む)に従った自然な記述方法なんだから、それを拡張困難なメソッドだけに限定するのは酷い制約かと。カス文法のPythonを思い浮かべますな。
653デフォルトの名無しさん
2024/04/11(木) 21:02:41.98ID:81s1BzdD654デフォルトの名無しさん
2024/04/11(木) 21:15:01.99ID:mF0oHAZm 答えを教えてもらっているのにヒントありがとうというオジさんw
655デフォルトの名無しさん
2024/04/11(木) 21:16:29.71ID:2g+gCFiF メソッド名空間www
656デフォルトの名無しさん
2024/04/11(木) 21:54:13.50ID:AZdBjU6j >>653
それって単にメソッドだけ特別に名前空間を管理していという話で、UFCSだから問題になるという話では無いな。
もっとUFCSならではの問題点を指摘してくれ。
せめて関数が左作用ならUFCS捨ててもいいけど、どの言語も馬鹿のひとつ覚えで右作用を採用するからメソッドとかUFCSが重宝される。
それって単にメソッドだけ特別に名前空間を管理していという話で、UFCSだから問題になるという話では無いな。
もっとUFCSならではの問題点を指摘してくれ。
せめて関数が左作用ならUFCS捨ててもいいけど、どの言語も馬鹿のひとつ覚えで右作用を採用するからメソッドとかUFCSが重宝される。
657デフォルトの名無しさん
2024/04/11(木) 23:54:23.85ID:A4VQpdsZ アラビア語でコーディングすれば、入力左から右へ進むから右作用が思考の順になるぜ
アラビア語おすすめ
アラビア語おすすめ
658デフォルトの名無しさん
2024/04/12(金) 00:40:05.77ID:fvGN/jjJ >>656
それはメソッド呼び出しのメリット
モジュール化や結合の観点からも最初からメソッド定義していくのが正しい
UFCSはそれが出来ないあるいは間違ったプログラミング設計によりフリー関数を多数作ってしまった間違った環境でメソッド呼び出ししたくなった時のみ必要とされる
具体的には歴史的な負の遺産でボロボロなC++が該当する
そのためC++ではUFCSを導入しようと今も悪あがきをしている
ほとんどの言語にUFCSがないのはそんなものを必要としないためだ
それはメソッド呼び出しのメリット
モジュール化や結合の観点からも最初からメソッド定義していくのが正しい
UFCSはそれが出来ないあるいは間違ったプログラミング設計によりフリー関数を多数作ってしまった間違った環境でメソッド呼び出ししたくなった時のみ必要とされる
具体的には歴史的な負の遺産でボロボロなC++が該当する
そのためC++ではUFCSを導入しようと今も悪あがきをしている
ほとんどの言語にUFCSがないのはそんなものを必要としないためだ
659デフォルトの名無しさん
2024/04/12(金) 00:44:02.94ID:tVNhffJ+ モジュール化や結合の観点から、関数が一つの変数の型に紐づくのがそんなに優れているとはあんま思えんけどなあ
RustのAdd演算子とかrhsとlhsの型が違う時は演算子がlhsのみに紐つくことになってかなりキモい
RustのAdd演算子とかrhsとlhsの型が違う時は演算子がlhsのみに紐つくことになってかなりキモい
660デフォルトの名無しさん
2024/04/12(金) 02:47:17.34ID:DYhqcHWh それはAddが交換法則の成り立つ二項演算子だからそう見えるにすぎない
AddAssignやSubやShlなど多くの演算は非対称
AddAssignやSubやShlなど多くの演算は非対称
661デフォルトの名無しさん
2024/04/12(金) 04:21:38.21ID:tVNhffJ+ いや別にSubでもDivでも左のみに紐づいているのはキモい
662デフォルトの名無しさん
2024/04/12(金) 04:49:28.47ID:rUQyilnM >>658
やっぱりUFCSじゃなくて名前空間の設計の問題にしか見えんね。
例としてc++を挙げているが、名前空間を使っているライブラリとかで問題になっている事例てあったっけ?
グローバルのフリー関数は影響範囲が広すぎて問題を引き起こすというなら、Rustのトレイルと同様に適切な名前空間を用意しないと関数を定義できないようにすればいいかと。
やっぱりUFCSじゃなくて名前空間の設計の問題にしか見えんね。
例としてc++を挙げているが、名前空間を使っているライブラリとかで問題になっている事例てあったっけ?
グローバルのフリー関数は影響範囲が広すぎて問題を引き起こすというなら、Rustのトレイルと同様に適切な名前空間を用意しないと関数を定義できないようにすればいいかと。
663デフォルトの名無しさん
2024/04/12(金) 05:26:42.25ID:CIaMPOtu664デフォルトの名無しさん
2024/04/12(金) 07:31:40.11ID:rUQyilnM >>663
だったらなおさら>662だけの話かと。名前空間で「メソッド空間」を管理するのをRustは「トレイト」で管理しているだけにしか見えないね。
だったらなおさら>662だけの話かと。名前空間で「メソッド空間」を管理するのをRustは「トレイト」で管理しているだけにしか見えないね。
665デフォルトの名無しさん
2024/04/12(金) 12:27:40.08ID:OadUyd3M666デフォルトの名無しさん
2024/04/12(金) 12:33:34.40ID:rAepnpk2667デフォルトの名無しさん
2024/04/12(金) 12:43:39.99ID:6xQx5uEa668デフォルトの名無しさん
2024/04/12(金) 13:04:32.76ID:qd6Rxygz とりあえず感覚で一行目から罵倒する人
669デフォルトの名無しさん
2024/04/12(金) 15:24:23.71ID:XC+pkKeZ670デフォルトの名無しさん
2024/04/12(金) 16:22:22.83ID:RDQRwL9V >ほとんどの言語がこの方式なのに何を気持ち悪がっているのだろう
からの
>UFCSはメソッド名空間の汚染であるため、まともな言語では採用されていない。
schizoかな?
からの
>UFCSはメソッド名空間の汚染であるため、まともな言語では採用されていない。
schizoかな?
671デフォルトの名無しさん
2024/04/12(金) 17:02:05.38ID:oSrgtnnN それらの件でもRustの仕様が優秀すぎ
672デフォルトの名無しさん
2024/04/12(金) 20:51:13.79ID:NYkXEvAJ >>670
虚言癖などと同じパーソナリティ障害の一種だから生温かく見守ってやれ
虚言癖などと同じパーソナリティ障害の一種だから生温かく見守ってやれ
673デフォルトの名無しさん
2024/04/12(金) 22:18:23.28ID:HgYc1X5O おじいちゃんは昼だけ起きてて
夕方を過ぎると寝てしまう
夕方を過ぎると寝てしまう
674デフォルトの名無しさん
2024/04/12(金) 22:50:23.70ID:3nYhUDoK RUSTがトレンドに!!
675デフォルトの名無しさん
2024/04/12(金) 23:58:18.71ID:lpyrPPhz >>667
つジェネリック
つジェネリック
676デフォルトの名無しさん
2024/04/13(土) 04:39:15.20ID:0YGiYUZr ジェネリックにも同じように安全に適用できるのはRustにトレイト境界があるおかげか
677デフォルトの名無しさん
2024/04/13(土) 07:36:48.57ID:beXAxXwF トレイト境界はc++ conceptみたいに同じ関数集合ならOKなんだっけ?
柔軟性のために外延性は欲しいところ。
柔軟性のために外延性は欲しいところ。
678デフォルトの名無しさん
2024/04/13(土) 08:07:59.96ID:S51MIqUj 異なる型間の共通項をトレイトとして切り出すだけでよく
コードを美しく整理して保守性を高めやすい
コードを美しく整理して保守性を高めやすい
679デフォルトの名無しさん
2024/04/13(土) 13:32:34.24ID:OrtqC7Lq 敬称ないせいで苦労してるんだってな
680デフォルトの名無しさん
2024/04/13(土) 13:36:34.54ID:F3jinTSj 143 デフォルトの名無しさん 2024/04/07(日) 19:27
純関数型言語でなくても
モダンなプログラミング言語
Go、Rust、Zig、Nim、Julia、Elixirなどは
クラスおよびその継承を言語仕様から排除しておりクラスは存在しない
それら各々の言語は全く異なる方針を採っている言語だがクラス排除だけは全てが同じ方針である
クラスとその継承は悪手であるとプログラミング言語界では結論が出ている
純関数型言語でなくても
モダンなプログラミング言語
Go、Rust、Zig、Nim、Julia、Elixirなどは
クラスおよびその継承を言語仕様から排除しておりクラスは存在しない
それら各々の言語は全く異なる方針を採っている言語だがクラス排除だけは全てが同じ方針である
クラスとその継承は悪手であるとプログラミング言語界では結論が出ている
681デフォルトの名無しさん
2024/04/13(土) 16:56:52.49ID:L60jXWVE 継承がなくても構造体にメソッドついてたら実質クラスだろ
関数に構造体渡してたらそれはクラスじゃないけど
関数に構造体渡してたらそれはクラスじゃないけど
682デフォルトの名無しさん
2024/04/14(日) 23:56:10.96ID:RjsA2T1t >>681
構造体にメソッドが付くことはカプセル化と言う
クラス=カプセル化+実装継承 なのでクラスとカプセル化は異なる
このクラスを成り立たせている実装継承が悪であるためにモダンな言語群がクラスを採用しなかった
実装継承とは具体型が別の具体型を継承することを指す
クラスでは派生クラスが基底クラスを継承するため悪の実装継承となる
正しい方法はインタフェイスやトレイトなどの抽象型からのみ継承する
つまりクラスを完全に排除できるためモダンな言語群にクラスはない
構造体にメソッドが付くことはカプセル化と言う
クラス=カプセル化+実装継承 なのでクラスとカプセル化は異なる
このクラスを成り立たせている実装継承が悪であるためにモダンな言語群がクラスを採用しなかった
実装継承とは具体型が別の具体型を継承することを指す
クラスでは派生クラスが基底クラスを継承するため悪の実装継承となる
正しい方法はインタフェイスやトレイトなどの抽象型からのみ継承する
つまりクラスを完全に排除できるためモダンな言語群にクラスはない
683デフォルトの名無しさん
2024/04/15(月) 00:05:55.58ID:R9iMDmBn 用語も色々。
Rust で言うところのトレイトみたいなやつを Haksell とかでは型クラスって呼んでるし、
JavaScript のクラスの実体は (特定のプロトタイプに紐づいたオブジェクトを生成するための) 関数。
極論すればクラスと名付けたものがクラス。
Rust でクラスと呼んでない以上はもう別概念として捉えるしかしょうがないだろ。
C++ のクラス的なことの一部を Rust でも「可能ではある」というという主張なら賛成するけど、
クラスとは何かを定義せずにクラスかどうかを論じても無意味。
Rust で言うところのトレイトみたいなやつを Haksell とかでは型クラスって呼んでるし、
JavaScript のクラスの実体は (特定のプロトタイプに紐づいたオブジェクトを生成するための) 関数。
極論すればクラスと名付けたものがクラス。
Rust でクラスと呼んでない以上はもう別概念として捉えるしかしょうがないだろ。
C++ のクラス的なことの一部を Rust でも「可能ではある」というという主張なら賛成するけど、
クラスとは何かを定義せずにクラスかどうかを論じても無意味。
684デフォルトの名無しさん
2024/04/15(月) 00:26:07.32ID:rd9697wK 型クラスとクラスは全く異なるので混乱しない
クラスとはクラス継承すなわち親クラスから子クラスへの実装継承できるものを指す
JavaScriptはプロトタイプを親として実装継承するためクラス
一方でRustにクラスはない
クラスとはクラス継承すなわち親クラスから子クラスへの実装継承できるものを指す
JavaScriptはプロトタイプを親として実装継承するためクラス
一方でRustにクラスはない
685デフォルトの名無しさん
2024/04/15(月) 01:47:00.44ID:YLFAz6O4686デフォルトの名無しさん
2024/04/15(月) 01:58:25.85ID:CPtYka/u 話は非常に単純
具体的な型から具体的な型への継承が実装継承でこれがよくない
classは具体的な型superclassから具体的な型subclassへの継承があるから実装継承
interfaceやtraitは具体的な型ではなく抽象的な型なので該当しない
最近の言語がclassのみ採用しなかった理由はその違い
具体的な型から具体的な型への継承が実装継承でこれがよくない
classは具体的な型superclassから具体的な型subclassへの継承があるから実装継承
interfaceやtraitは具体的な型ではなく抽象的な型なので該当しない
最近の言語がclassのみ採用しなかった理由はその違い
687デフォルトの名無しさん
2024/04/15(月) 02:39:20.65ID:zOelqs9y RustにはJavaのクラスはありません
RustはJavaではないからです
あたまいいね
RustはJavaではないからです
あたまいいね
688デフォルトの名無しさん
2024/04/15(月) 03:16:04.95ID:0QcDOjSQ Javaの生みの親であるJames Goslingも、
「もう一度最初からJavaを作り直すとしたら、どこを変更したいですか?」に対して、
「クラスを除外するでしょうね」と答えている。
その理由は、クラス継承が実装継承となっているためで、この設計を後悔していて、インターフェースによる継承が望ましいと述べている。
「もう一度最初からJavaを作り直すとしたら、どこを変更したいですか?」に対して、
「クラスを除外するでしょうね」と答えている。
その理由は、クラス継承が実装継承となっているためで、この設計を後悔していて、インターフェースによる継承が望ましいと述べている。
689デフォルトの名無しさん
2024/04/15(月) 08:31:26.40ID:Mqs/ngjj クラスのようなものでいいよ
690デフォルトの名無しさん
2024/04/15(月) 10:16:50.96ID:dcBtWsLv バカの一つ覚えの相手をしても時間の無駄
691デフォルトの名無しさん
2024/04/15(月) 12:54:52.68ID:f4iHJAq/ クラス継承のある言語でも今はクラス継承を使わない設計するのが良いとされてるので要らんよな
692デフォルトの名無しさん
2024/04/15(月) 21:09:43.00ID:97bFGSba それは単に使い分けが出来ない馬鹿な子向けの説明だぞ
693デフォルトの名無しさん
2024/04/16(火) 07:27:41.72ID:10PaZXAR >>691
言語仕様としてあった方が良いということ。
言語仕様としてあった方が良いということ。
694デフォルトの名無しさん
2024/04/16(火) 07:42:24.51ID:KU96szRc 馬鹿が使うとクソになる仕様がある言語は馬鹿をチームに入れただけで開発が即破綻するからクソ
695デフォルトの名無しさん
2024/04/16(火) 08:43:42.78ID:OvO8gS8m Javaの生みの親も言ってるようにクラス継承の機能はない方がいい
なくても困らない
あると問題を引き起こす
なくても困らない
あると問題を引き起こす
696デフォルトの名無しさん
2024/04/16(火) 09:30:25.53ID:YlYBNC7y そういうのは話半分に聞いておけばいいよ
nullを使ったのは失敗だったとか
後からそれらしいことを言ってるだけ
javaはクラスと継承が無くなったらまともに機能しない
interfaceにデフォルト実装がなかったので全部自前かコンポジションで実装することになったはず
nullを使ったのは失敗だったとか
後からそれらしいことを言ってるだけ
javaはクラスと継承が無くなったらまともに機能しない
interfaceにデフォルト実装がなかったので全部自前かコンポジションで実装することになったはず
697デフォルトの名無しさん
2024/04/16(火) 09:50:49.42ID:pgei3+18698デフォルトの名無しさん
2024/04/16(火) 09:55:41.24ID:YlYBNC7y 最初はなかったしずっと取り入れなかったのはそれがJAVA風じゃなかったから
今JAVAが生き残ってるのは最初の設計思想が世間に受け入れられたからであって
後から○○無くせばよかったと言うのは誤りで浅はか
NULLを無くせばよかったと言うが当時メジャーな手法でそれの代替手段がなかったのと同じ
今JAVAが生き残ってるのは最初の設計思想が世間に受け入れられたからであって
後から○○無くせばよかったと言うのは誤りで浅はか
NULLを無くせばよかったと言うが当時メジャーな手法でそれの代替手段がなかったのと同じ
699デフォルトの名無しさん
2024/04/16(火) 10:21:05.77ID:pgei3+18 今となってはclass継承は廃止でいい
700デフォルトの名無しさん
2024/04/16(火) 11:59:36.87ID:NkOUpCFP インターフェイスにも集合で言うところの外延性は欲しいところ。
701デフォルトの名無しさん
2024/04/16(火) 13:49:22.28ID:DzgCvS5T そういうの使いたいならTSがいいよ
702デフォルトの名無しさん
2024/04/16(火) 14:56:34.55ID:vP0l1V0c 具体的なデメリットって何なの?
703デフォルトの名無しさん
2024/04/16(火) 15:29:25.10ID:ePcpSD5e ダサい
704デフォルトの名無しさん
2024/04/16(火) 20:45:11.55ID:scEyspJl そういう感覚的なもの?
705デフォルトの名無しさん
2024/04/16(火) 22:20:54.32ID:pbIQ4i0L 基底クラスで保証してる内部条件を継承クラスで壊されやすい
Javaは基本的に全部オーバーライド可能でprivateとfinalで変な継承を抑えてたけど
C#はabstract/virtualかつsealedでない要素だけオーバーライド可能になってたと思う
古い知識だから最近の動向は知らない
Javaは基本的に全部オーバーライド可能でprivateとfinalで変な継承を抑えてたけど
C#はabstract/virtualかつsealedでない要素だけオーバーライド可能になってたと思う
古い知識だから最近の動向は知らない
706デフォルトの名無しさん
2024/04/17(水) 08:15:23.25ID:eua5YI/M Unreal EngineがRist対応するんだってね
707デフォルトの名無しさん
2024/04/17(水) 16:42:11.69ID:eua5YI/M Ristってなんだ、Rustだた
708デフォルトの名無しさん
2024/04/17(水) 21:06:33.89ID:ZcFRYo3q Rast
Rist
Rest
Rost
Rist
Rest
Rost
709デフォルトの名無しさん
2024/04/17(水) 21:31:42.40ID:O0zLY4aF Risp
710デフォルトの名無しさん
2024/04/18(木) 23:48:18.11ID:mul2o/Jt >>706
時代の流れだな
時代の流れだな
711デフォルトの名無しさん
2024/04/19(金) 17:19:41.25ID:QdSz4ItG 隙間作って床下チェスト収納ってできなくなった?動画みてるけどうまくできん
712デフォルトの名無しさん
2024/04/20(土) 17:39:26.03ID:pCmD4UWo shift-jisのファイルをBufReaderで1行ずつ読み込もうと思ったら無理でOKが流れてこない
全部読んでデコードして\nで切り分けるしかないの?
全部読んでデコードして\nで切り分けるしかないの?
713デフォルトの名無しさん
2024/04/20(土) 17:53:01.46ID:AAPU1iqE read_lineはutf-8じゃないと無理だけどread_untilならバイト列で1行ずつ取れそう
714デフォルトの名無しさん
2024/04/20(土) 22:11:31.95ID:pZNdwQSZ715デフォルトの名無しさん
2024/04/20(土) 22:28:20.55ID:pZNdwQSZ std::io::BufReader::new(encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs::SHIFT_JIS)).build(std::fs::File::open(SJIS_FILE)?)).lines()
716デフォルトの名無しさん
2024/04/21(日) 07:15:48.69ID:QKVewSeW BufReaderもFile::openもそのまま使える点がいいね
717デフォルトの名無しさん
2024/04/21(日) 10:23:00.52ID:Be3/0qjS718デフォルトの名無しさん
2024/04/21(日) 18:25:05.39ID:GAd5jyBU decoderが挟まるだけだよ
// UTF8の場合
let file = File::open(path)?;
let reader = BufReader::new(file);
for line in reader.lines() {
// SJISの場合
let file = File::open(path)?;
let decoder = DecodeReaderBytesBuilder::new()
.encoding(Some(SHIFT_JIS))
.build(file);
let reader = BufReader::new(decoder);
for line in reader.lines() {
// UTF8の場合
let file = File::open(path)?;
let reader = BufReader::new(file);
for line in reader.lines() {
// SJISの場合
let file = File::open(path)?;
let decoder = DecodeReaderBytesBuilder::new()
.encoding(Some(SHIFT_JIS))
.build(file);
let reader = BufReader::new(decoder);
for line in reader.lines() {
719デフォルトの名無しさん
2024/04/22(月) 06:09:19.12ID:kZ9sSSe5 バッファリングせず丸ごと贅沢にメモリ使っていいなら単純
let bytes = fs::read(path)?;
let (s, _, _) = SHIFT_JIS.decode(&bytes);
let reader = BufReader::new(s.as_bytes());
for line in reader.lines() {
let bytes = fs::read(path)?;
let (s, _, _) = SHIFT_JIS.decode(&bytes);
let reader = BufReader::new(s.as_bytes());
for line in reader.lines() {
720デフォルトの名無しさん
2024/04/22(月) 20:07:02.52ID:g+YSHIF5 コマンドラインからファイル名取るようにしたらパニック
windowsで文字コードが違うかららしいけどこういうバッドノウハウを開発者に積み重ねていかないと使えないのはめんどい
windowsで文字コードが違うかららしいけどこういうバッドノウハウを開発者に積み重ねていかないと使えないのはめんどい
721デフォルトの名無しさん
2024/04/22(月) 20:46:10.62ID:ZfX6SpnE 何を言ってんのw
722デフォルトの名無しさん
2024/04/22(月) 21:19:42.71ID:g+YSHIF5 知らないとそういう反応するんだろうけど
std::env::args_osを使ってOsStringを取って対処する必要があるんだよ
勉強になっただろ?
std::env::args_osを使ってOsStringを取って対処する必要があるんだよ
勉強になっただろ?
723デフォルトの名無しさん
2024/04/22(月) 21:24:48.26ID:g+YSHIF5 日本人だから日本語名が付いたファイルを扱う機会に恵まれてるからこういうことに出会える
アメリカ人だったらこういうのに出会わないでコーディングしてリリースしてるだろう
世界中で使ったらパスの問題で落ちるプログラムがガンガン量産されている
アメリカ人だったらこういうのに出会わないでコーディングしてリリースしてるだろう
世界中で使ったらパスの問題で落ちるプログラムがガンガン量産されている
724デフォルトの名無しさん
2024/04/22(月) 23:12:07.98ID:ljq3CdpU725デフォルトの名無しさん
2024/04/22(月) 23:32:38.83ID:cr/ZTax6726デフォルトの名無しさん
2024/04/22(月) 23:35:51.77ID:g+YSHIF5727デフォルトの名無しさん
2024/04/22(月) 23:42:55.88ID:g+YSHIF5 リリースした後の実行時のpanicを有り難がる信者
Rustのライブラリの思想がいまいち馴染みにくいと言うか素人が作るとこうなりますと言う見本
Rustのライブラリの思想がいまいち馴染みにくいと言うか素人が作るとこうなりますと言う見本
728デフォルトの名無しさん
2024/04/22(月) 23:57:01.81ID:kZ9sSSe5729デフォルトの名無しさん
2024/04/23(火) 00:03:29.34ID:aheV4X/O 馬鹿と話しててもらちが開かない
世界中で使ったらパスの問題で落ちるプログラムがガンガン量産されているのは事実
お前らそれを一個一個プルリク送ったりしてるのか?
世界中で使ったらパスの問題で落ちるプログラムがガンガン量産されているのは事実
お前らそれを一個一個プルリク送ったりしてるのか?
730デフォルトの名無しさん
2024/04/23(火) 00:13:45.98ID:aheV4X/O 所有権とか導入してバグを静的に弾こうとしてる割にはこういうところではガバガバ
世界中で英語じゃないwindows環境でpanicが起こるコードが蔓延してる
非合理的
世界中で英語じゃないwindows環境でpanicが起こるコードが蔓延してる
非合理的
731デフォルトの名無しさん
2024/04/23(火) 00:34:48.42ID:tNw43TTr そんなことより The Embedded Rust 読み始めたんです。
冒頭からリンカで割り込みベクタマップの取り方やら panic 無効にしての main 関数導入やら、HAL は自分でこさえるんだよね?と言わんばかりの内容。
おおむかしのMCU開発環境みたいで嫌いじゃないけど、arch 対応してないと敷居高いねこれ。
冒頭からリンカで割り込みベクタマップの取り方やら panic 無効にしての main 関数導入やら、HAL は自分でこさえるんだよね?と言わんばかりの内容。
おおむかしのMCU開発環境みたいで嫌いじゃないけど、arch 対応してないと敷居高いねこれ。
732デフォルトの名無しさん
2024/04/23(火) 09:44:34.04ID:SlAsUTut 公式チュートリアルすらまともに読めないお馬鹿さんは自分が使う道具を間違えててもそれを言語のせいにしたがる
プラスドライバーを使うべき状況でマイナスドライバーを使って使いにくいじゃねーかこんな道具は非合理的などと言い出す
ヤバすぎね?
プラスドライバーを使うべき状況でマイナスドライバーを使って使いにくいじゃねーかこんな道具は非合理的などと言い出す
ヤバすぎね?
733デフォルトの名無しさん
2024/04/23(火) 11:06:58.83ID:PMnHeW+x >>725
なんでコンパイル時にエラーにできないんだろう?
Rustのポリシーからすれば安全優先でargs_osだけにしてargsは削除すべきでは?
c++じゃあるまいに、コマンドラインのデータが常に正しいunicodeだと信用するプログラムを書けるとか、セキュリティーホールになりかねんと思うけど。
なんでコンパイル時にエラーにできないんだろう?
Rustのポリシーからすれば安全優先でargs_osだけにしてargsは削除すべきでは?
c++じゃあるまいに、コマンドラインのデータが常に正しいunicodeだと信用するプログラムを書けるとか、セキュリティーホールになりかねんと思うけど。
734デフォルトの名無しさん
2024/04/23(火) 12:06:18.33ID:cfnwg7MD panicは安全ですヨ
735デフォルトの名無しさん
2024/04/23(火) 12:11:09.83ID:r76fNggU >>734
緊急停止して「安全ですよ」はちょっと……
緊急停止して「安全ですよ」はちょっと……
736デフォルトの名無しさん
2024/04/23(火) 12:14:00.43ID:jXQ0V2HY737デフォルトの名無しさん
2024/04/23(火) 15:43:54.29ID:3Xc7JqWG738デフォルトの名無しさん
2024/04/23(火) 16:19:44.91ID:1rwyWp7B しいて言えばargs()を使う方が特殊ケースなのにデフォルトの名前を引き継いだのは設計ミス
もう治る見込みはないからargs_os()を使おうねってだけだけど
もう治る見込みはないからargs_os()を使おうねってだけだけど
739デフォルトの名無しさん
2024/04/23(火) 16:52:58.90ID:Kbb8det7 一応argsをdeprecatedにして徐々に移行させていくのはできるだろうけど
特に提案もなさそうだし誰も困ってないんじゃないかな
そもそもほとんどのケースでclapとか使うだろうし
特に提案もなさそうだし誰も困ってないんじゃないかな
そもそもほとんどのケースでclapとか使うだろうし
740デフォルトの名無しさん
2024/04/23(火) 17:20:16.94ID:jbFpiEtG741デフォルトの名無しさん
2024/04/23(火) 17:22:13.22ID:SM3r9/qB 環境変数もvarとvar_osがあるから慣れろとしか言えない
OS標準が全部utf-8になる未来もありえるし
OS標準が全部utf-8になる未来もありえるし
742デフォルトの名無しさん
2024/04/23(火) 17:48:20.12ID:x1LuxzDZ >>741
紛らわしいけどvar/var_osとvars/vars_osは別物だよ
varはinvalid UTF-8でもエラーハンドリング可
varsはpanic
argsは引数にUTF-8以外はダメだよって前提で使える余地がまだあるけど
varsはそんな前提をおける状況はほぼなくてよりたちが悪い
紛らわしいけどvar/var_osとvars/vars_osは別物だよ
varはinvalid UTF-8でもエラーハンドリング可
varsはpanic
argsは引数にUTF-8以外はダメだよって前提で使える余地がまだあるけど
varsはそんな前提をおける状況はほぼなくてよりたちが悪い
743デフォルトの名無しさん
2024/04/23(火) 18:06:35.01ID:DF4k8ks3744デフォルトの名無しさん
2024/04/23(火) 19:06:07.68ID:rRGY+2Qg >>732
公式チュートリアルまともに読めるならC++で良いからな
公式チュートリアルまともに読めるならC++で良いからな
745デフォルトの名無しさん
2024/04/23(火) 20:01:34.96ID:+uJAOtCC よーわからんけど10年ぐらい前はすべてutf16になると考えられてたのでは?
どう考えてもstd::env::argsを非推奨にしろとは思うけどね
欧米人がつくるとこんなことになるんだ
普通は2種類の扱いがある
・実行環境に合わせて自動的に内部での標準形式に変換
か
・何もしない
何もしないならOSから受け取ったままOSに渡して置けば大体問題はない
第三の愚策がRust
受け取ったままそのままOSに渡してもコケる
Rustは何もしないように見えるけど何かしてるからコケるのでは?
どう考えてもstd::env::argsを非推奨にしろとは思うけどね
欧米人がつくるとこんなことになるんだ
普通は2種類の扱いがある
・実行環境に合わせて自動的に内部での標準形式に変換
か
・何もしない
何もしないならOSから受け取ったままOSに渡して置けば大体問題はない
第三の愚策がRust
受け取ったままそのままOSに渡してもコケる
Rustは何もしないように見えるけど何かしてるからコケるのでは?
746デフォルトの名無しさん
2024/04/23(火) 20:52:29.82ID:xiHKhQOf747デフォルトの名無しさん
2024/04/23(火) 21:05:41.35ID:ykVY4Q8s Rustのパニックは綺麗なパニック
いいね?
いいね?
748デフォルトの名無しさん
2024/04/23(火) 21:12:51.81ID:xiHKhQOf >>747
一般的なパニックは色んな意味合いがあるけど
Rustでのパニックは関数ドキュメントに明記されている想定のことが起きた
ライブラリ関数の作成者はパニックを発生させる時の条件をドキュメントに明記しなければならない
だからそれを利用する各プログラマーにとっても想定内のことのみパニックが起きる
一般的なパニックは色んな意味合いがあるけど
Rustでのパニックは関数ドキュメントに明記されている想定のことが起きた
ライブラリ関数の作成者はパニックを発生させる時の条件をドキュメントに明記しなければならない
だからそれを利用する各プログラマーにとっても想定内のことのみパニックが起きる
749デフォルトの名無しさん
2024/04/23(火) 23:35:29.98ID:v0qt2UCV >>745
勘違いしてることが多すぎてもう笑うしかないwww
勘違いしてることが多すぎてもう笑うしかないwww
750デフォルトの名無しさん
2024/04/23(火) 23:41:39.78ID:x1LuxzDZ >>745
>よーわからんけど10年ぐらい前はすべてutf16になると考えられてたのでは?
30年以上前にUCS-2がWindowsやJavaに採用された時代のことを言ってるのかな?
(UTF-16と違ってUCS-2は固定幅なので今でもまだ使い所はあるけど)
↓これが15年くらい前のUTF-16に対する一般的な認識
https://softwareengineering.stackexchange.com/questions/102205/
>よーわからんけど10年ぐらい前はすべてutf16になると考えられてたのでは?
30年以上前にUCS-2がWindowsやJavaに採用された時代のことを言ってるのかな?
(UTF-16と違ってUCS-2は固定幅なので今でもまだ使い所はあるけど)
↓これが15年くらい前のUTF-16に対する一般的な認識
https://softwareengineering.stackexchange.com/questions/102205/
751デフォルトの名無しさん
2024/04/24(水) 00:43:41.33ID:5EZEwmZn utf-16はUnicode 2.0(1996年7月)のサロゲートペア導入でutf-8に逆転されたな
しばらくはBMPしか使われなかったから耐えてたけど
1990代前半に始動したJavaは運が悪かった
しばらくはBMPしか使われなかったから耐えてたけど
1990代前半に始動したJavaは運が悪かった
752デフォルトの名無しさん
2024/04/24(水) 01:21:01.63ID:YBOQY0J9 >>749
そう書きながら何もまともなレスすらできないレス乞食
そう書きながら何もまともなレスすらできないレス乞食
753デフォルトの名無しさん
2024/04/24(水) 01:23:24.26ID:YBOQY0J9 Rust界隈では狂信者がいてそいつらはまともに反論すら出来ないけど
Rustが正しいRustが正しいと繰り返すばかり
Rustが正しいRustが正しいと繰り返すばかり
754デフォルトの名無しさん
2024/04/24(水) 12:36:38.15ID:A+y4lqIx755デフォルトの名無しさん
2024/04/24(水) 12:47:56.41ID:HIQuAly7 すげーどうでもいい話だな
756デフォルトの名無しさん
2024/04/24(水) 12:47:57.96ID:A+y4lqIx757デフォルトの名無しさん
2024/04/24(水) 12:58:45.05ID:GRRi3Rgr758デフォルトの名無しさん
2024/04/24(水) 13:18:14.84ID:meF6WBmz Windows は Windows の機能として文字コードの管理はしてるが歴史的事情でツギハギのグダグダ。
今の Linux はおおよそ UTF-8 で統一されているけど規約で縛っているだけで、 OS としてはバイナリ単位で素通し。
保証としてはあてにならん。
今の Linux はおおよそ UTF-8 で統一されているけど規約で縛っているだけで、 OS としてはバイナリ単位で素通し。
保証としてはあてにならん。
759デフォルトの名無しさん
2024/04/24(水) 13:18:30.26ID:HIQuAly7 コンパイルエラーにできないから引数まで廃止するとか原理主義もここまで来てんのか。
760デフォルトの名無しさん
2024/04/24(水) 14:25:14.78ID:up+AoO7k >>754
無知にもほどがある!
unicodeとUTF-8が区別できない
Windowsに限らずLinuxでもmacOSでも非UTF-8の引数や環境変数が使われる可能性があるのは同じなんだがそんな常識を知らない
無知にもほどがある!
unicodeとUTF-8が区別できない
Windowsに限らずLinuxでもmacOSでも非UTF-8の引数や環境変数が使われる可能性があるのは同じなんだがそんな常識を知らない
761デフォルトの名無しさん
2024/04/24(水) 15:25:54.44ID:65hs2nTl762デフォルトの名無しさん
2024/04/24(水) 15:53:48.65ID:gLaneKFw 保証できるものはするに越したことはないけど (充分に実行コストが小さい形では) できんからしゃーない。
763デフォルトの名無しさん
2024/04/24(水) 16:02:42.64ID:zvblwt+/ どうでもいい話でもめてるな
Rustはすべて提供してドキュメントにそるぞれ明記しているのだから使う側の各自の問題
こちらはUTF8環境でしか使われないのでargs()のみ利用している
Rustはすべて提供してドキュメントにそるぞれ明記しているのだから使う側の各自の問題
こちらはUTF8環境でしか使われないのでargs()のみ利用している
764デフォルトの名無しさん
2024/04/24(水) 16:05:40.76ID:AQu1Dr63 https://github.com/rust-lang/rust/issues/91226#issuecomment-1034188905
関係する議論はこのあたりかな
もともとはargs/varsをパニックさせずに無視するか置換してほしいって要望だったが
無視や置換はセキュリティ上問題になる可能性があるので却下
varsは将来的にdeprecatedにするかもと言っている
なんでargsもdeprecatedにすべきだろって提案すれば通る可能性はあるかもね
関係する議論はこのあたりかな
もともとはargs/varsをパニックさせずに無視するか置換してほしいって要望だったが
無視や置換はセキュリティ上問題になる可能性があるので却下
varsは将来的にdeprecatedにするかもと言っている
なんでargsもdeprecatedにすべきだろって提案すれば通る可能性はあるかもね
765デフォルトの名無しさん
2024/04/24(水) 16:26:19.27ID:MMJHgfnp 正しく使え論は暴論だな
それが許されるならスマートポインタやGCは出ずみんな今でも生ポインタを使ってる
それが許されるならスマートポインタやGCは出ずみんな今でも生ポインタを使ってる
766デフォルトの名無しさん
2024/04/24(水) 16:40:56.16ID:zvblwt+/767デフォルトの名無しさん
2024/04/24(水) 16:44:59.20ID:MMJHgfnp 常に自動変換したほうが安全だけどな
開発者が特別コードを書く必要もない
開発者が特別コードを書く必要もない
768デフォルトの名無しさん
2024/04/24(水) 17:05:56.77ID:MMdiZvh6 Rustはファイル名も自動変換なんかしていないように
変換するかどうかは各自の自由裁量であるところが非常に良い点だよ
自分の好みと合わないからといって批判している人たちは頭がおかしいので相手にしても無駄なのだろうけど
変換するかどうかは各自の自由裁量であるところが非常に良い点だよ
自分の好みと合わないからといって批判している人たちは頭がおかしいので相手にしても無駄なのだろうけど
769デフォルトの名無しさん
2024/04/24(水) 17:17:38.15ID:MMJHgfnp >>768
ここまで読んで何の話をしているのか理解できないならRust使うのは辞めたほうがいい
ここまで読んで何の話をしているのか理解できないならRust使うのは辞めたほうがいい
770デフォルトの名無しさん
2024/04/24(水) 17:21:01.52ID:MMJHgfnp ファイルの引数だけ標準では何もしない
普通のキーボード入力などでは変換している
普通のキーボード入力などでは変換している
771デフォルトの名無しさん
2024/04/24(水) 17:23:28.05ID:D1bqYp6J >>770
え??
え??
772デフォルトの名無しさん
2024/04/24(水) 18:26:14.33ID:AQu1Dr63 >>768
自動変換は正直意味不明だが(変換元の文字コードが判定不能なのに何を変換するのか?)
argsは今RFC出したらResultにしろって突っ込まれると思うし
1.0であまり深く考えずに入れちゃった気はするよ
自動変換は正直意味不明だが(変換元の文字コードが判定不能なのに何を変換するのか?)
argsは今RFC出したらResultにしろって突っ込まれると思うし
1.0であまり深く考えずに入れちゃった気はするよ
773デフォルトの名無しさん
2024/04/24(水) 18:50:02.66ID:5HDpMmrb Resultとかのハンドリングが面倒な人向けの簡便方法として用意されてるのでそれはないと思う
argsじゃなくてargs_utf8onlyとか名前をダサくして
逆にargs_osを元のargsに戻しとけば
リファレンスをよく読まない人たちがつまづく可能性を下げられる
argsじゃなくてargs_utf8onlyとか名前をダサくして
逆にargs_osを元のargsに戻しとけば
リファレンスをよく読まない人たちがつまづく可能性を下げられる
774デフォルトの名無しさん
2024/04/24(水) 19:00:18.55ID:65hs2nTl こういうのを見ると、RustのデザイナーはRustに求められているのがなんなのか理解できていないと思うわな。
Rustは雇われコーダー用Safe Rustのニーズがほとんどで、Unsafe Rustとかのニーズは無いと思うがね。
Rustは雇われコーダー用Safe Rustのニーズがほとんどで、Unsafe Rustとかのニーズは無いと思うがね。
775デフォルトの名無しさん
2024/04/24(水) 19:01:34.27ID:MMJHgfnp >>772
自動変換が本当に意味不明ならここまでの話が見えてないとしか言いようがない
自動変換が本当に意味不明ならここまでの話が見えてないとしか言いようがない
776デフォルトの名無しさん
2024/04/24(水) 19:14:39.18ID:9A8KMAyG 自動変換とかそんなアホなこと言ってるのはあんただけやで
そんなものは無いし必要ない
そんなものは無いし必要ない
777デフォルトの名無しさん
2024/04/24(水) 19:18:07.57ID:MMJHgfnp こいつOsStringの概念が分かってないのか
本当に知能レベルが低すぎる
本当に知能レベルが低すぎる
778デフォルトの名無しさん
2024/04/24(水) 19:45:20.62ID:AQu1Dr63 OsStringはOSから渡されたバイト列をそのまま格納するだけで
EUC-JP環境ならEUC-JPバイト列がそのまま入るし何も変換されたりしないが…
EUC-JP環境ならEUC-JPバイト列がそのまま入るし何も変換されたりしないが…
779デフォルトの名無しさん
2024/04/24(水) 19:49:39.48ID:MMJHgfnp 想像力が欠如しているか頭がおかしいか指示待ち人間だからそういう幼稚なレスになる
結局内部で使う場合は簡単にutf8に変換してる
なにからutf8に変化するか指示も必要がない
ただのボイラープレート
結局内部で使う場合は簡単にutf8に変換してる
なにからutf8に変化するか指示も必要がない
ただのボイラープレート
780デフォルトの名無しさん
2024/04/24(水) 19:58:53.67ID:ArOBrbBE781デフォルトの名無しさん
2024/04/24(水) 20:02:00.63ID:MMJHgfnp 人間じゃなくて壊れたロボットに話しているようだな
いくつになろうとこんなダメな人間になってはいけないな
いくつになろうとこんなダメな人間になってはいけないな
782デフォルトの名無しさん
2024/04/24(水) 20:16:20.94ID:il94IOIF ぼきのかんがえたさいきょうのげんごにはstring<encoding>とchar<encoding>があって
どんなエンコーディングの文字列でも統一的に扱うことができましゅ
Rustもまだまだでしゅね
どんなエンコーディングの文字列でも統一的に扱うことができましゅ
Rustもまだまだでしゅね
783デフォルトの名無しさん
2024/04/24(水) 20:44:42.25ID:xJ62MSkB ほとんどの環境がWebも含めてUTF8に統一となったからRustのstr/String内部表現がUTF8であるのは合理的といえる
もちろんWebでもローカルファイルでも古いものは様々な文字コードが使われているため必要なら各々で対処する必要がある
もちろんWebでもローカルファイルでも古いものは様々な文字コードが使われているため必要なら各々で対処する必要がある
784デフォルトの名無しさん
2024/04/24(水) 21:30:38.14ID:nN1vQ+Ae 文字コードをUTF-8とか特定のものに決め打ちにしないという点ではRubyが一番先進的だったが、あれはやりすぎで以降の言語には採用されなかったな。
785デフォルトの名無しさん
2024/04/24(水) 21:49:41.83ID:tlaf0qkO めちゃくちゃ間違ってるのになぜ上から目線で自信満々にレスするんだろう?
複オジは昔の自分を諭してる気分じゃないか?
複オジは昔の自分を諭してる気分じゃないか?
786デフォルトの名無しさん
2024/04/24(水) 22:41:53.26ID:MMJHgfnp Rustが正しいの一点張りの狂人
787デフォルトの名無しさん
2024/04/25(木) 01:24:12.71ID:fpMjozoS >>0774
お前の着眼点は凄えよ!感動した。
その通り、Rustは初心者/素人 御用達言語だよ。
お前の着眼点は凄えよ!感動した。
その通り、Rustは初心者/素人 御用達言語だよ。
788デフォルトの名無しさん
2024/04/25(木) 07:30:11.27ID:xsazBswH おじいちゃん誰にも相手にされず寂しくなったんだねw
789デフォルトの名無しさん
2024/04/27(土) 03:20:12.65ID:nhA0znD3 聞き分けることができない。
https://kanji.reader.bz/pronunciations/last,lust,rust
https://kanji.reader.bz/pronunciations/last,lust,rust
790デフォルトの名無しさん
2024/04/27(土) 21:28:13.67ID:+PotGQRe crates.io が死んだときはどうすれば良い?
791デフォルトの名無しさん
2024/04/27(土) 21:31:55.69ID:Ik8q0/YE cargo run --offline
792デフォルトの名無しさん
2024/04/28(日) 09:02:55.08ID:nHdP2D/h ミラーサイトとか無いんだっけ?
793デフォルトの名無しさん
2024/04/29(月) 14:17:37.62ID:wZNa4EA4 5chが荒らされてる時はどうすれば良い?
794デフォルトの名無しさん
2024/04/29(月) 16:10:30.59ID:E9KMHG2x 取り敢えずアゲとけばいいんじゃね?
795デフォルトの名無しさん
2024/04/30(火) 02:47:45.81ID:Mf3BeDX5 したらば掲示板あたりに避難所作っておけばいかが
796デフォルトの名無しさん
2024/04/30(火) 03:09:09.37ID:LM/x1iE2 落ち着いてpanicしよう
797デフォルトの名無しさん
2024/04/30(火) 07:30:51.55ID:QURaxzoQ core吐きそう
798デフォルトの名無しさん
2024/05/01(水) 23:17:38.38ID:7162bhB/ python みたいに何でも格納できる辞書型ってC++には無いよね?
799デフォルトの名無しさん
2024/05/02(木) 02:40:57.58ID:VpjL2uZS enumも弱いなあ
800デフォルトの名無しさん
2024/05/02(木) 18:14:15.88ID:MEkFc6Ha anyとmap組み合わせればいいんじゃね?
ここRustスレだけど
ここRustスレだけど
801デフォルトの名無しさん
2024/05/02(木) 20:59:19.04ID:AhHSwsoc Rustで辞書型はHashMap
複数の型を格納したかったらenumかdyn Trait
TraitをAnyにするならdowncastして使う
実際には共通に処理したい目的があるはずなのでそのTraitを用意すればdowncastしなくて済む
複数の型を格納したかったらenumかdyn Trait
TraitをAnyにするならdowncastして使う
実際には共通に処理したい目的があるはずなのでそのTraitを用意すればdowncastしなくて済む
802デフォルトの名無しさん
2024/05/03(金) 11:35:32.62ID:nLK8l4in pythonみたいにだからclassがわりなのかも
p["name"]="yamada taro";
p["age"]=25;
みたいなのかな
いずれにしてもC++じゃないので
p["name"]="yamada taro";
p["age"]=25;
みたいなのかな
いずれにしてもC++じゃないので
803デフォルトの名無しさん
2024/05/03(金) 23:02:14.16ID:NBKkZegt 静的型付けの有用性が大きく上回るから
そのケースならstructにするだろうし
色んな型を横断的に扱いたいケースならtraitかな
そのケースならstructにするだろうし
色んな型を横断的に扱いたいケースならtraitかな
804デフォルトの名無しさん
2024/05/04(土) 04:23:28.64ID:hKZu/p+3805デフォルトの名無しさん
2024/05/04(土) 09:38:11.89ID:dspjTuTH GUI付きのポータブルなデスクトップアプリを作るとなるとどのライブラリがいいんだろ?
806デフォルトの名無しさん
2024/05/04(土) 12:00:07.75ID:GFUvMaSe tauri?
807デフォルトの名無しさん
2024/05/04(土) 12:04:17.00ID:WHGnbjEl UIはもうネイティブにこだわらなくてもいいんじゃないかな
昔からwebでしかUI提供してないソフトはゴロゴロある
昔からwebでしかUI提供してないソフトはゴロゴロある
808デフォルトの名無しさん
2024/05/04(土) 15:02:31.51ID:UtcYFhat 用途次第
WebベースのUIでは反応速度が遅すぎる場合もあるしサイズが許容できない場合もある
WebベースのUIでは反応速度が遅すぎる場合もあるしサイズが許容できない場合もある
809デフォルトの名無しさん
2024/05/04(土) 15:44:19.83ID:oqQ8V/k0 Tauri は各環境の WebView を使うからアプリケーションの側では管理しなくてよくなり楽……
みたいな言説もあるが、 WebView の種類・バージョンを固定できないから変化に追従する必要が生じる。
そもそもウェブの世界は変遷が激しい。
Living Standard ってなんやねん。 普通の産業の感覚では信じられんようなことをしやがる。
元からウェブ系のスキルセットを持っている人が開発してメンテナンスもするってのなら
Tauri は良い選択肢だと思うが、それなりにデメリットもあるよ。
ただ、多言語 (というか Unicode) に隅々まで対応しているようなフレームワークってことになると
ウェブ系の基盤がめちゃくちゃ整備されているのでそこらへんは唯一無二だわ。
みたいな言説もあるが、 WebView の種類・バージョンを固定できないから変化に追従する必要が生じる。
そもそもウェブの世界は変遷が激しい。
Living Standard ってなんやねん。 普通の産業の感覚では信じられんようなことをしやがる。
元からウェブ系のスキルセットを持っている人が開発してメンテナンスもするってのなら
Tauri は良い選択肢だと思うが、それなりにデメリットもあるよ。
ただ、多言語 (というか Unicode) に隅々まで対応しているようなフレームワークってことになると
ウェブ系の基盤がめちゃくちゃ整備されているのでそこらへんは唯一無二だわ。
810デフォルトの名無しさん
2024/05/04(土) 16:01:23.73ID:WHGnbjEl 即応性が必要な人は特殊な学習を手間暇というか単純に時間をかけてやって
そうでない場合は普通にhtmlで
そうでない場合は普通にhtmlで
811デフォルトの名無しさん
2024/05/04(土) 16:07:02.02ID:lP1zz7vp 実行時のメモリ使用量の違いもかなり大きいから最初に考慮しといた方がいい
常駐の軽いアプリを作りたい場合なんかは特に
常駐の軽いアプリを作りたい場合なんかは特に
812デフォルトの名無しさん
2024/05/04(土) 16:07:49.70ID:oqQ8V/k0 UI を記述するためのものとしては html は「普通」じゃないってことをウェブ系の人は思い出して欲しい。
元はドキュメント記述用だったのに html5 から大幅に路線変更してアプリケーション基盤として再編したけどどう見たって無茶苦茶だ。
ウェブの人が使う分にはこれでいいことは否定しないけど、 UI 記述の「普通」ではない。
元はドキュメント記述用だったのに html5 から大幅に路線変更してアプリケーション基盤として再編したけどどう見たって無茶苦茶だ。
ウェブの人が使う分にはこれでいいことは否定しないけど、 UI 記述の「普通」ではない。
813デフォルトの名無しさん
2024/05/04(土) 16:17:08.35ID:5ROxz5B4 UI記述は宣言的なものが主流になりつつあってhtml的なものが「普通」になってきてるんだよ
MFCやCocoaやGTK的なものが今では逆に「普通」ではない
MFCやCocoaやGTK的なものが今では逆に「普通」ではない
814デフォルトの名無しさん
2024/05/04(土) 16:22:01.06ID:WHGnbjEl html5は死んだ
もうどこにも存在しない
もうどこにも存在しない
815デフォルトの名無しさん
2024/05/04(土) 16:22:16.16ID:oqQ8V/k0816デフォルトの名無しさん
2024/05/04(土) 16:58:29.96ID:uscJJ1KS じゃあslint?
817デフォルトの名無しさん
2024/05/04(土) 18:05:18.74ID:uscJJ1KS 何気にslintと書いてみたが紹介動画見る限りvs codeにアドオン入れてライブプレビューしながらuiの構築がサクサク行えるのは割といいな…
tauriは環境構築する段階でnodeのバージョンやら依存ライブラリの不備でエラーがでてしまい結構時間が掛かってしまった
tauriは環境構築する段階でnodeのバージョンやら依存ライブラリの不備でエラーがでてしまい結構時間が掛かってしまった
818デフォルトの名無しさん
2024/05/04(土) 18:12:14.00ID:WHGnbjEl デスクトップアプリのここにグラフ出してくださいって言われて
対応できる環境は少ない
対応できる環境は少ない
819デフォルトの名無しさん
2024/05/04(土) 19:49:33.93ID:kEH6RwVz 他にいい表現方法があるなら自分で作って使ってりゃいいじゃん
820デフォルトの名無しさん
2024/05/04(土) 21:10:45.57ID:D/qKI/dJ dioxusはあんま使われてない感じ?
821デフォルトの名無しさん
2024/05/04(土) 23:00:15.61ID:ycOsd5I6 iced.rs
822デフォルトの名無しさん
2024/05/05(日) 10:17:39.98ID:k5d9I+SK >>821
Elm Architectureの設計パターンを覚える必要があるけどなかなかいいですね
Elm Architectureの設計パターンを覚える必要があるけどなかなかいいですね
823デフォルトの名無しさん
2024/05/05(日) 18:52:14.60ID:k5d9I+SK 試してみたけど導入のカウンタの例がいきなりビルド出来ない…
バージョンの変更にドキュメントが追いついていないのは残念ですね…
バージョンの変更にドキュメントが追いついていないのは残念ですね…
824デフォルトの名無しさん
2024/05/05(日) 23:14:06.38ID:XwodnLf4 freyaはどう?
825デフォルトの名無しさん
2024/05/09(木) 16:51:54.63ID:7kteiv59826デフォルトの名無しさん
2024/05/09(木) 22:53:04.47ID:mHp10mC4827デフォルトの名無しさん
2024/05/10(金) 22:11:46.56ID:R/1AnZ57 Edera
828デフォルトの名無しさん
2024/05/11(土) 15:19:35.98ID:7ZNhzC0A https://loglog.games/blog/leaving-rust-gamedev/
Rustはゲーム開発に向いてないという記事
C/C++を置き換えるという目標がまた一つ遠のいてしまったな
Rustはゲーム開発に向いてないという記事
C/C++を置き換えるという目標がまた一つ遠のいてしまったな
829デフォルトの名無しさん
2024/05/11(土) 16:10:55.98ID:cPH9qnwk Rust製ゲームエンジンが未成熟なんだから当たり前だろ😅
830デフォルトの名無しさん
2024/05/11(土) 17:53:51.16ID:PRiIqFBU Web開発は素早い実装と更新が必要だから
Rustは向いてない動的型言語が向いてる
みたいな記事は昔あった気がする
Rustは向いてない動的型言語が向いてる
みたいな記事は昔あった気がする
831デフォルトの名無しさん
2024/05/11(土) 18:07:19.67ID:YXABt1rM >>828
>Rustが上手くなれば、これらの問題はすべて解消されます。
>Rustは大規模なリファクタリングに優れているため、
>borrowチェッカーのほとんどが自業自得の問題を解決します。
>十分な経験を積めば、ユーザーは考えずにそれらを完全に予測し、生産的になります。
>私はRustでさまざまなユーティリティやCLIツールを書くのをとても楽しんでいますが、
>数行のコード以外はPythonよりも生産性が高いことがわかりました。
>「コンパイラ駆動開発」をどこまで進めて、実際に成功できるのかと驚いたことが何度もあります。
>Rustの最大の強みは、Rustにふさわしいコードを書いていると、物事が非常にうまくいき、
>言語がユーザーを正しい道に導いてくれることです。
>Rustが上手くなれば、これらの問題はすべて解消されます。
>Rustは大規模なリファクタリングに優れているため、
>borrowチェッカーのほとんどが自業自得の問題を解決します。
>十分な経験を積めば、ユーザーは考えずにそれらを完全に予測し、生産的になります。
>私はRustでさまざまなユーティリティやCLIツールを書くのをとても楽しんでいますが、
>数行のコード以外はPythonよりも生産性が高いことがわかりました。
>「コンパイラ駆動開発」をどこまで進めて、実際に成功できるのかと驚いたことが何度もあります。
>Rustの最大の強みは、Rustにふさわしいコードを書いていると、物事が非常にうまくいき、
>言語がユーザーを正しい道に導いてくれることです。
832デフォルトの名無しさん
2024/05/11(土) 19:27:53.90ID:3IwrsNfE >>828
この記事、ゲーム開発においていかにUnityがすばらしいかを伝えたいだけじゃん
この記事、ゲーム開発においていかにUnityがすばらしいかを伝えたいだけじゃん
833デフォルトの名無しさん
2024/05/12(日) 06:43:20.67ID:k1k0SaOB834デフォルトの名無しさん
2024/05/12(日) 11:56:37.24ID:WctoPZ5N ずいぶん過疎ってるけどどんぐりのせいなんかね?
835デフォルトの名無しさん
2024/05/12(日) 12:01:04.30ID:ReOJFzuL c++を完璧に使いこなせばrustは不要とか
いうのは欠点ではないの?
いうのは欠点ではないの?
836デフォルトの名無しさん
2024/05/12(日) 12:04:43.22ID:qXz8Kn6F それは本人の練度の問題やんけ
837デフォルトの名無しさん
2024/05/12(日) 12:33:17.76ID:ybg7kEk2838デフォルトの名無しさん
2024/05/12(日) 13:10:14.91ID:ytouLwn1 政府のお墨付きは強いカードだ
840デフォルトの名無しさん
2024/05/12(日) 17:53:27.59ID:YZSMKp1R tauriがだいぶ普及してrustに手を出す人が増えたね
いい傾向だ
いい傾向だ
841デフォルトの名無しさん
2024/05/12(日) 23:38:46.27ID:dSHQVPuW Tauriで流入した人の多くはフロント側 (JavaScript, TypeScript) の技術者な気がする
「ほぼRust書かずにTypeScriptでできますれ」みたいな言説も見かけるくらいだし
実際そのアプローチはありだろうしRustの認知度にも寄与するだろうけど、純Rustのフレームワークも成熟して欲しいところ
「ほぼRust書かずにTypeScriptでできますれ」みたいな言説も見かけるくらいだし
実際そのアプローチはありだろうしRustの認知度にも寄与するだろうけど、純Rustのフレームワークも成熟して欲しいところ
842デフォルトの名無しさん
2024/05/12(日) 23:46:56.69ID:y8qBeNSM ガワをRustで書いただけで何が嬉しいことでもあるんか?
私はRust使ってますって言えるから?
私はRust使ってますって言えるから?
843デフォルトの名無しさん
2024/05/13(月) 00:38:30.52ID:DdLtk1MY 繰り返しになるが GUI 記述として html ベース、ウェブベースの制御はそんなに筋が良くない。
根本的に GUI に対する要求が複雑だから万能を目指したフレームワークはだいたいそうなるものではあるんだが
逆に言えば万能でなくてよいときに使うにはウェブウィジットはリッチすぎる。
それとウェブ世界の living standard という体制に不信感がある。
ウェブ世界ではそれで良いにしてもどこでもその考え方が通用するわけではない。
根本的に GUI に対する要求が複雑だから万能を目指したフレームワークはだいたいそうなるものではあるんだが
逆に言えば万能でなくてよいときに使うにはウェブウィジットはリッチすぎる。
それとウェブ世界の living standard という体制に不信感がある。
ウェブ世界ではそれで良いにしてもどこでもその考え方が通用するわけではない。
844デフォルトの名無しさん
2024/05/13(月) 02:02:04.61ID:TEcr6tUj845デフォルトの名無しさん
2024/05/13(月) 02:21:51.83ID:DdLtk1MY >>844
Tauri がウェブフレームワークに依存しているのが悪いというのは具体的ではないんか?
それが良い場合もあるので何が良いかは結局のところ場合によるとしか言えない。
そりゃそうだろ。
ウェブフレームワークを活用できることとウェブフレームワークに縛られることは表裏一体で
活用しつつ欠点から逃れるなんていう都合の良い話はないというごく普通のことを言いたいだけ。
Tauri がウェブフレームワークに依存しているのが悪いというのは具体的ではないんか?
それが良い場合もあるので何が良いかは結局のところ場合によるとしか言えない。
そりゃそうだろ。
ウェブフレームワークを活用できることとウェブフレームワークに縛られることは表裏一体で
活用しつつ欠点から逃れるなんていう都合の良い話はないというごく普通のことを言いたいだけ。
846デフォルトの名無しさん
2024/05/13(月) 02:31:51.65ID:TEcr6tUj847デフォルトの名無しさん
2024/05/13(月) 03:08:04.24ID:DdLtk1MY848デフォルトの名無しさん
2024/05/13(月) 03:11:17.53ID:7xLbVW9j QtレベルのフレームワークがRustで書けるならそれは嬉しいけどね
開発者のモチベが続かないような気がする
あまりにもゼロから実装しなきゃならんし
開発者のモチベが続かないような気がする
あまりにもゼロから実装しなきゃならんし
849デフォルトの名無しさん
2024/05/13(月) 03:11:29.07ID:To2vSRYZ デザイン系の人の大多数がウェブアプリ開発をできるからTauriは高需要でいいと思う
そもTauriはRustが主役のフレームワークじゃないんだからあーだこーだ言う必要なし
世間の知名度が上がる道具になってくれれば十分ってもんよ
そもTauriはRustが主役のフレームワークじゃないんだからあーだこーだ言う必要なし
世間の知名度が上がる道具になってくれれば十分ってもんよ
850デフォルトの名無しさん
2024/05/13(月) 03:17:53.91ID:+k5+3Net デスクトップアプリ自体需要低下が著しいわけで、いまさら新しいGUIフレームワーク作りましたって誰も使わんわ
WPFすら将来性が怪しまれてるのに
WPFすら将来性が怪しまれてるのに
851デフォルトの名無しさん
2024/05/13(月) 03:26:50.43ID:7xLbVW9j ちなみに全てゼロから実装してるGoのGUIフレームワークのgokiは6年以上開発しててまだ完成しない
描画から全部作ってる
そしてついに開発者が飽きた
同じくgoのfyneも5年ぐらい開発してこちらもOpenGLでゴリゴリやってるようだが
すでにOpenGLは時代遅れだし
すでに開発者が飽き気味
描画から全部作ってる
そしてついに開発者が飽きた
同じくgoのfyneも5年ぐらい開発してこちらもOpenGLでゴリゴリやってるようだが
すでにOpenGLは時代遅れだし
すでに開発者が飽き気味
852デフォルトの名無しさん
2024/05/13(月) 03:46:12.80ID:FJrB7Dif ウェブまわり自体がクソってのには賛同するけど、これまでの莫大な資産や個々の経験の後押しが需要を押し上げるんだから仕方ない
どれだけRust由来のGUIフレームワークを望んだとしても負ける未来しかないんだ
WPFもWinUI3もFlutterもComposeも頑張ってるけど勝てないんだ
どれだけRust由来のGUIフレームワークを望んだとしても負ける未来しかないんだ
WPFもWinUI3もFlutterもComposeも頑張ってるけど勝てないんだ
853デフォルトの名無しさん
2024/05/13(月) 06:53:31.41ID:NqUrzczE >>825
Rust GUI framework performance comparison
http://lukaskalbertodt.github.io/2023/02/03/tauri-iced-egui-performance-comparison.html
Rust GUI framework performance comparison
http://lukaskalbertodt.github.io/2023/02/03/tauri-iced-egui-performance-comparison.html
854デフォルトの名無しさん
2024/05/13(月) 08:41:01.54ID:1UkfuR6U 可能性があるとすると組み込み系かなぁ
車載GUIにUnityとか検討してるとこはあるみたいだけど、多少描画がバグってもいいゲームとは違うし
Rustの安定性が求められる領域ではあると思う
slintなんかはそちらを目指しているように見える
車載GUIにUnityとか検討してるとこはあるみたいだけど、多少描画がバグってもいいゲームとは違うし
Rustの安定性が求められる領域ではあると思う
slintなんかはそちらを目指しているように見える
855デフォルトの名無しさん
2024/05/13(月) 10:36:48.17ID:gtcOXaAe フロントについてこういうカッチかちの言語でうまくと思ってるやつは実際にコード書いてないのがバレバレだよ
856デフォルトの名無しさん
2024/05/13(月) 11:03:56.17ID:TEcr6tUj857デフォルトの名無しさん ころころ
2024/05/13(月) 11:12:58.92ID:2BkgcWoG858デフォルトの名無しさん
2024/05/13(月) 11:14:38.81ID:BwU1QaNs RustのGUIフレームワークを気になって色々見てたけどどれもよくあるレンダリングエンジンのWebGPU、Vulkan、OpenGL、SkiaをRustラップしてるだけじゃんね
純粋なRust製レンダリングエンジンはどこだよ
純粋なRust製レンダリングエンジンはどこだよ
859デフォルトの名無しさん
2024/05/13(月) 12:01:14.07ID:7xLbVW9j860デフォルトの名無しさん
2024/05/13(月) 12:47:01.47ID:nhWWGTo5 WebGPUの参照実装であるwgpuは純Rust製だと思ってるけど違うんかね?
861デフォルトの名無しさん
2024/05/13(月) 13:02:11.22ID:LO420and >>858
少なくともOpenGLとVulkanはグラフィックAPIなんだからラップするのは普通でしょ
少なくともOpenGLとVulkanはグラフィックAPIなんだからラップするのは普通でしょ
862デフォルトの名無しさん
2024/05/13(月) 15:33:49.11ID:Y2zR27Yz tauriはロジック部分をrustで書きやすいんでしょ?理想的じゃないか
フロントとバックで得意分野の棲み分けができてて賢いフレームワーク
フロントとバックで得意分野の棲み分けができてて賢いフレームワーク
863デフォルトの名無しさん
2024/05/13(月) 16:08:29.50ID:DdLtk1MY だから Tauri が悪いという論じゃないんだ。
他の選択肢がいっぱいあると嬉しいねって話なんだってば。
他の選択肢がいっぱいあると嬉しいねって話なんだってば。
864デフォルトの名無しさん
2024/05/13(月) 21:28:07.97ID:59wZgx8n 神学論争じゃなくてエンジニアリングとして
tauriではこんなアプリ作るべきじゃない
理由はこんな欠点があるからという
話してくれれば良いだけなんだが
tauriではこんなアプリ作るべきじゃない
理由はこんな欠点があるからという
話してくれれば良いだけなんだが
865デフォルトの名無しさん
2024/05/13(月) 22:14:06.95ID:ZPj3lkv2 GUIといっても多種多様に分かれて共存しておりRustでも色々なライブラリがある
slintのように軽量重視もあれば
eguiのように(一般的な保持モードとは異なり)即時モード採用もあったり
tauriのようにWebと同じ枠組みを使うことで同じ知識の活用とWebアプリとの共通化をはかるものもあり
他にも様々なものがある
前提環境抜きで特定のものを批判してる人はおかしい
slintのように軽量重視もあれば
eguiのように(一般的な保持モードとは異なり)即時モード採用もあったり
tauriのようにWebと同じ枠組みを使うことで同じ知識の活用とWebアプリとの共通化をはかるものもあり
他にも様々なものがある
前提環境抜きで特定のものを批判してる人はおかしい
866デフォルトの名無しさん
2024/05/14(火) 07:45:48.78ID:6cY0CvIK みんな違ってみんな良い
867デフォルトの名無しさん
2024/05/14(火) 08:57:53.35ID:xCwyd0xz slintは素直でとっつきやすかったな
icedは変化が激しいのか入門もさせてもらえない…
icedは変化が激しいのか入門もさせてもらえない…
868デフォルトの名無しさん
2024/05/14(火) 23:21:46.80ID:hA3mS4wv LambdaはRustで書くのが定番になってきたな
869デフォルトの名無しさん
2024/05/15(水) 00:25:29.32ID:pg7m6itF 何より悲しい一人ランバダ
870デフォルトの名無しさん
2024/05/15(水) 04:42:11.15ID:NcaIPB0V わしウェブ系技術ってのが嫌いやねん
871デフォルトの名無しさん
2024/05/15(水) 06:07:55.49ID:HCR4HRqT 具体的に指摘できない人は単なる無知か落ちこぼれ
872デフォルトの名無しさん
2024/05/15(水) 09:47:09.65ID:qxOWZ5PZ tauriは叩く要素が特にない
electronのデメリットを克服しつつも既存の普及済み技術を集合させた感じなんだもの
tauri導入における敷居の低さはあっぱれとしか言いようがない
ウェブ技術やってない人はこれを機会にreactを勉強したらいいよ
electronのデメリットを克服しつつも既存の普及済み技術を集合させた感じなんだもの
tauri導入における敷居の低さはあっぱれとしか言いようがない
ウェブ技術やってない人はこれを機会にreactを勉強したらいいよ
873デフォルトの名無しさん
2024/05/15(水) 11:23:11.20ID:z848GXEz なんかもう面倒臭いしバックエンドもnode.jsでいい気がしてきた
874デフォルトの名無しさん
2024/05/15(水) 14:38:34.92ID:h8Rmia3E 結局最初はrailsでokみたいなのが最近の流れでしょ。
そこから開発規模に沿ってどう分割していくかってのが最近のテーマではあると思うけど。
最初からかっちり開発しましょうなんて20年前のお花畑理論でしかないわな。
そこから開発規模に沿ってどう分割していくかってのが最近のテーマではあると思うけど。
最初からかっちり開発しましょうなんて20年前のお花畑理論でしかないわな。
875デフォルトの名無しさん
2024/05/15(水) 15:28:41.91ID:aizlqnqQ ネイティブGUIアプリの話にRails関係ないだろ
Web開発でもとりあえずRailsのピークは過ぎ去ってるぞ
Web開発でもとりあえずRailsのピークは過ぎ去ってるぞ
876デフォルトの名無しさん
2024/05/15(水) 15:31:56.50ID:5ypavdrK tauriはデータの受け渡しが遅すぎる
877デフォルトの名無しさん
2024/05/15(水) 16:29:56.86ID:0QhUyids モダンなGUIアーキテクチャでRust書きたいよ
今のは全部古すぎる
今のは全部古すぎる
878デフォルトの名無しさん
2024/05/15(水) 16:33:24.96ID:V9iVMFnF879デフォルトの名無しさん
2024/05/15(水) 16:39:14.07ID:aizlqnqQ880デフォルトの名無しさん
2024/05/15(水) 16:42:32.92ID:0QhUyids デスクトップGUIはWebViewを使ったガワアプリも含まれるって意味だろ
881デフォルトの名無しさん
2024/05/15(水) 17:30:27.13ID:hv8buZEp めんどくさいからデスクトップアプリでいいよ
882デフォルトの名無しさん
2024/05/15(水) 18:24:29.03ID:xsUSdCEo >>879
一般的にネイティブアプリとは各プラットフォームでネイティブとされてるUIコンポーネントや開発ツールを使って作られたもの
デスクトップアプリはWindows・macOS・Linuxなどのデスクトッププラットフォーム上で実行されるアプリ
(どちらも基本的にGUIアプリについてのみ使われる言葉)
例えばJavaで作ったデスクトップアプリは一般的にネイティブアプリとは呼ばれないが
Java(とJetpack Compose)で作ったAndroidアプリはネイティブアプリと呼ばれる
一般的にネイティブアプリとは各プラットフォームでネイティブとされてるUIコンポーネントや開発ツールを使って作られたもの
デスクトップアプリはWindows・macOS・Linuxなどのデスクトッププラットフォーム上で実行されるアプリ
(どちらも基本的にGUIアプリについてのみ使われる言葉)
例えばJavaで作ったデスクトップアプリは一般的にネイティブアプリとは呼ばれないが
Java(とJetpack Compose)で作ったAndroidアプリはネイティブアプリと呼ばれる
883デフォルトの名無しさん
2024/05/15(水) 18:30:24.12ID:4Z0tBK25 Visual Studio Codeはネイティブアプリですか?
884デフォルトの名無しさん
2024/05/15(水) 18:35:01.39ID:NOtrSmJC >>883
ガワアプリです
ガワアプリです
885デフォルトの名無しさん
2024/05/15(水) 19:01:08.64ID:xxmBp0ld tauriはフロント側をrustで書けないのがきつい
yewとかで頑張ればrustでやれなくはないけど素直にjs使った方がいいし
yewとかで頑張ればrustでやれなくはないけど素直にjs使った方がいいし
886デフォルトの名無しさん
2024/05/15(水) 19:44:27.90ID:bSYaxLzm フロントは成熟したフレームワークを使いたいからhtmljs仕様なのはむしろ助かることない?
887デフォルトの名無しさん
2024/05/15(水) 19:49:50.25ID:rWGs03Ps TauriはOS付属のWebViewを下地にして動くことを売りにしてるんだからRustでフロント書きたい人は最初からお客様じゃないぞ
本気でYewでひーひー言いながら書くつもりか?
本気でYewでひーひー言いながら書くつもりか?
888デフォルトの名無しさん
2024/05/15(水) 23:50:43.95ID:s3H9dEcY フロントエンドをHTML/CSS/JavaScript以外で書く人がもうほとんどいない
ただしJavaScriptを直接書かなくてもWebAssemblyで好きな言語で書くのは構わないし同じWeb枠組みの範囲内の話
ただしJavaScriptを直接書かなくてもWebAssemblyで好きな言語で書くのは構わないし同じWeb枠組みの範囲内の話
889デフォルトの名無しさん
2024/05/16(木) 00:16:06.21ID:1J3uYj1b >>888
結局これだよな。JS以外のクロスプラットフォームなフロントエンドってほとんど無いんだからそこはもう諦めたほうが
結局これだよな。JS以外のクロスプラットフォームなフロントエンドってほとんど無いんだからそこはもう諦めたほうが
890デフォルトの名無しさん
2024/05/16(木) 00:39:52.36ID:OUQcYMxX そもそもrust推すやつはフロントエンドなんて全く好きじゃないだろ。
891デフォルトの名無しさん
2024/05/16(木) 00:53:56.65ID:hXehBl/a フロントエンドだけでは何もできなくて
バックエンドや裏はRust採用がリソースコストを最小にできる
そのためのクラウドでのコードもクラウドインフラ自体もRustで記述
さらにCDNインフラ自体もCDNエッジでのコードもRustで記述
バックエンドや裏はRust採用がリソースコストを最小にできる
そのためのクラウドでのコードもクラウドインフラ自体もRustで記述
さらにCDNインフラ自体もCDNエッジでのコードもRustで記述
892デフォルトの名無しさん
2024/05/16(木) 01:44:19.55ID:i/RRcUKc >>872
何にしたって否応なくトレードオフはある。
Electoron のデメリットを克服したといっても
その替わりに Electoron に無かったデメリットも生じてる。
たとえば WebView を抱え込まない (実行環境にあるのを使う) のは
実行環境のエコシステムとの連携が必須ってことだ。
基本的にはちゃんとサポートが続いているバージョンの実行環境を使えって話ではあるけどさ、
そうもいかんこともあるのも現実なんよ。
Tauri を叩いてるやつなんていないよ。
まさか「あらゆる」 UI を Tauri でなんとかできると思ってるわけじゃないだろ? という話。
比較的には有力とは言えるだろうけども。
何にしたって否応なくトレードオフはある。
Electoron のデメリットを克服したといっても
その替わりに Electoron に無かったデメリットも生じてる。
たとえば WebView を抱え込まない (実行環境にあるのを使う) のは
実行環境のエコシステムとの連携が必須ってことだ。
基本的にはちゃんとサポートが続いているバージョンの実行環境を使えって話ではあるけどさ、
そうもいかんこともあるのも現実なんよ。
Tauri を叩いてるやつなんていないよ。
まさか「あらゆる」 UI を Tauri でなんとかできると思ってるわけじゃないだろ? という話。
比較的には有力とは言えるだろうけども。
893デフォルトの名無しさん
2024/05/16(木) 01:56:21.83ID:g8xzkHEo 仮想のtauri狂信者を叩いてるのが一人いるのはわかった
894デフォルトの名無しさん
2024/05/16(木) 02:15:18.77ID:8s3HDjEn そんなに熱くならんでも良い
Tauriガワ+Rustビジネスロジックな本格的定番デスクトップアプリが
未だに存在しないから察しろ
Tauriガワ+Rustビジネスロジックな本格的定番デスクトップアプリが
未だに存在しないから察しろ
895デフォルトの名無しさん
2024/05/16(木) 15:17:12.19ID:DDVd9f// 察しろって歴史が浅いだけでは
896デフォルトの名無しさん
2024/05/16(木) 18:07:35.69ID:2492rnzS >>891
そこまで行くのに何十年掛かるんだろうなぁ
そこまで行くのに何十年掛かるんだろうなぁ
897デフォルトの名無しさん
2024/05/16(木) 18:37:15.15ID:hXehBl/a898デフォルトの名無しさん
2024/05/16(木) 23:54:35.57ID:4W8w/h2s 何十年かかろうがRustが普及するのは事実
乗り遅れるなよ?
乗り遅れるなよ?
899デフォルトの名無しさん
2024/05/16(木) 23:57:43.65ID:sN6tl8jZ 既にそれらクラウドやCDNのインフラはRust製へ切り替わっていってるし
その上で動くユーザーコードも従量制コストのためRustが採用されてるね
その上で動くユーザーコードも従量制コストのためRustが採用されてるね
900デフォルトの名無しさん
2024/05/17(金) 00:37:51.70ID:lOJfePdD Rust2024次第や
901デフォルトの名無しさん
2024/05/17(金) 14:37:51.89ID:R46RaGVX >>898
そうやって何十年騙されてきたんだろう
そうやって何十年騙されてきたんだろう
902デフォルトの名無しさん
2024/05/17(金) 17:27:00.95ID:fyAXY6lw Rustって、学習コストていうか、習得難易度が高いらしいね
903デフォルトの名無しさん
2024/05/17(金) 18:13:44.03ID:63RUfPPA 本来ちゃんと考えなきゃいけないものをランタイムがやってくれるからって
思考放棄してた部分が表に出てきただけなんだよね
例えば優秀な人はCでもポインタ一つとってもその意味するところが何か、所有するのか、弱参照なのかを意識するし
オブジェクトの管理に参照カウントを実装しているだろう
実際至高のCプログラムであるlinuxカーネルはそのような作りになっている
優秀な人は凡人に見えていないものが見えてるんだよね
思考放棄してた部分が表に出てきただけなんだよね
例えば優秀な人はCでもポインタ一つとってもその意味するところが何か、所有するのか、弱参照なのかを意識するし
オブジェクトの管理に参照カウントを実装しているだろう
実際至高のCプログラムであるlinuxカーネルはそのような作りになっている
優秀な人は凡人に見えていないものが見えてるんだよね
904デフォルトの名無しさん
2024/05/17(金) 18:50:38.58ID:x3ZQoGKy >>903
>実際至高のCプログラムであるlinuxカーネルはそのような作りになっている
>優秀な人は凡人に見えていないものが見えてるんだよね
そして年間数百個の脆弱性を生む結果となっている
真に優秀なら当然そんな結果はもたらさない
自分が優秀だと勘違いしてる人は凡人にすら見える当たり前ことが見えてないんだよね
>実際至高のCプログラムであるlinuxカーネルはそのような作りになっている
>優秀な人は凡人に見えていないものが見えてるんだよね
そして年間数百個の脆弱性を生む結果となっている
真に優秀なら当然そんな結果はもたらさない
自分が優秀だと勘違いしてる人は凡人にすら見える当たり前ことが見えてないんだよね
905デフォルトの名無しさん
2024/05/17(金) 19:03:33.62ID:63RUfPPA >>904
脆弱性ゼロというのはありえないというのはわかる?
脆弱性ゼロというのはありえないというのはわかる?
906デフォルトの名無しさん
2024/05/17(金) 19:06:03.74ID:FyQgq0p4907デフォルトの名無しさん
2024/05/17(金) 19:45:03.26ID:S7DVNM0H908デフォルトの名無しさん
2024/05/17(金) 20:17:03.89ID:Bzly/lr+ それなら有志団体のProssimoあたりがRust移植を資金調達しながらやってるじゃない
焦らんでも数十年後にはRustがそれなりに普及してるよ
焦らんでも数十年後にはRustがそれなりに普及してるよ
909デフォルトの名無しさん
2024/05/17(金) 20:33:12.91ID:Bflq38Ga 初心者向けRustが無ければ無理じゃない?
910デフォルトの名無しさん
2024/05/17(金) 20:36:48.91ID:ljCa+132 マンガで読むrust入門とか小学生向けの本が出れば本格的普及かな
911デフォルトの名無しさん
2024/05/17(金) 20:39:02.47ID:Bflq38Ga 最初にスタックフレームの説明から入るのか。
胸熱だな。
胸熱だな。
912デフォルトの名無しさん
2024/05/17(金) 21:01:30.45ID:xPWhJeFc バカと初心者は遅いバカ向け言語でいいんだよ
バカでなければその後にRustに行き着くから
バカでなければその後にRustに行き着くから
913デフォルトの名無しさん
2024/05/17(金) 21:10:07.25ID:FOdKNTRJ 単に sudo を rust で書き直すのにもわりかし時間かかってるよな。
914デフォルトの名無しさん
2024/05/17(金) 21:18:42.19ID:63RUfPPA 昔のCでよくある
hoge = update_hoge(hoge);
みたいなプログラムはRustに移植するのがクソ大変なんだよ
古いプログラムだとこの手のコードが大量に出てくる
実質データ構造から全て書き直しになって移植に時間がかかる
hoge = update_hoge(hoge);
みたいなプログラムはRustに移植するのがクソ大変なんだよ
古いプログラムだとこの手のコードが大量に出てくる
実質データ構造から全て書き直しになって移植に時間がかかる
915デフォルトの名無しさん
2024/05/17(金) 21:23:31.52ID:MaibK+2h916デフォルトの名無しさん
2024/05/17(金) 21:25:38.04ID:ljCa+132 rustを選民意識で使ってる奴とかいる?
917デフォルトの名無しさん
2024/05/17(金) 21:26:53.82ID:5wpOXFHi インターネットドメインの無償TLS証明書であるLet's Encryptなどを運用している非営利団体ISRG (Internet Security Research Group)のProssimoプロジェクトは二つの目標を掲げている。
「私たちの目標は二つある。1つは、インターネットを支えるソフトウェアインフラをメモリ安全のコードに書き換えること。もう1つは、メモリ安全性に関する人々の考え方を変えることだ。『C』や『C++』のようなメモリ安全ではない言語で書かれたソフトウェアを展開するのは危険だという証拠があるにもかかわらず使われ続けており、人々がそのリスクを十分に認識し、メモリ安全性をソフトウェアの要件と見なすようにしたい。」
このソフトウェアインフラのメモリ安全性向上に向けて取り組むProssimoプロジェクトの一環として、suやsudoなどのセキュリティユーティリティーを「Rust」で再実装して広める活動も行われている。
「私たちの目標は二つある。1つは、インターネットを支えるソフトウェアインフラをメモリ安全のコードに書き換えること。もう1つは、メモリ安全性に関する人々の考え方を変えることだ。『C』や『C++』のようなメモリ安全ではない言語で書かれたソフトウェアを展開するのは危険だという証拠があるにもかかわらず使われ続けており、人々がそのリスクを十分に認識し、メモリ安全性をソフトウェアの要件と見なすようにしたい。」
このソフトウェアインフラのメモリ安全性向上に向けて取り組むProssimoプロジェクトの一環として、suやsudoなどのセキュリティユーティリティーを「Rust」で再実装して広める活動も行われている。
918デフォルトの名無しさん
2024/05/17(金) 21:29:19.78ID:qNukMIkl コンピュータリテラシーの低い人を増やしまくった結果セキュリティ事故祭りになっているのでは?
919デフォルトの名無しさん
2024/05/17(金) 21:44:22.72ID:GF5EVhbY >>914
>> hoge = update_hoge(hoge);
その例だけなら以下で終わるから説明不十分
update_hoge(&mut hoge);
もちろんこれはメソッド化して
impl Hoge {
fn update(&mut self) {
呼び出しはhoge.update()
これで終わる話だから
おそらく元のC言語コードがグローバル変数を使うなど酷い状態なのだろう
>> hoge = update_hoge(hoge);
その例だけなら以下で終わるから説明不十分
update_hoge(&mut hoge);
もちろんこれはメソッド化して
impl Hoge {
fn update(&mut self) {
呼び出しはhoge.update()
これで終わる話だから
おそらく元のC言語コードがグローバル変数を使うなど酷い状態なのだろう
920デフォルトの名無しさん
2024/05/17(金) 21:49:13.20ID:6kFr2fm8921デフォルトの名無しさん
2024/05/17(金) 22:24:35.35ID:63RUfPPA >>915
当たり前だがhogeはヒープで確保されており
あらゆるところで参照、保持、変更されうる場合がある
よってRcにて管理する必要がある
当然Rcの中のオブジェクトを変更できないと意味がない
つまりCellなりRefCellが必要となる
そして循環参照の問題もあるので弱参照を考えなきゃならん
このようにちょっとしたコードでも単純に移植することが難しい
rust wayな方法で書き直すしかない
当たり前だがhogeはヒープで確保されており
あらゆるところで参照、保持、変更されうる場合がある
よってRcにて管理する必要がある
当然Rcの中のオブジェクトを変更できないと意味がない
つまりCellなりRefCellが必要となる
そして循環参照の問題もあるので弱参照を考えなきゃならん
このようにちょっとしたコードでも単純に移植することが難しい
rust wayな方法で書き直すしかない
922デフォルトの名無しさん
2024/05/17(金) 22:35:22.67ID:mTdFoxaI sudoが時間かかってるのは単にそれなりの規模だからってだけだと思うけどな
あとsudo風の代替品ではなくてそのまま入れ替え可能なものを目指してるから
仕様の把握と一致検証にも時間がかかるだろうし
あとsudo風の代替品ではなくてそのまま入れ替え可能なものを目指してるから
仕様の把握と一致検証にも時間がかかるだろうし
923デフォルトの名無しさん
2024/05/17(金) 22:36:32.50ID:JB0Glcw4 ゲーム開発に向かないからC/C++が残ることが確定してしまった
924デフォルトの名無しさん
2024/05/17(金) 22:37:07.66ID:GF5EVhbY925デフォルトの名無しさん
2024/05/17(金) 22:38:27.40ID:5wpOXFHi >>923
そんな話は聞いたことがない
そんな話は聞いたことがない
926デフォルトの名無しさん
2024/05/17(金) 22:42:58.17ID:cCnlY4YV Rustゲームエンジン開発なんざ勝手にやっとけって感じ
セキュリティ脆弱性が致命的になる分野でのRustへの移植が大事なんだから
セキュリティ脆弱性が致命的になる分野でのRustへの移植が大事なんだから
927デフォルトの名無しさん
2024/05/17(金) 22:44:28.89ID:JB0Glcw4928デフォルトの名無しさん
2024/05/17(金) 22:58:43.56ID:BR1qVngc 巨大なC/C++遺産ですぐに動けないだけでおそらく少しずつ進めているのだろう
もし何ら対策しないところがあるとすればそのゲーム会社だけ取り残されるのだろう
もし何ら対策しないところがあるとすればそのゲーム会社だけ取り残されるのだろう
929デフォルトの名無しさん
2024/05/17(金) 23:17:51.68ID:+PGm3s9t ゲームなんていう表層的な分野でRustは採用なんてされてないだぁ!って駄々をこねられてもねえ
930デフォルトの名無しさん
2024/05/17(金) 23:57:11.09ID:BR1qVngc 分野によって対応の時間差が出るだろうけど
C/C++排除の流れは止まらない
C/C++排除の流れは止まらない
931デフォルトの名無しさん
2024/05/18(土) 00:25:26.98ID:Hzmk0zu+ 少なくともアメリカの軍事分野の制御システムは>>500の声明のとおり最優先でC/C++からRustへの置き換えられるのが確定してるし民間に広まるのは時間の問題
932デフォルトの名無しさん
2024/05/18(土) 00:35:56.17ID:woQdAE7H DirectX、OpenGL、Vulkanといった主要なグラフィックスAPIがC/C++で作られてるし
ゲーム分野が仮にRustに置き換わるにしろ数十年はかかりそう
ゲーム分野が仮にRustに置き換わるにしろ数十年はかかりそう
933デフォルトの名無しさん
2024/05/18(土) 06:54:07.34ID:CGudIpEF ポインタの概念を経由しないでrustから入るってほぼ無理だと思うけどね。
rustから入ればc/c++はいらないって人はその辺を誤魔化しすぎてんだよ。
rustから入ればc/c++はいらないって人はその辺を誤魔化しすぎてんだよ。
934デフォルトの名無しさん
2024/05/18(土) 09:05:31.34ID:knMB7JYq ポインタの概念の理解は必要だけど C の構文は理解困難なのよね。
935デフォルトの名無しさん
2024/05/18(土) 10:36:57.70ID:Fx9Rd4Sf rustがメインで使われるようになろうとも、組み込み系の最初の学習教材としてはC言語が一番扱いやすいから大学で組み込み系での実践言語として今後も使われていくよ
一定数ははじめからRustを教えたりJavaを教えるところもあるかもだけど
一定数ははじめからRustを教えたりJavaを教えるところもあるかもだけど
936デフォルトの名無しさん
2024/05/18(土) 10:48:07.73ID:XduL+8Iy なんか勝手に組み込みの話にされてるけどゲームはC/C++が残り続けるよ
Rustでゲームを作るのは流行らない
Rustでゲームを作るのは流行らない
937デフォルトの名無しさん
2024/05/18(土) 18:43:24.68ID:Olj0jDDg 政府レベルで勧告しているから少なくともビジネスレベルやその製品まではC/C++が排除されてRustへ置き換わる
ゲームのような枝葉末節は知らん
ゲームのような枝葉末節は知らん
938デフォルトの名無しさん
2024/05/18(土) 19:54:53.77ID:JFC2kl3y ゲーム作る人大半の人は、言語じゃなくて、
どんなゲームエンジンを使うかしか意識しないでしょ。
まずは、メジャーなゲームエンジンに、
Rustが採用されるところからじゃない。
どんなゲームエンジンを使うかしか意識しないでしょ。
まずは、メジャーなゲームエンジンに、
Rustが採用されるところからじゃない。
939デフォルトの名無しさん
2024/05/18(土) 20:34:58.97ID:knMB7JYq Rustでゲームは向かないみたいな記事はあったけど、あれもゲームエンジンのレイヤとかではなくてもっと上のゲーム固有のロジックを記述する時にRustは向かないというだけの話じゃなかったか?
940デフォルトの名無しさん
2024/05/19(日) 08:21:11.59ID:J8UPACIo ゲーム固有の言語と汎用の低級言語の二つを採用するのが良い
でも上のレイヤはGUIとかデータ記述言語とかで置き換えられ
ロジックを記述する言語は一つしか採用されないみたいな思想の人もいるかな
でも上のレイヤはGUIとかデータ記述言語とかで置き換えられ
ロジックを記述する言語は一つしか採用されないみたいな思想の人もいるかな
941デフォルトの名無しさん
2024/05/19(日) 13:44:20.88ID:UOsr9CB4 >>938
まともなゲーム会社はエンジンを内製するんで何の言語使うかとても意識するけど
まともなゲーム会社はエンジンを内製するんで何の言語使うかとても意識するけど
942デフォルトの名無しさん
2024/05/19(日) 14:21:47.30ID:9ppbKK2j 改造とかカスタマイズはするかもしれんが、まともなところイコール内製は成立しないんじゃないかな。
943デフォルトの名無しさん
2024/05/19(日) 14:58:26.82ID:9JWy2KZh 数年前にもRustはゴミ。使う奴なんていないみたいなことを言っている奴がいた気がするが
944デフォルトの名無しさん
2024/05/19(日) 15:44:35.31ID:J8UPACIo じつはLLVMのインフラを捨てずカスタマイズしたのがRust
逆に、プロトコルの互換性はあっても
古い実装と古いコンテンツを捨ててしまうのがインターネットでしょ
逆に、プロトコルの互換性はあっても
古い実装と古いコンテンツを捨ててしまうのがインターネットでしょ
945デフォルトの名無しさん
2024/05/20(月) 11:59:29.58ID:yyhnuWrn でもお前ミドルウェアとか全く書かないじゃんってやつばっかなのになぜかrust使おうとするやつ
946デフォルトの名無しさん
2024/05/20(月) 18:43:29.11ID:4ugUfB32 似たような理屈で
循環参照を全くやらないやつはmark&sweepを禁止される
循環参照を全くやらないやつはmark&sweepを禁止される
947デフォルトの名無しさん
2024/05/22(水) 21:52:53.58ID:0G81pYpr JetBrains開発Rust用IDEのRustRoverが安定版リリースに向けてライセンス体系を発表したけど非商用無料で使わせて貰えるみたい
ttps://blog.jetbrains.com/rust/2024/05/21/rustrover-is-released-and-includes-a-free-non-commercial-option/
ttps://blog.jetbrains.com/rust/2024/05/21/rustrover-is-released-and-includes-a-free-non-commercial-option/
948デフォルトの名無しさん
2024/05/23(木) 02:03:24.72ID:zV267ZMC おお (^-^)
949デフォルトの名無しさん
2024/05/23(木) 06:59:30.95ID:nsNudoX6 RustRover 優秀そうだけど、デファクトになってほしくないんだよなぁ。LSPベースの rust-analyzer と開発体験を分断されたくない。
Kotlin みたいに JetBrains 製品にお布施しないとまともな開発者体験を得られない言語に成り下がられるのはゴメンだ。
Kotlin みたいに JetBrains 製品にお布施しないとまともな開発者体験を得られない言語に成り下がられるのはゴメンだ。
950デフォルトの名無しさん
2024/05/23(木) 07:38:03.27ID:gde9MjoR JetBrainsのRustIDE、完全有料になるかと思ってたわ
951デフォルトの名無しさん
2024/05/23(木) 08:30:48.75ID:nvuBPJ3U どうせ頃合いを見て有料化するだろ
952デフォルトの名無しさん
2024/05/23(木) 09:03:01.21ID:pOxW5wqV > 開発体験を分断されたくない。
後発にしては厳しい無料条件なので心配しなくても良いかと
正式な開発でなくても(リモートワークも含めて)仕事時間中に使えば
"regular direct or indirect income"に該当するから"non-commercial license"は適用違反
"non-commercial license"はテレメトリーをオプトアウト出来ないので要注意
後発にしては厳しい無料条件なので心配しなくても良いかと
正式な開発でなくても(リモートワークも含めて)仕事時間中に使えば
"regular direct or indirect income"に該当するから"non-commercial license"は適用違反
"non-commercial license"はテレメトリーをオプトアウト出来ないので要注意
953デフォルトの名無しさん
2024/05/23(木) 11:44:30.79ID:on9rPJCX >>949
KotlinはintellijのCommunity版では駄目なの?
KotlinはintellijのCommunity版では駄目なの?
954デフォルトの名無しさん
2024/05/23(木) 19:28:45.95ID:BdcLV1xd >>912
とバカが申しております
とバカが申しております
955デフォルトの名無しさん
2024/05/23(木) 19:58:53.15ID:6Gn5p/CD バカにはスクリプト言語でまともなコードを書くのは難しい
956デフォルトの名無しさん
2024/05/23(木) 22:37:27.54ID:jrJOBQ7e >>831の反Rustの人ですら
数行のコード以外はスクリプト言語よりもRustの生産性が高いと認めてるもんな
数行のコード以外はスクリプト言語よりもRustの生産性が高いと認めてるもんな
957デフォルトの名無しさん
2024/05/24(金) 11:24:20.14ID:56Y1qcJr 10行以内かつ実行時間10秒以内のスクリプトだけはPythonの方が生産性が高い
958デフォルトの名無しさん
2024/05/24(金) 12:56:31.70ID:nrXjP27l 四半期に一回、特定のひと一人で、実行時間1分みたいな、たくさん動かないやつはJVMか.NET系で買いてるかな〜
Rustで書くスキルも無いが。
Rustで書くスキルも無いが。
959デフォルトの名無しさん
2024/05/24(金) 17:03:15.24ID:2N4ieM97 >>956
んなこたない。適当なAPI叩いて結果保存するくらいのことでわざわざrustなんか使わねーよ。
んなこたない。適当なAPI叩いて結果保存するくらいのことでわざわざrustなんか使わねーよ。
960デフォルトの名無しさん
2024/05/24(金) 18:06:34.32ID:kgcJienR シェルスクリプトでいいわな
961デフォルトの名無しさん
2024/05/24(金) 18:25:46.80ID:/GRQnPSE 俺もbashスクリプトで辛くなったらRust使ってる
962デフォルトの名無しさん
2024/05/24(金) 18:33:51.22ID:4a8mskew シェルスクリプトはもう古い
クソ文法すぎる
これからは google/zx だよ
クソ文法すぎる
これからは google/zx だよ
963デフォルトの名無しさん
2024/05/24(金) 20:29:44.37ID:JvVkOY+P いまawsやるならrustがベスト?
964デフォルトの名無しさん
2024/05/24(金) 20:31:15.62ID:wR0icTOd 何でもシェルスクリプトでやろうとするガイジが昔湧いてたなぁ
965デフォルトの名無しさん
2024/05/24(金) 21:19:59.79ID:XJ5j6TX/ AppImageはギルティ?
966デフォルトの名無しさん
2024/05/24(金) 21:51:51.21ID:/GRQnPSE >>963
CPUメモリリソース料金を下げるためにRust利用がベストチョイス
CPUメモリリソース料金を下げるためにRust利用がベストチョイス
967デフォルトの名無しさん
2024/05/24(金) 23:15:30.97ID:s3G1nQRJ やりたいこと次第だけどシェルの代替はPythonでほぼ事足りると思う
ファイル操作、文字列のパースやフォーマット、プロセスの呼び出しなどは簡単にできるし読みやすい
ファイル操作、文字列のパースやフォーマット、プロセスの呼び出しなどは簡単にできるし読みやすい
968デフォルトの名無しさん
2024/05/24(金) 23:15:34.63ID:s3G1nQRJ やりたいこと次第だけどシェルの代替はPythonでほぼ事足りると思う
ファイル操作、文字列のパースやフォーマット、プロセスの呼び出しなどは簡単にできるし読みやすい
ファイル操作、文字列のパースやフォーマット、プロセスの呼び出しなどは簡単にできるし読みやすい
969デフォルトの名無しさん
2024/05/24(金) 23:31:06.67ID:y1+3vies シェルスクリプトとRustで十分
Pythonは不要
Pythonは不要
970デフォルトの名無しさん
2024/05/24(金) 23:53:57.26ID:fBactBUY wslが使い物になるようになってから全部シェルスクリプトでよくね?ってなっちゃった
971デフォルトの名無しさん
2024/05/24(金) 23:59:24.64ID:y1+3vies ある程度以上はRust利用
972デフォルトの名無しさん
2024/05/25(土) 06:44:35.86ID:J0svnUgO973デフォルトの名無しさん
2024/05/25(土) 08:48:10.16ID:vDhIrX/5 Pythonってライブラリ資産が豊富でマルチプラットフォームなスクリプトだから使われてるだけでしょ
974デフォルトの名無しさん
2024/05/25(土) 09:34:12.56ID:q+P8yrMm975デフォルトの名無しさん
2024/05/25(土) 09:57:20.38ID:0KAJWBX2 これだけネットインフラのRust化が進んでいて「流行らない」と言い出す人
976デフォルトの名無しさん
2024/05/25(土) 10:30:11.54ID:q+P8yrMm じゃあ数字で出してよ
pythonが流行ってるとしてRustはどうなのか?
ユーザ数でもプロダクト数でも何でも良いから比較数値を出して見てよ
pythonが流行ってるとしてRustはどうなのか?
ユーザ数でもプロダクト数でも何でも良いから比較数値を出して見てよ
977デフォルトの名無しさん
2024/05/25(土) 10:45:29.87ID:Ok/Wj9Ar >>976
分野に定着すれば数が少ないことは「消えそう」という根拠にはならない。
総合的な判断なので一部の数値を見るのはあまり意味がないが……。
事実上の標準であるリポジトリ PyPI と crates.io のパッケージ数はそれぞれ 543556 と 146503 。
Python のほうがかなり数は多いが Rust が消えそうなほど弱小ということはない。
エンドユーザーに近いほうが数は多いのが自然だし。
分野に定着すれば数が少ないことは「消えそう」という根拠にはならない。
総合的な判断なので一部の数値を見るのはあまり意味がないが……。
事実上の標準であるリポジトリ PyPI と crates.io のパッケージ数はそれぞれ 543556 と 146503 。
Python のほうがかなり数は多いが Rust が消えそうなほど弱小ということはない。
エンドユーザーに近いほうが数は多いのが自然だし。
978デフォルトの名無しさん
2024/05/25(土) 10:57:59.92ID:566/PNRT The Best Blogs and Websites - Feedly
ttps://feedly.com/i/top/rust-blogs
ttps://feedly.com/i/top/rust-blogs
979デフォルトの名無しさん
2024/05/25(土) 11:20:17.33ID:jCqkIMgy TIOBEとかgithubとか色々でてるじゃん
どう判断するかはあるけどそれくらい探せよ
どう判断するかはあるけどそれくらい探せよ
980デフォルトの名無しさん
2024/05/25(土) 11:24:55.77ID:CqoBbhiM >>973
十分普及しているからさらに使われれるという面もあるな。
配布するスクリプトは昔ならわざわざ実行環境入れてもらうハードルがあるから標準の sh や bat を書いてたけど
今は安心して python 一本だな。
十分普及しているからさらに使われれるという面もあるな。
配布するスクリプトは昔ならわざわざ実行環境入れてもらうハードルがあるから標準の sh や bat を書いてたけど
今は安心して python 一本だな。
981デフォルトの名無しさん
2024/05/25(土) 11:48:54.94ID:q+P8yrMm >>980
数は正義だからね
数は正義だからね
982デフォルトの名無しさん
2024/05/25(土) 11:49:54.05ID:7FqN5d/t ここはRustスレだ
バカはクズ言語Pythonを使っていろ
しかしバカはここから出て行け
バカはクズ言語Pythonを使っていろ
しかしバカはここから出て行け
983デフォルトの名無しさん
2024/05/25(土) 11:57:26.64ID:q+P8yrMm 俺がRustを使ってないと何時から錯覚した?
他の言語も使うがRustも普通に使ってるぞ
他の言語も使うがRustも普通に使ってるぞ
984デフォルトの名無しさん
2024/05/25(土) 12:08:10.83ID:0t71UrW4 例えばJavaが消える最大の原因はKotlinだろうから
JavaとPythonを比較するのは無意味だと思う
RustとPythonも同じ
JavaとPythonを比較するのは無意味だと思う
RustとPythonも同じ
985デフォルトの名無しさん
2024/05/25(土) 21:06:08.47ID:KcOF6HNo986デフォルトの名無しさん
2024/05/25(土) 23:37:23.93ID:0t71UrW4987デフォルトの名無しさん
2024/05/26(日) 05:37:36.04ID:3cUpvkRQ pythonが定着するとかイヤだなぁ・・・
pythonとかjsとか使わざるをえないからイヤイヤ使う言語ってほんとイヤ
pythonとかjsとか使わざるをえないからイヤイヤ使う言語ってほんとイヤ
988デフォルトの名無しさん
2024/05/26(日) 11:36:19.22ID:7yHeuCrc ネイティブコンパイラはOS依存を強制される説があって
javaとかjavascriptとかは強制がないとされていた
最近はネイティブではなくunsafeが悪いみたいな話になってるね
javaとかjavascriptとかは強制がないとされていた
最近はネイティブではなくunsafeが悪いみたいな話になってるね
989デフォルトの名無しさん
2024/05/26(日) 16:24:52.23ID:yRNPjL2P990デフォルトの名無しさん
2024/05/26(日) 17:48:00.24ID:VjGSgwTY プログラムを書くのがプログラミングの専門家ってわけじゃないのが現代だからね。
学者ならどの分野にしても多少はプログラミングも (専門家レベルでは全くないにしても) 学んで欲しいが
事務員とかアーティストが使うことを想定したらかなりハードルを下げるのはしょうがない。
学者ならどの分野にしても多少はプログラミングも (専門家レベルでは全くないにしても) 学んで欲しいが
事務員とかアーティストが使うことを想定したらかなりハードルを下げるのはしょうがない。
991デフォルトの名無しさん
2024/05/26(日) 19:02:26.55ID:hB5FbGHx Pythonの最も速くて使いやすいパッケージ管理ツールRye+uvはRust製
Python⇔RustはPyO3で相互呼び出し可能
今後のPythonはツール面でもライブラリ面でもRustの助けを得て進んでいく
Python⇔RustはPyO3で相互呼び出し可能
今後のPythonはツール面でもライブラリ面でもRustの助けを得て進んでいく
992デフォルトの名無しさん
2024/05/26(日) 21:48:57.66ID:qVdh8/fj CPythonじゃなくてRustPythonになるのは歓迎
993デフォルトの名無しさん
2024/05/26(日) 22:56:51.38ID:XmfdYoG9 つまりPythonを使っていると思ったら実はRustを使っているということか
994デフォルトの名無しさん
2024/05/26(日) 23:19:03.24ID:E+Olvt9B PythonもJavaScriptも今どきのイケてるパッケージはRustで書かれてるよ
RubyやPHPは知らん
RubyやPHPは知らん
995デフォルトの名無しさん
2024/05/26(日) 23:47:36.53ID:qyBtaRPy X言語でX言語用のツールを作ってたけど
遅いとか色々問題が出てきたのでrustで作り直しました
という事例がそこそこ出てきたけどそこで
c++という事例あるかな?
遅いとか色々問題が出てきたのでrustで作り直しました
という事例がそこそこ出てきたけどそこで
c++という事例あるかな?
996デフォルトの名無しさん
2024/05/27(月) 00:44:37.08ID:5v+U6kmL >>994
RubyのYJITはRust製でしょ
RubyのYJITはRust製でしょ
997デフォルトの名無しさん
2024/05/27(月) 00:45:25.77ID:5v+U6kmL >>980
スレ立てよろ
スレ立てよろ
998デフォルトの名無しさん
2024/05/27(月) 06:40:16.06ID:T4AFD1f4 立てるよ?
999デフォルトの名無しさん
2024/05/27(月) 06:41:53.55ID:T4AFD1f41000デフォルトの名無しさん
2024/05/27(月) 06:43:57.69ID:T4AFD1f4 馬
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 93日 13時間 6分 6秒
新しいスレッドを立ててください。
life time: 93日 13時間 6分 6秒
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を超えています。これ以上書き込みはできません。
ニュース
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」★2 [冬月記者★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「稼ぐのよ!」高市総理が電話ガチャ切りで伝えたこと 鈴木憲和農林水産大臣が国政報告会に出席 自身が目指す農政の方針語る [煮卵★]
- 『しんちゃんと岸田さん』 [175344491]
- 日本株、大暴落!!! [252835186]
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
- 港区女子「50kg越えちゃった、港区だとデブ界隈だよ(>.<)」🤳パシャッ👉10万いいね [329329848]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- んなっても良いお🏡
