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/14(水) 16:29:39.74ID:ona7PgM1
>>783
おまえ質問してる分際でキチガイなのか?
そういう態度を改めないなら二度と教えてやらんぞ

fn increment(dest: &mut u32) -> u32 {
 std::mem::replace(dest, *dest + 1)
}
785デフォルトの名無しさん
垢版 |
2024/02/14(水) 16:36:51.93ID:b+wxXawK
質問している人間相手なら関係ないことを書いて良いわけではない
2024/02/14(水) 16:42:22.39ID:3OoaoCBc
>>784
結果的に役に立たないことがあってもしょうがないですが、関係ないことをアンカーで書くのは正当化できない迷惑行為です。
質問者 (特に初心者?) には迷惑をかけてよいと考えているのだとしたらそれは改めるべき悪です。
787デフォルトの名無しさん
垢版 |
2024/02/14(水) 16:46:13.61ID:L7EuZktb
ついに存在しないCコードの幻覚が見えるようになってしまった複製おじさん……
788デフォルトの名無しさん
垢版 |
2024/02/14(水) 16:46:26.67ID:b+wxXawK
一方、質問文を誤読して解答してしまった人間に対して強く当たって良いわけでもない
2024/02/14(水) 16:51:03.66ID:3OoaoCBc
>>788
あれは誤読 (?) なんでしょうか。
茶化しているように受け取ったので腹立たしかったのですが、
そうだとしたら >>783 は言い過ぎですね。

ID:S2bQYQek さん、すいません
790デフォルトの名無しさん
垢版 |
2024/02/14(水) 17:05:32.23ID:ZK4bCcm/
人間の注意力読解力は実際この程度なので、人間にC++を扱うことは難しい
2024/02/14(水) 17:06:20.11ID:Q08aEmFz
だから境界知能なんでしょ
792デフォルトの名無しさん
垢版 |
2024/02/14(水) 17:19:45.82ID:qgmjNVo3
腹立てるのもわからなくはないがそんなにキレてレスするようなことではないだろ
気に入らなかったらスルーする程度には心に余裕を持っておこう
793デフォルトの名無しさん
垢版 |
2024/02/14(水) 17:26:03.70ID:h4S8S2sP
tmuxよりscreen派だよ。
794デフォルトの名無しさん
垢版 |
2024/02/14(水) 17:50:47.59ID:6CXfQ6Kw
個人的には後置インクリメントだけを関数化するのは微妙に感じる

fetch_addとかは必要性を理解できるけど単純なpost_addやpost_incrementは一段階上の処理を関数化するので十分でそのほうが見通しがいいように思う
795デフォルトの名無しさん
垢版 |
2024/02/14(水) 19:51:05.67ID:7rKeAYke
>>762
こういう偉そうなこと散々言ってたhaskellがなぜ流行らなかったのかすら理解できてないというのが愚かだよね。
2024/02/14(水) 19:57:21.78ID:b46uhNiQ
>>777
c++ template conceptも碌に知らないでダックタイピングをけなしているのか。なかなか……
ダックタイピングは契約の主体・時期・範囲が違うという話だかね。
2024/02/14(水) 20:14:14.28ID:yh2p7tDo
>>796
C++では機能の異なる同名メソッドを区別できないから欠陥品
2024/02/14(水) 20:52:10.35ID:b46uhNiQ
>>797
引数・戻り値で区別できるだろ。
2024/02/14(水) 21:01:37.45ID:yh2p7tDo
>>798
それに依存してしまうのがC++の限界
2024/02/14(水) 21:18:41.79ID:b46uhNiQ
>>799
名前も引数も戻り値も区別できないんだったら、ダックタイピングで呼び出す側はそもそも区別する必要あるんですかねぇ。
2024/02/14(水) 21:58:58.38ID:H5X+9PTs
>>796
それだとRustでいうところのトレイト境界を課すことができないな
つまりC++では安全に呼び出すことができない
呼び出したメソッド内で出来ること出来ないことが定まらないため
2024/02/14(水) 22:13:29.10ID:uLd8jazY
>>801
「呼び出したメソッド内で出来ること出来ないこと」
て何?

Rustのtraitて、副作用のコントロールできたっけ?
2024/02/14(水) 22:26:20.82ID:8gvFvpJ5
traitのprovided methodのdefault実装で呼び出せるのはrequired methodと
trait境界がある場合はそのtraitのmethod
そしてそれらで構成された他のprovided methodのみ
って制限をC++でどうするんだろ
2024/02/14(水) 23:19:42.33ID:3OoaoCBc
>>803
コンセプト。
2024/02/14(水) 23:20:56.22ID:3OoaoCBc
>>792
毎度毎度のことで余裕を削られた最後だったんだよ。
806デフォルトの名無しさん
垢版 |
2024/02/15(木) 00:20:11.01ID:AyUC+mx+
毎度毎度のことという認識を持っていながらなぜここに書き込むのか
2024/02/15(木) 00:23:07.31ID:x2y7hFPc
>>806
せやな。
けど日本で比較的活発な Rust コミュニティというとここなんよ。
2024/02/15(木) 07:06:08.60ID:13EQhuxe
>>804
concept記述が多すぎて書いててイヤになるな
普及しそうにない仕様がまたC++に増えた感じ
Rustが必要な機能を洗練して提供しているのと対照的
2024/02/15(木) 07:43:10.62ID:j4EJcuA3
>>808
洗練されすぎてて「早すぎる最適化」がバンバン起きるけどな。
枯れた既存プログラムの置き換え用途が無難なところかと。
コード破棄前提のプロトタイピングはコスト的にキツイか。問題領域の知識がほとんど無い開発初期で使えるのは未来を予測できる天才ぐらいだろ。
2024/02/15(木) 07:55:56.64ID:hKdVOM0D
>>809
Netflixの天才プログラマーが丸2年間Rustに全力費やして周りに吹聴した挙句に
RustやめてGoにする宣言してる
理由を真面目に話してるから一見の価値のあり
2024/02/15(木) 08:11:38.37ID:j4EJcuA3
>>810
検索したけど見つからなかった……
リンクある?
2024/02/15(木) 08:17:50.82ID:Me0Wd39H
[Why I Use Golang In 2024](https://www.youtube.com/watch?v=6gwF8mG3UUY)
2024/02/15(木) 08:19:40.94ID:j4EJcuA3
>>812
サンクス。
家帰ったら見るわ。
2024/02/15(木) 08:48:36.69ID:UeUfm3Ct
>>812
見た
ほとんどの話がプログラミング言語の比較よりももっと抽象的な話で中身が薄い
そして批判されてるのはなぜかTypeScrpt
Goについてはシンプルなのが好きでジェネリックが導入されてワクワク
Rustはifに括弧がないのたスネークケースが嫌いだけどGoもifに括弧がないよ
Rustの型システムはとても素晴らしいけど、
2024/02/15(木) 09:52:51.93ID:x2y7hFPc
>>808
過去のコードと矛盾しない形での後付けだからな。
C++ を根本から変えるような大革新なのに (ほとんど) 互換性を損なわないように出来ているという意味ではかなり気が利いた設計ではある。
簡単に互換性を切り捨てていると資産が蓄積されないし、かといって変わらないままでもいられないのは宿命というもんだよ。
Rust だって歴史が積み重なればいずれそうなる。
「綺麗なのは使われないもの」という格言を聞いたことないか?
Rust は C++ の歴史のグダグダから学んだ反省としてエディションという概念を導入したが、これがどれくらい上手く機能するかは現時点では未知数だ。
規格策定・処理系保守のリソースは無限なわけではないしな。
2024/02/15(木) 09:55:25.99ID:LYiZEs3M
エディションはすでに複数あるけど
あっても無理とか問題起きるとか
実例あるの?
2024/02/15(木) 10:07:56.04ID:x2y7hFPc
>>816
問題が抑えられているのは問題がないように保守されているからで、
その体制を「ずっと」続けられるものかどうかはずっと続けてみないとわからない。
今問題があるとかそういう話じゃないから未知数と述べてる。
2024/02/15(木) 10:11:47.35ID:9MXGquuv
C++は貧弱な家を土台に増築工事をしまくって部屋数は多いが使われていない部屋だらけ
C++プログラマーの多くが知らない部屋、見たことない部屋、たどり着けない部屋が多数あるまま、さらに増築工事が進んでいる
819デフォルトの名無しさん
垢版 |
2024/02/15(木) 10:21:13.40ID:qaCOVcST
まあいうてもRustも将来的には増築されたバケモノになるか途中で破壊的変更的なものを入れるかするかの選択になるのでは

Cから呼べてCを呼べる限りはどの言語を使っても良いとする立場であれば今一番使いたい言語はRustではある
2024/02/15(木) 10:32:36.57ID:LYiZEs3M
>>817
今は良くても未来は何が起こるかわからない論法は
何にでも使えるから意味ある話とは思えないけど…
2024/02/15(木) 10:37:24.02ID:x2y7hFPc
「出来る」ということを大前提として確信できて、
その上で「上手く出来る」ならより良いってのが産業的な考え方だ。
おおよその場合に上手く出来ても
ちょっとした想定外に直面したときに破綻するようでは使い物にならない。

現実の問題ってのは想定してないところから出てくるものだから
そういうことも乗り越えられることを証明するには
実績 (歴史) を重ねるしかしょうがないんだ。

C++ は上手くやったとは言えなくても、汚くても打てる手が有る道具として信頼を得た。

Rust は今の時点では実に使いやすいように見えるが、
本当の意味で現実の使用に耐えうるものなのかは現実に使い倒してみるまでわからない。
822デフォルトの名無しさん
垢版 |
2024/02/15(木) 10:38:37.60ID:TrooctNX
今の時点で使いやすければなんでもいいんだYO
2024/02/15(木) 10:45:22.07ID:9MXGquuv
C++コンパイラが諸問題を指摘してコンパイルエラーにしてくれる状況は来そうにない
これだけ増築工事を重ねてもまだ見込みが立たないまま
2024/02/15(木) 11:47:28.36ID:olqTmpaN
C++の知識は大いに再利用されているので現実世界の変化は小さい
想定外かもしれないのは変化の大きさではなく
現実世界を定義できないことだ
定義できるのは理論だけ
2024/02/15(木) 12:02:34.79ID:oxTsPXaA
>>821
今の想定が甘いとか具体的指摘なかったら
想定外の対処ができてないから駄目は無敵論法
2024/02/15(木) 14:40:35.94ID:wvzNp0zm
そりゃWeb系だとGoのほうが使いやすいに決まってるでしょ
パフォーマンスもスクリプト言語よりはめちゃくちゃ速いから十分
2024/02/15(木) 14:47:01.34ID:z+RD4XEG
サーバーサイドは群雄割拠時代よね
Rust、Go、Java/Kotlin、C#いっぱいある
2024/02/15(木) 16:20:13.71ID:x2y7hFPc
>>825
駄目とは言ってない。
駄目かどうかも「わからない」ことが産業的なハードルだよねって話なんだが、わからんかな。
2024/02/15(木) 16:46:19.25ID:606b12LT
>>828
あなたの話相手してもrustでも他言語でもいいけど
問題回避のためにこういう仕様や実装にすべきじゃないか
みたいな議論が成り立たないのでそちらがおよそ産業的じゃないね
2024/02/15(木) 16:50:52.01ID:olqTmpaN
すべてを疑っても産業だけは疑いようがないって話なら
想定内と想定外の境界がどの辺にあるのかはなんとなくわかる
2024/02/15(木) 17:21:54.77ID:SzbBTI0k
>>814
Rustは型〇ナニーで長時間バトルだったと言ってるぞw
>>812動画の人がいくら天才でも2年間かき回したのは頂けない
2024/02/15(木) 17:26:25.25ID:BHoNDVf7
Rustは非同期処理がC++より扱いやすいおかげでサーバー方面に進出したのは良い
さすがにフロントでRustは微妙そうだけど、このままどんどん多方面に普及してほしい
2024/02/15(木) 17:31:26.55ID:dtRRoOMy
Ruby は、Go/Rust/Elixir の3大言語を超えた!
Rust の上昇は止まったか?

Stack Overflow 米国年収。2022 -> 2023

Ruby : 9.3 -> 9.9 万ドル
Elixir : 9.3 -> 9.6
Go : 8.9 -> 9.3
Rust : 8.7 -> 8.7

多くの言語 : 6.5〜7 -> 7.3〜7.8

PHP : 5 -> 5.9
Dart : 4.4 -> 5.6
2024/02/15(木) 17:35:21.87ID:eOw5Ad1t
>>832 夢見てないで現実見ては?
https://active.nikkeibp.co.jp/atcl/act/19/00546/011500001/
2024/02/15(木) 17:41:41.98ID:wvzNp0zm
>>812
流し聞きしたけど複雑だとかしょーもない構文の好き嫌いみたいな話しかしてなくて草
2024/02/15(木) 17:53:07.04ID:8jpdfcc8
>>835
Rustインフルエンサーの成れの果てですなw
2024/02/15(木) 18:08:05.70ID:uSGIT3N+
>>834
せめて用途別のプログラミング順位を挙げてくれ

…単発に言っても無駄か😭
2024/02/15(木) 18:08:23.00ID:giVh/goG
Goは2年も続けられるだろうか

大分前に少し使ってみたけど例外投げずにResult(タプル)で返す言語設計を採用しながら
返されたResultを無視してもコンパイラが警告出さないからやめた
Cで戻り値のエラーをスルーする事案が多発したから後発言語で例外が作られたのに

↓を見て気持ち悪さを感じる人には向かない

file, err = os.Open(path) // ← fileと一緒にエラーの受け取りを強要される
os.Chdir(path) // ←エラーしか返さないから戻り値を無視して処理を継続できる
2024/02/15(木) 18:11:15.85ID:x2y7hFPc
>>829
情報が充分じゃない (から議論を始めることさえできない) ことが
リスクだという話をしているつもりなんだが、伝わってないのか?
どんな問題が起こるのか事前にわかれば苦労しないよ。

起きたことに対処し続けるしか仕方がないが
可能なら自分が対処する当事者にはなりたくない。
2024/02/15(木) 18:19:47.46ID:SZiIKMeC
「Go」、2月のTIOBE指標で過去最高8位に
https://japan.zdnet.com/article/35215159/
https://japan.zdnet.com/storage/2024/02/13/0ee0eaf7a75e201ad2ee580740569609/240213_tiobe.png
2024/02/15(木) 18:24:55.60ID:x2y7hFPc
>>838
悪いほうがよい (Worse is Better) 原則というものも知られている。
正しさと単純さを天秤にかけてどちらが良いかという点で Rust とは異なる重みづけをしたのが Go だと思う。
問題をコンパイラが検出できる設計はもちろんありがたいが、そのために持ち込む構造は人間が把握しやすいものだろうか。
正直言って Go が良いとは全然思わないが一貫した理念に基づく判断であって、不備でそうなってるわけではない。
2024/02/15(木) 18:31:33.80ID:j4EJcuA3
>>829 >>839
このあたりは設計の根深い問題で、「変化を抱擁する」を標語としたアジャイル開発とかインクリメンタル開発とかで色々議論されたな。
あんまり目立った成果は無かったような気もするけど、機能間の疎結合と可換性は重要な指摘だと思うわ。
2024/02/15(木) 18:34:16.56ID:3rKktGL8
>>817
これはごもっともな意見
50年後にRust 2072エディションがある状況で最新コンパイラが2015エディションをサポートし続けてるとは思えないからどこかでは切ることになる
それでもRustのモデルとC++のモデルとどちらのほうが相対的によさそうかという選択の問題
844デフォルトの名無しさん
垢版 |
2024/02/15(木) 19:40:03.38ID:TrooctNX
50年後にC++23はサポートされているのだろうか
というかC++は50年後もアップデートしているのだろうか
2024/02/15(木) 19:52:43.98ID:flxKbqvK
>>843
cargo fix --edition
のあるRustは至れり尽くせりだよ
2024/02/15(木) 20:00:49.77ID:nijJOd3e
>>844
既にC++17とC++20で以前導入の機能の削除が大量に行われている
847デフォルトの名無しさん
垢版 |
2024/02/15(木) 20:11:12.94ID:Zy70aZMD
じゃあもうRustで良いじゃん
2024/02/15(木) 20:27:48.49ID:Y7OgkdHD
CになかったC++の機能は削除してもチューリング完全が保証される
逆に、削除したらチューリング完全ではない保証をするならミニマリズムがベター
2024/02/15(木) 22:27:00.96ID:MX4y8Eg+
>>840
Kotlinが上がってきてるのうれしい
Fortranも上がってるのはなぜだ
2024/02/15(木) 22:56:46.83ID:x2y7hFPc
C++ は欠陥報告という制度で過去の規格に遡って修正が加えられることがある。
たとえば C++11 発行当時の C++11 と今の C++11 は内容が異なるわけ。
基本的には過去の仕様に新機能を追加したりはしないが微妙な挙動の変なところを直すような保守は続いている。
実質的には Rust のエディションみたいなことにはなってるんだよなあ。
851デフォルトの名無しさん
垢版 |
2024/02/15(木) 23:13:05.86ID:17JkefKn
llvmも実装はc++だし。
2024/02/15(木) 23:33:02.83ID:CqGYBNeH
>>850
Rustは必ずeditionを明示しないといけないから
あるソースコードがどのeditionなら確実に動くのか明確にわかる
そしてそのeditionを指定してコンパイルも通り実行もできる

しかしC++は当初のC++11に従いコンパイルできて動いていたものが
今はC++11の機能のいくつかは削除されてしまっているために
2024/02/15(木) 23:44:16.83ID:x2y7hFPc
>>852
C++11 は C++11 として存在し続けているので問題になってないという話をしてるんだが
854デフォルトの名無しさん
垢版 |
2024/02/15(木) 23:57:58.06ID:m2l7AKkd
一般人と同等の読解力を複オジに期待しないこと
855デフォルトの名無しさん
垢版 |
2024/02/16(金) 01:17:00.51ID:2uzjzXJf
cppreference.comの下のほうにちょろっと書いてあるdefect reportってそういうことだったんだ
勉強になるわ〜
856デフォルトの名無しさん
垢版 |
2024/02/16(金) 02:58:58.82ID:T31Boec7
>>853
名前が同じならなんでも良い…… ってこと!?
2024/02/16(金) 05:29:44.45ID:VnZfCvN7
>>856
「規格が同じなら」ということだよ。

c++11とかはあくまで規格なので各実装の準拠率とか注意するポイントはあるけど、メジャーな機能を保守的に使えばそれなりに互換性を維持できる。
2024/02/16(金) 06:06:29.14ID:VMcEA5aE
RustのEdition方式が優秀すぎる
新たな機能の規格で分けるのではなく
各Editionは後方互換性の変化で分けているため
過去に書かれたコードも必ず動く
859デフォルトの名無しさん
垢版 |
2024/02/16(金) 08:50:06.12ID:T31Boec7
>>857
規格が同じといいつつ機能消してんだから同じなのは規格の名前だけじゃん
860デフォルトの名無しさん
垢版 |
2024/02/16(金) 08:50:57.44ID:T31Boec7
規格から機能ごと消えるんならよう
2024/02/16(金) 08:57:09.07ID:MpEo3rxP
>>859
消してないけど何いってんの?
2024/02/17(土) 07:36:35.11ID:pKHDV/cx
ID:T31Boec7
流石にこいつ日本語能力なさすぎだろ
ガイジかな?
2024/02/17(土) 07:58:38.87ID:y2U3e6uM
mojo vs rustでmojo公式とnetflix天才とRust本著者で盛り上がっている
https://www.youtube.com/watch?v=MDblUyz0PtQ

>>814,835
早口なので大変だろうけどちょとした言葉の節々に情報があるからリスニングがんばれ
864デフォルトの名無しさん
垢版 |
2024/02/17(土) 08:38:43.36ID:P+bU7/QC
>>863
copilotで要約して貰うのが時間も短縮できるのに無能だなw
2024/02/17(土) 11:31:52.42ID:/wuPDCL7
>>864
この天才同士のディスカッションを楽しめないなんて損してんね🥲
2024/02/17(土) 11:55:10.10ID:wfN7KjH7
Netflixの天才とかいうのが胡散臭くて信頼性がないんだけどどういう人なのよ。
2024/02/17(土) 12:54:06.77ID:p6Fewl3N
>>863
この人の英語聞き取りにくい
もうちょっとゆっくり喋って欲しい
中身うっすいのにさ
2024/02/17(土) 12:58:21.47ID:p6Fewl3N
>>862
普通に境界性知能ってやつでは?
この手のは全部そうだと思うようにしてる
869デフォルトの名無しさん
垢版 |
2024/02/17(土) 17:40:44.30ID:SxaDWram
>>863
ベンチマーク試してみたところ以外はブログ記事のまんまなのでわざわざ動画で見なくてもいいなこれ

公式ブログに書くならもうちょっとちゃんとしたベンチマークやれよって感じ
見識を疑うレベル
870デフォルトの名無しさん
垢版 |
2024/02/17(土) 18:56:01.48ID:bc7xcSj4
Netflixの天才がいかがでしたかブログレベルの動画を出すとは
2024/02/17(土) 19:01:49.62ID:hd6B0gbf
>>863
動画内の指摘が記事に反映されてMojoがRustの3倍速いじゃん!!
Mojoコンパイラ賢いな
2024/02/17(土) 19:07:25.89ID:1+LtKHMi
以前からMojoがCより何倍も速い!とかやってるけど
ベンチ方法や条件などが何かおかしい
2024/02/17(土) 20:11:15.92ID:lHr0QJnq
SIMDが効くような恣意的なベンチだしな
2024/02/17(土) 21:00:37.77ID:QWthdRCX
でもデータを見てから断罪するのは俗っぽいから
データを見ないでロジハラするのがベター
2024/02/17(土) 21:16:16.12ID:lHr0QJnq
DynamicVectorは最適化でSIMD使うように最適化されるってだけだろ
あと末尾最適化する
くだらなすぎる
2024/02/17(土) 21:40:36.38ID:WeOJL5ES
え? Rustって末尾最適化できんの?
2024/02/17(土) 23:56:23.75ID:uU5eCENW
Rust Reserved keywords

KW_ABSTRACT : abstract
KW_BECOME : become
KW_BOX : box
KW_DO : do
KW_FINAL : final
KW_MACRO : macro
KW_OVERRIDE : override
KW_PRIV : priv
KW_TRY : try
KW_TYPEOF : typeof
KW_UNSIZED : unsized
KW_VIRTUAL : virtual
KW_YIELD : yield
2024/02/18(日) 09:43:13.97ID:2fU6EVDD
>>873,875
同じLLVM系なのにRustが3倍遅いのかよ!!
Mojoがコンパイラ賢いのかRustコンパイラが...
879デフォルトの名無しさん
垢版 |
2024/02/18(日) 10:23:17.76ID:8VIVYK48
あれを見て本当にRustが遅いと思っちゃう層の人にRustは向いてない
880デフォルトの名無しさん
垢版 |
2024/02/18(日) 10:24:13.10ID:8VIVYK48
ちなみにSIMD云々は本質じゃないよ
2024/02/18(日) 10:33:07.03ID:diN1NxZN
>>879が3倍速いRustコードを出すってよ
2024/02/18(日) 10:46:23.01ID:fnRzA2e2
これはGoの方が速いんじゃないか?
2024/02/18(日) 11:13:09.56ID:NoFg1fuK
GoはGCを伴う言語だから論外
MojoはC/C++/Rustより3倍速い
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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