Rust part27

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2024/12/02(月) 22:32:50.31ID:D+1pIyvG
公式
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 part26
https://mevius.5ch.net/test/read.cgi/tech/1726838318/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2025/03/23(日) 20:31:47.48ID:zNJHBv3d
環境要因だけど、単価と工数でGC言語が勝ってるってさ
2025/03/23(日) 20:35:34.98ID:uAz+aBh3
>>932
単価?
GC言語だけやってる連中はバカだから給料が安いということか?
934デフォルトの名無しさん
垢版 |
2025/03/23(日) 21:25:09.29ID:dLW1UlJo
実際そう
Goはジュニアクラスのエンジニアとシニアクラスのエンジニアとで書き方が変わらないのが特徴で、Googleのような大きな組織での開発効率のために産まれた言語
良し悪しとかでなく、そもそもの言語の目的の違い

パフォーマンスが重要な仕事にはRustが向くけど
、それなりの速度があれば十分という分野ならRustを使う意味はあんまり無い
IOが中心になる分野なら、Rustは多少は速くても「劇的な違い」にはならないと思う
非同期処理を書くのが難しくないとか、社内に知見があるとかの方が重要という場面も多い

もちろんRustが向く分野も多いので、そちらではRustを使えばよい
言語は目的や求められる要求に応じて選ぶという、ごく普通の話
2025/03/23(日) 21:33:57.65ID:3HZSVJR9
速度だけが重要ならjavaなんてなんて生まれていないしここまで大きな産業にもなってない
みんなc++を使えばよかった

実際はそうならなかった
2025/03/23(日) 21:39:18.46ID:kIF/RZ8r
>>931
なんの勝ち負けの話してんだよww
2025/03/23(日) 21:49:34.80ID:QyKgsP1k
C++は平屋のCに何階も増築してきたから基盤はCのままで古い言語だからね
C++11でようやくunique_ptrとshared_ptrのスタートライン

一方でRustは現在の他のモダン言語と同等かそれ以上で何もかも快適
そして開発効率も抜群に良い
静的に最もバグを回避できる優れたプログラミング言語となっている
(もちろん原理的に回避不可能なアプリのロジックバグは除く)
938デフォルトの名無しさん
垢版 |
2025/03/23(日) 21:52:06.36ID:n3c9z4n8
Rustの過剰な持ち上げは普通のRust開発者にとっても迷惑だからな
そういう輩のせいで「Rustは信者が煩い」みたいな意見を見るし、それに辟易する
向き不向きや求められる要求、組織の知見などを考慮して技術選定するという、開発者なら持つべき感覚を否定し続けてるのが理解できない

特定の言語だけを持ち上げる信者はGoやC#やTSにもいるし、そういうのは同様にうざったい
2025/03/23(日) 21:55:17.62ID:zNJHBv3d
2000年頃、サーバーの仕事なら、新人にはCのメモリ管理が無理だからってJavaでキャリアスタートしたよ。
その頃のオンプレはメモリ数GBだけどJavaが何とか動かせたんだ
そこからGC言語優位が続いたけど、サーバーレスやらで効率重視時代が戻ってきたんだね
2025/03/23(日) 21:59:15.01ID:QyKgsP1k
>>938
事実のみで過剰な持ち上げはないのに何を発狂してるのかね
もちろん別の言語の話を何度もしていたらウザいからやめるべきだと思うがここはRust
2025/03/23(日) 22:07:56.77ID:QyKgsP1k
>>939
効率重視とともにエコ面が重視されてるね
そのまま電気消費量そしてランニングコスト
もちろんCPU&メモリリソース使用量を減らせばサーバーなど台数が減らせる面もエコと料金につながる
慣れたらどのプログラミング言語も大して変わらないのだからそれなら全てを少なくできるRustが向いてる
942デフォルトの名無しさん
垢版 |
2025/03/23(日) 22:12:37.78ID:arw2Fenr
Rustは独自性が無い
C+の知見を移植してるだけ
2025/03/23(日) 22:20:47.30ID:SlUznAQO
いつもの某オジサン(嘘つき/実務経験無し)がesbuildで完全論破されて発狂してるだけ
Rustスレの平常運転だから気にしない気にしない
2025/03/23(日) 22:23:33.24ID:MXOUkEf2
>>942
C++では出来ていないこと(や、C++に後から入ってC++で普及していないこと)が、Rustには大量にあることが特徴。
むしろ他のモダン言語をやっていれば理解しやすいことも多い。
ただし、Rustが色んな言語の良い最先端な部分を採り入れてるため、少しだけ学習曲線が急な面はある。
それでもすぐ学習して理解できるから、それら機能の効果と利便性のため皆が満たされている。
945デフォルトの名無しさん
垢版 |
2025/03/23(日) 22:28:21.95ID:arw2Fenr
>>944
無いよ
2025/03/23(日) 22:30:17.46ID:MXOUkEf2
>>945
無いとは何のこと?
2025/03/23(日) 22:36:44.14ID:kax3x6iq
学習曲線のグラフに原点がないんだろうなあ
0とは一体何がどう0なのだ
948デフォルトの名無しさん
垢版 |
2025/03/23(日) 22:40:46.98ID:dLW1UlJo
スマートポインタやRAIIはC++由来だし、代数的データ型やパターンマッチは他の言語にもあるけど、所有権やライフタイムはRust独自
これはかなり強力な仕組みで、安全性という点ではとても成功してると思う
(同時に難しさの要因でもある)

書いておいて何だけど、言語の独自性はそこまで重要でもないと思う
TypeScriptなんかがそうだけど、仕組み自体は既にあるものでもバランスが良ければ十分に価値がある
2025/03/23(日) 22:45:57.15ID:QyKgsP1k
C/C++が一番ダメな点は大量の様々な未定義動作
2025/03/24(月) 00:19:28.90ID:ELaBM+IJ
CのenumとRustのenumで全く似ても似つかないのとか何とかしてほしいわ
C出身のノリで使うと実装量多くてビックリするわ。たかが整数型定数とかいうのと全く違うもんなあ
ほかにも学習で大変なところ数多あるけど、コンパイルエラーを全部潰したらあとはアプリケーションロジックだけの問題になるのはRustならではで快便感ある。Cはコンパイル通ってからが鬼門だからな
951デフォルトの名無しさん
垢版 |
2025/03/24(月) 00:51:58.09ID:9O8f24u0
なんでenumって名前にしたんだろうな
adtとかdataとかtypeとかにしたら良かったのにと思わなくもない
2025/03/24(月) 01:05:28.53ID:ELaBM+IJ
>>951
実際の使われ方からするとOption型、Choice型だよね。それだとネーミング的に予約語と競合してダメだけどマシな名前は考える余地あったよなあ
基本的に「よその言語から似た単語借りてくる」風習はどの言語にもフレームワークにもあるし慣れるしかないけどね
2025/03/24(月) 02:41:57.49ID:u90IfC4I
plain enumとADT enumがあるだけでenumはenum
ADT enumをenumの名前で使えるのはRustに限った話ではない
954デフォルトの名無しさん
垢版 |
2025/03/24(月) 03:34:48.42ID:rrmbjdIs
HaskellもRustと同じくらい使われてると言われていたが
つまりすべての製品に使われてるようなことを言っていた
955デフォルトの名無しさん
垢版 |
2025/03/24(月) 03:36:56.31ID:rrmbjdIs
結局、駄目なものはどれだけ宣伝しても流行らないのでは?
2025/03/24(月) 07:38:50.09ID:Tm5RncoX
そんなに言われてなかったよ。
それは誤解か、誤解した人が大げさに吹聴してるな
2025/03/24(月) 08:13:34.82ID:a0wY9RFf
>>950
たぶんプログラミング言語一般的な型付けシステムに慣れてないんだと思う
enumはその名の通り列挙型だよ
それを整数型定数と誤認してるのが不思議
定数はその名の通りconstで当然何の型の定数なのかi64とかf64とかOptionなど型名を指定する必要があるよ
enumは列挙型だから名付けてenum Fooなどの別の型になる
内部的には整数で識別されるからその整数値を指定することもできるけどその整数の取れる値の範囲は列挙した分に限られるから別の型
制限はあるけど明示的にcastすれば整数型(i32とかusizeとか)へ変換できるよ

>>952
enumは列挙型だからSome(T)とNoneの2つを列挙できるenum Option<T>型も作れるだけの話だよ
ここでTは任意の型を指定できてジェネリック
もちろんトレイト境界を指定することもできて例えばCowの定義はこうなってるよ
enum Cow<'a, B>
where
  B: 'a + ToOwned + ?Sized,
{
  Borrowed(&'a B),
  Owned(<B as ToOwned>::Owned),
}
958デフォルトの名無しさん
垢版 |
2025/03/24(月) 08:14:23.64ID:CX9jwcEn
Haskellを宣伝してた人がRustを宣伝してる
959デフォルトの名無しさん
垢版 |
2025/03/24(月) 08:15:54.54ID:CX9jwcEn
>>957
Trait制約では?
2025/03/24(月) 08:16:12.40ID:YUJc8XWR
言語なんて一長一短あるんだから万能な言語なんてないんだよね
たまにそのへんのことがわからない人が宗教戦争始めんだよ
2025/03/24(月) 08:24:31.95ID:+3Ali/jO
>>958
これだろうね
2025/03/24(月) 08:28:31.69ID:a0wY9RFf
>>959
トレイト境界(trait bounds)だよ
制約(constraint)とは異なり区別
任意の型(の集合)がトレイトによってトレイト実装されてる型とされてない型に境界が引かれるよ
2025/03/24(月) 08:33:32.13ID:a0wY9RFf
>>960
それぞれの言語に特徴があるね
その中でもRustは様々な優れてる点があるけど

>>950さんの言う通り
>> コンパイルエラーを全部潰したらあとはアプリケーションロジックだけの問題になるのはRustならではで快便感ある。

それが一番大きいかな
他の多くの言語は実行時デバッグで無駄な開発時間を奪われてしまうから
2025/03/24(月) 08:38:14.85ID:+3Ali/jO
>>963
CやC++ぐらいだろ
普通に普及してる言語は大体GCありで考えなくて良い
2025/03/24(月) 08:56:28.14ID:a0wY9RFf
>>964
GCは関係ないよ
プログラミングしたことあるならわかってるはずだけど
まず強い静的型付け言語でないと実行時デバッグは山積み
Rustの場合はデータ競合まで型付けチェックで弾いてくれるからさらに助かるよ
あと一番ありがたいのはsingle writer XOR multiple readers ルール
このおかげで色々な罠にはまらなくて済むよ
それによって書き換え競合を意識するようになるからデータ書き換えのスパゲッティ構造も防げたり
2025/03/24(月) 10:05:01.91ID:NJwebgj2
>>960
「言語」はそれでいいとして「データ」は万能ではないと指摘されたらAIが死ぬんだよな
まだかなあ
2025/03/24(月) 10:15:12.89ID:8nOZWVbe
ポエムで草
2025/03/24(月) 11:58:19.75ID:Q7rhWE6T
>>962
>任意の型(の集合)がトレイトによってトレイト実装されてる型とされてない型に境界が引かれるよ
普通に考えたら無理があり過ぎるってわかるやろ
2025/03/24(月) 12:23:21.76ID:cPeZblFF
>>966
何を言ってるの…?
2025/03/24(月) 12:26:57.19ID:a0wY9RFf
>>968
トレイト境界はそのイメージがちゃんとできると使えるよ
トレイト毎に境界があるからね
971デフォルトの名無しさん
垢版 |
2025/03/24(月) 12:35:54.16ID:tWxitKr9
Arena<T>とかRc<RefCell<T>>ってCの生ポに比べてどれくらいパフォーマンス落ちるの?
972デフォルトの名無しさん
垢版 |
2025/03/24(月) 12:42:11.30ID:tWxitKr9
>>949
何でも必ず初期化させる言語と実際に利用するまで初期化が必要無い言語との差は速度面で差が出る部分だと思う
(安全面はおいといて)
973デフォルトの名無しさん
垢版 |
2025/03/24(月) 13:26:19.03ID:CX9jwcEn
Trait制約とTrait境界
どちらが正しいの?
2025/03/24(月) 14:05:50.97ID:g+HztaOv
>>973
公式といえるものが存在しないので明瞭な結論はないが境界のほうがスタンダードという風潮はある。
真っ先に日本語訳を出したボランティアグループがそうしているから。
技術用語は原則として直訳するものなのでもしも JIS が Rust の規格を成立させたとしてもたぶん境界と訳すと思う。

制約派は有名な会社 (オライリー) が出している書籍で制約という語をあてていることを根拠としていて、ボランティアグループよりプロの翻訳家のほうが信頼できると主張している。
2025/03/24(月) 14:07:50.39ID:GUfk5wC7
ボウンズでいいよ
2025/03/24(月) 14:32:08.72ID:jgU8FjIN
>>973
訳さずトレイトバウンドと呼ぶのが好ましいけど日本語化したければトレイト制約
トレイト境界は勘違いと理解不足から発生した間違った訳語なので避けたほうが良い

どの辺が間違っているかはこのスレを読み返してくれ
2025/03/24(月) 14:34:35.04ID:8nOZWVbe
屋根の色は青が正しい!
2025/03/24(月) 15:34:03.20ID:MH5MWyKr
>>977
誤爆してるよ
お大事に
2025/03/24(月) 17:17:17.01ID:a0wY9RFf
>>971
生ポと比較する意味がないよ
確実に自動解放するための枠組み
例えばRcは複数の所有者が生じる時に使われて、どれが先に消えても最後に残った側が自動解放するんだよ
Cで同じことを実現しようとしたら同じく参照カウンタが必要
C++でも参照カウンタを用いてshared_ptrが作られてるよ

>>972
初期化を仮定しないMaybeUninitがRustにはあるから大丈夫
ライブラリ等ではこれを使って不要な初期化を避けているよ
0でのmemset呼び出しが消滅

973
trait boundsはトレイト境界だよ
英語でも敢えてconstraint (制約)を使っていない意義を尊重
トレイト境界により型のとれうる範囲が狭まって型の制限いわゆる型制約が生じるよ
2025/03/24(月) 17:28:07.52ID:NJwebgj2
ああこれって王様を尊重すると言いながら
戦争していいかどうかは王様に相談してないパターンか
2025/03/24(月) 18:08:22.30ID:XCWZ1fyV
「制約」は渡す側の視点でしか見てないからな
受け取る側にとってはトレイトの「保証」でもある
ジェネリクス型を受け取る関数を自分で書かないレベルに合わせるなら
「制約」で意訳しても構わないと思う
2025/03/24(月) 18:38:13.55ID:g+HztaOv
>>981
そのレベルの人が上達してきたときに用語を切り替えるなんてわけにもいかんし、
「この制約のことを Rust 用語ではトレイト境界といいます」とでも一言あればそれで済む話じゃね?

入門者向けの便宜的な説明が後々まで尾を引いて混乱することはあるから喩えとか意訳とかは慎重にしたほうが良いと思う。
2025/03/24(月) 18:44:54.15ID:zTw2TQbc
>>981
レベルの話じゃないんだよね

両方の視点をもつのはいいんだけど型シグニチャは使う方との契約だから
作る側じゃなく使う側の視点によせるのが自然
作る側の視点で見る回数よりも
使う側の視点で見る回数のほうが圧倒的に多いということもある

仮に受け取る側の視点から見たとしても
トレイトの「保証」だから「トレイト境界」とはならないよね

not satisfiedとかとコロケーションが確立されてるのも
rustcの開発陣もみんな制約として見てるからなんだよ
2025/03/24(月) 18:49:17.73ID:zTw2TQbc
プレート境界とか軍事境界とか〜境界の日本語での使われ方を考えてみたら?

プレートとプレートの境目だからプレート境界
西側の軍事と東側の軍事の境目だから軍事境界

トレイトとトレイトの境目ならトレイト境界は日本語として用意に成立する
でも実際はそうじゃないから
2025/03/24(月) 18:54:56.12ID:a0wY9RFf
『制約』という完全に意味を間違えている言葉でなければ
『境界』より相応しい範囲を表す何らかの言葉でもいいと思うよ
混乱しないようにトレイト境界のままでもOK
2025/03/24(月) 18:59:58.08ID:a0wY9RFf
boundsの意味もtrait boundsの用法も範囲の限界を意味しているわけだから
範囲の限界はすなわち境界だよね
範囲の限界を表すもっと良い言葉があるかどうか
987デフォルトの名無しさん
垢版 |
2025/03/24(月) 19:09:34.08ID:CX9jwcEn
Boundsが制約だと思うスレ
2025/03/24(月) 19:28:44.61ID:38sVBjRv
まだやっていたのかw

これが本当の境界○能だったらどうしよう
2025/03/24(月) 20:22:18.74ID:w43kWBw9
「よ」とか「ね」とかの終助詞付けても主張が激しいから全然柔らかくなってない
特有の違和感を常に感じさせる文体
990デフォルトの名無しさん
垢版 |
2025/03/24(月) 21:58:28.76ID:CX9jwcEn
>>984
プレートの際だからプレート制約
軍事の際だから軍事制約では?
991デフォルトの名無しさん
垢版 |
2025/03/24(月) 21:59:18.18ID:CX9jwcEn
>>988
制約知能でも意味が通じる不思議
2025/03/24(月) 22:12:24.41ID:617amb99
>>986
>範囲の限界を意味しているわけだから
何の範囲の限界?
そこも含めて考えないと質の低い機械翻訳と同じだよ

>範囲の限界はすなわち境界だよね
違う
日本語における限界と境界の違いを理解してない
2025/03/24(月) 22:17:47.15ID:g+HztaOv
日本語での意味なんかどうでもいいよ。
Rust コミュニティの先導者が境界ということにしたのだし、コミュニティの状況を調べなかったか分断しようとするオライリーの質が低いってだけ。
2025/03/24(月) 22:40:56.78ID:wvKmLjta
レイトマジョリティ自覚して先人に敬意払っとけ
2025/03/24(月) 22:43:00.79ID:vQzFTF6N
ID:a0wY9RFfは所有権を複製しそうだね
2025/03/25(火) 04:40:05.04ID:ztarSHRB
残り3レスで問題と慈善事業をを要約してくれ
2025/03/25(火) 07:36:07.50ID:4wgArwVx
日本語訳プロジェクトを乗っ取って「トレイト制約」で統一すりゃいいんじゃないんかな。
日本語訳プロジェクトは最新版に追随できていないから文句言うやつは居ないだろ。
2025/03/25(火) 07:40:07.85ID:6deS3uMO
そういや、誰か標準ライブラリの日本語訳してなかったっけ?
あれどうなった?
999デフォルトの名無しさん
垢版 |
2025/03/25(火) 08:50:43.64ID:ztarSHRB
トレイトの神様 降臨
2025/03/25(火) 08:51:04.90ID:ztarSHRB
継ぎ
https://mevius.5ch.net/test/read.cgi/tech/1742805420/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 112日 10時間 18分 15秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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