Rust part9

■ このスレッドは過去ログ倉庫に格納されています
2020/08/23(日) 01:07:35.52ID:MgEpWwVh
Mozilla発のRust言語のスレ

公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

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

前スレ
Rust part8
https://mevius.5ch.net/test/read.cgi/tech/1579834072/
2020/12/13(日) 02:17:41.84ID:1g8P/X2h
rustでRSSリーダー作れましゅか?
2020/12/14(月) 12:25:27.59ID:6iyAwzKw
色々調べて学んでみたが個人的にはRustは好きな言語ではないし
本の帯に書かれているようなC/C++の代替になるようなものではない。
メモリー安全なのはポインタが理解できない人向け。
Ruby/Puthon/JSのようなスクリプト言語的な使い方ならある程度できそうだが
それらより遙かに難しくなっている側面が有ることも否めない。
C/C++のように自由にデータ構造を作るには向いていない。
C#やJavaは速度は落ちるが、C/C++のコードを容易に移植できたが
Rustは出来ない。
2020/12/14(月) 12:30:01.03ID:6iyAwzKw
>>384
C#やJavaは、データ構造やアルゴリズムを自由に作りやすいC/C++の自由さを
速度やメモリー効率を落とすことで初心者やポインタが理解できない人でも
手に入れることが出来る言語であった。
RustはC/C++と比べて効率は落ちにくいが C/C++の自由さは手に入らない。
ポインタを良く理解している人であってもRustのsafeモードでは独自の
データ構造やアルゴリズムを作るのは非常に難解。
なぜならライフタイムやBox<T>などの仕様が明言されて無く不明確だから。
2020/12/14(月) 13:20:59.79ID:P41Kk9Hq
>>384 6iyAwzKw
>>385 6iyAwzKw
せっかく関心しかけたのに、自演で信頼性を損なうな
2020/12/14(月) 13:30:32.20ID:B3PAtuba
いつもの人だし関心するような内容あったか?
2020/12/14(月) 13:39:47.48ID:P41Kk9Hq
すまんな、rustスレ初めて覗いたんだ
2020/12/14(月) 14:39:07.69ID:GNvWdWeF
>>388
いや、実際に関心する内容があったんならそれはそれでいいんだが
あと別に自演失敗したとかじゃなく、Twitter的な感じでリプライで補足しただけでは
別人を装う気は微塵も感じられない
2020/12/14(月) 14:40:42.59ID:olJ8vT42
この人ほんとゴミやな
Rustは優秀な老害フィルターかもしれん
2020/12/14(月) 15:05:11.25ID:GNvWdWeF
嫌いなものを無理に使う必要ないんだが、それを何度も何度も言いに来られてもな
説明しても聞く気ないし
2020/12/14(月) 15:39:33.85ID:SRefut4W
仕様が公開されていないおじさん
2020/12/14(月) 16:56:39.26ID:XcunzViE
数学的に正しい仕様が公開されてないおじさん
2020/12/15(火) 09:41:38.47ID:uMItmhUb
老害に失礼だろ(笑)
2020/12/15(火) 09:52:45.57ID:ndUamRAR
具体的に何ができないか言ってくれないとただのお気持ち表明でしかない
2020/12/15(火) 16:41:25.69ID:DgOkpJ7c
リングバッファ実装でさえunsafe使わなきゃ無理だろ。
2020/12/15(火) 18:07:45.20ID:08XnxdOZ
リングバッファにunsafe必須とか正気か?
何も分かってないだけじゃん
2020/12/15(火) 18:38:51.06ID:cTRY0FQu
仮に unsafe 必須だとしてそれがどうだっていうんだ?
2020/12/15(火) 19:50:18.09ID:DgOkpJ7c
なるほどunsafeでもかまわんと。。まあそれでいいならそれでいいんじゃないですかね。
rustの旨味半減もいいとこだが。
https://github.com/rust-lang/rust/blob/master/library/core/src/alloc/mod.rs
2020/12/15(火) 20:31:28.92ID:ndUamRAR
Vec使ったsafeな実装もできるだろうし、
パフォーマンスを求めるなら直接allocのAPIを叩くunsafeの実装もできる

dogmaticにならず目的に応じて適切な手段を使い分けられるというRustの良いところの例だと思うが
なんでunsafe使ったら負けみたいな思考になるのかが分からない
2020/12/15(火) 20:32:49.79ID:WLyCzOT+
むしろ libc crateだけで作ればいいんじゃないか
2020/12/15(火) 21:30:40.05ID:+RD1gPFt
unsafe使ったリングバッファで数学的に完全に安全てw
自分の書いたロジックをコンパイラが検証してくれないって話だったのかよ
2020/12/15(火) 21:56:57.57ID:/27NEAtR
safeとunsafeを混ぜられるところはまさにRustの旨味そのものなんだが
2020/12/16(水) 01:59:42.07ID:yml2nxMy
そこまでしてRust使うならC++で十分。
2020/12/16(水) 07:41:21.74ID:L6k9APCP
>>404
unsafeじゃない実装もできるいうてますやん
2020/12/16(水) 11:49:20.44ID:tsGP+5/P
全部unsafeで常に安全性に気を使わなければならないC++
一部のunsafeな箇所の安全性にさえ気をつければ、大部分のsafeな箇所はコンパイラに従うだけで安全になるRust

C++の方が楽と感じるのはなぜ?使い慣れているから?コンパイラに叱られないから?
2020/12/16(水) 12:51:22.00ID:N/7dwjAk
数学的にというがそれはどうせ高校までの数学でしょ?
大学で教わった群論や離散数学を含んでるのか?
2020/12/16(水) 12:57:08.01ID:XkwPQibg
数学的に安全というのはCoq使って検証したとか
言ってもらわないとなあ
2020/12/16(水) 13:02:30.37ID:2c+prgNQ
一気に議論がチープになった
「数学的」でNG推奨
2020/12/16(水) 13:56:32.92ID:zVHRhpaQ
RustBeltやRustHornみたいな取り組みに期待したい
2020/12/16(水) 14:07:09.63ID:tsGP+5/P
miriってどうなの?
2020/12/16(水) 14:47:33.79ID:zVHRhpaQ
miriは普通に使えるんじゃない?
といっても実行パスでUB踏んでないか見るだけだから
RustBeltみたいな証明とは違うけど
2020/12/16(水) 16:16:13.30ID:qBZDuvPr
>>409
お前それ数学的に証明できんの?
2020/12/16(水) 18:05:54.84ID:QJd1nMyw
>>406
はっきりいえば、頭がいいから。
学生時代、ほとんど数学は満点だった。
2020/12/16(水) 18:20:40.19ID:YefQ566E
>>414
私は馬鹿だから、あなたがとってもうらやましいですね…
2020/12/16(水) 18:22:19.17ID:tsGP+5/P
>>414
C++の言語仕様完全に理解してそう。すごい
2020/12/17(木) 00:47:25.43ID:X4tT/GwL
>>406
普通にc++使ってれば安全性に気を使わなきゃならん部分は一部だとわかるし、
それがどういう部分かと言えばrustがunsafeで書かなきゃならん部分だからだよ。
2020/12/17(木) 15:00:55.83ID:dPcuBcMK
>>417
それでもミスるのが人間。そういった経験からシステム的にミスを無くそうと試みているのがrust。
それをわかった上で俺はミスしないって言ってるのはただの経験不足か、プログラムを全然組まないやつだな。
2020/12/17(木) 16:21:39.70ID:lSe9thVt
>>417
(とりあえず unsafe を使う必要がないようなコードで)
Rust を使って最初からエラーなしで通すことが出来るんか?
それでどこかで引っかかるようなら C++ でもたぶん出来てないぞ。
2020/12/17(木) 17:13:31.93ID:lDGBWs83
触れるなよもう……
421デフォルトの名無しさん
垢版 |
2020/12/17(木) 17:54:41.43ID:Lgh9khpQ
cd ~/.cargo/registry/index/github.com-1ecc6299db9ec823
git pull https://github.com/rust-lang/crates.io-index.git
422デフォルトの名無しさん
垢版 |
2020/12/17(木) 19:07:39.53ID:mqVedE2Y
D言語はどうなったんや?
423デフォルトの名無しさん
垢版 |
2020/12/17(木) 19:08:57.68ID:h5oPvIGR
まだ生きてんだw
2020/12/17(木) 19:35:09.90ID:zyd/WMbf
D言語のリファレンスって平易な英語で書かれていて、自分でドキュメントを書く時にすごく参考になる
2020/12/18(金) 03:45:53.54ID:WanfFh5H
>>418
俺は高IQで、数学が得意だったので、C++で何10万行のプログラムを書いても、
経験的にメモリ関連のバグが起きる確率はとても低い。
一般プログラマには当てはまらないかも知れないが。
2020/12/18(金) 04:06:31.91ID:4UaQE5Dn
経験的ねぇw
数学得意な奴が使いそうな言葉だねw
2020/12/18(金) 04:42:51.11ID:vRuKil8l
>>425
メモリ関連のバグは「確率が低い」では全然だめですよ、バグを作ってしまうことは仕方ないにしても、最初から根絶を目指さなくてはいけないかと
私なら、最低限 new/delete はオーバーロードしてラッパを書き 未 delete・重複 delete くらいは確認しておきますね
まあ、最近はお気楽に unique_ptr, shared_ptr で妥協することがほとんどですが、weak_ptr はちょっと怖くて使わないようにしています…
2020/12/18(金) 08:33:16.84ID:8E8ygoYj
>>425
あなたのプログラムでバグが起きる確率が低いことはどのように検証したのですか?
2020/12/18(金) 11:50:56.29ID:2oY35fJZ
経験的に、そうだからです
2020/12/18(金) 12:17:36.04ID:QLPAoxRE
そう、未だ気づかれていない大量のバグが潜んでいるのだった
2020/12/18(金) 15:39:43.38ID:WanfFh5H
みんな同じじゃないぞ。
頭にも才能があるのを忘れるな。
そうでないと高IQ者が活躍できない。
432デフォルトの名無しさん
垢版 |
2020/12/18(金) 15:43:18.03ID:WanfFh5H
>>427
QZは馬鹿。
2020/12/18(金) 15:54:37.91ID:ivKQNPRV
>>432
>>431
たしかに高IQの人の言ってはることがさっぱりわからなくて…
というか、高IQ だと私が思っていても実は、IQ=100 の人だったりして…
ということで、私のIQは80くらいだと思っています
2020/12/18(金) 15:56:33.29ID:WanfFh5H
>>433
普通、高IQといえば、IQ=140以上だろう。
2020/12/18(金) 16:25:31.81ID:D1qPLrji
IQ高いけどとても残念な人なんですね
2020/12/18(金) 16:45:14.29ID:e23FtnoV
>>434
メンサの方ですね、証拠をどうぞ
2020/12/18(金) 16:58:40.57ID:y5AIURZA
>>431
それでメモリ関連のバグの有無はどういう基準で判定してるんですか?
2020/12/18(金) 16:58:41.81ID:WanfFh5H
QZの方が最悪だ。
自分と自分の周りの価値観がすべてだと思っている。
平均の人々と秀才とはどこまで行っても違う。
言語の好みから何から何まで。
必要としていることも何もかも。
2020/12/18(金) 17:20:09.25ID:ivKQNPRV
>>438
>自分と自分の周りの価値観がすべてだと思っている。

私は私の持つ価値観以外にも、別の価値観やセンスオブバリューが存在し、かつ、私の持つ価値観よりも優れた価値観が存在し得ることも想定していますが、
私の発言の中に「自分と自分の周りの価値観がすべてだと思っている」とあなたに感じさせた部分がありましたら、是非ご指摘いただけるととても嬉しいです
2020/12/18(金) 17:46:11.20ID:OB9lVkoO
経験的に数学的に完全に安全
これが高IQ語法か
2020/12/18(金) 17:55:52.91ID:ivKQNPRV
>>440
それって変てこな語法ですよね
数学的に正しいのであれば、それは経験とか履歴とかヒストリーとかにまったく関係なく、
数学的に正しいと証明された時点で、現存宇宙のビッグバン以前、宇宙死以後にも、数学的に正しいのに

ど う し て 「 経 験 的 」 と い う 単 語 を 使 用 し て い る の で し ょ う か ?
442デフォルトの名無しさん
垢版 |
2020/12/18(金) 19:22:04.03ID:ZgVdoEAh
>>425
残念ながらお前の同僚や部下は違うんだ
2020/12/18(金) 19:41:43.87ID:0PDslekh
>>436
年内に会費払わなきゃいけないのを思い出した。ありがとう。
2020/12/18(金) 20:59:10.26ID:ivKQNPRV
>>436
メンサの人ってどんな人なんでしょう?
一度お会いしたいです
お話しするなかで、私のような馬鹿がもう少し生きやすくなるコツみたいなものが私にも感じられたら(多分理解は無理だと思います…)とても嬉しいですね
2020/12/18(金) 22:14:54.92ID:+Wrhvh6s
せっかくのRustスレなのにどうしてこんなカオスなスレになっちまったんだ…
2020/12/18(金) 22:29:37.14ID:y5YMvzUM
キチガイに構っても得るものはない
447デフォルトの名無しさん
垢版 |
2020/12/18(金) 22:30:30.78ID:tYOLON+r
unsafeの必要性がよくわかっていいじゃない
2020/12/18(金) 22:40:26.63ID:CFV0tuU9
専門板名物
2020/12/22(火) 13:40:54.01ID:n+6lDw0n
from_str を実装しようとしています。
入力となる文字列 (の一部) をスライスとして保持するようなデザインにしたいのですが、
ライフタイムの整合性を取れる書き方が出来ません。
FromStr はそういうことが出来ないように制約付けられたトレイトということなのでしょうか?
それとも工夫してどうにか出来るでしょうか?

やりたいことをコードで言えばこんな感じです。

use std::str::FromStr;

struct foo<'a>(&'a str);

impl<'a> FromStr for foo<'a> {
type Err = &'static str;
fn from_str(s: &'a str) -> std::result::Result<Self, Self::Err> {
Ok(foo(s))
}
}
2020/12/22(火) 15:57:10.65ID:RsVnnyiY
>>449
できない
2020/12/22(火) 16:08:49.13ID:I4oG7AXR
>>449
FromStrはライフタイムを持ってないので無理
https://doc.rust-lang.org/std/str/trait.FromStr.html
の2段落目を見るといいよ
2020/12/22(火) 16:33:15.01ID:n+6lDw0n
>>450-451
ありがとうございます。
設計を見直します。
2020/12/24(木) 02:29:50.39ID:MTdaKV6Z
高IQの自分は、Cでメモリーマネジメントに悩まされたことは無かった。
一方、Rustはメモリーマネジメントが言語の中心に有り、プログラムの
アルゴリズムや本質的な処理よりもメモリーマネジメントに意識が集中して
しまう傾向がるため、人によるだろうが自分にとっては効率的な言語ではない。
2020/12/24(木) 02:43:25.72ID:MTdaKV6Z
一般プログラマにとっては層ではないかも知れないが、
高IQのエキスパートにとっては、もっと安全に書ける方法を高頻度で天才的に
思いつくが、それはRustのチェッカと戦いとなる。
455デフォルトの名無しさん
垢版 |
2020/12/24(木) 06:27:27.80ID:NfngU3lj
その話前も聞いた
2020/12/24(木) 07:10:24.63ID:nIBEXBhK
糖質には構わず黙ってNGせよ
2020/12/24(木) 07:21:13.47ID:0tNyylQf
D言語使えよ
2020/12/24(木) 10:57:33.54ID:wstK+Rzy
Rustは、海外では既に大量の問題点が指摘されている:
https://www.reddit.com/r/rust/comments/ggyo51/criticisms_of_rust/
459デフォルトの名無しさん
垢版 |
2020/12/24(木) 12:13:15.97ID:bpYd2wwx
日本語で頼む
460デフォルトの名無しさん
垢版 |
2020/12/24(木) 12:13:28.21ID:bpYd2wwx
ヘタレなもんで
2020/12/24(木) 12:41:29.49ID:5ZTYEX+H
学習曲線、ライブラリが未成熟、コンパイル遅い、っていういつものやつをみんながコメントしてるだけ
まぁ問題には違いないし改善も試みてるわけだけど
2020/12/24(木) 12:46:16.64ID:QpBp7gJf
>>461
それだけではないぞ。
2020/12/24(木) 12:52:51.59ID:5ZTYEX+H
>>462
そりゃ細かいのはまだあるだろうが。HKTとか?
300件全部見る気もないのでやりたいなら自分でリストアップしてくれ
2020/12/24(木) 13:18:18.43ID:QpBp7gJf
>>463
453, 454 もその一部に書いてあったものだ。覚えているものだけでも:
・Rustでは、本質ではなくメモリーマネジメントが前面に出たプログラミングとなってしまう。
・もっと良いモデルで書こうとしてもRustが安全性を理解できずエラーになってしまう。
・unsafeモードは悪者扱いされた結果ドキュメントが乏しく進化も遅いため使いにくい。
・長い歴史で実績の有るクラスの継承や例外機構が使えない言語設計。
・抽象化が深すぎて最適化を前提としているので最適化しないと極端に遅い。
・抽象化が深すぎるしマクロが多用されているためデバッガが使いにくくprintfデバッグ中心で行かざるを得ない。
・正確で詳細な言語仕様に乏しいためシステムプログラミングや組み込みには向いていない。
・コンパイラの多様性に乏しい(今のところrustc一個しかない)。
・ターゲットCPUがLLVMのものに限られるため、組み込みには向いていない。
・グラフィックが弱い。
・OpenGL、DirectXと併用するのが難しい。
・コンパイルが極端に遅い。

まだまだある。
2020/12/24(木) 13:20:42.91ID:QpBp7gJf
>>464
[追加]
・抽象化が深すぎるため最適化無しでは極端に遅くなるため、デバッグ時も
 最適化しなくてはまともに動作確認できない。これもデバッガが使い物に
 ならなくてprintfデバッグ中心になる理由。
2020/12/24(木) 13:35:19.50ID:QpBp7gJf
>>465
[追加2]
・リンカをVC++のlink.exeに頼っている。
・ツール類がVC++に比べてとても貧弱(赤ちゃんのおもちゃ)。
・unsafeを使わないととても面倒なことが多い。
・C++では、newとdelete以外にはコンパイラが独自提供しているもの(Hooks)
 がないが、Rustでは大量に有る。例えば、Box<T>はソースがあるようにみえて
 実質はコンパイラ提供のものなので途中でソースがなくなっている。
・C++を含めた多くの言語では、コードの位置の任意の一部を切り取って関数化する
 ことは平易に機械的に(一般的に)できるが、Rustだと一般的には出来ない。
 なぜならRustのコードは、その文脈においてのみ有効なコードに過ぎないからである。
 文脈に応じて書き換えなければボローチェッカに文句を言われてコンパイルが通らない
 から。
2020/12/24(木) 13:38:01.51ID:QpBp7gJf
>>466
[追加3]
・「Rustは独断的な言語です。それは良いことも悪いこともあります。
 あなたがたまたまその意見に同意するならそれは良いことです、
 さもなければそれは信じられないほど迷惑です。」
2020/12/24(木) 13:48:59.29ID:jsfyfwVN
「システムタイプのプロジェクトでやらなければならないことの多くは、Rustでは実行できず、安全でないコードが必要になります。そしてもちろん、使用する基盤となるモジュールの多くには、安全でないコードが含まれています。したがって、ある意味で、メモリの安全性の約束は実際には真実ではありません。それらのいずれかが、現在または将来、コードの他の場所で量子力学的問題を引き起こす可能性のあるメモリの問題を抱えている可能性があります。もちろん、それを実行する可能性のあるコードの量を大幅に削減しますが、それでもかなりの量があります。」

「RustがC ++の句読点の爆発を起こし、さらに悪化させたように感じます。コードのコンパクトさは、読みやすさに比べてそれほど価値があるとは思いません。Rustはシステムの言語であり、SPAフレームワークではありません。それを速くすることは目標ではありません、それを正しくすることは目標です、そしてそれはそれを何年にもわたって書くよりもそれを読んで編集することに非常に多くの時間を費やすことを含みます。」

「コンパイラには、C ++よりも多くのライブラリへのフックがあります。大規模で完全にコヒーレントなシステムの構築に関心のある私たちの中には、それを困難にしている人もいます。C ++では、基本的に新しく削除され、他のすべては完全に自分で行うことができます。」

「Rustは、例外や継承など、何十年にもわたる成功を無視していると感じています。私は自分が書いているコードを見て、ほとんどすべての呼び出しが?で終わる場所で、手作業で効果的に例外を実行しています。そして、すべてのメソッドは、自動的に伝播される可能性のあるエラーを手動で返す必要があります。」

「Rustの安全規則は、より安全なコードを作成しようとする試みと戦う場合があります。」
2020/12/24(木) 13:57:55.75ID:FVOPSkk3
僕は絶対にミスはしませんって言って全部unsafeで包もうぜ
2020/12/24(木) 14:21:36.07ID:7F4cW8XH
>>464
> ・長い歴史で実績の有るクラスの継承や例外機構が使えない言語設計。

クラスの継承や例外機構は長い社会実験の末クソだったって結論出たろ。
だからGoだってわざわざ外してる。
C++にあるものを「実装できない」訳がないよな。わざわざ外してんだよ。
2020/12/24(木) 14:28:12.73ID:YICz7XpS
読んだのか、凄いなw
しかし、スルー検定3級不合格です
472デフォルトの名無しさん
垢版 |
2020/12/24(木) 14:56:25.90ID:TzdYJrci
スル検は難関だからな。
2020/12/24(木) 20:14:08.88ID:OKXZXV0n
CやC++の批判で同じようにredditでコメント集めたらこんなもんじゃ済まないだろ
2020/12/24(木) 21:01:24.33ID:3B9cL9c2
c++と結局同じ道を辿ってるというところが一番愚かな点。
rust覚える早道が結局c/c++勉強することっていう。
2020/12/24(木) 21:42:23.65ID:OKXZXV0n
>>474
低IQだから最初の文と次の文の間の論理が読みとれないので
申し訳ないですがもう少し丁寧に説明して頂けないでしょうか
2020/12/24(木) 21:44:10.79ID:5ZTYEX+H
FFIのデファクトとしてのC ABIはしょうがないけど
C++とか一切触れる必要ないだろ
477デフォルトの名無しさん
垢版 |
2020/12/24(木) 22:57:56.32ID:NfngU3lj
レディットの負け犬に反論する必要なくない
賢さでいったらポメラニアンと同じくらいの連中なのに
2020/12/25(金) 01:07:22.65ID:8LlCCPCm
所有権の重要さを実感するのは結局c++やってたやつだけだろ。
本当に一切c++触らないでrustだけで覚えたとかいう奴はいないわ。
いてもまともなコードは書けないだろう。
2020/12/25(金) 02:44:51.30ID:M0TXsabA
>>475
俺はそいつじゃないが、二文は繋がってない独立した文。
2020/12/25(金) 02:53:15.82ID:M0TXsabA
>>477
redditみたいなアメリカ最大の一般的な掲示板に書き込む人が皆、負け犬なんて
分けはない。
むしろSourceForgeみたいなところは、プログラミング関連の掲示板だから、
プライドだけが高くて力が無い人が集まることも有り得て、ずっと偏りが
あるため、負け犬率が高い可能性がありそこの好きな言語ランキング
なんて信用なら無い。
2020/12/25(金) 02:56:53.96ID:M0TXsabA
はっきいり言って、2ch/5chでも人が大量に来る一般的な板は平均程度の
知的レベルはあるが、この板みたいな技術系の板は、なぜか平均より低い人が
集まりがち。
なぜならリアルで認めてもらえない人がストレスのはけ口のようにして
書いてくる率が高いから。
その意味でSourceForgeは一般人より馬鹿が集まり易く、redditは一般人と
同程度のレベルがある。
2ch/5chもニュース意が見たいなのは一般人と同じくらいの知的水準だが
プログラム技術板は一般人よりも何故か劣っている。
2020/12/25(金) 02:59:57.47ID:M0TXsabA
githubも負け犬や雑魚が集まり易い。
有名な凄腕シェアウェア作家などはそんなとこに投稿せずに稼いでいる。
自分の腕ひとつでは稼げない人が、最後の手段としてなんとか名声を得てサラリーマン
として雇ってもらうためにgithubに投稿する傾向がある。
SourceForgeも同様。
483デフォルトの名無しさん
垢版 |
2020/12/25(金) 03:33:01.51ID:0bOU3lsT
なんかそういデータあるんですか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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