Rust part21

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2023/08/15(火) 22:24:39.45ID:xzxy4cgp
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

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

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

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/

※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust

※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/

※次スレは原則>>980が立てること

前スレ
Rust part20
https://mevius.2ch.net/test/read.cgi/tech/1677771928/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
2024/01/20(土) 14:59:14.28ID:ppE6WkEJ
みんな経済合理性でRustを選択するんだよな
2024/01/20(土) 15:49:27.64ID:w9m16ZcP
>>952
特に機械学習ではその方向が顕著
MLIRみたいにSIMDやGPUを使う前提でIRが設計されてる

Node.jsが切り開いた非同期IOの登場もでかい
これによってIOの比重が高いプログラムでもIO待ちがなくなり
さらにマルチコア、GPUを活かせる環境が整った

一方Rustはtokioなどの非同期IOを実現できるフレームワークが山のようにある
さらにSIMD命令を直接使える仕様も整備されてきている
(LLVMの最適化によって勝手に使われることも多いが)
マルチスレッドは言わずもがな
他の言語でこれらを全てサポートしている言語はない

現在の最先端の環境を活かせる言語は他に選択肢がない
2024/01/20(土) 16:00:45.48ID:tKcafxZR
RustのWebアプリケーションは未履修だけどぜひやりたいなあ
2024/01/20(土) 18:46:27.21ID:PTOG17pe
>>954
Webで使うにはTokioなどの重量級ランタイムが必要
ただ利用するだけなら難しくはないけどエコシステム含めそこまで安定しているものじゃないのでランタイム含め自力で修正できる力が必須
969デフォルトの名無しさん
垢版 |
2024/01/20(土) 18:55:33.87ID:I+Fu8n3P
>>964
90年代後半にコボラーがJavaでWebアプリを作れるようになるための学習コストに比べればRustの学習コストは断然低い
2024/01/20(土) 19:12:06.87ID:6DBgVQg4
>>969
その時期にいた純粋コボラーって定年間際のジジイじゃん。そりゃ学習コスト高いわ。
2024/01/20(土) 19:21:51.44ID:w9m16ZcP
httpclientもそれぞれのイベントループに対応したものをつかわないとダメだから割と面倒なんだよね
使い方もフレームワークによってかなりクセが違っていて面倒だし
ぶっちゃけWebはGoやpythonでいいんじゃねーかって思う
2024/01/20(土) 19:26:03.92ID:tKcafxZR
Goでいいは分かる
2024/01/20(土) 19:56:32.80ID:k6CjZuQW
Go のランタイムサポートは分厚めだがどうせ要るもの(やること)と考えればそんなに速度的に不利なわけではないよな。
2024/01/20(土) 20:11:15.24ID:u/fg5YR1
速度的にはGoで十分なんだけど型とか貧弱すぎるんだよな…
sumタイプとパターンマッチくらいは欲しい
2024/01/20(土) 20:17:19.49ID:tNrs3Odf
>>968
tokioは他言語と比べて大きくない
そして安定している

>>971
各言語に複数のイベントループライブラリがあってその通りだが
Rustはデファクトスタンダードがあるためそこで困ることはない
2024/01/20(土) 21:17:45.54ID:w9m16ZcP
>>975
いやデファクトがあるのは良いけど
例えばコマンド実行1つとっても
tokio::process::commandとか使わなきゃいけなくてなんだかなあと
非同期版じゃないのと区別しなきゃいけなくて嫌気が刺す
まあpythonもasync使えば同じことなのだけど
2024/01/20(土) 21:24:03.71ID:w9m16ZcP
まあ俺はRust信者だから使うのだけど普通の人はなかなか辛いんじゃないかなーと
その点Goは何も考えなくて良いしpythonもasync使わなけりゃ同期的に書けるし
2024/01/20(土) 21:48:04.29ID:USm4U3n4
>>976
PythonもasyncはそうだしJavaScript(Node)も同期execと非同期exec分かれているし
動作が異なるのだから別になるのは当たり前

もちろんRustでも同様で
そもそも関数の返り値が異なる
だから関数が分かれているのは正しい
したがって一番下位のライブラリが別であることに何ら問題はない

一方で中位ライブラリ作成側の視点に立つと
同期か非同期かだけの違いでasync/awitを除いて全く同じ構造の関数を作ることになる
そのため『?async』キーワードによるジェネリック化がRustでは進められている
期待しているのはこの話でよいのか?
2024/01/20(土) 23:05:04.71ID:w9m16ZcP
>>978
いや見た目は似ててもpythonとはだいぶ違うよ
まずpythonでのasync defは単なるコルーチンオブジェクトなので非同期とか関係ない
これにより恐ろしい柔軟性を持ってる
さらにWebにおいてはASGIという非同期Webフレームワークが満たすべき仕様をまず決めた
その仕様を満たしさえすればどのような実装でも非同期の機能を満たせるような仕様となっている
そこにはもうイベントループなどの概念は消え去っている
さらに同期版と同居できる仕様となっている
なのでdjangoなどは同期版と非同期版の切り替えが可能となっている
このように明らかにユーザーフレンドリーな姿勢を貫いている
2024/01/20(土) 23:17:14.31ID:wyzQTwgG
>>979
Rustのasyncもコルーチンだぞ
まずは理解してから出直して来い
2024/01/20(土) 23:26:48.19ID:HZE0SdTu
>>980
コルーチンではないでしょ
2024/01/20(土) 23:49:39.00ID:nUH4CzWh
Rustのasyncはstackless croutineでstate machineとなっている
個別stackのresouceもswitchingも不要なため軽くて有利
2024/01/20(土) 23:50:29.43ID:u/fg5YR1
Rustのasyncは(スタックレス)コルーチンである
Rustのasyncは(スタックフル)コルーチンではない
どっちも正しいとは思うけど
984デフォルトの名無しさん
垢版 |
2024/01/21(日) 10:13:23.50ID:VnWGTEfZ
>>977
Rustが活きるのってやっぱり軍事系じゃないかな
兵器の制御とかGCなんてもってのほかだし速度も必要
メモリリークも起こせない
2024/01/21(日) 11:18:24.63ID:JCOE1HZY
DAD御用達?
2024/01/21(日) 11:24:54.33ID:8LqvrPkW
物理攻撃にソフトウェアを活用するってある意味「お花畑」だよな
987デフォルトの名無しさん
垢版 |
2024/01/21(日) 11:29:12.59ID:7K9itJgV
パパ活か?DoDだろ
DoD御用達はAdaだぞ
988デフォルトの名無しさん
垢版 |
2024/01/21(日) 11:46:34.67ID:VnWGTEfZ
やっぱりAdaしかないか
プリプロセッサ使うのもNGだからマクロがダメなんかな
2024/01/21(日) 11:59:39.08ID:dFB+Bg2+
とはいえF-35はC++だったんだし、そのうちRust採用されてもおかしくはないけどな
2024/01/21(日) 12:09:12.81ID:4CYZ0hXB
The Book読んでコード打ち込んだりしたが理解できた気がしない
次はどうすればいいの
2024/01/21(日) 13:24:30.49ID:8LqvrPkW
仕様の次は実装とか
いま極端なところにいる奴は次はもう一方の極端に行けばいいし
ちょうどいい位置にいる奴は一生そこに居続ければいいのでは?
992デフォルトの名無しさん
垢版 |
2024/01/21(日) 14:20:11.30ID:sCtD39A+
>>990
理解できてないと感じるのがunsafeやasyncやマクロ辺りならそこは一旦放置して小さいCLIツールをいくつか書いて実践経験を一度積むほうがいいかもしれない

逆にownership/reference/lifetime/generic/traitといったコアなところが理解できてないと感じるならオライリー本など別の入門書をすすめる
993デフォルトの名無しさん
垢版 |
2024/01/21(日) 15:14:08.20ID:eSjvKxMy
>>989
Rustは使われない
ISOプロセスは産業界の評価が高い
994デフォルトの名無しさん
垢版 |
2024/01/21(日) 15:15:15.91ID:eSjvKxMy
F-15は50年以上空を飛んでいることを思い出してほしい
Rustは50年後存在しない
2024/01/21(日) 15:44:39.63ID:cX88PWDV
>>993
Rustのスポンサー欄を見ればわかるけど将来Rustが使われるのは確定されたことだぞ
アンチさんどんまい
2024/01/21(日) 15:46:08.09ID:4rk7TZPC
統計学的に会社や国家、生物種の存続見込みを解析した例を見たことが有るな。
これまでの歴史が長いものはこれからも長く続く可能性が高い。
2024/01/21(日) 15:50:57.32ID:eziZnnQK
>>996
Javaみたいにホストがアホなことするとすぐ廃れるけどな
2024/01/21(日) 16:55:47.23ID:4CYZ0hXB
>>992
ありがと
2024/01/21(日) 19:43:22.00ID:/dcZ0aWP
次スレ
Rust part22
https://mevius.5ch.net/test/read.cgi/tech/1705760500/
2024/01/21(日) 20:22:28.74ID:mpR7a4j6
>>994
C++みたいに、色々な実装がでてくれは、50年後にも生きてるんじゃない?
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 158日 21時間 57分 50秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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