Rust part30

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2025/05/28(水) 09:31:36.60ID:ciITeZ5D
公式
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 part29
https://mevius.5ch.net/test/read.cgi/tech/1746200850/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2025/06/07(土) 11:32:51.12ID:4dOcWkyN
>>627
ディープラーニングは大量の学習元データを必要とするけれどある程度を越えると性能の伸びは急激に鈍化する。
つまり際限なく多くのデータを投入すれば良いというわけではないし、学習データとして使うには充分な分量はあるよ。
2025/06/07(土) 11:49:58.62ID:rtfJQBOq
プログラミング言語ってのは機械にも読めるようにした人間が読み書きするための言語
書く部分を代理してもらったところで人間が読まなきゃいけないことには変わりない

AIが賢くなっていけばいくほど人間が理解しやすい読みやすい言語へシフトしていく
アセンブリが学習資産として膨大にあるからといって人間用にアセンブリを生成させてその抽象度でコードを管理したりしない

もちろん人間用に生成するのはCやRustじゃなくても全然いいからRustも過渡期の言語
2025/06/07(土) 12:45:57.58ID:xi57kquP
>>627
Cの言語仕様ではAIがどんなに賢くても静的に安全性を保証できないよ
AIに吐かせるならRust
2025/06/07(土) 12:50:15.19ID:xi57kquP
>>629
現存する言語でデータ競合まで安全を保証して抽象的で可読性のいいRustが使われるね
2025/06/07(土) 13:01:57.88ID:bjSjMKW4
>>629
とはいうものの、プログラミング言語が自然言語で書かれるようなことにはならず
検証のために何らかの論理的整合性を保った記法で書かれる必要があるし
それを読んで理解できるセンスを持った人はある程度は限られるので
プログラミング言語の読みやすさという点では、あまり現状と変わることはないんじゃないかな
人間の方が進化すれば別だけど

ただ、Rustが保証するメモリ管理については、AIが後から適切な箇所に解放処理を挿入してくれるようになって、
GCを使っていないがGC言語のようにコードを書けるようになる、ということはあるかもしれない
2025/06/07(土) 13:11:57.59ID:xi57kquP
>>632
最後のその仕組みがRustだよ
AIですら静的に解決できる情報が必須でそれがRust
2025/06/07(土) 13:26:22.04ID:hQgu9D5P
それは明らかに誤り
現に極めて高い精度で適切なタイミングでリソースを解放するRustコードをAIは生成できているのだから、
AIが前提であればそのような情報は省略可能であることは自明
2025/06/07(土) 13:38:44.17ID:xi57kquP
>>634
それは静的に解決できるRustの言語仕様のおかげで様々な安全性が保証される
人間もAIも立場は同じ
2025/06/07(土) 13:52:46.13ID:hQgu9D5P
複おじに構うつもりはないのだけど、AIはRustの言語仕様を理解しているのだから、
例えばRustの仕様に基づいた暗黙的なメモリ解放が行われるコードをAIが生成した場合、それはAIが明示的に制御して解放しているのと変わらないとも考えられるよね
632の言うように、GC言語がフェイルセーフとしてGCは使いつつも殆どの場合において適切に確定的なタイミングでメモリ解放するようになったら、
Web系みたいに多少ファジーでもいい分野は完全に持っていかれるかもね
2025/06/07(土) 13:58:37.96ID:xi57kquP
>>636
架空の言語?既存の言語?
Rustの肝はその言語仕様にあるから既存の言語には無理だよ
2025/06/07(土) 15:58:12.17ID:D5LAHAi0
>>633
rustは、メモリ管理を人に強制してるじゃん。>>632の言いたいことは、違うと思うけれどな。
2025/06/07(土) 16:21:03.28ID:xi57kquP
>>638
その「適切な箇所に解放処理を挿入してくれる」はRustやC++の仕様で実現されてる
他の言語には無理
2025/06/07(土) 18:36:37.64ID:evsGciRN
言語仕様を既に理解している者にRustは何も強制しない
逆に言えば強制とは理性のない物体を操る技術とか、それを人間にも当てはめるしぐさのこと
2025/06/07(土) 18:53:43.86ID:nANhvbt8
究極の理想系は Python みたいな軽い言語で雑に書いて、それを AI が最大限効率的なコードに変換するようなものだろうな
ヒープ不要な変数はスタックに、他と共有しないデータは変数のスコープと共に破棄されるように、共有されるデータはArcに、循環参照してるものは寿命の短い方を判断して weakref に、というふうに

現在はまだ無理だからGCレスが必要な場面にRustを使うけど、 &T や Arc<Mutex<T>> みたいな型はメモリ管理のためでしかないし、AIが自動的にうまく変換してくれるならその方が進化だと思う
2025/06/07(土) 19:02:14.18ID:xi57kquP
>>641
Rust以外の既存の言語の仕様でそれは不可能
2025/06/07(土) 19:07:24.49ID:WTKqP7i+
>>641
循環参照が必要なケースはだいたいアリーナでいいんじゃないかな
アリーナのスコープはだいたい人間の意図をそのまま反映するのでAI向きだと思う
2025/06/07(土) 19:07:29.04ID:evsGciRN
誰でもいいからPythonをRustに変換してもらうのが雑なやり方
AIを指名するのはちょっと細かいことにこだわり過ぎている
2025/06/07(土) 19:10:35.54ID:xi57kquP
>>641
AIであろうと論理的に無理なことはできない
AIも人間と同様で魔法を使えない
646デフォルトの名無しさん
垢版 |
2025/06/07(土) 20:18:46.50ID:nANhvbt8
単純な構文解析では無理だけど、AIがコードの意味や呼び出し関係なども含めて解析できるようになれば可能性あるんじゃない?
2-3年後にとは思わないけど、5年や10年後ならそういう未来もあって良いように思う
最近のAIの発展は凄まじいし

Rustは良くも悪くも低レベルの事情が見えすぎるんだよな
Option, Result や enum のような型はビジネスロジックの表現に役立つし、他の言語でも欲しい人はいるだろうけど、SendやSyncなんかはちょっと違う
これらはC++経験者にとって嬉しいだけで、多くの人からすれば、そういうものは意識せずに済む方がずっと便利なはず
2025/06/07(土) 20:22:33.18ID:nANhvbt8
意識することは必要かもしれないけど、そのための面倒くささを減らせるなら、その方がいい的な話
2025/06/07(土) 20:27:29.58ID:8xDjgwkI
>>646
>これらはC++経験者にとって嬉しいだけで
勝手に妄想すんな。
2025/06/07(土) 20:32:13.92ID:xi57kquP
>>646
そんな方法ロジックが存在するなら現在AI関係なく実現できる
AIと言えども無理
650デフォルトの名無しさん
垢版 |
2025/06/07(土) 21:03:48.33ID:nANhvbt8
実際面倒でしょ
GCのある言語ではとっくに解決済みの問題だし、パフォーマンスのためという理由さえ無ければ、そんな面倒は無い方がいい
人間が書くコードはビジネスロジックに注力して、最適化などの面倒な部分はAIが頑張る、みたいな未来を夢見ても良くない?

「世界中の初級〜中級プログラマがみんなRustを書ける時代」よりは、「初級〜中級プログラマが書いたコードがRust並みに高パフォーマンスに動く」の方が有り得そうに思う
大手ITとか新進気鋭のスタートアップならともかく、世の中のレベルってそんなに高くないと思うので
2025/06/07(土) 21:18:42.39ID:xi57kquP
>>650
既存の言語の仕様では不可能
もし手段があるならAI関係なく今すぐ実現させる
652デフォルトの名無しさん
垢版 |
2025/06/07(土) 21:34:29.01ID:nANhvbt8
言語の限界というより、現状のコンパイラが行なっている構文解析という手法の限界じゃないの?
他の言語で書かれたプログラムを (人間が時間をかければ) Rustに移植できる、と言えるなら、それは将来AIにもできる可能性のある仕事だと思う
「理屈上どうやってもC/C++/Rustでは実現できないロジック」とかがあるなら無理だけど、そういうのはおそらく滅多に無いだろうし
2025/06/07(土) 21:50:46.86ID:4dOcWkyN
現代の方式での AI の能力というのは言語モデルに縛られる。
プログラミング言語間で移植するには仕様をより抽象的な言語 (人間がやるなら自然言語?) で抽出してから再実装という工程を経ることになる。
仕様抽出のときにどの挙動が仕様でどこが仕様ではない (再現しなくてもかまわない) のかはプログラムの字面だけからはわからず、ドメイン知識が要るだろう。
2025/06/07(土) 22:08:05.95ID:WTKqP7i+
そんな複雑なビジネスドメインでRust採用しちゃうようなタイプのエンジニアとAI、
どっちがドメイン知識があるか、客からヒアリングしたドメイン知識に真面目に向き合えるかな
俺はAIだと思うね
2025/06/07(土) 22:13:16.92ID:V3GF7XBg
RDBだとSQLを渡せば構文解析という手法を通してるけどオプティマイザが最適と思われる実行プランを作ってくれる
今までは用途の限られたDSLでしかこういうことはできなかったがAIを使うことで汎用プログラミングの広い用途で同じようなことが近い将来にできるようになる可能性が高い

その時にRustのような低レベルな言語を使う必要があるのはRDBでたとえるとDBエンジンを作っている人達だけ
一般的なプログラマー(プログラマーとは呼ばれなくなるかもしれないが)は入力としてSQLを書いて生成された実行プランを確認できればそれで問題なくなる
実行プランの内部表現がどうなってるかや各ステップでのメモリ管理方法だったり並行モデルや同期方法は要求に対して最適と思われるものを選んでくれればそれでいい
2025/06/07(土) 22:28:32.11ID:noiqQ3+R
>>655
できないことを皮算用せずに
その新言語をさっさと作ればよくね?
2025/06/07(土) 22:31:19.97ID:5EbSwuA7
>>654
顧客からのヒアリングは担当AIになると言われてるね
あとはAIがRustコード吐いて人類がチェック
2025/06/07(土) 22:36:04.29ID:evsGciRN
マークアンドスイープも仮想関数も低レベルだった
どっちも要らない可能性に気がついた奴は低レベルの縛りが少ない
そんなこと考えたこともない奴が偉そうにしても意味がない
2025/06/07(土) 22:46:23.09ID:x0Lmj2vj
>>652
元言語のT型のオブジェクトをArc<Mutex<T>>型にすれば変換できるけど意味ないでしょ
2025/06/07(土) 23:36:16.04ID:JFrNmexI
人類がAIに支配されないための歯止めが最終プログラムコードを人類の監視管轄下に置くこととと言われている
AIにRustコードを吐かせるとしてもそのチェックは人類が責任を持たねばならない
そのプログラミング言語は実行パフォーマンスと安全性と抽象的な可読性からRust以外に選択肢はない
2025/06/07(土) 23:51:31.84ID:WTKqP7i+
AIエージェントがバズってる時点でチェックもクソもない
あっちはAIがやれることは呼び出せるツールの範囲に限られるから問題ないという理屈だが、
そういうガードのかけ方をするならそもそも実行バイナリ自体を制約されたサンドボックス環境下で実行し、
限定的なAPIセットのみ実行を許可するようなアーキテクチャになるから、Rust云々というレイヤの話ではない
2025/06/08(日) 00:08:40.08ID:T2dNb6GD
>>661
そんな制限の仕方ができるのは特殊なものだけ
コードは人間がレビューして責任を持つしかない
2025/06/08(日) 00:53:09.39ID:ZN3JGvHo
マルウェアをテストする時のような扱いをしないと怖いようなAI製ソフトウェアを本番業務に投入するとか論外だしな
とはいえ、AIが生成した文字通り膨大なソースに人間が有意義なチェックをできるかっていうとそれも机上の空論だろうし
現実的にはブラックボックステストだけ人間がやって、コードはロクに見ず本番投入なんだろう
2025/06/08(日) 00:59:52.80ID:FT4pj4FW
>>663
それだと極めて特殊な入力が来た時だけ特別な実行をAIに仕込まれて人類が詰むパターン
665デフォルトの名無しさん
垢版 |
2025/06/08(日) 09:07:30.09ID:xGbxg89a
脆弱性をAIに仕込まれる時代がそろそろ現実味を帯びてきたな
2025/06/08(日) 09:32:59.28ID:PLM9xjLn
突き詰めるとRustはいらない言語ってことになっちゃうな
2025/06/08(日) 09:58:01.31ID:LY0YSAF3
何もいらなーいー
668デフォルトの名無しさん
垢版 |
2025/06/08(日) 11:19:05.81ID:SVsPPZLo
C++とGCとAIの話しかしていない
誰もRustに興味無いんだろうな
2025/06/08(日) 11:21:32.51ID:l86SYNjx
>>668
そもそも以前から続く傾向として、Rustの自慢話と、C++を貶す話が多いな。
2025/06/08(日) 13:04:11.80ID:wHU1y2Cy
レスの半分以上は複オジだからな
残りの半分の半分くらいは数学100点オジ
2025/06/08(日) 14:35:33.97ID:Dz6RrxG4
>>666
AIに吐かせるコードは速くて省メモリで安全で抽象的に可読性のよいRustしかないでしょ
2025/06/08(日) 15:20:07.80ID:+Shzj2Ty
Pythonは使われているけど、作ったプログラム自体が商品にはならないみたいだよね。
Rustも同じ道を行ったりなんかして。
2025/06/08(日) 15:24:49.87ID:+Shzj2Ty
Linuxも似ているんだけど、なぜか分かるかな?
それはオープンソースだからだよ。
2025/06/08(日) 16:16:30.27ID:d1+aCZ76
>>668
Rustに興味ある層は誰かさんがみんな追い出したからね
残ったのは表面的ないいねとよくないねの噛み合わない応酬だけ
2025/06/08(日) 16:29:29.68ID:+Shzj2Ty
Rustは、プライドの高い趣味プログラマと、AWSのような超大手
独占企業だけが使う言語になるのではないか。
2025/06/08(日) 16:41:23.46ID:EeOpsjtM
Rust書けない敗者アンチが居座っていつも負けてる
2025/06/08(日) 17:01:39.88ID:RG5MF58/
【次号予告】2025年6月18日発売『Software Design 2025年7月号』
Rust大特集
https://pbs.twimg.com/media/Gsf6x9rbAAAWxo7.jpg
2025/06/08(日) 17:02:33.93ID:+Shzj2Ty
cargoを使ってるだけでも企業秘密が漏れる。
2025/06/08(日) 17:08:20.00ID:/WNe1XQ9
>>677
入門記事っぽいな
でも買うよw
680デフォルトの名無しさん
垢版 |
2025/06/08(日) 17:08:59.52ID:xGbxg89a
>>677
ええやん
2025/06/08(日) 17:13:54.67ID:RauPWj2e
>>677
この記事面白そう。ますます使う人増えるだろうな
2025/06/08(日) 17:15:21.24ID:PLM9xjLn
>>671
でもRustってすげ遅いじゃん
2025/06/08(日) 17:18:00.36ID:+Shzj2Ty
cargoは、開発過程を盗み見るために仕掛けられた仕組みだ。
2025/06/08(日) 18:02:26.47ID:2c7Ydjne
4大機能w
2025/06/08(日) 18:45:25.24ID:RzO7Dv3B
4大機能の中では構造体が最弱か
構造体はラムダ式あたりに置き換えてマクロを袋とじに入れればちょうどいい
2025/06/08(日) 18:57:00.03ID:m6lUw4i5
>>675
安全とプライドは似ている
激安の米を食べないのはプライドかもしれないし安全のためかもしれない
2025/06/08(日) 19:40:32.20ID:+Shzj2Ty
>>686
アセンブリ言語でも安定性の高い物を作れる人は作れる。
Rustを選択したから賢いわけではないのに賢いと思っているところが
プライドが高いといっているんだよ。
2025/06/08(日) 19:58:30.87ID:m6lUw4i5
正しさが暴走するとか賢さが暴走するとか回りくどいんだよ
暴走するな安全運転しろって言えばいいのに
2025/06/08(日) 20:48:40.11ID:RG5MF58/
>>685
他の言語との差異の4大だから
不要なクラスを排除して構造体で正しいかと
2025/06/08(日) 21:20:42.43ID:m6lUw4i5
家族以外を排除するために家を建てる
2025/06/08(日) 23:04:46.55ID:/WNe1XQ9
マクロは複雑なこともできるけど複雑なことには使わない方が良い
それ以前に使わない方が良い
2025/06/08(日) 23:09:16.64ID:RG5MF58/
>>691
標準ライブラリも各有名クレートもマクロだらけだよ
可読性の向上はよいこと
2025/06/08(日) 23:32:37.62ID:/WNe1XQ9
あなたのコードは継続的に誰かに使われるのですか?
2025/06/08(日) 23:40:52.99ID:nJlppiBy
紛らわしいとの声が挙がっていたMicrosoftの新テキストエディター「Edit」、名称変更へ?
https://forest.watch.impress.co.jp/docs/serial/yajiuma/2020062.html

「redit」(Rust製なので)などさまざまな候補が挙げられましたが、それぞれ一長一短で、投票の結果
2025/06/08(日) 23:45:05.52ID:RzO7Dv3B
Rustで「マクロ使わない方がいい」は言わない方がいいな
こういう固定観念があるからmacro_rules!はtemplates!とかに改名したい
2025/06/08(日) 23:50:59.82ID:vZXisdaX
>>695
マクロはプリプロセッサーで処理されるからコンパイル以外で影響もないからな
2025/06/08(日) 23:53:07.54ID:vZXisdaX
>>694
mseditよりはvseditが良かったなあ
エディタはサクラエディタばかりでVisual Studio使わんけど昔からネーミングに憧れがあって
2025/06/09(月) 00:26:00.13ID:aoh/5V/q
マクロは避けろと言ってる言語は C/C++ くらいじゃない?
あれが特別に駄目な設計だからであってマクロ一般の話ではない。
2025/06/09(月) 01:46:53.94ID:IFWO8L+1
C/C++は健全でないマクロの代表例だからね
2025/06/09(月) 05:47:34.72ID:CW68i2LQ
他の言語でまともにマクロを書いたことがないんだなということだけはよく分かる
2025/06/09(月) 06:21:28.11ID:MX6aoBW/
プリインストールが最善なわけで
後でインストールしたり後で定義したりする敗者復活戦は敗者を傲慢にするって感じ?
2025/06/09(月) 06:30:16.50ID:/CbNBsKE
健全なマクロは意外に少なく
Scheme、Dylan、Rust、Nim、Juliaなどに限られる
2025/06/09(月) 07:59:52.39ID:A/APCsbN
マクロはRustの素の機能が足りていないから使われているだけ
704デフォルトの名無しさん
垢版 |
2025/06/09(月) 08:01:25.36ID:m1yKB8bn
マクロなんて使わずインライン展開でいいじゃん
危険だよマクロ使うのは
2025/06/09(月) 08:02:58.92ID:bdAhEey/
なまじ強力な分、C++のテンプレートパズルプログラミング並にデバッグしにくいから
意識が高いとかではなく本当にマクロを使うべきか吟味して使えとは思う
ただでさえRustのデバッグ体験は昭和レベルなのに
706デフォルトの名無しさん
垢版 |
2025/06/09(月) 08:05:51.20ID:m1yKB8bn
マクロによる関数呼び出しのオーバーヘッドが気になるならそれはインライン展開でも解決できる
標準ライブラリ等で使われているからってマクロの使用を推奨されているわけではない
707デフォルトの名無しさん
垢版 |
2025/06/09(月) 08:07:09.99ID:m1yKB8bn
訂正

関数呼び出しのオーバーヘッドが気になるならそれはインライン展開でも解決できる
標準ライブラリ等で使われているからってマクロの使用を推奨されているわけではない
2025/06/09(月) 11:02:43.94ID:dPqUAdDo
インライン展開目的でマクロ使うことはほとんどないだろ
2025/06/09(月) 15:47:57.32ID:HbKFNITK
hygienic macroを「健全なマクロ」と訳すのは超不健全
2025/06/09(月) 17:44:03.10ID:T14jbayf
接触予防マクロ
2025/06/09(月) 21:31:50.96ID:/CbNBsKE
https://ja.wikipedia.org/wiki/健全なマクロ
2025/06/09(月) 21:46:55.24ID:aoh/5V/q
Scheme 関連の文書では衛生的と言ってることもそれなりにある。
マクロ使用時の文脈に左右されない (影響が入り込まない) というニュアンスを考えるとこっちの訳のほうが好きだな。
2025/06/09(月) 21:58:09.18ID:/CbNBsKE
どういうものか意味がわかってる人には直訳の「衛生的なマクロ」がわかりやすいね
2025/06/09(月) 22:14:55.96ID:aoh/5V/q
C/C++ のマクロが駄目なのは衛生的じゃないからという問題以前に
スコープのルールなどを貫通してトークン単位でしか解釈しないからで、
それに対して構文解析してからそれを書き換えていくタイプのマクロは本物のマクロ (true macro) と呼んだりすることがある。
2025/06/10(火) 01:25:09.30ID:baavX47h
「衛生的なマクロ」ではなく「衛生的マクロ」
複合名詞化した専門用語なので連体形の「な」を付けるのは不健全
「健全なマクロ」も「健全マクロ」とすれば不健全度が和らぐ
2025/06/10(火) 01:28:48.25ID:zWRGTibt
Rustはマクロも安全で強力でいいね
2025/06/10(火) 01:42:17.26ID:OrUO8mmc
プリプロセッサは駄目だと言われることがある
マクロをすべて展開した後に残るものが機械語や中間言語のたぐいだったら
それは前処理などではなくコンパイラの本質なのだが、そんな言語はほとんどない
2025/06/10(火) 02:16:00.28ID:HpZ87BJ9
結局利便性と言語本来の堅牢性のトレードオフであり、前者をより重視している言語を不健全だとかいうのは不遜
マクロ自体が存在しない言語から見ればRustのマクロも不健全なのだから
2025/06/10(火) 02:21:17.44ID:I0746o4+
>>718
hygienic macroの意味すら理解できないマヌケは出直して来い
2025/06/10(火) 07:40:34.26ID:NHBgn55o
このスレ、訳語の話題が好きね
2025/06/10(火) 08:56:00.68ID:JftAYQGG
マクロが無ければコンパイルはもうずいぶん速くなってただろう
再コンパイルで全体を書き換えとかしなくても良かった
マクロは害でしかない
2025/06/10(火) 11:28:46.69ID:Xnr//oCx
>>720
英語の原文の意図の話題と捉えていただきたい
訳語そのものに意味があるのではないし
2025/06/10(火) 11:59:27.98ID:OrUO8mmc
printlnは害でしかないという結論になればそれはそれでいい
一番困るのは、printlnは友達だけどマクロは排除するべきみたいなやつ
2025/06/10(火) 12:27:09.64ID:sYrAmguw
自分でマクロを封印しておいてRustは記述量が多いとか文句言う人も見かける
「マクロ=悪」の先入観で最初から視野に入れてないなら仕方ないけど
2025/06/10(火) 12:50:16.80ID:Ry2q2P+U
そういや、printlnがマクロなのは、どういう設計上の判断なのかな?
2025/06/10(火) 12:53:12.95ID:elVv+WXw
>>725
Rustが可変長引数書けないクソ言語だからだろ
2025/06/10(火) 13:11:32.16ID:5Ydz39vk
Rustの次の言語に期待してる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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