Rust part20

レス数が1000を超えています。これ以上書き込みはできません。
2023/03/03(金) 00:45:28.73ID:vTVY069B
公式
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 part19
https://mevius.5ch.net/test/read.cgi/tech/1673926892/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2023/08/06(日) 23:50:23.90ID:lVXXe/mp
それを読んで再配置があった場合でも1回あたりO(1)で済んでいることが理解できないならば
Rustの勉強でもなくプログラミングの勉強でもなくCSなどの基礎から学ぶことをおすすめする
そういう基礎を理解しないままO(1)で行ないたいと最初の質問で書いていたのもヤバい
何度も伝えているが各言語と関係なく成り立つ話なのだから各言語に立ち入る前に理解を済ませておくべき
2023/08/07(月) 00:14:34.21ID:KoOATDug
>>929
>CSなどの基礎から学ぶことをおすすめする
任意長整数型演算の実装の演習をするような人ならCSで学ぶ程度の知識はあるんじゃなのか
当然、データ構造についても一通りの知識はあると思うが
931デフォルトの名無しさん
垢版 |
2023/08/07(月) 00:41:08.66ID:Sa+WohTx
“amortized O(N)”を”1回あたりO(1)”に変換するあたりは流石オジ
でもCS基礎を学べというオジの主張に今回ばかりは同意するよ
2023/08/07(月) 00:47:42.86ID:uTLlh+jk
>>929なんでO(1)で済むんですか?
そもそもデータ全体を連続領域に確保するんでしょ?
その延長する部分のヒープがもう埋まってたらデータ全部丸写しするしかないんじゃないですか?
大体そもそもデータを連続領域に確保して前からも後ろからも関係なくアドレス1発でアクセスもできて、その上データの追加もO(1)でできるとかなら無敵じゃないですか?
そんな魔法のよなメモリ管理できるハズないのでは?
2023/08/07(月) 00:48:41.30ID:Lr/s88yL
Vecって単純過ぎてデータ構造では扱わなかったりするのかな
ならし解析では最初に出てきそうなネタだけど
2023/08/07(月) 00:50:22.19ID:uTLlh+jk
ああ、データの読み書きが一回あたりI(1)ですか
でも今データの追加は整数の桁数が一上がるごとに発生するんですよ?
あらかじめデータの桁数が不明でそれが難しいと言ってるじゃないですか
足し算のたびにコピー発生しますよ?
935デフォルトの名無しさん
垢版 |
2023/08/07(月) 00:53:46.05ID:O5oF7I6f
こいつぅ
絶対わかってないやんw
2023/08/07(月) 00:53:52.95ID:++BmxY1A
実際バイナリスプリッティングでマクローリン級数で足し算する場合とかどうやってあらかじめ必要桁数予言するの
2023/08/07(月) 00:54:45.54ID:eXrQj8ZH
実際どんな用途かも具体的に書いてるのに
2023/08/07(月) 02:21:35.00ID:pearvhja
2年くらい前の過去スレと今の状況見比べて泣いちゃった
939デフォルトの名無しさん
垢版 |
2023/08/07(月) 10:50:23.98ID:wl/Lx6N5
ここまでvecdeq無しとは
2023/08/07(月) 18:18:54.25ID:UTlzilSe
VecDequeもその名の通りVec(正確にはどちらもRawVec)で作られていて
確保されている連続領域に対して未使用領域が末端か途中かの違いしかない

>>932は確保されている連続領域が埋まった時のコストを気にしているようだが
サイズNが埋まるまでの再配置の総コストは最悪ケースでもわずかN-1回の読み書きコストで済む

例えばサイズN/2が埋まった時にその倍のサイズNの新たな連続領域へ再配置するためにはN/2回の読み書きが発生
仮に最悪ケースでサイズ1からスタートしてもそれまでの累積の再配置コストはN/2+N/4+N/8+...+1 = N-1が上限値となる
つまりサイズNが埋まるまでの再配置の総コストは最悪のケースで読み書きN-1回でありO(N)で済む

一方でサイズNが埋まるまでの再配置以外の読み書きが何回行われるかを今回のケースで考えると
次々とサイズが倍々に増えていく計算の場合は最小でも合計O(N)回の読み書きが起こり
次々とサイズがリニアに増えていく計算の場合は最小でも合計O(N^2)回の読み書きが起こり
もっと緩やかにサイズが増える場合や上述の増え方の場合でも普通に読み書きが多い計算なら合計O(N^2)を超える
現実のほとんどの計算においてVecの再配置コストO(N)は誤差となる
941デフォルトの名無しさん
垢版 |
2023/08/09(水) 00:49:09.66ID:52BV6d5f
>>930
>当然、データ構造についても一通りの知識はあると思うが

今までのレス読んでそう思う?
2023/08/09(水) 18:58:03.94ID:2XWtgL1F
でも競プロでvec.insert(0, value)でタイムアウトしたけどvecdeque.pushfront(value)ではタイムアウトしなかった経験があるな
2023/08/09(水) 19:31:59.29ID:X5pmvNGk
VecDequeはring bufferだから連続性は保証されないね
VecみたいなDerefがないから&[T]に渡せない
slice未実装かと思ったら2つのsliceで返すas_slices()が実装されてて思ったより芸が細かかった
2023/08/09(水) 22:17:02.23ID:5oPtG5Gl
>>942
そのinsertはずらすコピーが毎回O(N)かかるからサイズNになるまでの累計はO(N^2)になってしまう
一方で満杯になったときの自動再配置コピーコストの方は累計でO(N)だからさほど気にしなくていい

>>943
その時の状態配置に応じて最小コピーで連続領域にしてくれるmake_contiguous()で
連続1本になった&mut [T]を得られるのでVecDeque内でのsort()なんかもできちゃうね
945デフォルトの名無しさん
垢版 |
2023/08/10(木) 04:07:06.41ID:GpbD/XFE
>slice未実装かと思ったら2つのsliceで返すas_slices()が実装されてて

He-
946デフォルトの名無しさん
垢版 |
2023/08/10(木) 04:08:51.37ID:GpbD/XFE
vecdequeはlinkedlistじゃね
2023/08/10(木) 06:08:17.32ID:74A6gUuN
vecdequeはもちろんvecで構成
linkedlistは他のデータ構造(vector, binary tree, hash table)と比較してほとんどの用途で遅く不利なため極限られた用途でしか用いられない
linkedlistが用いられる限られた用途でもlinkedlistの欠点を補うため同時にhash tableやbinary treeなどと組み合わせて用いられることも多い
2023/08/11(金) 08:01:08.13ID:4oMIZBsG
>>930
データ構造なんて知らなくてもできる
中学生の頃やってた

大学入った1年の前期でプログラム実習があってそこでも多倍長整数演算の計算をやった
配列で計算すんの
何も難しいことはない
2023/08/11(金) 08:22:37.37ID:6e7vDYNE
RustやるならCSでもまず計算モデル(特にスタックフレームモデル周辺)だろ。
2023/08/11(金) 08:37:22.11ID:/t3LBfIN
>>948
その配列というのが長さと場所を固定した連続領域を取るデータ構造なのよ
Vecは同じ連続領域だけど長さと場所は可変なデータ構造
VecDequeはVecを用いたリングバッファで連続領域を確保して使っているけど使用データ自体は最大二つの領域に分かれるデータ構造
LinkedListは連続領域を使わない連結リストといったようにいろいろあるデータ構造の中で質問者はどれを使うべきか悩んでるみたい
2023/08/11(金) 11:19:59.50ID:4oMIZBsG
最近おかしな議論が複数のスレにまたがって続いてるけど
多倍長整数というワードすら出てこないんだからなあ
2023/08/11(金) 12:40:08.98ID:v1edpQDw
複オジと厨房と二人いるのか?
それとも厨2病をこじらせた複オジか?
2023/08/11(金) 13:08:17.16ID:1cDd+Y+T
>>951
ユーザーは多倍長整数ライブラリを使えばいい
しかし彼は作る側でどのデータ構造を使って実装するとよいかの相談
Rustの話ではなく普遍的な基礎知識の話だけどな

>>913
>>任意長整数型演算の実装の演習してるんですけど
>>(略)
>>この場合どのcollection型が有利ですか?
954デフォルトの名無しさん
垢版 |
2023/08/11(金) 14:32:24.16ID:8y9raxy5
>>952
最近はこじらせてる人が3〜4人いるよ
複オジは>>953
2023/08/11(金) 14:38:02.18ID:WGGkjKOg
複オジ認定される人は複数いると思われ
2023/08/12(土) 06:55:54.99ID:H/leygs+
誰かに雇われてるのかもな
2023/08/12(土) 17:12:05.53ID:uYfXOEbY
詳しい人がいたらアドバイスをもらえると嬉しいです
やりたいこと
 入力系イベントの変換及び送出
 例えば所定のウインドウがアクティブ時にピンチインが入力されたらCtrl+「-」を送出とか
OS
 WindowsとLinux。同じコードで両OSに対応する必要はない
UI
 とりあえずCLIでも構わない
技術要素
 入力系イベントのグローバルフック。Rustではどうやる?
というか言語を問わずグローバルフックを使った新しい記事ってめっちゃ減っている気がする
現行の環境でどのような実装が良いのかよくわからない
958デフォルトの名無しさん
垢版 |
2023/08/12(土) 18:35:08.55ID:Vg3fIeNP
XY問題の上にRust関係ないな
2023/08/12(土) 20:05:24.91ID:uYfXOEbY
今でもピンチイン/ピンチアウトで縮小拡大できないデスクトップアプリは珍しくないからね
特にエンジニアリング系アプリは有名どころでもタッチやペンに対応していなかったりするし
あと今から作るならRustを使いたいけどフックなどの実装は処理系依存になりやすく
システム言語を自称するRustでどこまでできるのかという点も興味ある
2023/08/12(土) 21:12:06.35ID:ufIhf+ig
言語と関係なくね?
2023/08/12(土) 22:08:53.37ID:ysM/YNb0
>>960
言語の話ではないが、まぁ、RustでWinやLinuxのアプリを作るときには(激システム依存だろうが)関係するからな
WinならWinのapiを使うためのクレート
https://learn.microsoft.com/ja-jp/windows/dev-environment/rust/rust-for-windows
で頑張るとかになるだろうが。
962デフォルトの名無しさん
垢版 |
2023/08/12(土) 22:11:27.89ID:ecBv/yaX
アタオカがまた別のアタオカを呼ぶ
2023/08/12(土) 22:58:19.87ID:SnIoCjjg
>>957
今風のやり方は知らないが大昔にCでxlib使ってx11のイベント通知もらって何でもできた

>>959
CでできることはRustでできる
各分野についてRustだけで書かれたクレートもあれば
Cのライブラリを呼んでほぼ生で提供するクレートから
それをRustなインタフェースで提供するクレートもある
レアな分野で誰もクレート作ってなければ自分で作るのも難しいことではない
まずはcrates.ioでクレート探しからスタート
もし何を探すべきかがわからないのならばそれはRust以前の問題
2023/08/12(土) 23:35:32.02ID:pSdIUbms
まぁ仕事でRust使う人は皆無だろうからな
そして仕事でなければコンソールアプリで十分やし
家でサンデープログラミングするのにわざわざwindows sdk引っ張り出さないし
2023/08/12(土) 23:49:38.13ID:SnIoCjjg
むしろ仕事でWindowsを使わない
人それぞれだろう
2023/08/12(土) 23:52:35.31ID:3Gp8Ilch
システムプログラミング向けの言語だからデスクトップアプリでは活況ではないんじゃないかな
2023/08/13(日) 00:01:39.02ID:lcT7JkgH
そうか、サーバサイドの人は使わんわな
2023/08/13(日) 00:04:16.66ID:RW198XaM
好きにプロセス消失してもいい系のWebサーバ向けアプリには
あんまメリットないわな。
2023/08/13(日) 01:00:38.38ID:IKXyPV6w
>>967
>>968
WebサーバーサイドはRustが最も適している
そしてRustが毎年調査しているAnnual Survey ReportでもRustの業務利用目的の調査トップがWebサーバーサイド&バックエンド
https://gihyo.jp/assets/images/article/2022/09/rust-monthly-topics/in_what_technology_domain_is_Rust_used_at_your_company.png
970デフォルトの名無しさん
垢版 |
2023/08/13(日) 11:45:17.49ID:mxfdwtiA
また現状認識ズレた人が不況に熱心なこと
2023/08/13(日) 12:47:43.44ID:tlLZmbuO
クラウドはリソース(演算能力やストレージ)を使った分だけ金がかかるという話は何度も言及されているやで
2023/08/13(日) 13:12:36.18ID:1wlKIUZg
ずっとそれ勘違いして言い続けてるよね
急になんJ民の振りしてもバレバレ
2023/08/13(日) 13:31:43.04ID:4YjHceGO
>>971
オンプレミスも同じ
遅い言語を用いていると無駄にサーバー数が必要となりその電気代が固定費となってしまう
C/C++にはtokioのような非同期並行並列でCPUマルチコアを使い切れるスケジューリング環境もないため
現状Rust一択
2023/08/13(日) 16:16:11.90ID:QszCfK1u
オンプレでも最終的にはそうなんだけど、クラウドの力でリソースの割り当てが柔軟に出来る状況になったので
「(開発初期は) まだ余っているリソースのチューニングは後回しにする」ということが出来なくなった。
余りなど存在しないので。
2023/08/13(日) 20:12:32.36ID:NbQv8fjv
費用ならjavaやc#の方が安い
利用者が多くエンジニアを集めるコストが低いので
2023/08/13(日) 21:37:06.42ID:lTJXvUOS
Webサービス分野だと小規模なサービスは人件費 > サーバー費用だからRustは早すぎる最適化になりがち。
とはいえ開発体験もかなり優秀な部類になってきたから初手でRust選ぶのが開発者のオナニーとは言い切れなくなってきてるよな。
2023/08/13(日) 22:11:07.62ID:QszCfK1u
ウェブサービスというものが根本的に手探りだった時代は
素早く変更してサービスに反映させられる言語が重要だったけど
今は部品が確立してそれを組み合わせる形に変わっているから
部品が充分に揃っていると仮定できるなら言語 (処理系) の性能差で差がつく。
2023/08/13(日) 22:21:31.33ID:26EPBWum
でも実際問題としてRustで組んだ人いる?
2023/08/13(日) 22:35:27.66ID:4YjHceGO
世界のウェブインフラもRust製

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

【クラウド世界トップシェアAWS】
https://japan.zdnet.com/article/35183866/
Rustで構築されたAWSサービスの例としては、
コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
「Amazon Simple Storage Service(S3)」、
「Amazon Elastic Compute Cloud(EC2)」、
コンテンツ配信ネットワーク「Amazon CloudFront」、
LinuxベースのコンテナーOS「Bottlerocket」などがある。
2023/08/13(日) 22:57:04.72ID:otTwfC5P
>>979
イヤ、そうじゃなくてこういうとこで雑談するレベルの話で実際に仕事でRust使うような実例を持ってる人いるかって質問
別に煽ってるわけじゃないよ
まずそこまで流行ってないと思うしかない、仕事で実際使った人いるならどういう経緯で使うことになったのかなぁと
2023/08/13(日) 23:15:24.43ID:QyDGXVub
自分は仕事で書いてるし、直接の知り合いで仕事で使ってる人10人くらいはいるかな
なんで国内でも数十社くらいは使ってるんじゃないかと思う
2023/08/13(日) 23:48:35.51ID:iO5PvBbd
そうなんや
それは言語はなんでもいいから好きなので書いていいん?
それともRustで書くように指示された案件?
2023/08/13(日) 23:48:42.00ID:427/I8XL
> 自分は仕事で書いてる

開発の仕事じゃなさそう
くだらないウェブ記事書いてお小遣いもらってそう
2023/08/13(日) 23:51:53.47ID:6khxmh9H
うちはバックエンドの一部をRust製にした
最終的には全てRust製へ置き換えるが着実に一つずつ
2023/08/14(月) 00:03:15.79ID:SMR2domD
へぇ、意外にRust導入されてるんやな
986デフォルトの名無しさん
垢版 |
2023/08/14(月) 02:41:34.96ID:QUiVDENJ
蝦出んす
2023/08/14(月) 06:54:36.10ID:BvDmcvEg
>>982
うちの場合はC++で書かれた部分をRustに移行した感じ
開発言語は実担当者に任されてるから自分のチームの数人で話して決定
皆C++書けるからRustも結構すぐ書けるようになってた
2023/08/14(月) 08:31:01.38ID:YSmL6IQ6
こちらはNode.jsからRustへ移行だったけど
どちらもasync/awaitによる軽量タスクコードだから意外に簡単だった
2023/08/14(月) 22:05:11.92ID:VoYfevle
どれも具体性が薄すぎてニートが妄想で書いてるんかってレベルやな

何の目的があってRustが選択されたのか
他の候補として何が検討されたか
最終的に目的はどの程度達成されたのか
大きな課題としてどんなものが現れたか
その課題はどう解決したか(しなかったか)

一般論じゃなく各論で、そういう特筆すべきことはなんにもなかったんか?
2023/08/14(月) 22:08:35.90ID:NTZtQKzP
そうやって情報収集しようとするクセよくないぞ
自分でしらべろや
2023/08/14(月) 22:13:54.79ID:sy90BXR1
このスレにいる以上は Rust に関心を持っているのは当たり前なんだから
実務で使ってる事例もそれなりにあるのは全く自然なことだと思うんだが、
そう思えない理由がなんかあるか?

LISP スレですら実務の採用例がそこそこあるのに Rust で無いってこたぁない。
2023/08/14(月) 23:40:20.02ID:GBb0r4Vn
思う思わないレベルの話はいらない
2023/08/14(月) 23:49:03.15ID:h0ddCJfE
アンチの相手しなくていいんじゃないかしら
お盆に入ってからの書き込み原文ママ

「仕事でRust使う人は皆無だろう」
「サーバサイドの人は使わん」
「Webサーバ向けアプリにはあんまメリットない」
「開発の仕事じゃなさそう」
「くだらないウェブ記事書いてお小遣いもらってそう」
「どれも具体性が薄すぎてニートが妄想で書いてる」
2023/08/15(火) 00:22:56.61ID:0OuVStUx
無理やで
2023/08/15(火) 01:10:11.11ID:eHfmSxwe
>>993
君のとこでは採用してるん?
2023/08/15(火) 02:40:39.04ID:ozj7JwYA
確かにこんなところで調査しても意味ねえわ
2023/08/15(火) 03:17:19.17ID:W84SzS8v
NoSQLなデータ扱うマイクロサービス改修を機会にそこをRustにしたよ
2023/08/15(火) 08:51:26.28ID:ca01mENm
ウクライナが勝ってるよっていう情報を流すのと同じw
999デフォルトの名無しさん
垢版 |
2023/08/15(火) 22:01:38.42ID:wEreUCSS
ここで普及させようとしても意味無いでw
2023/08/15(火) 22:12:55.30ID:6mJ3MaUL
rustupが動かないので手動でクロスビルド環境を構築したいんだが
rustup target add 〜
って具体的に何やっているの?ターゲットはとりあえずthumbv7em-none-eabihfとriscv32imac-unknown-none-elfの2つ
ネイティブビルド環境は公式にあるプレビルドファイル一式を適当な場所に手動で展開すれば構築できるけど(構築済み)
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 165日 21時間 27分 27秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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