Rust Part5

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/02/11(日) 20:07:24.54ID:ri7dLd1B
Mozilla発のRust言語のスレ

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

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

前スレ
https://mevius.5ch.net/test/read.cgi/tech/1507970294/
69デフォルトの名無しさん
垢版 |
2018/02/19(月) 01:40:11.21ID:Lpico4kN
>>68
モーレツに墓穴掘ってるけどね
70デフォルトの名無しさん
垢版 |
2018/02/19(月) 10:56:52.97ID:RCvG8f4a
安全性を最大限に気にしたい心配性な人向けの言語だよRust
そういう人たちはC/C++のコーディングで余計なことまで心配しすぎてストレスかかってるんだよ
かわいそうな人たちなんだよ
2018/02/19(月) 12:11:45.20ID:SrM6uAzC
心配しないと鼻から悪魔が出るのがC/C++なので心配しすぎということはない
72デフォルトの名無しさん
垢版 |
2018/02/19(月) 20:47:53.37ID:Lpico4kN
例のアンチだが動的計画法がどうだ循環参照がどうだって騒いでたから
てっきりhtml5everくらい複雑なコード組もうとして悩んでたのかと思ってたけど
まさかのフィボナッチ数列でつまづいていたとは予想外だったわ

そういえば今年のstackoverflowのアンケート結果っていつ出るんだろう?
そもそも毎年いつ頃出てるのか知らないんだよね
これでRustが愛され言語ランキング1位から順位落としてたら
また「ついにクソ言語未満のボロが出てきたな」とか騒ぎだすんだぜきっと
2018/02/19(月) 22:42:50.63ID:soT5kWv3
前スレで、別のランキングでRustの順位が10位圏内に入ってなかったことについて
「工作ブーストが切れたな」とか言ってたからそういう方向になるんじゃね
2018/02/20(火) 22:57:20.29ID:fTmZl11b
Rustが、コードのスタイルガイド「Rust Style Guide」と自動整形ツールを導入する理由。
コードをめぐる議論を省き、メンタルの負担を減らし、プログラマを参加しやすくする
http://www.publickey1.jp/blog/18/rustrust_style_guide.html
2018/02/21(水) 00:44:44.35ID:s9stOBAB
unsafe使えば書けるだろ
C++みたいに全部unsafeな言語よりは安全
2018/02/21(水) 13:18:06.33ID:/K+AUWe/
C++ならゲーム
C#ならWindowsフォームアプリケーション
PHPならWebアプリケーション
Pythonなら機械学習

Rustは?
2018/02/21(水) 19:19:52.15ID:ariB2x93
ここはアンチが立てたキチガイ隔離スレです。
キチガイ以外書き込まないでね
2018/02/21(水) 20:00:01.69ID:RN4nUagC
本スレが過疎ってレベルじゃないし実質こっちが本スレだろ
隔離()スレに勢いで負ける言語があるらしい
2018/02/21(水) 20:01:45.70ID:ariB2x93
まあそうなんだけどね
2018/02/21(水) 21:13:09.57ID:wTdoLSiT
ほんとID:yl4ANYczは戦犯
コンパイルできない厨が最後のコンテンツだったのに…
2018/02/22(木) 09:08:35.45ID:L3BN3Bsr
いわゆるnewtypeパターンをLLVM IRで見てみると
ごく単純なコードで使う分には中身の要素に最適化されてるけど、
それ使って配列を作っただけで最適化されなくなる
こんくらいでゼロコスト抽象化とか言ってるの?

typeでは新しい型作れないし、
結局新しい効率的な型を作る方法さえないんだな
2018/02/22(木) 09:11:43.41ID:3phG5Adg
私にも敵が視える
2018/02/22(木) 12:12:42.57ID:rPAqV5nw
Rustで書くと実行時のメモリ使用量が増える感じは確かにある
2018/02/22(木) 12:12:50.46ID:nEiXxHSj
>>81
トレイトの特殊化でも無理?
2018/02/22(木) 12:45:10.40ID:ETY6aWa8
バグかもしれないからissue立てたら
2018/02/22(木) 13:46:42.12ID:H839Tp+8
>>81
ゼロコスト抽象化はトレイトやジェネリクスを言っててnewtypeパターンは関係ないと思うゾ


Cに比べたらC++もRustもGoもランタイムの分だけメモリ使用量は増えるよね
C++にはランタイム存在しないとか大笑いなギャグを素で言う輩は知らん
2018/02/22(木) 17:36:33.79ID:z8mO3my1
その理屈で言うとlibcもランタイムになりそう
88デフォルトの名無しさん
垢版 |
2018/02/24(土) 01:22:38.50ID:it5yKGst
「Rust 1.24」リリース、コード整形ツール「rustfmt」をプレビュー導入 | OSDN Magazine
https://mag.osdn.jp/18/02/17/163000
> ビルドの速度は改善するが、出力されたバイナリの実行速度は少し遅くなるとしている。
2018/02/24(土) 05:12:18.52ID:sKnrWNZ+
むしろ今まで並列コンパイルをしていなかったのかという驚きがね...
型推論とかボローチェッカーとか大変だろうしと思ってたが、並列コンパイルで早くなるのは助かるよね
2018/02/24(土) 12:58:21.72ID:xVNPO9ZK
コンパイルを速くするためにプログラムの速度を犠牲にする
自称低級言語があるらしい
2018/02/24(土) 13:22:49.17ID:F+bRKUHR
言語じゃなくコンパイラの話だぞ
速度を求めたリリースビルドは並列なしに切り替えられる低級調製可能なコンパイラすごいよね(棒読み
2018/02/24(土) 14:20:25.52ID:Wx4opHQO
言語仕様には興味あるけど実装は興味ありませんって奇特な方には人気出そうな言語だね。
2018/02/24(土) 14:24:58.18ID:2/pmmfzJ
低レイヤ書く人は仕様より吐かれるバイトコードの方にしか興味ないから
完全にターゲティングに失敗してるよなこの言語
2018/02/24(土) 15:42:04.98ID:F+bRKUHR
むしろコンパイルを通すことが難しくても効率的で安全なマシンコードを出力して欲しい奇特な人向けだけどな
性能無視して生産効率だけを求めるならボローチェッカーとかunsafeとかトレイトとか面倒な言語仕様はマジ辛い

ただ緩く書きたいだけならSwiftとかGoの方が絶対良いよな
ランタイムが馬鹿でかかろうが、goroutineが冗長コストだろうが、言語仕様が楽なそれらは生産効率が断然良い
2018/02/24(土) 16:20:16.21ID:VjJ87j7v
安全はともかく、Rustが効率的なマシンコードを出力するというのは同意しかねる
2018/02/24(土) 22:13:15.47ID:Z3ajdh1I
やはりD言語が最強か
2018/02/27(火) 14:30:57.99ID:b6IHds+I
ソースとマシンコードが一対一になる言語は安心感あるな
98デフォルトの名無しさん
垢版 |
2018/02/27(火) 14:35:36.74ID:UR+NQY+Q
やはりアセンブラか
99デフォルトの名無しさん
垢版 |
2018/02/27(火) 14:36:01.06ID:MLnedvVc
【UFO】  山本太郎も横浜で遭遇  ≪W◇″型の発光体≫  世界にテレパシー放送  【大宣言】
http://rosie.5ch.net/test/read.cgi/liveplus/1519704223/l50
2018/03/01(木) 00:41:00.21
【お知らせ】Packt出版より Network Programming with Rust が発売されました。
101デフォルトの名無しさん
垢版 |
2018/03/05(月) 15:59:00.63ID:iGOVMObf
https://play.rust-lang.org/?gist=0bed0aa16c0679665fee05cc6bfda41f&;version=nightly
fn nanka() -> Option<u32>{
println!("nanka called");
None
}
fn nanka2() -> Option<u32>{
println!("nanka2 called");
None
}
fn nanka3() -> Option<u32>{
println!("nanka3 called");
None
}

fn main() {
match (nanka(), nanka2(), nanka3()){
(None, _, _) => println!("nanka ha None"),
(Some(_), Some(_), Some(_)) => println!("some"),
(_, _, _) => println!("else")
}
}

nanka2, nanka3が呼ばれなくて困る!って副作用があるパターンぐらいじゃないですか?
nanka1がNoneと判定した時点ですぐprintしてくれないものでしょうか
2018/03/05(月) 19:46:36.35ID:S3T8EfYp
println!("nanka2 called"); とか副作用あるよね
2018/03/05(月) 21:01:55.89ID:YH1rjFLX
まさに副作用あって呼ばれなきゃ困るパターン書いてて草
2018/03/05(月) 21:44:52.21ID:rDxXu9uq
遅延評価の言語ではないから言語仕様的に全部評価することが保証されてるからなぁ
副作用なくて同じcrate内に処理があるなら最適化で消えるのでは
105デフォルトの名無しさん
垢版 |
2018/03/07(水) 19:29:12.10ID:LRCrToXv
横着してたから気づかなかった…

>>104
https://play.rust-lang.org/?gist=548477e609761c03d062880ceebec28a&;version=stable
MIR見る限りあるっぽいです(これ副作用ないですよね?)
2018/03/07(水) 21:27:53.74ID:VXG6nm0Z
良く分からないけどReleaseにしてASM見ると消えてるみたい
MIRに対する最適化は現時点ではそれほどやられてなさそう
2018/03/07(水) 21:51:00.14ID:LRCrToXv
>>106
Debugなのを忘れた状態で見てcall nanka2があったので駄目かと思っていましたが
Releaseだと消えるようですね、すいません
2018/03/07(水) 22:06:37.97ID:5W30026P
言語仕様で消えるってどっか書いてある?探したけど見つからんかった
2018/03/07(水) 22:42:40.55ID:MkNIh69G
rust推進派のtanakhがrustのダメ出しを始めた

https://twitter.com/tanakh
2018/03/08(木) 07:35:45.52ID:VN6/Zkeb
会社大変だから許してあげよう
2018/03/08(木) 09:01:09.79ID:SDzhQ04b
>>108
最適化の話だから言語仕様では決められてないと思う
2018/03/08(木) 13:04:24.48ID:XQ95i3sC
あのtanakhですら擁護できなくなってきたRustとかいう何か
やっぱクソ言語じゃん
2018/03/08(木) 13:05:40.24ID:FYuhJ3+Z
逆にたなこふ氏が好きな言語って何だよ
Haskellくらいだろ
2018/03/08(木) 13:10:19.32ID:FYuhJ3+Z
ほら
https://twitter.com/tanakh/status/907645555467104256
2018/03/08(木) 13:42:39.37ID:XQ95i3sC
いくつか言語……?ってなるのが混じってるな
116デフォルトの名無しさん
垢版 |
2018/03/08(木) 17:46:17.85ID:3H4xAb5h
>>114
Rust評価高いくてGoは糞って評価だな。
2018/03/08(木) 20:48:12.88ID:Qr0iRnUQ
絶対一緒に仕事したくないようなコード書きそうな人柄なのがよくわかるのはいいことだね。
2018/03/09(金) 02:34:49.09ID:C5IjE5Kn
スタック使うかヒープ使うか考えなきゃいけないしマジで低級言語だなRust
2018/03/09(金) 09:09:56.97ID:MtNghMxY
低級プログラミング言語というときの低級は必ずしも蔑む意味とはならない
2018/03/09(金) 12:35:50.11ID:Awo4Q9T/
>>118は別に蔑んでないと思うが…
2018/03/09(金) 12:41:07.31ID:X+hGjMr5
118が低級
2018/03/09(金) 13:10:31.19ID:Awo4Q9T/
どう読んでも>>118は事実を言っただけでrustを誉めても貶してもいないと思うが…
「CはPythonよりも低級言語」これC言語を蔑んでる意味で取るアホなんているの?
2018/03/09(金) 17:25:20.32ID:4MawrcZA
初心者は大体そのように取るよ
2018/03/09(金) 17:29:38.88ID:Oir5mzi3
はいはいわかったわかった
2018/03/09(金) 18:10:23.86ID:TjQY2cN8
枯れてる言われて古いんだなと思ってそう
2018/03/10(土) 02:47:36.63ID:RGnl5SiL
高級言語のcobol最強ですかね
2018/03/10(土) 04:12:59.75ID:YINDWKAW
蔑んでいるように見えるのはあなた自身が心の奥底でRustを蔑んでいるのです
2018/03/10(土) 07:06:56.73ID:PbOmOUXH
はいはいわかったわかった
2018/03/11(日) 03:31:49.17ID:UKNdLJMW
1つのstructにいっぱい詰め込むと初期化が面倒なんですが
2018/03/11(日) 04:15:48.10ID:4b/1QsDB
new()用意しとけ
2018/03/11(日) 13:22:28.79ID:vP34sga0
derive(Default)使えば
2018/03/11(日) 13:57:51.99ID:91F3yKR+
よくインターネット上の広告で半年でエンジニアに!みたいなのあるけど、インターネット不得手、プログラム未経験者が真剣に半年頑張れば本当にそんなこと可能なんですか?
可能ならその理由はなんでしょう?人材が足りていないというのは存じ上げていますが
2018/03/11(日) 13:58:22.81ID:91F3yKR+
ごめんなさい誤爆しました
134デフォルトの名無しさん
垢版 |
2018/03/11(日) 14:13:04.94ID:zWe+i43K
>>132
言われたことやるだけなら可能じゃね?
2018/03/18(日) 21:30:14.47ID:jQGugCpv
>>8
今更だけどこれ書いた奴もブコメした奴も誰一人rustまともに使ったこと無さそうで草
136デフォルトの名無しさん
垢版 |
2018/03/19(月) 15:39:12.03ID:dH7nnHk9
>>135
少なくとも書いた奴はまともに使ってないだろうな
matchの仕様が理解できないからって仕様バグと決めつけてるアホだし…
137デフォルトの名無しさん
垢版 |
2018/03/19(月) 19:45:41.61ID:ahbMAcYG
俺の技量不足なんだろうけどmutmut地獄は確かにわかる
138デフォルトの名無しさん
垢版 |
2018/03/19(月) 20:01:00.05ID:dH7nnHk9
>>137
mutが面倒ってのは分からなくはないんだが、かと言ってどうするの?
不変のほうをconstにすると次はconst地獄になるだけだよ
2018/03/19(月) 20:11:12.51ID:bbBltail
C++erだったのでconst地獄はむしろ慣れてるので歓迎
2018/03/19(月) 20:37:55.38ID:+FMR/dfx
一方、記述の美しさを重視する Nim では let と var に分けた
141デフォルトの名無しさん
垢版 |
2018/03/19(月) 21:23:39.57ID:dH7nnHk9
Nimは引数を可変にしようとすると下記のようになる。
proc test(x: var string): string =
x = x & " world"
return x

var x = "hello"
let y = test(x)
echo y

関数宣言で引数にvarと書かなきゃ可変にできないんじゃRustとそれほど手間は変わらない
それに、宣言はvarと書かせるクセに呼び出し側がtest(var x)じゃなくてtest(x)となるのが解せない
これじゃ呼び出し側を見ただけじゃxが不変か可変か判断できない
C++と同じ類の過ちを犯してる
簡潔ではあるかもしれないが全然美しくない(美しいの定義によるが…)

https://play.nim-lang.org/?gist=9e8b6b6059cf8640f6c71fd2075b07c8
142デフォルトの名無しさん
垢版 |
2018/03/19(月) 21:32:11.25ID:dH7nnHk9
あとRustの場合はそもそもmutは出来るだけ使うなという方針だから
mutの記述が面倒なのはワザとやってるという点もあるし…
143デフォルトの名無しさん
垢版 |
2018/03/20(火) 08:39:12.91ID:iuzVSye9
なるほど
144デフォルトの名無しさん
垢版 |
2018/03/20(火) 14:11:19.46ID:J0Id73NT
> これじゃ呼び出し側を見ただけじゃxが不変か可変か判断できない
珍しいご意見ですよね。
2018/03/20(火) 16:01:11.80ID:/+MVnq9/
>>144
よくよく考えるとRustも呼び出し側にmut付けること自体は必須ではないんだよな
所有権を借用するために大抵は&mutを書かされるってだけで…
渡す変数の型がもともと&mut Tだった場合は書かなくてもいい…
Rustの場合は呼び出し側で&mut書く羽目になる経験が多かったので
俺が勝手に「可変にしたければmutを絶対に書かないといけない」という勘違いをしていただけか…
でも、書かされた方が読むときには分かりやすいので個人的にはこっちの方が好き

俺自身がNimはどうしても好きになれなくて不満点を挙げたつもりが自ら墓穴を掘ってしまった感じだな
一般的にはNimの方がよっぽど簡潔で美しいのかもしれない…
ただ単に俺の感性の方が狂ってるだけっぽいな…
2018/03/20(火) 16:05:30.99ID:ck80uwiX
そんな珍しくもない気もするが
147デフォルトの名無しさん
垢版 |
2018/03/20(火) 21:24:24.10ID:kx/m1AUo
俺もそんな珍しくもないと思う
2018/03/20(火) 23:15:30.72ID:RYTCq15b
「変数」が値に名前を付けたイメージに人とメモリ領域に名前を付けたイメージの人と
149デフォルトの名無しさん
垢版 |
2018/03/21(水) 00:20:42.31ID:mtmyqFMA
データがメモリのスタック領域ヒープ領域あるいは別の領域などどこに記憶されるのかという低レベルなことを考慮しながらプログラミングしなきゃならない

変数とは何かと言えば
スタック領域の特定のメモリ番地に名前をつける行為でしかなく

所有権の委譲って何かと思えばそのメモリ番地の名前を変える行為でしかない

クソ
150デフォルトの名無しさん
垢版 |
2018/03/21(水) 21:34:47.63ID:JvyRf7uK
分かりやすい説明だね
2018/03/23(金) 00:30:01.20ID:DIa3/8ef
GBAのプログラムを書いてみたいな。どうせならRustでやってみるか
ARMポートあったよね。Thumbコードも吐けるのかな

とか思ってググっていたら先人がいた。考えることはみんな一緒かw
2018/03/23(金) 08:40:36.80ID:yG5SnYrv
Unityが北欧のニートから生まれたって話を聞いて
Rustでゲームエンジン作ればワンチャンあるんじゃないかと思い始めてきた。
2018/03/23(金) 08:44:26.71ID:0DDzAR5J
気のせい。
154デフォルトの名無しさん
垢版 |
2018/03/23(金) 10:01:19.78ID:+d3L/XtB
あるかもね
2018/03/24(土) 02:46:18.89ID:Q4O/QWqD
unsafe使い始めたらCのがやっぱ楽じゃね?ってことにすぐなる。
2018/03/24(土) 07:57:37.67ID:AYaIp/Or
そしてメモリ周りのバグで悩まされた時にやっぱRustで書いときゃ良かったってなる
2018/03/24(土) 11:41:10.67ID:lA18Hk/y
バグなんてメモリに限ったことじゃないのにね
2018/03/24(土) 12:51:11.00ID:6E9wdkyi
要因の種類が減るのは良いことだ
2018/03/24(土) 19:57:38.34ID:Hl/X5tEX
rust未経験者なんだけど、この言語ってweb開発には向いてないの?
goより高度なこと出来るならweb開発も全然苦じゃないように思うんだけど
何かしらweb開発に向いてない要素あんるんかな?
2018/03/24(土) 20:11:16.11ID:lcHhOSrB
DOMいじれんの?
2018/03/24(土) 20:22:46.33ID:Hl/X5tEX
ごめん。聞き方がふんわりしてた。
webのバックグラウンドで動いてるrestAPIサーバに向いてない要因は何かあるのかな?
SPAとかマイクロサービスとかの構成でjavaとかgoとかの代わりに成り得るのかなって。
2018/03/24(土) 20:22:52.79ID:6E9wdkyi
一応WebAssemblyで吐けばRustのコードとJavaScriptのコードを混在出来るけど
軽く触っただけなんでデバッグなどの開発環境の事は未知数
2018/03/24(土) 20:22:54.62ID:eKuOy/a9
>>160
無理
164デフォルトの名無しさん
垢版 |
2018/03/24(土) 20:25:44.26ID:bGodUaM+
サーバ側でしょ?言語としては代わりになるだろうけどwebに向いてる部分てのが何を指してるかによるんじゃない
2018/03/24(土) 20:33:09.05ID:Hl/X5tEX
hello world出たからもう初心者と言っても過言ではない。。

>>164
個人的には静的言語ならどれも大差ないと思ってるんだけど、
その方面では全然注目されてないように見えたから何か原因があるのかなって。
2018/03/24(土) 20:36:37.33ID:6E9wdkyi
>>161
以前Goでサーバーサイド書いたことあって、バイナリ一つデプロイするお手軽さがとにかく良かった

といってもほんとに小機能で、WAFにEcho使って静的ファイル(CSS・画像)とか
レスポンスにDBから引っ張ったJSON返すRESTfulの出来損ないみたいのだけど

開発はWindows、デプロイ先がCentOSだったんだけど、
WindowsでCentOS用のバイナリ吐けるし、プロセスの再起動監視も今はDocker-composeがやってくれてるし(restart: always オプション)

Windowsで開発してPUSH、CIツールがCentOS用にバイナリ吐いて、CentOSではバイナリ受け取ったら
$ docker-compose down && docker-compose up -d --build
叩くだけでデプロイ完了っていう超絶お手軽、もちろんデプロイはAnsibleやItamaeで自動化しても良い
2018/03/24(土) 20:51:06.97ID:Hl/X5tEX
hello worldが10個出た。

>>166
goのシングルバイナリ良さそうだよね。
全然分かってないんだけど、rustでもちょびっと頑張れば
クロスコンパイルできるって認識なんだけど間違ってるのかな?
2018/03/24(土) 21:09:10.81ID:6E9wdkyi
Rust経験浅いんで良く分かってない、一応nickelってWAFあるしrustupでコンパイル出来るから土台はあるけど
RustってわりとカジュアルにC製のライブラリをdllとして利用してるからそこが未知数
まあそれらのライブラリを使わなきゃいいんだろうけど
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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