Rust Part6

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/07/28(土) 03:04:38.63ID:kAX50nYD
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 Part5
http://mevius.5ch.net/test/read.cgi/tech/1518347244/
2019/03/07(木) 11:44:24.50ID:ujmnvZmf
Perlは知らんがRubyやPythonには
GILっていう排他制御が言語処理系に含まれてることを考えると
非常に味がある
576デフォルトの名無しさん
垢版 |
2019/03/07(木) 11:46:01.46ID:MaxgRiSY
Luaって息してないの?
2019/03/07(木) 11:50:35.55ID:ujmnvZmf
>>576
他の言語が息できない分野でエラ呼吸してるよ
2019/03/07(木) 12:47:59.26ID:rQAOToBL
>>575
GILは複数スレッドの競合によってインタプリタがぶっ壊れるのを防ぐために必要な、インタプリタ自身の内部的な排他制御
アプリケーションコードで行う排他制御の代わりにはならないよ
インタプリタがスレッドセーフでない糞実装であるための苦肉の策で、
Rust含め元々スレッドセーフな「まともな処理系」なら全く必要のないもの
579デフォルトの名無しさん
垢版 |
2019/03/07(木) 12:55:45.82ID:NXRNz+RG
そういや Perl でマルチスレッドのプログラムは作ったことないなあ。fork してマルチプロセスにするのはよくやるが。
2019/03/07(木) 13:06:36.81ID:V2DuVpEL
>>575
GILは欠陥扱いだろ…
2019/03/07(木) 14:00:26.28ID:GuWZeuUG
そうか、今時の人はみんなLock-freeアルゴリズム使いこなすんだな
Mutexなんて見たことないんだ
2019/03/07(木) 16:39:47.28ID:4Ef40pSv
OSかそれに近いコア領域とかトランザクション必要なデータベースでも書かん限り
MutexとかLockとかが必要だとは思わんなー
Web系にもてはやされてるらしいけど君らそもそもそれオーバーキルどころか逆に足枷ならん?って思う
2019/03/07(木) 18:08:18.69ID:pnI3L7PU
そういうあんたは並行処理どうやってんの?
2019/03/07(木) 18:38:08.85ID:G0X+tUuM
>>583
そもそもそんなに並行処理をOSやミドルウェア頼りじゃなくて自分で書くが必要な場面て例えばどこ?
と質問に質問で返してみる
2019/03/07(木) 18:43:18.41ID:G0X+tUuM
念のため言っとくと、別にロックなんて無駄だとか言いたいんじゃなくて
ArcとかMutexとかRwRockが当たり前に必要とかいうマウンティングに反論してるだけな
2019/03/07(木) 18:54:58.71ID:pnI3L7PU
>>584
仮にお前がミドルウェア使うだけの些末プログラマ
だとしてもミドルウェアがマルチスレッドで動いていたり、
複数のミドルウェアを使う場合は
排他処理が必要なケースは普通に出てくるだろ
2019/03/07(木) 19:01:04.74ID:pnI3L7PU
>>585
rustをc++の代替候補として考えるなら使って当然
並行処理でこそrustの有り難みが生きるわけだし
マウンティングに感じるのは単にお前が並行処理に馴染みがないからだろ
2019/03/07(木) 19:49:57.49ID:G0X+tUuM
>>586
それはそんな使い方する方が何かしらおかしい
排他制御ってのは本当に必要なところ以外ではやらないように回避するもんだ

>>587
Rustの旨味がそこにあるのは否定しないが、
それが全プログラマが当たり前のように使いこなせるべきっていうのは
ただのマウンティングだろうに
2019/03/07(木) 20:59:20.87ID:pnI3L7PU
>>588
排他が必要だからするにきまってんじゃん
そういうところに思考が及ばないやつはjsだけ使ってりゃいいと思うよ
2019/03/07(木) 21:02:19.38ID:V2DuVpEL
プログラマーがリソースの共有状態を意識すれば
無駄な排他制御しなくても大丈夫だという主張かねえ
2019/03/07(木) 21:17:09.18ID:0XBNAuOg
RwRockってRwLockの間違い?
そういう言葉遊びのライブラリでもあるの?
2019/03/07(木) 22:06:32.44ID:rioBJ/QG
RwLockが少ない設計で組めたぜ!って自慢するならともかく
RwLockめっちゃ使ってますなんてアピールする奴は普通にバカだろ。
2019/03/07(木) 22:11:49.22ID:kIvAXfDl
単に日本語の問題では?
多分解釈が二通りある。
マルチスレッドプログラムにとって排他制御は当たり前に必要
プログラマにとって排他制御は当たり前に必要

個人的には文脈から前者と理解したけど、後者だと思うなら言い過ぎだというのは分かる。
2019/03/07(木) 22:15:22.37ID:0XBNAuOg
lockをrockと間違ってもしれっとしてるやつもかなりのバカだよね
ソフトウェアの超頻出単語じゃん
595デフォルトの名無しさん
垢版 |
2019/03/07(木) 22:34:05.54ID:USPSPd7n
だからプログラマにとって当然の能力という意味で言ってないって
めっちゃ使ってるとも言ってないって
隠蔽しないから必要性とコストを意識できていいねって言ってるやんけ

誤字はすまんかったけど
2019/03/07(木) 22:44:55.70ID:rioBJ/QG
まあ俺が採用だったらここまであからさまな地雷は避けるわ。
597デフォルトの名無しさん
垢版 |
2019/03/07(木) 22:59:19.47ID:USPSPd7n
なぜ自分が採用に関与できない雑魚だと表明してしまうのか理解できないけど、そうしたほうがお互い幸せになれるだろうね
2019/03/07(木) 23:52:54.26ID:4aDKvx3Q
>>596
お前は派遣だろ目を覚ませ( ‘д‘⊂彡☆))Д´) パーン
2019/03/08(金) 07:01:44.63ID:ySJgt2xb
こういう奴らに並列実装なんてさせるから地獄を見ることになるんだよな。。
2019/03/08(金) 09:05:39.84ID:B6Ayhhcz
Rustなら地獄を見そうなコードは
コンパイラが怒るからよかったじゃん
2019/03/08(金) 09:22:23.55ID:FgM3Elcd
Mutexとかもはや古典技術でしょ
Rust使う領域では理解してて当然と言っていいよ
これがマウントだとしたらキレイなマウント
2019/03/08(金) 11:37:10.05ID:41t9AOm1
>>601
そういうことばっか言ってるからいつまでも二流言語と違うんか?
2019/03/08(金) 12:02:47.61ID:qCBno44f
フリーランチの時代はとっくに終わってるのに気づいてないんだ…
プログラミング界の横田庄一だな
604デフォルトの名無しさん
垢版 |
2019/03/08(金) 12:28:00.15ID:pv8HlopZ
横田庄一と聞いてすぐに誰の事かわかる人は横田庄一
605デフォルトの名無しさん
垢版 |
2019/03/08(金) 12:29:45.82ID:pv8HlopZ
いやちょっと待て、横井だよな?
2019/03/08(金) 13:03:58.27ID:qCBno44f
>>605
すまん横井だw
よっこいしょういち
2019/03/08(金) 13:17:39.94ID:41t9AOm1
Rockといい横田といい、この程度のことも注意できない奴だから
こんな口うるさい姑みたいなやりたいこともやりにくい言語をもてはやすんだと納得
2019/03/08(金) 13:28:47.21ID:qCBno44f
横井さんも刺身食えなかったらしいからな
排他処理に拒否反応示すのも無理はない
Rustはやめときな
2019/03/08(金) 18:14:30.11ID:NkXqhcRH
Rustは刺身だった
2019/03/08(金) 18:25:28.43ID:qCBno44f
サビだけにな
2019/03/08(金) 19:54:07.36ID:VhFMuL/G
ふふ
2019/03/09(土) 18:18:24.28ID:jz9xUaFa
>>600
rustでコンパイル通れば安全というわけじゃないっていう例なんだが。。
やっぱバカに並列化コードは触らせないほうがいいな。
2019/03/09(土) 18:46:26.86ID:p0Yi5ioR
競合条件がなくなることはないけど、データ競合はほぼ回避してるぞ
安全じゃなくなるのはデータ競合のときなんだから、安全じゃなくなる例になってないぞ

経験上デバッグが難しかったりするのは大体がデータ競合によるものなんで、Rustは並行処理にも威力があるぞ
2019/03/09(土) 20:58:43.16ID:IPK2i5wV
兵庫県警の件、brendan eichが証人受けるとまで言い出して面白いことになってるけど、
アレが駄目ならビジーウェイト書いてるやつ全員逮捕だよな。組み込み勢狙われるぞw
2019/03/09(土) 21:43:01.59ID:jz9xUaFa
>>613
普通に考えてスレッドでやるメリットってデータ競合が生じるようなアクセスを
考えなきゃならんパターンなわけでそれはrustだろうとなんだろうと楽になんかならんという
当たり前のことがわかってない。
そういうある種のアクセスパターンに対する制限なり証明なんてのは設計をよっぽどシンプルにせにゃ
適応できんってのがまともに実装してれば分かるもんだがな。
2019/03/09(土) 21:53:17.28ID:nkmcDrgh
>>615
Rustでコンパイラエラー出さずに競合で壊れるようなサンプルある?
617デフォルトの名無しさん
垢版 |
2019/03/10(日) 06:42:01.75ID:9jhd4KAw
人間には難しいから機械にやってもらうってことだろ
楽になってるやん
2019/03/10(日) 16:20:48.68ID:H9CGHBKv
Rustでsql扱いたい時ってなにつかえばいいんですかね
2019/03/10(日) 16:34:29.10ID:H9CGHBKv
DBか
2019/03/10(日) 17:10:23.52ID:aEc7Apho
diesel
2019/03/11(月) 00:27:06.99ID:YRmagZmf
>>616
話が通じてないのはよくわかった。
コンパイラエラーが出ていないが意図通りの動作でない例はいくらでも作れるよ。
てか他の言語でもロックなりアトミックなオブジェクトなり作ることについてそんなに困ってない。
2019/03/11(月) 01:41:44.77ID:FmvoWW+v
>>621
いくらでも作れるなら見てみたいのですが
623デフォルトの名無しさん
垢版 |
2019/03/11(月) 06:38:37.83ID:meIK3aBA
作れるかどうかじゃなくて作らないとコンパイルエラーになるかどうかが問題
2019/03/11(月) 11:16:28.86ID:I31WZ8ED
例えば、同じ型のArc領域二つ作って複数のスレッドが更新し合うプログラムで
特定の条件でうっかり逆の領域に書き込むように作ってしまったパターンみたいな
単純な仕様の間違いまでRustでコンパイルエラーにしてくれるのか?

人間っていうのは並列計算のモデルが複雑になると
把握しきれないからうっかりこういうことする率が上がるんだよ
だからどんなにRustがコンパイル時安全だろうと
人間がきちんと計算モデル把握できなきゃ結局バグはなくならない

で、人間が把握できるレベルまで設計を単純にできれば
CだろうがRustだろうが大して開発レベルに差はつかない
ライブラリと表現力の差がちょっとRustに分があるくらいで
積み上がったC資産の量でひっくり返るレベル
2019/03/11(月) 12:03:24.06ID:FmvoWW+v
プログラマならコードで語ってほしいなあ
2019/03/11(月) 12:06:09.39ID:Aj/YOxZO
>>625
そりゃコードの話はしてないからなあ
一生リーダブルコードでも読んでろ
2019/03/11(月) 12:07:53.10ID:FmvoWW+v
Rustでもこんな書きかたしたら駄目だよと言う
例も出せなきゃ単にRust理解してないのかと思われるよ
2019/03/11(月) 12:24:56.42ID:Aj/YOxZO
>>627
だから書き方の話なんてしてねえよ設計の話してんだよ
言語以前の話なんだよ
代入する変数を間違えるレベルのミスはRustだって面倒みてくれないし、
そういうミスは複雑な並行をする設計にしたらいくらでも起こるって話になんでコードがいるんだよ
2019/03/11(月) 12:30:05.81ID:Aj/YOxZO
あ、それともRustなら代入する先の変数を型が同じ別の変数と間違えるレベルのミスもカバーしてくれるとかそういう話ある?
それなら俺が悪かった
2019/03/11(月) 12:43:01.92ID:XUClMORg
人間が把握できるレベルまで設計を単純にできれば開発レベルに差はつかない君
2019/03/11(月) 12:53:48.65ID:iGRez5Af
まあ簡単なことをわざわざ複雑にしたがる君はどこでもいるよね
意地でもバッチ使わない奴とかマジで害悪
2019/03/11(月) 12:59:34.54ID:Cr4yx51D
データ競合の話をしてくれ
2019/03/11(月) 13:08:54.18ID:FmvoWW+v
>>628
>>629
Rustなら不注意な変数の扱いをコンパイラが
検出してくれる
という話をしてるときに設計ミスなら
何でも起こりうるとかドヤ顔されても
はぁそうすかーとしか返せんけど
何しにきたの?
634デフォルトの名無しさん
垢版 |
2019/03/11(月) 14:12:19.53ID:l+vIpuAn
仕様の間違いを言語が指摘してくれるなら何も書く必要ないな
2019/03/11(月) 14:38:37.91ID:QCR9O3Xc
だから変数の不注意な取り扱いの話だろ?
変数の取り違えは不注意な取り扱いじゃないのか?
2019/03/11(月) 15:06:42.33ID:Vz3i6ZDJ
最初は安全でないケースはいくらでもあるとか言ってたのに、なんで話をそらすかね
レッテル貼るのが好きで論破ァしたいのは伝わってきた
2019/03/11(月) 17:58:57.62ID:LW933tmz
>>635
お前話理解してないなあ
2019/03/11(月) 22:55:06.72ID:12YVFwCp
お前らまだやってるのか。
まあ、仕様が間違ってる部分でコンパイラ通らなかった事はある。
分岐やステートマシンが網羅性満たしてないとか。
2019/03/12(火) 00:10:32.77ID:2rrWszPN
>>612
Rustでコンパイル通るけど危険なコードの
例を出してくれれば議題になると思うのに残念だ
2019/03/13(水) 02:29:03.52ID:L2CP12FF
rustの偉い人教えてください。

rustではポインタ演算できますか?
unsefeという指定をすればできる?
関数ないでしなきゃいけなくてオーバーヘッドになったりしないでしょうか。
641デフォルトの名無しさん
垢版 |
2019/03/13(水) 16:52:00.11ID:9tX9nXc2
Rustでポイント演算が必要な場面ってどんなとき?
2019/03/13(水) 22:08:43.38ID:k+ORDxki
オーバーヘッドになるかは、自分でLLVMコードを比較しないと分からないと思うよ
2019/03/13(水) 22:45:24.59ID:kIc2U++j
Rustのguiライブラリーでつかいやすいものありますか
2019/03/13(水) 22:46:06.26ID:pX7/4+WY
中間コードを見てパフォーマンスを語るアホ
しってた?最適化はLLVMの仕事なんだよ?
2019/03/13(水) 22:49:05.60ID:u/DrurAb
しってた?低レイヤの最適化はLLVMの仕事じゃないんだよ?
2019/03/14(木) 00:08:36.36ID:/7Tw3HBH
rustのコードは最適化有効にするとllvmの時点でかなり消えてるから最適化の有無でrustcが吐いたllvm-irの比較できるよ。

>>643
用途とプラットフォームによるから要件指定して出直して。
2019/03/14(木) 01:00:20.74ID:lGFaI2Uv
>>646
比較はできても実際にオーバーヘッドになるかどうかは最終的な機械語を見るまで分からないよね
648デフォルトの名無しさん
垢版 |
2019/03/14(木) 08:35:56.34ID:BjDIWQCJ
検査例外みたいなもの?Result
2019/03/14(木) 11:22:17.62ID:EiiZSkE4
>>643
OrbTKとAzulとDruid試してどれが良かったか俺に教えてくれ
どれもまだ作りかけって感じみたいだが
2019/03/14(木) 23:18:26.23ID:kx5sht2D
>>648
無視できるから検査か実行時で言えば実行時。ただ、例外機構はpanicの実装がそれ。
651640
垢版 |
2019/03/15(金) 02:46:57.83ID:sc0y6ax5
>>641
c言語側で構造体の配列を共有メモリに置いたのをアクセスしたいです。
rustではこうしろ、でもいいので教えてください。
2019/03/15(金) 23:17:26.07ID:hOBF8kWn
>>651
共有が可変ならコンパイラ通せないなそれ。raw pointer使いたいだけならcだけでやったほうが良い。
2019/03/16(土) 00:19:31.04ID:L6J1QJay
https://crates.io/crates/shared_memory
これダメ?
2019/03/16(土) 23:16:00.89ID:nOJfJDgr
>>653
それはosの機能使ってるだけだから元々c使ってるならrust追加する意味がない。
よく読んでないけどservoのipc-channel見た感じ共有メモリ使ってないみたいだし、rust使うなら安全性優先してそうなるだろうね。
当然の帰結だけど潜在的に安全ではない方法で書かれたコードとrustは相性悪いよ。
655651
垢版 |
2019/03/16(土) 23:46:04.85ID:JtPIcBaF
>>652
ありがとうございます。🙇
一応サイズやオフセットの情報は貰えそうなんですけどね......。
2019/03/17(日) 00:41:47.89ID:6uicpF0G
>>646
>>649
すみません
環境はWindowsを想定しています
2019/03/17(日) 02:05:57.96ID:V2wMrW3D
>>649
azulはWYSIWYGじゃないmorphicにcssもどき付けてオブジェクト指向じゃなくてPFにした感じ。要はReact。
2019/03/17(日) 21:51:20.57ID:WgP01y5n
危険なオペレーションをunsafeで包んで安全なインターフェースを提供できるのがrustの良さなのに
潜在的に安全性ではない方法とrustの相性が悪いとはどういうことなのか
2019/03/17(日) 22:10:39.66ID:zAy4KYDJ
RustってCと比べて何ができるんですか?
2019/03/17(日) 22:18:51.06ID:Ea7K77ki
おんなじことをめんどくさくかつ安全に書けます
2019/03/17(日) 23:19:13.37ID:qh1L90Cw
>>658
インターフェイスを安全にしたところで潜在的に危険な部分は残るからでは?
2019/03/18(月) 01:18:08.63ID:tKjFYZI6
>>655
Cで確保した構造体の配列に対してオフセット計算したいならこれとか使うけど。
https://doc.rust-lang.org/std/primitive.pointer.html#method.offset
2019/03/18(月) 21:36:29.28ID:lIXl0aHf
vlangのサイトが少し更新されて改めて日本でも多少話題になってるな

https://vlang.io/
これがすべて本当ならRustにとって大打撃だが
2019/03/18(月) 22:49:23.85ID:Y4S0f+Ze
読んだけど詐欺だろ
こんなのできるわけない
どっかで非現実的なこと要求してきたりして実用できないポンコツだろう
PatreonやPayPalでのDonateを募っている。
サイトにサンプルコード書いてある以外以外誰もコンパイルしたことなければコンパイルしたコード動いてるとこ見たこともない
665デフォルトの名無しさん
垢版 |
2019/03/18(月) 23:26:49.06ID:fY+Pki5s
>>663
話題になっているならスレ立ててこのスレから独立したまえ
2019/03/18(月) 23:36:21.26ID:tKjFYZI6
比較するならもっとちゃんと比較してほしい。
載ってるサンプルソースじゃ単純過ぎて何で書いても大差ないし。
循環参照ありのコンテナ型とかCライブラリの安全なラッパーみたいな所有権とライフタイムがバリバリ出てくるやつが見てみたいが。
2019/03/19(火) 00:04:16.93ID:VbfaLqKg
>>663
リリースは夏じゃんか、出てからでいいよ
金を集めてトンズラするための宣伝な気もする
2019/03/19(火) 00:05:59.23ID:K8Uba71D
とりあえず否定から入ったり、
趣味で作ってるものに責任感求めたり
やな日本人
2019/03/19(火) 00:31:58.99ID:2dsGqa+T
存在しないものは盲信できない。
キミ新興宗教に気を付けなね。
2019/03/19(火) 00:40:24.41ID:W0BXyyTr
ヴェーパーウェアって最近聞かないな
2019/03/19(火) 01:32:04.04ID:MBP9S5Jj
出てから考えればいいよ
標準ライブラリが400KBとかネタっぽいけど
2019/03/19(火) 02:43:01.20ID:LC/ExoEH
Rustて30GBもくうの?
2019/03/19(火) 02:51:37.75ID:GOZW5Jz6
>>672
racer用にソースコードと、クロスコンパイル環境いっぱい落としたらそんくらいになりそうな気もするが、
最小限のターゲットで30Gは使わんと思う
2019/03/19(火) 18:59:54.95ID:CKbl92wN
slackに行けないコミュ障老人スレはここですか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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