Rust part22

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2024/01/20(土) 23:21:40.08ID:wyzQTwgG
公式
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 part21
https://mevius.5ch.net/test/read.cgi/tech/1692105879/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
2024/02/06(火) 22:27:24.19ID:QhlaBKsr
JavaScript SDKも内部は非同期だけど使いやすいよ
単なるコールバックで同期的に書けるし
2024/02/06(火) 22:33:38.08ID:QhlaBKsr
どうも最近tokioがでしゃばってきて気持ちが悪い
ここまできたらもうコアをtokioに入れてWeb用の専用言語としてフォークしたほうがよいのでは?
2024/02/06(火) 22:35:03.21ID:GPQIFWbx
>>340
はぁ?そんなに同期でやりたいなら同期のある言語のSDKを使うかAWS CLIでコマンド実行しててくれよ
同期同期言ってるやつはRustでAWS触るアプリ作ってねえだろ
こちとらつい先日ようやく待ちに詫びたAWS SDK for Rustが正式版になって、ようやく、ようやくこれを本番投入できるって喜んだのによ
2024/02/06(火) 22:36:26.88ID:QhlaBKsr
まあ俺はCLI使ってるw
ぶっちゃけコードで書くメリットがわからない
2024/02/06(火) 22:36:30.11ID:UMLcFsAo
というか同期版もランタイム切り替えも別にissueとしては却下されてるわけじゃないんだし
欲しい人は実装してPR出せばいいんだよ
それがされてないってことは結局需要がないんでは?
2024/02/06(火) 22:38:18.90ID:YgjIpfMr
>>344
はい、じゃあお前の負けね
もう二度と口答えすんなよ
2024/02/06(火) 22:40:20.30ID:QhlaBKsr
>>341
不通だろうが普通はソケットのタイムアウト値設定するから許容できる範囲内の値を設定すればよろしい
どちらにしろリトライすることになるのだ
349デフォルトの名無しさん
垢版 |
2024/02/06(火) 22:44:11.89ID:oodj9UUv
「そんなに××したいなら○○使えば良いんじゃないの? 」→をはい○○使っています」っていう流れ、最強言語たるRustのスレの流れとしてはあまりにも敗北感がある
2024/02/06(火) 22:50:36.48ID:QhlaBKsr
まとめると
tokio使わない同期API作れ
非同期版はランタイム切り替えできるようにしろ
ってことでオッケー?
2024/02/06(火) 22:53:13.82ID:j3cHqQGJ
>>340
コンマ1秒~1秒の頻度でデータベースクエリするWebアプリとかだったら非同期のが次々に処理できると思うけど
2024/02/06(火) 22:56:34.96ID:LdUhtiaW
>>351
なんだそれ?
お前そんなにバカみたいな頻度でAWS APIを使うの?笑うわ
2024/02/06(火) 22:57:34.03ID:MUGS3GDn
>>351
クエックエッ
笑笑
2024/02/06(火) 22:58:56.15ID:QhlaBKsr
>>352
それくらいの頻度で呼び出す可能性があるのってGAFAMクラスの会社ぐらいじゃね?w
2024/02/06(火) 23:04:22.29ID:JKYjZJJo
>>351
ゲームサーバーとかかな?
2024/02/06(火) 23:06:26.14ID:6KaTvZBM
>>354
それな笑笑
>>351は負けず嫌いの単発の敗者笑笑
2024/02/06(火) 23:08:14.09ID:IqTcjswh
使ってる用途が違うから噛み合わないんだな
CLIで十分な用途とAPIが必要な用途くらいは区別しようぜ
2024/02/06(火) 23:08:21.31ID:1CYgky+r
あ、もしかしてガーファ勤めなんかな笑笑?
なわけねえだろ笑笑
2024/02/06(火) 23:09:19.34ID:nVMpMpiW
ガーファ最強笑笑
2024/02/06(火) 23:10:22.99ID:fZ7dPHD5
>>351はバカです
2024/02/06(火) 23:12:04.80ID:N6+r1oq4
>>355
ゲームサーバーってなに?マインクラフトでもやってるの?ガキんちょか?
2024/02/06(火) 23:15:06.92ID:aJWngw7a
>>357
うるさいな
非同期じゃないといけない理由を具体的に言ってみろよ?あ?
363デフォルトの名無しさん
垢版 |
2024/02/06(火) 23:16:25.72ID:QhlaBKsr
>>351
GAFAM社員age
2024/02/06(火) 23:26:25.88ID:qbDsNmRG
自分用のツールなら一々tokioとかめんどくさいとか
わからんでもないけどそういう人をターゲットに
してないからなあ
2024/02/06(火) 23:26:55.98ID:IqTcjswh
GAFAMの規模を舐めすぎだろ
10リクエスト/秒程度なら中堅企業の社内向けシステムでも普通にあるレベル
2024/02/06(火) 23:35:03.14ID:O9rpVDxS
実際ゲームサーバーって大変そうよね
最近話題になったパルワールドってやつもサーバー要素があるけど、ゲームデータをどこかしらのクラウドサービスをレンタルしてやってるわけで、>>351よりもすごいレベルで行われてそう
パルワールドのサーバーはどの言語のWebフレームワークでやってるのか知らんがJavaとかC#、GoあたりならRustのが高速、省メモリでサーバー代を節約できただろうな
2024/02/06(火) 23:43:25.52ID:ZEorkRES
ゲームサーバーってプログラミング関係あるの?サーバーを借りてるだけなんじゃないの?
2024/02/06(火) 23:56:44.33ID:7jT2HGcX
無知は恥ってよくわかるね
369デフォルトの名無しさん
垢版 |
2024/02/07(水) 00:00:36.36ID:/3r7f4vo
>>366
人気ゲームだと桁が3つ4つ違う
370デフォルトの名無しさん
垢版 |
2024/02/07(水) 00:02:07.90ID:HSCt9mfq
>>368
無知自体は何も恥じることではない
2024/02/07(水) 00:25:18.71ID:ZYweHa7T
まさかゲームサーバーがなんなのかわからない人がこのスレにいるとは
2024/02/07(水) 00:29:20.89ID:HhW4UiiT
AWSはCLIでいい、非同期はゴミって結論出たね
2024/02/07(水) 00:41:54.53ID:O61WTlOm
通信時間+向こうでの処理時間はCPUにとって莫大な待ち時間
async/awaitによる非同期プログラミングをすれば同期と同じようにプログラムを組めつつその莫大な待ち時間を有効活用できる
これは特定のプログラミング言語に関係なく対応しているすべての言語で成り立つ話
もちろんRustでも同じ
2024/02/07(水) 00:51:24.66ID:EnTbeTL9
AWS Lambdaだと同時実行数の制限があるから、同期処理をするのは犯罪的。
2024/02/07(水) 00:58:32.65ID:p1o31ALH
現状のasync/awaitの使いやすさは
Swift > C# > JavaScript >>> Rust
2024/02/07(水) 00:59:45.05ID:p1o31ALH
KotlinやF#は使ったこと無いのでわからない
2024/02/07(水) 01:07:53.33ID:p1o31ALH
>>375
Python忘れてたわ
Swift > C# > JavaScript/Python >>> Rust
2024/02/07(水) 01:10:26.42ID:O61WTlOm
>>375
Rustが最もきめ細かく扱えて便利
2024/02/07(水) 01:13:21.82ID:O61WTlOm
もちろん性能面でもRustが最も有利
だからインフラに至るまで採用されている
2024/02/07(水) 01:20:07.41ID:R4SwjTOT
>>377
c++は?
2024/02/07(水) 02:44:08.20ID:7skGlnTk
>>377
swiftってそんなに書きやすいんか?
382デフォルトの名無しさん
垢版 |
2024/02/07(水) 04:57:14.90ID:uDrK2oQi
>>375
asyncもRxもC#が発祥だけどこの言語だけ異常だよな
2024/02/07(水) 06:30:56.86ID:EnTbeTL9
Pythonはスレッドが擬似的なので並行処理の性能が低い。
2024/02/07(水) 06:35:55.67ID:5V24VW//
>>375
Kotlinが抜けてる
Kotlin>(越えられない壁)>Swift > C# > JavaScript/Python >>> Rust
2024/02/07(水) 06:52:43.34ID:r0kpHnB4
Rustを叩きたいだけのアンチさんだから無茶苦茶や
2024/02/07(水) 07:15:51.00ID:Z0+c6VxI
>>380
C++は論外
アンチではなく本当に書きにくい
さらにtokioのような高性能な基盤も整備されていない
2024/02/07(水) 07:16:35.05ID:0B0Tt2Zv
非同期はC#GoKotlinRustのどれも同等に使いやすいと感じる
JavaはSpringありき、Swiftはつかったことない、C/C++は考えたくない
2024/02/07(水) 07:25:44.75ID:qmafesNd
swiftやdartはモバイルアプリ開発以外で全く使われてない
2024/02/07(水) 07:30:51.78ID:KVAhvvz+
SwiftはApple製ってだけで使う価値なし
開発環境の依存があまりに高すぎる
390デフォルトの名無しさん
垢版 |
2024/02/07(水) 07:38:16.28ID:2LChEtDL
出来ればJVMも使わずに済みたい
なんとなく
2024/02/07(水) 07:40:43.27ID:lxo2szIV
>>375,377,384
なんか言語のラインナップ見るにバリバリのフロントエンド開発屋さんかな?
そらRustを使うことなんてないわな
なんでこのスレにいるのか
392デフォルトの名無しさん
垢版 |
2024/02/07(水) 07:53:07.34ID:q5vZGjA+
Rustはフロントエンドも取り込むのでRustスレはフロントエンド屋も書き込んで良い
2024/02/07(水) 08:12:27.93ID:gKkOyEKn
まぁRustの非同期の良いところはランタイムを言語から切り離したので
Webでも組み込みベアメタルでも非同期が使えるところなんだけど
使い勝手としてWebのユースケースに特化した他言語に負けるのはしょうがない
これは時間がたっても根本的には改善されないから
不満があるなら早く他言語に移ったほうがいいよ
2024/02/07(水) 08:15:11.44ID:0B0Tt2Zv
>>390
ならGoかC#のASP.NETでいんじゃね?
さまざまな導入コストを払えるなら事実上クラウドネイティブ言語のRust一択

それとJVMがダメという理由が、Oracle JVMのLTSサポート期間が短縮されJVMのイメージが悪化したってことに依るものなら、
Kotlin/JVMだとJDK8をベースに、どのJDKバージョンでも動くようにサポートされ続けられるから、JDK8から最新のJDK21までのLTSバージョンで難なく動く
https://kotlinlang.org/docs/faq.html#which-versions-of-jvm-does-kotlin-target
OracleのJavaは終わってるがJetBrainsのKotlinは無限に始まってる
2024/02/07(水) 09:03:48.96ID:7skGlnTk
静的言語ではkotlinが個人的には1番かな
コルーチンスコープを作れるから既存の処理の中に非同期を唐突に入れられる
これが理想
ただしクラスありきなのが微妙なところ
クラスなしでkotlinのような使い心地がある言語が欲しい
2024/02/07(水) 09:09:08.81ID:oJ2HGwP7
>>373
その時間有効に使えるのかって話なんだよ。
例えばRDSを休止したい場合に、休止するAPIを呼んで、状態を確認するAPIで休止を確認してすると思うけど、
そういう処理を自動化する時に非同期でハンドリングする意味あるかっていう。

DynamoDB のデータ操作とか業務トランザクション扱う系は非同期あっていいとは思うけどね。
397デフォルトの名無しさん
垢版 |
2024/02/07(水) 09:21:27.90ID:+r3v4OXU
既存の処理の中に非同期を唐突に入れられるのってランタイムがグローバルで一意じゃないと出来なそう
ランタイムいくらでも作れるし複数種類存在しうるRustでは無理そうね
2024/02/07(水) 09:33:38.70ID:3p2K3Rhv
>>395
それはRustも同じ
Rustのasyncもコルーチンでありtrait Futureによって抽象化されている
Future::pollの引数であるContextがKotlinでのコルーチンコンテキストに相当する

>>397
Rustでも既存の処理に唐突に非同期を取り扱える
Rustでtokioのようなランタイムが必要になるのはspawnして完全に制御外へ切り離すときのみ
制御内ならば複数のFutureを取り扱う場合でもjoinなど様々な方法で取り扱うことができる
もちろんtokioランタイムは必要ない
2024/02/07(水) 09:42:26.35ID:x+YpU8Xz
async{}.await
2024/02/07(水) 09:45:13.70ID:kuiQPbhX
>>380
C++ はその性質上、システムとの連携が必要な標準ライブラリは薄い。
幅広いシステムで実現可能なように配慮するから。
必要ならサードパーティライブラリでやれというスタンス。
ただそこで強力な誰もが認めるサードパーティライブラリが結局は現れなかったというのが C++ のあかんかったところなんやわ。

個人的には C++/WinRT の非同期処理は好きなんだがね。
2024/02/07(水) 10:36:03.38ID:0B0Tt2Zv
>>395
KotlinはデフォルトでclassがJavaでいうfinal classで定義されてて
・クラス継承禁止
・やってることはCの構造体と同じ
だから、自分はclassであるデメリットを感じてないかな

Kotlinでクラス継承するにはご存知の通りclassをopen classやabstract classと書くから見て分かるのがヨシ
402デフォルトの名無しさん
垢版 |
2024/02/07(水) 10:46:44.24ID:rJGaKMx5
>>396
>その時間有効に使えるのかって話なんだよ。
非同期にすることでawsに関係なく別の処理を同じリソースで走らせられる

もしその時間を有効に使えないような用途なら省リソース高性能とは無縁だからわざわざRustを選ぶ必要ない
2024/02/07(水) 10:52:51.94ID:ndvPWcVf
なんかプログラミング言語総合スレみたいになってんな
いやちゃんと説明してくれて勉強になるから別にいいんだけど
404デフォルトの名無しさん
垢版 |
2024/02/07(水) 11:05:20.92ID:tO9J4ky9
>>402
Rustはプログラム言語の王だから理由がなくてもRustを使って良い
2024/02/07(水) 11:12:27.12ID:dhCR1KyQ
>>398
え、tokioランタイム無しで非同期関数呼べるんだ? 知らんかった
でもクレートの依存は付いてきてビルド遅くなるよね
2024/02/07(水) 11:34:03.35ID:A5F8kPnc
>>405
tokioに依存してない非同期関数ならクレートの依存もなく自分でFuture::pollを呼べばいい
例えばpollsterってクレートはそれ専用で、block_onだけ呼べる最小限の実装になってるよ
407デフォルトの名無しさん
垢版 |
2024/02/07(水) 11:48:56.31ID:EgwSQeAh
自分でFuture::poll呼ぶとか罰ゲームすぎるやろ
408デフォルトの名無しさん
垢版 |
2024/02/07(水) 12:13:10.25ID:DO0hQq6L
>>361
ゲームサーバーはユーザーの操作ログを逐一集めてるよ。
409デフォルトの名無しさん
垢版 |
2024/02/07(水) 12:15:26.39ID:DO0hQq6L
>>370
いや、無知は恥だよ。ただ罪では無い。
無知のままでいようとすることは罪だけど。
あ、実際の法律云々じゃなくて技術者としてね。
2024/02/07(水) 12:39:51.49ID:3p2K3Rhv
>>407
自分で呼んでもいいし自分で呼ばなくてもいい
それは何をやりたいかどこまでやりたいかなどに依存

>>405
軽いものなら例えばこれだけ
fn main() {
 let val = futures_lite::future::block_on(async {
  ...
 });
}
2024/02/07(水) 13:49:24.53ID:hXp0LcUB
pollを自分で呼ぶコードは悪手とかなんとか主張する人間と
そのコードに警告もしないコンパイラを
比較できるのがRustの楽しいところで
リソースを節約する話などは人間と人間の論争でありRustに責任はない
412デフォルトの名無しさん
垢版 |
2024/02/07(水) 19:07:50.52ID:tO9J4ky9
C++に安全の責任はない
Pythonに動作速度の責任はない
Brainfuckにリソース節約の責任はない

Rustにリソース節約の責任はない
413デフォルトの名無しさん
垢版 |
2024/02/07(水) 19:08:11.49ID:tO9J4ky9
うーん
2024/02/07(水) 19:08:14.90ID:e4qAQ6ae
>>366
ゲームのミドルウェアがUE4だから、サーバー側もC++で書いてるんじゃないかな。
2024/02/07(水) 19:15:08.54ID:p3QVKrD0
>>412
リソース節約の責任って何?
リソース節約の責任があるプログラミング言語が存在するの?
416デフォルトの名無しさん
垢版 |
2024/02/07(水) 19:30:42.71ID:DWMhsuR7
>>412
何の面白味もないな
417デフォルトの名無しさん
垢版 |
2024/02/07(水) 19:49:16.82ID:tO9J4ky9
>>415
リソース節約の責任の定義は>>411に聞くべきでは?
2024/02/07(水) 20:05:00.19ID:oFnccM2b
そもそもRustとそのエコシステムを同一視してるんじゃないか。もちろん不可分なところはあるにせよ、分けて考えないとね。
2024/02/07(水) 23:23:34.90ID:BkEIpOIl
言語の形式的なルールと実利を同一視するのは
ルールを守れば必ず報われるべきってことじゃないか
でもルールを守ることと勝つことは難易度が全然違う
2024/02/07(水) 23:47:29.64ID:Y7NjV+uy
Rustの駄目なところ
コンパイルが遅い
コンパイル時間を含めたらPythonのが圧倒的に速い
421デフォルトの名無しさん
垢版 |
2024/02/08(木) 00:07:22.21ID:5/bJ8Q79
>>420
すごいでちゅねー
422デフォルトの名無しさん
垢版 |
2024/02/08(木) 01:41:05.03ID:2eX+Xi95
Googleがプログラミング言語「Rust」に100万米ドルを助成、「C++」との併存・置き換えを図る
https://forest.watch.impress.co.jp/docs/news/1566662.html
2024/02/08(木) 04:23:52.18ID:vwr7y0Aq
>>420
みっともないからルビガイジみたいなレス乞食やめろよ
2024/02/08(木) 04:49:47.24ID:TVrzLD8V
ルビガイジって何?
2024/02/08(木) 07:47:36.74ID:guCqNZzs
何にでもruby推してくる変な人の事じゃね?
2024/02/08(木) 10:03:29.26ID:5zPu7Sf5
>>414
フロントとサーバーは間にネットワーク通信が挟まるんだから言語をフロントとサーバーで統一するメリットなし
2024/02/08(木) 10:24:35.32ID:TVrzLD8V
>>426
直接に通信するあたりは言語を統一しておくと共通のライブラリを使えたりするので便利。
少人数で運用しているシステムだとクライアントとサーバーがある程度に
共通のスキルセットで構築できたほうがいいってこともある。
それがデメリットを上回るほどのメリットかどうかは状況によるけど。
2024/02/08(木) 12:09:04.39ID:ug5u5xxX
gRPCやRESTなら主要言語のほぼ全てで対応されてるんだから別に同じ言語に囚われる必要無いと思うけどなあ
2024/02/08(木) 12:31:37.22ID:LLz4mv+z
シリアライズフォーマットの話とプロトコルの話も区別できないのかぁ
2024/02/08(木) 12:39:36.57ID:+yfo15bd
スキルセットが一番発揮されるのはコード実装前の設計段階だよ
アルゴリズムとデータ構造、各種言語の各種フレームワークの知見を活かして設計してるだろ?
実装段階に入ったらあとは作業
フロント担当サーバー担当それぞれが実装する
フロントとサーバーはお互いに入出力のAPIだけ知ってればいい
言語の書き方そのものに対するスキルセットは納入期間の短縮にでも活かしてくれ
2024/02/08(木) 12:43:32.12ID:ug5u5xxX
>>429
そんなんprotobufかjsonのどっちかだろ
当たり前すぎてデータをどう送受信するかの話をしてたわすまん
2024/02/08(木) 12:47:52.48ID:ug5u5xxX
あっごめんzstdかgzipのどっちでデータ圧縮するかの話もしたほうがいいの?
2024/02/08(木) 12:58:22.52ID:L2e7Z7sZ
それら全て些細な問題でどうでもいい
通信でもファイルでも何でも
APIやフォーマットさえ決められていればよい
どの言語かどのフレームワークやライブラリかなんて一切関係なく自由
2024/02/08(木) 13:08:16.93ID:aB2xl6fL
>>426
一応、lddで確認したけれど、Epicのオンラインライブラリリンクしてたから、>>427 も言うように、クライアント側のゲームエンジンに引っ張られてると思う。
2024/02/08(木) 13:14:50.58ID:ug5u5xxX
自社規格のデータをシリアライズ、デシリアライズするのに自社ライブラリを使うのと、サーバーやフロントをどの言語で実装するかは全くの別問題でしょ
>>414が言ってる、サーバーをC++で実装するだなんて効率の悪いことはするもんじゃない
2024/02/08(木) 13:16:12.56ID:L2e7Z7sZ
もちろんサーバとクライアントで同じ言語を利用すると有利な場合もある
もっと複雑なデータを別な形のデータに変換する同じ動作(コード)がサーバでもクライアントでも求められる場合がそれにそれに相当する
具体例としてはサーバサイドレンダリングをしつつフロントエンドでもシングルページのためレンダリングをする場合
従来はサーバサイドをNode.jsにすることで両側JavaScriptにしてコード共有が行われてきたが両側Rustでの動きもある
2024/02/08(木) 13:27:14.44ID:21XfFHH6
人によっては使用言語を統一したほうが数多なるデメリットを単一のメリットが上回ることもある
このご時世、簡略化されたプログラミング言語で溢れたなかで、単一言語しかできないというのは珍しいとは思うが、誰しもがバイリンガルプログラマというわけではない
2024/02/08(木) 13:39:56.20ID:557abryP
unreal engineってフレームワークでサーバーアプリも作れるけど、自前でAPI組んでサーバーやったほうが圧倒的に軽量なんだよね
439デフォルトの名無しさん
垢版 |
2024/02/08(木) 13:40:27.02ID:wg4U7wDf
バイリンガルでないプログラマ、Javaしか書けなそう
2024/02/08(木) 14:05:04.22ID:u09hDjq1
Java界隈では未だにXMLが現役なのかな
一時期は全てがXMLだったけど最近触れる機会がない
2024/02/08(木) 14:06:53.53ID:0U3NNgcj
jsonの後にxml使うとデータの無駄が気になる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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