Rust Part6
■ このスレッドは過去ログ倉庫に格納されています
0790デフォルトの名無しさん
垢版 |
2019/05/28(火) 09:28:40.66ID:tpS8MDSU
Ruby のBundler で、各プロジェクト毎に、異なる依存ライブラリを管理するのが便利だから。
それで、Node.js のnpm, yarn も同じように作った

他にも、Vagrant, Chef, Homebrew など、バージョン管理はRuby で作られる
0791デフォルトの名無しさん
垢版 |
2019/05/28(火) 09:52:05.49ID:BCLUylsF
クソ言語のことは聞いてない。
0793デフォルトの名無しさん
垢版 |
2019/05/29(水) 07:06:20.60ID:z8OD1skQ
vagrantもchefもrubyで作られてるからだしょ?
そもそも言語じゃないし
何が言いたいのかさっぱり分からん
0794デフォルトの名無しさん
垢版 |
2019/05/29(水) 07:23:51.85ID:SSsXq4sa
「俺のやりやすいやり方に周りは合わせろ」ってことだろ。よくあるクソ意見だよ。
0795デフォルトの名無しさん
垢版 |
2019/05/29(水) 12:18:00.52ID:E+7iOED5
Cargoは近年稀に見るクソパッケージ管理ツールだろ
これなら散々クソクソ言われてきたけど
最近pipenv出してきたPythonの方がマシまである
0798デフォルトの名無しさん
垢版 |
2019/05/29(水) 21:24:19.77ID:UDeAAaE3
ひとつの仕事をうまくこなせと言いたい
0800デフォルトの名無しさん
垢版 |
2019/05/30(木) 03:54:53.60ID:6ah9fCcJ
ビルド速度が遅いビルドツールの代表のsbtより遅いのがクソ
crates.ioに強依存しててオフラインビルドができないのがクソ
gitに強依存しててアーカイブ形式で配布できないのがクソ
そもそもcrates.ioの運営がクソ

あといくつ欲しい?
0801デフォルトの名無しさん
垢版 |
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.
あといくつ?
0802デフォルトの名無しさん
垢版 |
2019/05/30(木) 10:14:12.88ID:jL97nfSA
gitへの依存ってあったっけ?
crates.ioからはソースアーカイブDLだから
gitプロトコルは使ってないと思うけど。
0803デフォルトの名無しさん
垢版 |
2019/05/30(木) 13:03:07.09ID:MN7pCpY/
>>800
ビルド前のスクリプト実行は出来るのにビルド後のスクリプト実行が出来ない
も追加しといて
0807デフォルトの名無しさん
垢版 |
2019/05/30(木) 18:51:26.08ID:WCG+7mjF
某言語って何?
いじわるしないで教えろよ!
0809デフォルトの名無しさん
垢版 |
2019/05/30(木) 19:56:11.95ID:L3QkTmlu
前実測したけどscalaより遅かったぞ?
依存ライブラリ数の差の可能性はあるが
0810デフォルトの名無しさん
垢版 |
2019/05/30(木) 21:43:56.76ID:Y7f6B7st
scalaとビルド速度競ってる時点でお察しのクソ言語
0811デフォルトの名無しさん
垢版 |
2019/05/30(木) 22:00:45.60ID:s4B+etfT
まあ仕事で使ってなきゃビルド時間なんか気にならんもんな。
遊びでやってる層にはコンパイル時になんでもやるってのは受けがいいんだろ。
0812デフォルトの名無しさん
垢版 |
2019/05/30(木) 22:15:09.45ID:od6OGe2E
ていうか何をビルドして計ってるんだよ…
一切出てこないまま話は進んでるのか?
0813デフォルトの名無しさん
垢版 |
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はまぁ普通と言ってもいいかもね。
0815デフォルトの名無しさん
垢版 |
2019/05/30(木) 22:54:58.11ID:YXFOotcC
ビルドが遅いのはコンパイラの遅さだから根本的には別問題。
cargoがロクに並列ビルドできないのもこっち側。

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

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

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

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

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

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

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

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

&は借用の記号と同時に型の情報としての意味も有るはずだから
その点で問題が起きると思うが…
0848デフォルトの名無しさん
垢版 |
2019/06/01(土) 16:33:15.53ID:7xyzPCmu
例えば移動に記号をつけようとすると
T型と&mut T型の変数を移動する際はそれに全部記号を付ける羽目になるぞ
それでも良いのか?
ちなみに&T型は移動ではなくコピーなので除外したがコピーであって借用ではない
>>840はコピーはどうすべきだと思っているが知らないが
コピーにも記号を付けろと言うならさらに面倒なことになる
本当にそれでも良いのか?
0850デフォルトの名無しさん
垢版 |
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型となるわけだ

俺はそんなヤバイ言語は使いたくないぞ
0851デフォルトの名無しさん
垢版 |
2019/06/01(土) 17:43:27.50ID:7xyzPCmu
この際に言いたくなったから言わせてもらうけど
時々「俺の方が良い言語作れる」とか言ってるヤツがいて
それに対する反論に「じゃあコンパイラ作ってみろよ」とか返してるヤツいるけど
そもそもコンパイラを作る実力が有るか無いか以前に
言語をデザインすることの難しさを分かってないヤツが多すぎて
コンパイラを作る段階にも至っていないっと思うわけよ
0852デフォルトの名無しさん
垢版 |
2019/06/01(土) 18:30:16.77ID:KcRSy+XU
俺は言語を作るセンスないし他のやつもなさそうだしお前にもなさそうだからこの話題はやめとこな
不毛だからな
0854デフォルトの名無しさん
垢版 |
2019/06/01(土) 19:10:56.29ID:y869pNJN
>>853
ポインタの基本をコピーじゃなくてムーブにしたいからムーブの方を記法的に容易にしたんだし、auto_ptrのセマンティクスの非統一による悲劇を避ける為にムーブに統一したんだよ?
議論の順番が滅茶苦茶だぁ
0859デフォルトの名無しさん
垢版 |
2019/06/01(土) 19:18:22.75ID:7xyzPCmu
>>853
取り敢えず借用を記号無しにするのは無理であることは納得してくれたの?

そして移動はどうするの?rustだと移動も結構しょっちゅう使うんだけど…
例えばBox型とかString型とかVec型とか&mut T型とか…
移動もコピーもどちらも=なのが判りづらいってのは一理有るんだけど、
それらの移動に全てmove等の記号をつけていくのはあまりにも面倒だと思うよ
0861デフォルトの名無しさん
垢版 |
2019/06/01(土) 19:29:50.41ID:97VW9w9Z
>>860
所有権を手放すときに記号つく

>>859
そっちを&にして
右辺値が無名で宙ぶらりんのときはつけないでいいことにしたら
0862デフォルトの名無しさん
垢版 |
2019/06/01(土) 19:36:06.88ID:7xyzPCmu
>>861
そっちってどっち?移動を&にするの?じゃあ借用はどうするのよ?
さっぱり言ってる意味が分からん
てか最初の質問に答えてくれないかな?納得したの?してないの?
0864デフォルトの名無しさん
垢版 |
2019/06/01(土) 19:53:40.68ID:7xyzPCmu
>>863
えぇ…
じゃあ君は借用は記号無し=がいいってこと?
でも君さっき記号無し=はコピーが良いって言ったよね?
0865デフォルトの名無しさん
垢版 |
2019/06/01(土) 19:59:43.17ID:KcRSy+XU
だからやめろといったのに
0867デフォルトの名無しさん
垢版 |
2019/06/02(日) 09:27:14.41ID:rhBrDnBE
変にc++のシンタックスと似るようにしたのは良くないかもな。
moveが基本だったり引数の意味がだいぶ違うわけだから。
0870デフォルトの名無しさん
垢版 |
2019/06/02(日) 13:16:55.27ID:BjQrM5yg
少なくとも所有権の移動は右辺に影響するんだからそっちにも記号がつくべきだった

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

でもfutureの難しさはasync/awaitが導入されればそれに隠蔽されるから
利用するだけのユーザーならあと少しの辛抱や
0874デフォルトの名無しさん
垢版 |
2019/06/04(火) 20:27:22.80ID:ih9X5y39
継続的に数年使ってる人は新機能が出たら新機能だけ覚えればいいんだろうけど
初めて触る人はその累積してきた機能全部を掌握するのは無理
0876デフォルトの名無しさん
垢版 |
2019/06/06(木) 12:34:55.73ID:mhFONxQE
rustをシステム系じゃないエンジニア(C++の仕事してない)が使うメリットって何かある?
0878デフォルトの名無しさん
垢版 |
2019/06/06(木) 16:40:28.94ID:S02+RpbC
廃止された機能や推奨されない機能も覚えておく必要がある
特にC++で言えばunicodeの変換(std::codecvt**)が超糞
0880デフォルトの名無しさん
垢版 |
2019/06/06(木) 17:43:00.49ID:S02+RpbC
「誰も使ってなかった」ことも含めて
その累積してきた機能全部(結局全部になるだろうな)を掌握する必要がある訳だろ
0883デフォルトの名無しさん
垢版 |
2019/06/06(木) 20:59:27.87ID:ulk3mDRi
それついたの思いっきりつかってるwww
昔のが商売人の都合で切られてるんだもん
つかうよ
0884デフォルトの名無しさん
垢版 |
2019/06/07(金) 01:20:04.91ID:yhNlt0n8
DX8ですね判ります
0885デフォルトの名無しさん
垢版 |
2019/06/09(日) 09:44:49.12ID:16GRLedz
rustでIDE補完が甘いのは誰も気にしてないんか?
そもそもみんなIDE使ってないんか?
0886デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:53:44.61ID:V8qyq4Ge
yes
yes
0887デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:45:40.10ID:16GRLedz
なるほど
ありがと
0888デフォルトの名無しさん
垢版 |
2019/06/09(日) 12:39:28.24ID:KZPUbdMm
カドカワから月末に訳本の
プログラミング言語Rust 公式ガイドが出るけど2018対応じゃないよね?
Rust本が増えてきたのは嬉しい
■ このスレッドは過去ログ倉庫に格納されています

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