Rust Part6

レス数が900を超えています。1000を超えると表示できなくなるよ。
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/05/30(木) 07:44:46.49ID:zRja8bLs
ビルド速度が遅いのをパッケージマネージャのせいだと、言語の違うものと比べて言われてもなんともな
crates.io関連はこれ
https://github.com/rust-lang/cargo/issues/5655#issuecomment-488347426
https://github.com/rust-lang/cargo/issues/6589
アーカイブ形式は無理っぽい
https://github.com/rust-lang/cargo/issues/1139#issuecomment-69398250
>The ABI for a library is not stable between compilations, even when theoretical ABI-compatible modifications are made.
あといくつ?
2019/05/30(木) 10:14:12.88ID:jL97nfSA
gitへの依存ってあったっけ?
crates.ioからはソースアーカイブDLだから
gitプロトコルは使ってないと思うけど。
2019/05/30(木) 13:03:07.09ID:MN7pCpY/
>>800
ビルド前のスクリプト実行は出来るのにビルド後のスクリプト実行が出来ない
も追加しといて
2019/05/30(木) 13:11:59.05ID:Ow22Zd/9
勉強中なんだけど、rustってそんなにビルド遅いの?
2019/05/30(木) 15:23:17.82ID:kRr305d2
>>804
「ビルドする度にコーヒーブレイク」と揶揄される某言語より遅い
2019/05/30(木) 18:35:37.13ID:ytXX0NVG
>>805
いやあれよりは速いよ
まあかなり遅い部類に入るのは認めるが…
807デフォルトの名無しさん
垢版 |
2019/05/30(木) 18:51:26.08ID:WCG+7mjF
某言語って何?
いじわるしないで教えろよ!
2019/05/30(木) 19:15:07.85ID:kcgaqqbt
遅さではscalaが有名かな
まぁrustが遅いのは遅い
2019/05/30(木) 19:56:11.95ID:L3QkTmlu
前実測したけどscalaより遅かったぞ?
依存ライブラリ数の差の可能性はあるが
810デフォルトの名無しさん
垢版 |
2019/05/30(木) 21:43:56.76ID:Y7f6B7st
scalaとビルド速度競ってる時点でお察しのクソ言語
2019/05/30(木) 22:00:45.60ID:s4B+etfT
まあ仕事で使ってなきゃビルド時間なんか気にならんもんな。
遊びでやってる層にはコンパイル時になんでもやるってのは受けがいいんだろ。
2019/05/30(木) 22:15:09.45ID:od6OGe2E
ていうか何をビルドして計ってるんだよ…
一切出てこないまま話は進んでるのか?
2019/05/30(木) 22:35:56.44ID:McNdpOBN
折角なのでHelloWorldのコンパイル速度比較してみた。
まぁ条件は適当なので参考程度だが。
毎回ビルドキャッシュ削除した状態からの10回平均。

C: 41.9ms
C++: 150.9ms
go: 211.4ms
D: 307.3ms
Rust: 320.1ms
Java: 346.5ms
Erlang: 1005ms
Haskell: 1106ms
C#: 3000ms
Scala: 6712ms

こうしてみるとCは異常に速いけど、Rustはまぁ普通と言ってもいいかもね。
2019/05/30(木) 22:53:48.96ID:s4B+etfT
そういうことじゃねーよばか。。
2019/05/30(木) 22:54:58.11ID:YXFOotcC
ビルドが遅いのはコンパイラの遅さだから根本的には別問題。
cargoがロクに並列ビルドできないのもこっち側。

>>800,801
- 不要な条件付きの依存関係が要求されてビルド/テストできない
- rustup wrapperが遅すぎて色々タイムアウトする

が抜けてる。issue乱立しすぎて最新のissueがどれか分からんからリンクは貼らん。
無駄にissue分けすぎて他にも細かいのが色々あるけど、結局は中央リポジトリに依存しすぎ、オフラインモードが使い物にならない、
パッケージマネージャとビルドツール融合してどっちとしても使い物にならないに集約される。

>>804
intellij rustがon the fly analyze実装したから設定から有効にして試せばいいよ。
サンプルプロジェクト程度じゃ影響ないから実践に近いプロジェクトで試さないと分からないけど。
2019/05/30(木) 23:11:51.86ID:McNdpOBN
しかし実際遅さが気になるプロジェクトってどんなサイズ?
普段開発してるソース1万行で依存クレート100個くらいの規模だと気になったことがないんだけど。
もちろんクリーンな状態からの初回ビルドはそれなりにかかるけど、ソース書いてるときに依存クレートの再ビルドってほぼ発生しないし。
2019/05/30(木) 23:45:21.65ID:zRja8bLs
>>814
どゆこと
2019/05/31(金) 02:33:21.46ID:X6wWDPHS
rustで競技プログラミングが流行りだす?
2019/05/31(金) 03:33:14.27ID:8tjR8Og4
>>818
ないない
競プロはメモリリークしてようがコーナーケースでバッファオーバーフローしようが
とにかく規定の入力に対して速く答えを返すものを
エラーハンドリングとか考えず手早く実装するのが正義
Rustと一番相性が悪い分野だろ
2019/05/31(金) 03:42:42.65ID:8tjR8Og4
>>815
端的に集約するとそれだよな
未だにこれが「他の言語のパッケージマネージャーの良いところを集めて地雷を回避した理想的なパッケージマネージャー」とか言ってるやつは
それこそ金掴まされてるとしか思えんくらいにクソ
821デフォルトの名無しさん
垢版 |
2019/05/31(金) 06:57:55.22ID:bmGleV46
困るのは分かったけどなんで困るの?
2年くらい仕事で使ってるけどあーカーゴって便利だなぁとしか思ってなかったわ
2019/05/31(金) 07:02:13.86ID:DpA10cnI
明らかにMozillaに金掴まされたな
823デフォルトの名無しさん
垢版 |
2019/05/31(金) 07:10:00.14ID:bmGleV46
それならRustの歌でも作って武道館で歌うくらいやるけどなあ
2019/05/31(金) 07:39:44.03ID:77YT6MqB
笛吹こうぜ
2019/05/31(金) 08:06:14.65ID:8Nq4J3at
なんでMozillaは俺には金掴ませてくれないの?
2019/05/31(金) 09:03:19.44ID:yMWj+SpE
なんかもうちょっと具体的に
こういうことやると苦労する破綻するという例が欲しいな
他の言語やツールとの同等のことやろうとした比較があるとなお良し
2019/05/31(金) 10:42:30.35ID:gCkhoXwv
困る人は是非積極的にcargoにissueたてるなりpull req送って欲しい
人的リソースが足りないのよ
2019/05/31(金) 12:21:42.83ID:IQsfcoDS
Mozillaに金掴まされてるは例のキチの常套句だったなそういえば

>>826
まずcrates.ioそのものは、使う側じゃなくてライブラリ公開する側になったらクソだとわかる
こればっかりは使って体験してくれとしか言えん

ビルドの遅さは、例えばDockerみたいなコンテナの相性がよろしくない

crates.ioに強依存してるから、aptでいうところのsquidみたいなことができない

これらの問題はカジュアルユースなら問題にはならんだろうが、プロユースには耐えんのよ
829デフォルトの名無しさん
垢版 |
2019/05/31(金) 14:27:52.82ID:bmGleV46
aptでいうsquid?ミラーがほしいってこと?
俺の周りのプロはもうそんなことやってないけど。。。
multi stage buildでもしたらいいんじゃないの
2019/05/31(金) 15:23:30.26ID:Iexwvjcg
それはプロユースに耐えんのではなくて、そういう職場もあるってだけの話では?
crates.ioは複数ライブラリ公開しててもクソさが分からんしなぁ。
逆にこのパッケージリポジトリは素晴らしい、とかあるの?
2019/05/31(金) 16:38:04.16ID:yMWj+SpE
>>828
ビルドが遅いという以外何が問題と言ってるのかわからん
2019/05/31(金) 20:19:52.36ID:SYuh0ZxQ
それで十分だろ。
それがわからんやつはboostマンセーして人に迷惑かけてもなんとも思ってない馬鹿と同列にしか思わん。
2019/06/01(土) 00:03:29.85ID:rQOwMxC1
出来上がったバイナリが速ければ問題ないんじゃない?
2019/06/01(土) 00:43:37.39ID:vdsZQvk5
せ…せいさんせいがおちるだろう!
835デフォルトの名無しさん
垢版 |
2019/06/01(土) 03:16:17.57ID:dks5+XhG
rustを良い言語だと評価してるやつはrustとより酷い言語しか使ったことないんだろうよ、VBAとか
2019/06/01(土) 05:14:44.21ID:VD3g6ze/
最初から期待している点は2つ
1つはHaskellで実証されてる、型システムが豊かであることの安全性と利便性をC並みに低レベルな世界に持ち込んで組み込み業界に1石を投じること
もう一つはオブジェクト指向を言語仕様に取り込まなくてもオブジェクト指向でやりたいことの大部分は実現可能だと証明して、OOPパラダイムを衰退させること
2019/06/01(土) 06:05:33.49ID:uJU0WLe5
とあるツールをcargoでビルドしたら、同じcrateが重複してバージョン違いで使われてて驚いた
そんなのアリなんか

Compiling env_logger v0.5.13
Compiling env_logger v0.6.1
838デフォルトの名無しさん
垢版 |
2019/06/01(土) 08:29:18.06ID:KcRSy+XU
a crateとb crateがそれぞれ違うバージョンに依存してたらそうなるだろう
アリというかそうじゃなきゃ困るだろう
そうじゃない言語もあるけど
2019/06/01(土) 11:57:29.44ID:0jNYUL26
hogehoge-sys みたいな外部のライブラリに依存するcrateだと異バージョン混在できなくてつらい
.soを実行時にリンクする都合上仕方ないのだけど
2019/06/01(土) 12:06:40.79ID:97VW9w9Z
絶対に
絶対に
所有権の移動のほうに記号がつくべきだった
2019/06/01(土) 13:12:39.72ID:l6ZXsdGf
>>836
それ以外の部分がクソ過ぎてやっぱダメだわってなってるのが今
以前はこのスレにRustへの苦言かきこんだらボロクソに言われたもんだが
今では俺以外にもRustはクソって声が増えてる。良い傾向
2019/06/01(土) 13:23:53.53ID:NbmdoFzk
rust好みだよ。
843デフォルトの名無しさん
垢版 |
2019/06/01(土) 15:12:11.38ID:6vvLTfZk
まあ使ってみないと本当の意味でダメさ実感できないからな。
実際にさわってみたやつが増えて夢から醒めたんだろw
2019/06/01(土) 15:22:24.76ID:HOnYJOtQ
とある言語についてはいかがかと思う節もあるな〜
2019/06/01(土) 15:47:56.02ID:gFsX3PNG
これ以上バカを現場に増やさないためにプログラム教育にはビルドって科目も入れるべきだな。
2019/06/01(土) 16:00:35.35ID:FeZbI+m/
お前にとってクソで大嫌いなのはわかったから冷静になれよ
2019/06/01(土) 16:20:56.50ID:7xyzPCmu
>>840
それは無理があるんじゃないか?
&で借用が妥当だと思うけど

&は借用の記号と同時に型の情報としての意味も有るはずだから
その点で問題が起きると思うが…
2019/06/01(土) 16:33:15.53ID:7xyzPCmu
例えば移動に記号をつけようとすると
T型と&mut T型の変数を移動する際はそれに全部記号を付ける羽目になるぞ
それでも良いのか?
ちなみに&T型は移動ではなくコピーなので除外したがコピーであって借用ではない
>>840はコピーはどうすべきだと思っているが知らないが
コピーにも記号を付けろと言うならさらに面倒なことになる
本当にそれでも良いのか?
2019/06/01(土) 16:42:00.32ID:gFsX3PNG
'=' の現状のrustの意味の統一を考えれば現状の仕様が妥当だわな。
2019/06/01(土) 17:26:39.90ID:7xyzPCmu
まだ他にも問題はあるぞ
例えば移動をmoveで借用を記号無しにすると
let a = 1_i32;
でaはi32型でなく&i32型になる。なぜなら記号無しは借用だから。
aがi32型になるためには
let a = move 1_i32;
と書かなければならない

さらに言うと
let a = move 1_i32;
let b = a;
let c = b;
でaはi32型、bは&i32型、cは&&i32型となるわけだ

俺はそんなヤバイ言語は使いたくないぞ
2019/06/01(土) 17:43:27.50ID:7xyzPCmu
この際に言いたくなったから言わせてもらうけど
時々「俺の方が良い言語作れる」とか言ってるヤツがいて
それに対する反論に「じゃあコンパイラ作ってみろよ」とか返してるヤツいるけど
そもそもコンパイラを作る実力が有るか無いか以前に
言語をデザインすることの難しさを分かってないヤツが多すぎて
コンパイラを作る段階にも至っていないっと思うわけよ
852デフォルトの名無しさん
垢版 |
2019/06/01(土) 18:30:16.77ID:KcRSy+XU
俺は言語を作るセンスないし他のやつもなさそうだしお前にもなさそうだからこの話題はやめとこな
不毛だからな
2019/06/01(土) 19:00:35.54ID:97VW9w9Z
>>850
記号なし=はコピーで統一したらよい
C++はやってるじゃん
2019/06/01(土) 19:10:56.29ID:y869pNJN
>>853
ポインタの基本をコピーじゃなくてムーブにしたいからムーブの方を記法的に容易にしたんだし、auto_ptrのセマンティクスの非統一による悲劇を避ける為にムーブに統一したんだよ?
議論の順番が滅茶苦茶だぁ
2019/06/01(土) 19:13:31.38ID:97VW9w9Z
uniqueとshareでなんとかなってるじゃん
2019/06/01(土) 19:14:05.19ID:VD3g6ze/
メモリ以外のリソースはコピーできないものが大半じゃね?
2019/06/01(土) 19:14:44.62ID:97VW9w9Z
変数がどの範囲で利用可能なのかぱっと見わからんのが酷すぎる
2019/06/01(土) 19:16:22.51ID:97VW9w9Z
>>856
コピーできないようなまとまったオブジェクトをほいほい変数移さないだろ
2019/06/01(土) 19:18:22.75ID:7xyzPCmu
>>853
取り敢えず借用を記号無しにするのは無理であることは納得してくれたの?

そして移動はどうするの?rustだと移動も結構しょっちゅう使うんだけど…
例えばBox型とかString型とかVec型とか&mut T型とか…
移動もコピーもどちらも=なのが判りづらいってのは一理有るんだけど、
それらの移動に全てmove等の記号をつけていくのはあまりにも面倒だと思うよ
2019/06/01(土) 19:21:21.72ID:8z4Vd8sk
>>857
ぱっと見でわかるってどんな感じなの?
2019/06/01(土) 19:29:50.41ID:97VW9w9Z
>>860
所有権を手放すときに記号つく

>>859
そっちを&にして
右辺値が無名で宙ぶらりんのときはつけないでいいことにしたら
2019/06/01(土) 19:36:06.88ID:7xyzPCmu
>>861
そっちってどっち?移動を&にするの?じゃあ借用はどうするのよ?
さっぱり言ってる意味が分からん
てか最初の質問に答えてくれないかな?納得したの?してないの?
2019/06/01(土) 19:40:22.13ID:97VW9w9Z
>>862
してない。俺も言ってることよくわからん
2019/06/01(土) 19:53:40.68ID:7xyzPCmu
>>863
えぇ…
じゃあ君は借用は記号無し=がいいってこと?
でも君さっき記号無し=はコピーが良いって言ったよね?
865デフォルトの名無しさん
垢版 |
2019/06/01(土) 19:59:43.17ID:KcRSy+XU
だからやめろといったのに
2019/06/01(土) 20:29:24.96ID:97VW9w9Z
borrowこそ新しい概念なんだからそれに記号でもつけりゃよかったんだ
2019/06/02(日) 09:27:14.41ID:rhBrDnBE
変にc++のシンタックスと似るようにしたのは良くないかもな。
moveが基本だったり引数の意味がだいぶ違うわけだから。
2019/06/02(日) 11:39:15.13ID:5wVPTwba
>>866
だからそのborrow(借用)に&と'a(ライフタイム)という記号が付いてんだろうが
頭大丈夫か?
2019/06/02(日) 12:03:59.68ID:hTTUzP/H
こわ びびるわ
2019/06/02(日) 13:16:55.27ID:BjQrM5yg
少なくとも所有権の移動は右辺に影響するんだからそっちにも記号がつくべきだった

あと見た目即所有権帰ってくるやつまで&で書くから見づらい
誰に貸していつ帰ってくるのかわかんねー
871デフォルトの名無しさん
垢版 |
2019/06/02(日) 13:42:33.97ID:y5TRCUBk
2年rust書いてるけど君らのいう分かりにくい、が分らん
フューチャーが分かりにくい、なら抱き合って同意するけど
2019/06/02(日) 13:51:06.05ID:BjQrM5yg
経験者が経験上困らんっていうんならいえることない
2019/06/02(日) 14:11:16.85ID:5wVPTwba
>>871
分かる。futureはマジで難しいよね
Pin/Unpinまでは辛うじて理解できたんやが、Wakerの方が分からん。
誰かRawWakerVTableの解説してくれ…

でもfutureの難しさはasync/awaitが導入されればそれに隠蔽されるから
利用するだけのユーザーならあと少しの辛抱や
874デフォルトの名無しさん
垢版 |
2019/06/04(火) 20:27:22.80ID:ih9X5y39
継続的に数年使ってる人は新機能が出たら新機能だけ覚えればいいんだろうけど
初めて触る人はその累積してきた機能全部を掌握するのは無理
2019/06/04(火) 20:31:14.86ID:Mp+sj/aV
どの言語の話
876デフォルトの名無しさん
垢版 |
2019/06/06(木) 12:34:55.73ID:mhFONxQE
rustをシステム系じゃないエンジニア(C++の仕事してない)が使うメリットって何かある?
2019/06/06(木) 15:33:20.70ID:8T4sxDWW
>>874
C++のことかな
878デフォルトの名無しさん
垢版 |
2019/06/06(木) 16:40:28.94ID:S02+RpbC
廃止された機能や推奨されない機能も覚えておく必要がある
特にC++で言えばunicodeの変換(std::codecvt**)が超糞
2019/06/06(木) 17:37:47.91ID:qi/Zl49P
誰も使ってなかったから大丈夫だぞ
880デフォルトの名無しさん
垢版 |
2019/06/06(木) 17:43:00.49ID:S02+RpbC
「誰も使ってなかった」ことも含めて
その累積してきた機能全部(結局全部になるだろうな)を掌握する必要がある訳だろ
2019/06/06(木) 20:15:57.08ID:cbON3Xt8
なるほど素晴らしい観点っすね、実行不能という点に目をつぶれば。
2019/06/06(木) 20:24:43.80ID:qi/Zl49P
でぇじょうぶだ
[[deprecated]]
がある
2019/06/06(木) 20:59:27.87ID:ulk3mDRi
それついたの思いっきりつかってるwww
昔のが商売人の都合で切られてるんだもん
つかうよ
884デフォルトの名無しさん
垢版 |
2019/06/07(金) 01:20:04.91ID:yhNlt0n8
DX8ですね判ります
885デフォルトの名無しさん
垢版 |
2019/06/09(日) 09:44:49.12ID:16GRLedz
rustでIDE補完が甘いのは誰も気にしてないんか?
そもそもみんなIDE使ってないんか?
886デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:53:44.61ID:V8qyq4Ge
yes
yes
887デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:45:40.10ID:16GRLedz
なるほど
ありがと
2019/06/09(日) 12:39:28.24ID:KZPUbdMm
カドカワから月末に訳本の
プログラミング言語Rust 公式ガイドが出るけど2018対応じゃないよね?
Rust本が増えてきたのは嬉しい
2019/06/09(日) 13:16:34.55ID:6XtsQJZK
>>885
intelijのrustプラグイン
2019/06/09(日) 17:47:47.78ID:fZX8nJhE
>>888
バカが飛び付いて社内に導入しようとするの潰すの
毎回労力がかかってしゃーないからやめて欲しいんだけどな
クソ言語の本出すの
2019/06/09(日) 19:53:39.94ID:dn1tcJB+
>>890をクビにしたほうがいろんな労力減りそう
2019/06/09(日) 20:10:37.83ID:g9Y1eGPc
いやもうクビにされたから
2019/06/09(日) 20:50:32.69ID:Ju2lyAiK
無能なアンチがいるということは、安心して使っていいってことだな
894デフォルトの名無しさん
垢版 |
2019/06/09(日) 21:29:03.95ID:Hf+s2B1M
なんで潰すんだ?何に恐れているんだ?
2019/06/09(日) 22:35:02.37ID:IWnnOtZA
>>888
TRPLの翻訳だと思うけど
TRPL本家は2018対応済みで、webで公開されてる日本語訳は未対応。
本家に追従して対応した可能性もあるかと。
2019/06/09(日) 22:49:44.20ID:/FZVYwra
そりゃクソコード残して辞めてくことだろ。
まじで死ねと思うわ。
897デフォルトの名無しさん
垢版 |
2019/06/09(日) 23:15:43.90ID:Hf+s2B1M
それは言語の所為じゃないだろ
レビューしないの?
しないにしても同じクソでもJavaやC++よりマシだと思うんだが
2019/06/09(日) 23:20:05.52ID:oBKk3YD0
言語関係ねーじゃんメンテする能力がないんだろ
諦めてgoで作り直せ
2019/06/09(日) 23:29:34.50ID:KZPUbdMm
>>895
ググったらTRPLでした
ただ紙の原著は2018年発売でRust 2018未対応
紙の翻訳なのか最新のWebの翻訳なのかは不明
2019/06/10(月) 19:54:10.24ID:pALnBaZ+
borrow checker通せない人にとってはすべてのコードが読めない糞コードなのだろう
レス数が900を超えています。1000を超えると表示できなくなるよ。