X



Rust Part7

■ このスレッドは過去ログ倉庫に格納されています
0620デフォルトの名無しさん
垢版 |
2019/11/08(金) 18:43:36.10ID:J02ga/Ws
平均と同じではいかんのか?
0622デフォルトの名無しさん
垢版 |
2019/11/09(土) 06:26:46.96ID:jVCSonN8
ウェブアプリケーション
今五個目
0630デフォルトの名無しさん
垢版 |
2019/11/10(日) 15:18:40.14ID:47iDVxCF
開発サイクルが遅くなってデメリットが上回る
仕事で使うアホはいないと思う
0633デフォルトの名無しさん
垢版 |
2019/11/10(日) 22:43:25.53ID:KB1QaEbz
wasmて
ウェブブラウザアプリでRust的な安全性ガッツリ必要なことあるの?
0634デフォルトの名無しさん
垢版 |
2019/11/11(月) 19:57:31.41ID:EVqu4APJ
てかメモリ安全なスクリプト言語さえまともに使えないやつに限ってrustとか騒いでんだよね。。
バカバカしい。。
0635デフォルトの名無しさん
垢版 |
2019/11/11(月) 20:07:59.59ID:khjQBy11
コンパイラより自分の腕を信じるって…
やっぱりジャップにはかなわねえや
0636デフォルトの名無しさん
垢版 |
2019/11/11(月) 20:20:19.17ID:GWl6h/g/
てか で始める
限って によるガバガバなレッテル貼り

クソバカ
0637デフォルトの名無しさん
垢版 |
2019/11/11(月) 20:48:06.84ID:dcucGLEU
Cなら3で済みことを馬鹿に合わせてRustで20かけて作ることの意味があるのかどうかが問題だ
0638デフォルトの名無しさん
垢版 |
2019/11/11(月) 21:23:31.49ID:vNU4oQAO
3で済みこと
0641デフォルトの名無しさん
垢版 |
2019/11/11(月) 22:28:55.57ID:GWl6h/g/
イニシャルコストだけ論じても意味ないしょ
作って終わりの製品もあるのは確かだだけど
0642デフォルトの名無しさん
垢版 |
2019/11/11(月) 22:30:05.95ID:199KzUbd
>>633
ない
0643デフォルトの名無しさん
垢版 |
2019/11/11(月) 23:21:00.62ID:/mnflr/W
>>641
ランニングコストも同じだよ
何をするにもコンパイラの機嫌伺いから入る必要があるんだから
0644デフォルトの名無しさん
垢版 |
2019/11/12(火) 01:23:13.19ID:xaPlPvgO
そんなこと言うなよ
コンパイラちゃんはどこが悪いかいつも教えてくれてるんだぞ
コンパイラちゃんの気持ちも考えろよ
0645デフォルトの名無しさん
垢版 |
2019/11/12(火) 01:50:34.68ID:UmQHVT6w
Item1とItem2で同じ構造しててそれぞれに似たような処理をしているのにItem2にだけCloneつけろとエラー出るんですが
理由がわかりません

エラーが出るコード
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=39e9b4899374d1aca90c64836d71c161

Item2にだけCloneつけて動くコード
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=568c3f827c59a417f8d1c0f91b6bc9e4
0646デフォルトの名無しさん
垢版 |
2019/11/12(火) 03:38:31.37ID:+Tj6wPob
>>645
vec!マクロで要素数指定する形はその型がClone実装してないとだめ

Item1も要素数指定すればCloneを要求される
let mut vs = vec![Item1 {a: 0, b: 0};10];
0648デフォルトの名無しさん
垢版 |
2019/11/12(火) 07:41:14.54ID:QX/VSHUG
>>643
そんな短絡的なことを言っているんじゃないよ
0649デフォルトの名無しさん
垢版 |
2019/11/12(火) 12:52:39.30ID:75A3JV4a
コンパイラがやかましければプログラムの質が上がるっていう
短絡的なこと言ってるのはどっちだか
0650デフォルトの名無しさん
垢版 |
2019/11/12(火) 12:56:25.17ID:p8WdjJyB
安全な言語を開発するようメーカーの方に心がけていただき、
kidsが安心してプログラムできるような、コンパイルできるような世の中になってほしい。
0651デフォルトの名無しさん
垢版 |
2019/11/12(火) 14:55:56.85ID:QDjqh8Or
「Rust言語」をWindowsプロジェクトに適用してみた、Microsoftの事例
https://www.atmarkit.co.jp/ait/articles/1911/12/news050.html

欲しい機能がまだまだある、Rustコミュニティーとも協調

Rustは比較的歴史が浅いため、Microsoft社内の開発に使うことを考えると、よく使う言語機能であっても欠けているものがあるという。
その最たるものは、安全な変換(“プレーンな古いデータ”型をrawバイトと間で相互に安全にキャストする)やCスタイルの共用体の安全なサポート、誤りを許容する割り当て(割り当ての失敗でパニックに陥らず、所定の手順で停止する)だ。

Cargoには優れた単体テスト機能が組み込まれているため、開発者が本番コードと同じファイルにユニットテストを記述して、開発中に簡単に実行することができる。だが、Microsoft社内の大規模で複雑なビルドシステムでは、Cargoをビルドツールとして利用できない。
そこでCargoチームとの間で、複雑なビルドシステムを持つ大企業がCargoを利用できるようにするための話し合いを開始している。
0652デフォルトの名無しさん
垢版 |
2019/11/12(火) 15:08:35.31ID:YVK5A4co
「誤りを許容する割り当て」ってなんだ?
malloc失敗した時になんか処理したいって話?
0653デフォルトの名無しさん
垢版 |
2019/11/12(火) 15:54:18.41ID:BAhwfPb/
要約すると今のcargoはクソで落ち着く
0655デフォルトの名無しさん
垢版 |
2019/11/12(火) 20:55:32.21ID:QX/VSHUG
>>649
そんな短絡的なことを言っているんじゃないよ
0658デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:07:52.77ID:QX/VSHUG
欠点を論うだけの雑魚に対し、フィードバックして改善しようとするMS様は立派だな
現場でも文句ばかり垂れてるお爺さんいるよな
0659デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:09:26.54ID:H9gS/H0a
何にも言わないで偉そうにしてるだけのやつが言うセリフじゃねえええええええ
0661デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:46:17.93ID:QX/VSHUG
茶々入れ小僧がわめくなよ
0662デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:49:03.55ID:QwsLzoNY
MSはCargoでどういう場合困るんだろ
小さいものしか作ったことないし技術力も低いからわからない…
0663デフォルトの名無しさん
垢版 |
2019/11/12(火) 22:11:56.20ID:QX/VSHUG
俺も。。
0664デフォルトの名無しさん
垢版 |
2019/11/13(水) 00:32:15.20ID:LQUpdw6j
GoogleのBazelみたいな分散環境でスケールする独自のビルドシステムを持ってるから
cargo testとかやった時にcargoのインクリメンタルビルドの仕組みじゃなく
自分たちの仕組みと連携させたいってことなんじゃないかと
0665デフォルトの名無しさん
垢版 |
2019/11/13(水) 03:04:21.12ID:DP/YD1iU
>>651
「使ってみたけどやっぱダメだったわ」をオブラート10枚くらいに包んだ
奥ゆかしい日本語の記事って感じだな
0666デフォルトの名無しさん
垢版 |
2019/11/13(水) 05:44:21.88ID:HjWmYEnS
Copyトレイトはプリミティブ型のように値としてコピーされるのが自然な型に付ける

コピーされるのは自然でない型でコピーをしたい場合にCloneトレイトでコピーを行なってると明示できるclone()メソッドを使ってコピーする
0667デフォルトの名無しさん
垢版 |
2019/11/13(水) 07:36:30.61ID:HNnV6bHC
あっちの企業って大企業でもOSSプロジェクトが使えると判断されたら支援もするけど日本じゃさっぱりだよな
0673デフォルトの名無しさん
垢版 |
2019/11/13(水) 16:14:33.46ID:CN9wALpQ
特徴
0674デフォルトの名無しさん
垢版 |
2019/11/13(水) 19:27:48.53ID:hjs0qnAg
確かにマイクロソフトならこのくらいの言語なら勝手に作りそうではあるな。
そもそもの実装系がカスだし。
0676デフォルトの名無しさん
垢版 |
2019/11/14(木) 11:58:42.24ID:YSMwOav4
トイレット
0678デフォルトの名無しさん
垢版 |
2019/11/17(日) 22:19:43.87ID:Pgjwxo9T
D言語のdebugブロックみたいなデバッグビルド時のみ有効になるコードブロックってRustにあります?
0680678
垢版 |
2019/11/18(月) 00:08:28.84ID:0Snxbixt
>>679
ありがとうございます!
0681デフォルトの名無しさん
垢版 |
2019/11/18(月) 18:57:03.41ID:CjfZ5YZK
&strに含まれる各文字のUTF-8のバイナリ表現を
文字単位でprintしたいんだけどもう少し簡単な方法ない?

https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=95162e453b679ff50c779695e9b545bf

&strをchars()でイテレートすると
char.encode_utf8でUTF8に戻するのがなんとも気持ち悪い
0682デフォルトの名無しさん
垢版 |
2019/11/18(月) 19:16:24.62ID:z+VV/8hn
>>681
char_indicesでイテレートすればposと(char.len_utf8で)lenが取れるから、それで元のスライスにアクセスする、とかかな。
そんなに短くはならないけど、bufferはいらなくなるはず。
0683デフォルトの名無しさん
垢版 |
2019/11/18(月) 22:15:40.78ID:CjfZ5YZK
>>682
なるほど
このやり方のほうが素直な気がするね
とりあえずありがとう

let baz = "aあ🦀";
for (pos, char) in baz.char_indices(){
println!("¥n{}:", char);
for byte in baz[pos..pos + char.len_utf8()].bytes() {
println!("{:b}", byte);
}
}
0685デフォルトの名無しさん
垢版 |
2019/11/19(火) 16:20:24.11ID:473MwB5J
2次元配列から最大値を有するデータ(with index)を取り出したいとき
イテレータのmax_by等を二段がけにするのと
従来プログラミング言語のように二重のforループで取り出すのと
どっちがおすすめ?
0687デフォルトの名無しさん
垢版 |
2019/11/19(火) 17:44:40.62ID:IXdZpGti
forでやるとmutな変数の更新を自分でやることになるから安全性が落ちる
更新ミスによるデバッグコストのリスクがある
0688デフォルトの名無しさん
垢版 |
2019/11/20(水) 21:08:08.17ID:1bHauA1T
変なやり方するより自然なfor使った方が
結局は可読性によって安全性やデバッグコスト低下になる。
0689デフォルトの名無しさん
垢版 |
2019/11/20(水) 22:09:44.36ID:kQh16pu+
こういうお爺ちゃんはほんと迷惑
長いというだけで関数に切り出したりするし
0691デフォルトの名無しさん
垢版 |
2019/11/20(水) 22:22:05.63ID:kQh16pu+
いかんからもうやらないでね
0695デフォルトの名無しさん
垢版 |
2019/11/20(水) 22:48:38.35ID:ykGdicPs
組み込みのCだとアセンブラを意識して減算カウンタでdo...while使ったりするけど
PCでそれはないな。イテレータが使える状況なら使ったほうが安全だし
0697デフォルトの名無しさん
垢版 |
2019/11/20(水) 23:43:20.92ID:ZhXfBtsy
関数切り出しがダメなのかRustでは
おじいちゃん驚きだわ
理由を何なの?
シャドウイングあるからとか?
0698デフォルトの名無しさん
垢版 |
2019/11/21(木) 00:12:22.19ID:ajP/wB6Z
競プロで見かける色んな人のコードでは
forループのほうが自然なとこを無理矢理イテレータのメソッドチェーンにしてたり、その逆があったり
0699デフォルトの名無しさん
垢版 |
2019/11/21(木) 00:26:18.38ID:i/7SJRFV
読みやすさが犠牲にならない範囲で短く書けるってことはよいことだけど
高階関数とかクロージャがまざるとトレースがめんどいのは確かだよね
デバッグ時にいらいらする
0700デフォルトの名無しさん
垢版 |
2019/11/21(木) 01:07:26.22ID:GN1h9TxM
>>685
1. 2重forループ
2. forループ + max系
3. fold + max系

の3択になると思うんだけど並列化も考えるような処理なら3がいい
そこまでの処理じゃないならメソッド抽出してテストを書いとけば中身はどれでもいいと思う
0701デフォルトの名無しさん
垢版 |
2019/11/21(木) 07:10:43.84ID:YlKoSulN
>>696
長いだけで切り出すメリットがない

>>697
スコープが広くなるからだよ
0704デフォルトの名無しさん
垢版 |
2019/11/21(木) 09:05:05.54ID:t44F/vpr
関数切り出しでスコープが広くなるとか、プログラミング言語として致命的な欠陥だろ
0705デフォルトの名無しさん
垢版 |
2019/11/21(木) 09:32:00.36ID:i/7SJRFV
切り出すと特定の関数から一度しか呼ばれない関数がででるから、
それが無意味というか、むしろ関数のシンボルが増えるし
上から下に連続的にソースコード読めなくなるしでダメだと言っているのだろう

でもそれってRust以外の言語でも同様の話であって、なぜそれでもなぜ切り出すべきかは語りつくされてる
それでもRust固有の事情で反論があるなら書いてくれ
0707デフォルトの名無しさん
垢版 |
2019/11/21(木) 12:20:05.12ID:YlKoSulN
>>705
全くあなたの言う通り、そしてRust固有の話ではない
0708デフォルトの名無しさん
垢版 |
2019/11/21(木) 13:17:36.82ID:ymw8VtjB
>>705
関数切るとその分だけ借用とか生存期間とかの問題が増えるんよ
関数跨いだ変数の扱いが非直感的すぎる
関数に分けるとコンパイル通らなくなる事例が多すぎるから
関数分けないモチベに繋がる
0709デフォルトの名無しさん
垢版 |
2019/11/21(木) 15:03:38.41ID:ByfXIyid
行儀の良くないプログラミングスタイルが
コンパイラに怒られてるだけに聞こえるなあ
例出してよ
0710デフォルトの名無しさん
垢版 |
2019/11/21(木) 17:54:01.27ID:Ju9cDeqK
>>707
長い関数書いてるかうちは半人前
うちのプロジェクトなら即リジェクト
深いネストもリジェクト
0712デフォルトの名無しさん
垢版 |
2019/11/21(木) 20:54:42.20ID:yV25mt1X
グローバルな型推論が無いのと型シグネチャが人に全然優しくないことに起因する、関数大きくなりがち問題はRust特有ですよ
最初から完成形があるわけでもないのに試行錯誤のコストを無視しちゃ駄目だ
0713デフォルトの名無しさん
垢版 |
2019/11/21(木) 21:02:13.57ID:YlKoSulN
>>710
小物臭すごいんで寄らないでください
0716デフォルトの名無しさん
垢版 |
2019/11/22(金) 09:52:07.52ID:G2a56k/U
苦労ぢゃ
0719デフォルトの名無しさん
垢版 |
2019/11/22(金) 14:48:50.24ID:ZeXcMQQW
確かにimpl traitなかった頃のクロージャ返しとか、asyncなかった頃のFuture返しとかは煩雑だったけど
現時点でそんな大変な型シグネチャってあるか?
■ このスレッドは過去ログ倉庫に格納されています

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