- 1 名前:デフォルトの名無しさん [2012/01/25(水) 20:05:49.96 .net]
- Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。
www.rust-lang.org/
- 511 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 17:51:41.42 ID:yIqkNKKT.net]
- 残念ながら日本語の本が出るなんて話は聞いたことがない。
1.0になるまでに文法やらセマンティクスやらが変わったんで、それ以前のブログ記事やSOの質問には注意が必要。 Qiitaで公式bookの日本語訳を書いてた人もいたはずだけど、分からないところがあったら英語のリソース漁る方が早いと思う。 Rustの前にどんな言語を触っていたかは人それぞれなんで、新しく学ばないといけない概念も人それぞれ。 C++を触っていた人なら、明確なmove/copyの区別はすぐ分かるだろうし、borrow checkerの働きも理由を察することができるはず。 Rubyistだったら、Rust for Rubyistという記事がある。英語だけど。 ML系列の人だったら、RustのパターンマッチやADTは当たり前に分かるだろうし、Traitも型クラスみたいなものなので簡単。 Rustならではの新概念、といえばborrow checker(ownership, borrowing, lifetime)くらい。 borrow checkerは自作の型に参照型のメンバーががあるときは地獄のようだが、それ以外で怒られるときは分かりやすいエラーを出してくれる。 これさえ読めばすぐ分かる、完璧!という記事/本は英語圏でも無いんじゃないか。あったら教えてほしいくらい。
- 512 名前:508 mailto:sage [2016/01/16(土) 23:27:33.74 ID:z5FTR37d.net]
- >>511
そうなんですか、当分出ないのかなぁ。1.0でたから 出版考える人居るかと思いました。 後はオライリーのが出版された後に翻訳されることを期待ですかねぇ。 英語の峰もまだ出版は先みたいですが…
- 513 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 09:31:02.77 ID:q1eYL5ZR.net]
- 公式ドキュメントのThe Rust Programming Languageが要所を押さえて普通に分かりやすかった
日本語訳を探せばみつかるんじゃないの
- 514 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 20:08:53.13 ID:NZ+VESGj.net]
- 1.6リリース。
ttp://blog.rust-lang.org/2016/01/21/Rust-1.6.html libcoreがstableに -> 組み込み分野でstableバージョンのrustcが使えるようにするための第一歩。 現状、no_stdが使えない&libcore自身もstableじゃビルドできないんで、組み込み分野でnightlyを使うべきなのは変わらず。 crates.ioのパッケージは依存関係に*を使えなくなった -> パッケージ間の信頼性が上がったと思う
- 515 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 20:08:53.78 ID:TxuZu1KE.net]
- 紙の本でプログラミング言語を学ぶって不便じゃないか
- 516 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 23:51:29.07 ID:LnlCczkn.net]
- 全画面でエディタor IDE開いてるからなぁ…サブディスプレイほしい
- 517 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 07:16:12.42 ID:k3yqR1GN.net]
- GNU screen等のウィンドウ分割でも使えば?と思ったが
最近の子がそれを知ってる気がしないと思い直した >>514のスラドっぽいリリース紹介はなにを意図したもんなんだか わざわざ毎リリース紹介してくれなくてもいいんだぜ?
- 518 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:07:32.49 ID:GlCJ8Anu.net]
- スラド……?
GNU screenって、ターミナル上で動くエディタはともかくテキストブラウザでも使わせる気か
- 519 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 12:55:01.06 ID:k3yqR1GN.net]
- だから最近の子は使わないと思った
首も手もホームポジションから動かす必要なくて良いんだけどな
- 520 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 16:37:28.48 ID:TWxXeAW8.net]
- スラドっぽいとか言い出すのはスラド脳なのだろうか。
- 521 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 17:25:20.81 ID:GlCJ8Anu.net]
- えっと最近はscreenよりtmuxなんだっけ
https://tmux.github.io/
- 522 名前:デフォルトの名無しさん [2016/01/24(日) 03:15:01.30 ID:6zzJ2ABK.net]
- >>521
です。
- 523 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 09:23:05.78 ID:sP2ua92H.net]
- ム板がみんなスラッシュドットジャパンを知ってると思うのは大きな間違い
- 524 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 20:57:50.80 ID:STxspeQw.net]
- あの書き込みのどこがスラドっぽいのか分からない
日本語プログラミング系コミュニティは2chかスラドかみたいな人なのかな?
- 525 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 20:59:27.48 ID:MrtO9MQc.net]
- スラドって大学教授が見てるイメージ
- 526 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 13:54:26.47 ID:cvzC3wrO.net]
- 今更だが、スラドに食いつきまくりで皆知ってそうだと思った
- 527 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 21:23:19.46 ID:Lqy2URw7.net]
- 英語版スラドの現状
https://www.reddit.com/r/rust/comments/449tcd/slashdot_rust_16_released/czomgoi
- 528 名前:デフォルトの名無しさん [2016/02/12(金) 23:49:15.56 ID:duitB1tZ.net]
- FFIを使って他言語からRustの可変長引数の関数を呼びたいのですが、どのように書けばいいのでしょうか?
- 529 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:36:52.61 ID:I59nNjTY.net]
- Rustに可変長引数の関数はないはずだが
- 530 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 18:14:55.11 ID:tVuFpQtK.net]
- マクロの事やろなぁ
- 531 名前:526 [2016/02/13(土) 19:09:31.65 ID:ZWZaKmBv.net]
- 可変長引数の関数無いんですか…
おとなしくCかC++使います… ありがとうございました。
- 532 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 20:42:45.90 ID:tVuFpQtK.net]
- あなたが可変長引数関数と呼んでいるものは恐らく実在する
- 533 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 01:39:23.29 ID:+Fbk6tbu.net]
- rust入門的なドキュメントください。
流石に一番最初から英語はきついので、、、
- 534 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 02:29:50.02 ID:+Fbk6tbu.net]
- >>533
自己レスですがありました。 rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/
- 535 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 18:55:36.94 ID:+Fbk6tbu.net]
- Rustを勉強するのにいい大きさのオープンソースなプロダクトってありますか?
Servoみたいなおおきい物じゃなくて手軽なものでおすすめなものとかないでしょうか?
- 536 名前:510 mailto:sage [2016/02/14(日) 19:18:53.27 ID:ni3s66aP.net]
- >>534
良い情報ありがと 自分もこれから見てみることにします。
- 537 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 22:27:31.27 ID:atofBh+O.net]
- https://github.com/uutils/coreutils
これとかどうだろう
- 538 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 23:39:03.18 ID:+Fbk6tbu.net]
- >>537
まさにこんな感じです。ありがとうございます。 linux互換OSがrustで書かれる可能性とかあるんですかね。 所有権が使いこなせれば、メモリリークは絶対起きないんですか? だとしたらcより堅牢なOSがかける可能性もあるんでしょうか?
- 539 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 05:33:45.29 ID:W05/xALK.net]
- なんでRustは可変長引数に対応しないの?
マクロだと他言語から呼び出せないじゃん。
- 540 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 09:03:58.07 ID:TrFbduW3.net]
- 何かスタック壊されそう(適当)
配列をぶちこむとか、他言語側で引数をパースするラッパーを書くとか 想定してる用途がわからんけど
- 541 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 16:43:37.62 ID:6tNkwA+R.net]
- 可変長引数をサポートしてるって言語を見れば分かるけど、結局配列を渡してるだけってのがほとんどだよ。
ある意味foo!(v1, v2, v3) => foo(&[v1, v2, v3])みたいなマクロを備えているようなもんだと思う。 他の言語から呼ぶといっても、rust->C->他の言語って感じになるから、Cのstdarg.hに仕様を合わせるのもなあ。合わせたらno_stdじゃ使えなくなるだろうし。 自分には僅かなメリットとしか見えない一方、可変長引数を受け取って別の可変長引数関数に渡すときにどうする?っていう問題が出てくるから、 現状でええやんと思ってしまう。 >>538 RedoxというRustでOSを作るってプロジェクトはあるよ。どれくらい本気なのかは分からない。 あとRobigaliaっていうseL4上にRustで書いたプログラムを動かそう、そういう環境を作ろうというプロジェクトもある。 こっちは本当にできたばっかしなので本気度も展望も無いが。
- 542 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 22:35:50.35 ID:zmpURjkn.net]
- printfみたいな奴なら、Rust側で書式データとポインタ配列(と要素数?)を引数に取れれば良いのでは
他言語側で可変長引数をポインタ配列にするラッパーを噛ませればそれっぽくなる気がする 実用性は知らない
- 543 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 03:00:30.52 ID:JcT98VoE.net]
- impl Trait for Structより
impl Struct by Traitかimpl Struct with Traitのほうが良かった
- 544 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 07:12:06.10 ID:xwZAj62o.net]
- キーワードが増えるのが嫌がられそう
- 545 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 11:22:15.41 ID:lRUD/4+H.net]
- 未だに box 表現って改変が議論中なのかよ。
- 546 名前:デフォルトの名無しさん mailto:sage [2016/03/22(火) 10:38:06.53 ID:bLb0KsFB.net]
- Android向けのrustコードビルドが通らなくなってて泣いた
rustが悪いんじゃなく Android NDK のビルドツール更新が悪いんだろうけど、もっかい環境作り直すか、、、
- 547 名前:デフォルトの名無しさん mailto:sage [2016/03/22(火) 13:01:38.89 ID:rMJb+Szz.net]
- よくやりがちなんだけど、ttps://users.rust-lang.org/t/newbie-e0499-help-please/5001 みたいに
あるデータを管理するような型、OOPとかで頻出のマネージャークラスをRustでやろうとするとselfを二度貸しすんなって怒られるよね。 ↑の例で言うとImageLibの所有権やref mutが必要無いのに要求するImageLib.load_imageが悪いって思いつくまでに結構かかる。
- 548 名前:デフォルトの名無しさん [2016/03/31(木) 19:12:30.43 ID:G0b7bqcg.net]
- Rust ←これ何て読むの?「ルスト」?「ルースト」?「ラスト」?
- 549 名前:デフォルトの名無しさん mailto:sage [2016/03/31(木) 19:23:00.93 ID:JUFQTQot.net]
- ラスト。[rʌst]
[rʌ] はラン run のラ。st はストリート street のスト。
- 550 名前:デフォルトの名無しさん mailto:sage [2016/03/31(木) 20:07:07.51 ID:G0b7bqcg.net]
- d
ラストって読むのか
- 551 名前:デフォルトの名無しさん [2016/04/15(金) 21:46:53.26 ID:PXsY1g2V.net]
- impl<M: Clone + 'static, T: Clone + 'static> expression::Expression<T> for SelectQuery<(T,), LimitOne, M> { }
これのClone + 'staticってどういう意味なのでしょうか?
- 552 名前:デフォルトの名無しさん mailto:sage [2016/04/16(土) 07:38:20.94 ID:NZYWg9ol.net]
- Cloneを実装していて、かつ寿命が'static
- 553 名前:549 [2016/04/16(土) 21:08:32.91 ID:SpsCGcWk.net]
- >>552
ありがとうございます!
- 554 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 06:25:09.22 ID:cLRJyW4r.net]
- println!("{0} = 0x{0:X}", val)
みたいなことやりたいんだけどうまい方法ってないですかね なんか現状だと println!("{} = 0x{:X}", val, val) みたいなことするハメになって気持ち悪い
- 555 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 10:58:01.58 ID:fLgoilFs.net]
- 自分でマクロ書く
その気持ち悪さは人に依るので、自分好みを作った方が早そう
- 556 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 14:05:41.70 ID:VY8v6naW.net]
- https://github.com/rust-lang/rust/issues/9456
- 557 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 20:47:19.04 ID:6uoJvpYY.net]
- RustでLisp並みにマクロが簡単に作れたら嬉しい。
コンパイル時計算の手段がマクロとunstableなpluginしか無いので特に。
- 558 名前:デフォルトの名無しさん [2016/04/18(月) 05:41:14.17 ID:poa5Wxih.net]
- ライフタイムが理解できない…みなさんどうやって覚えました?
- 559 名前:デフォルトの名無しさん mailto:sage [2016/04/18(月) 07:21:50.19 ID:DCvRqpmU.net]
- Rust by Exampleを見て理解した気がする
- 560 名前:デフォルトの名無しさん mailto:sage [2016/04/18(月) 12:47:52.65 ID:3Lsmx9th.net]
- windowsのrustで、現在時刻を取る方法ってある?
timeもclock_gettimeも使えなさそう。 もしや自分でFFIアクセスで書くしかない?
- 561 名前:デフォルトの名無しさん mailto:sage [2016/04/18(月) 13:00:31.00 ID:RPQ9NKJO.net]
- lifetime parameterが出てくる箇所それぞれで、何を意味してるかを日本語で書いてみるといいよ。
例えば関数定義時のlifetimeだったら fn foo<'a>(x: &'a T) -> &'a T { .. } と3箇所で出てくる。 1. <'a> は、関数fooの中で'aというlifetime parameterを使うよ、というコンパイラに対する宣言 2. x: &'a Tは、引数xは、型Tの参照で、この参照の寿命を'aと呼ぶよ、という一種のバインド('a = lifetime(x)みたいな?) 3. -> &'a Tは、関数の戻り値の寿命は2で示したように、xと同じだよ、という誓約。 関数書く側は誓約3を満たすようにコードを書かなきゃいけないし、 関数呼ぶ側は誓約3が守られていることを期待して関数を使う。
- 562 名前:デフォルトの名無しさん mailto:sage [2016/04/18(月) 13:05:34.90 ID:RPQ9NKJO.net]
- >>560
crates.ioのtimeはwinapiにも依存してるからおそらくクロスプラットホームかと。
- 563 名前:556 [2016/04/18(月) 22:09:34.70 ID:poa5Wxih.net]
- >>559,559
ありがとうございます! 精進します!
- 564 名前:デフォルトの名無しさん mailto:sage [2016/04/18(月) 22:31:43.44 ID:U/aSeuNM.net]
- 全ての&は実は&'a みたいなのを省略しているってのを意識するといいかも
- 565 名前:デフォルトの名無しさん mailto:sage [2016/04/18(月) 23:57:45.45 ID:IKRsVdN1.net]
- >>560
この間のrust1.8でstd::time::SystemTime::nowがstableになったのでUnix時刻が欲しいだけならこれでも良さそう。カレンダーとかタイムゾーンまでやるならcrateのtimeだろうけど。
- 566 名前:デフォルトの名無しさん mailto:sage [2016/04/19(火) 08:34:44.12 ID:SvHoNoSF.net]
- >>562
おぉ、ありがとうー。 まだrust始めたばかりで、cratesまで目がいってなかったわ。 >>565 あざっす。 そっちは使ってみたんだけど、期間計測向き(clockに近いか)だよね。 まさにカレンダー値が欲しかった。
- 567 名前:デフォルトの名無しさん mailto:sage [2016/04/19(火) 13:59:14.59 ID:SvHoNoSF.net]
- >>562
ありがとうー。 time::now()でバッチリだった。
- 568 名前:デフォルトの名無しさん mailto:sage [2016/04/19(火) 15:31:42.42 ID:ZFbfu4SE.net]
- Rustは標準ライブラリを必要最小限にする方針なので必ずチェックする
こことかが纏まってていいかも https://github.com/kud1ing/awesome-rust/blob/master/README.md
- 569 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 11:12:41.87 ID:XZ847tuS.net]
- 'あ'.is_alphabetic() => trueなのな。ウィキペディアのアルファベットの項の意味、らしい。
'。'とか'、'といった音にならない文字が非アルファベットで、他の発音する文字は全部アルファベットなのか。 日本じゃアルファベットと言えば[A-Za-z]だけど、他の(非欧米圏の)国では自国の表音文字もアルファベットと呼ぶのが一般的なのか?
- 570 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 15:31:46.87 ID:h2QcRVy8.net]
- alphabetは単に「表音文字」「基本的な構成要素」って意味だからな
[A-Za-z]はラテン字(Latin alphabet)、あるいはローマ字(Roman alphabet)
- 571 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 21:12:18.40 ID:pIEmO+zY.net]
- アルファベットって言葉も多義的だもんな。有限個の文字集合って意味の時もあるし。
- 572 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 11:34:13.71 ID:vkMfBoHo.net]
- 逆に[A-Za-z]だけを判定したいときの関数ってビルトインじゃないの?
それ不便じゃない
- 573 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 12:52:30.32 ID:UQ/RDeWl.net]
- is_alphabeticとstd::ascii::AsciiExt::is_asciiで判別可能。
fn is_abc(c: char) -> bool { c.is_alphabetic() && c.is_ascii() } もっと簡単にmatch c with { 'a' ... 'z' | 'A' ... 'Z' => { } } とすると応用も効いて楽。
- 574 名前:デフォルトの名無しさん [2016/04/25(月) 21:51:50.82 ID:ZO17CzTB.net]
- b"mysql"
この「b」って関数(?)どうやって定義するんですか?
- 575 名前:デフォルトの名無しさん mailto:sage [2016/04/25(月) 22:21:04.08 ID:J5O1W2lq.net]
- それリテラルでしょ。
Rust にユーザー定義リテラルは無かったと思うけど。
- 576 名前:572 [2016/04/25(月) 22:27:29.58 ID:ZO17CzTB.net]
- >>575
ありがとうございます! 無いんですね…残念…
- 577 名前:デフォルトの名無しさん mailto:sage [2016/04/25(月) 22:32:56.21 ID:J5O1W2lq.net]
- ユーザー定義リテラルは C++ の仕事だね。
- 578 名前:デフォルトの名無しさん mailto:sage [2016/04/25(月) 23:07:48.87 ID:1QTyW0zP.net]
- Rustならマクロでなんとかすべきかな
- 579 名前:デフォルトの名無しさん mailto:sage [2016/04/26(火) 10:53:24.23 ID:W7yJO6It.net]
- なんでセミコロンが必要なんですか
- 580 名前:デフォルトの名無しさん mailto:sage [2016/04/26(火) 14:06:23.04 ID:XWVUSc0/.net]
- >>579 ";"を付けて、この式の値は使わない(unit型)だとプログラマが明示してやると色々便利だから。
";"の有無でその式の値を返す(使う)かどうかをreturnを使わずに指定できる。 もしreturn文が必須ということになると、{}で一連の処理をブロック化して書くときにも"return 値"が必須になって、エラーのため大域脱出したいときに困る。 というのが建前。Algol系列で演算子のユーザー定義ができない文法だから、省略してもいいような箇所、例えばlet文の末尾とかあるとは思う。 元々OCamlで開発されてたせいで、MLの香りが随所に残っているという歴史的経緯と、 構文解析しやすいっていう本音と、先々の拡張に今のコードが耐えうる形にしたいのでは、という推測がある。
- 581 名前:デフォルトの名無しさん mailto:sage [2016/04/26(火) 14:16:05.00 ID:gziRJOQu.net]
- 個人的邪推が強いなw
公式サイトとQAにあるから、その通りに解釈しとけば幸せ
- 582 名前:デフォルトの名無しさん mailto:sage [2016/04/26(火) 20:04:42.44 ID:ORQVNS3H.net]
- if a > b {a} else {b}; // これより
if a > b then a else b end # これがいい if a > b then a else b (* これがさらにいい *)
- 583 名前:デフォルトの名無しさん mailto:sage [2016/04/26(火) 22:47:31.69 ID:gziRJOQu.net]
- どの言語のことか分からんが、それなら三項演算子でいいんじゃね
省略を美徳と見るならthenとかelseはウザイわ rustの;や{}は別の観点を美徳としてると解釈してる 万人が好む美徳とは思ってないけど
- 584 名前:デフォルトの名無しさん mailto:sage [2016/04/26(火) 23:29:34.25 ID:XWVUSc0/.net]
- 1. Rust
2. Ruby 3. OCaml Rustは型注釈もML系からもっと輸入すべきだったと思う。 fn foo<T, U>(x: T) -> U より、fn foo: 'T -> 'Uとか fn foo:: T, U => T->Uとかの方が見やすい。 lifetime parameterをどう書くかを考慮する必要はあるけど、 型注釈と変数が一緒になってるより良いと思う。
- 585 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 00:10:16.86 ID:HJXKmY0b.net]
- そこまでML文法好きならML言語のコンパイラ強化を推進してはどうか
俺はC++やJavaライクで今の文法の方が分かりやすいぞ
- 586 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 00:58:25.51 ID:KaqBk466.net]
- Rustの名前の由来は錆ではなくサビキン(錆菌)という噂を聞いた
- 587 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 21:19:35.52 ID:nQ0T9aCz.net]
- rust使ってる人って何作ってるの?
ブラウザ以外で。 golangはWebAPIサーバ コマンドラインアプリ swiftはiosアプリ kotlinはandroid ってすみ分けができてるけどrustの得意分野はどこ? OS?
- 588 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 22:13:38.50 ID:oaLnAHx1.net]
- RustでOS作ってるしエディタも作ってるのを見つけた
Rustは単純にC++の代替でしょ
- 589 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 22:16:41.12 ID:Q0S16tI3.net]
- コアなライブラリ作るのに適してる
UIやスレッド持つレイヤーまで上がるなら他言語の方が取り回し良いと思う
- 590 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 00:02:47.40 ID:NuB51tNS.net]
- 今までc/c++で作っていた分野の、特に並列性のあるプログラムの置き換えに適している、と思う。
ゼロコスト原則と、言語レベルでの並列性サポートが強力、と思う。
- 591 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 01:42:14.94 ID:Ew5+6UlM.net]
- crates.io見る限りだと、フレームワークの更に下の部分作ってる人が多いイメージ
- 592 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 06:58:13.04 ID:KOzpN5av.net]
- >>590
並列性は安全ではあるが性能を考慮してるようには見えないがなぁ goが並列性を強化してるは理解出来るが、rustは並列でも安全だけど性能は従来同等かそれ以下? ゼロコストを気にする性能を求めるならマルチスレッドプログラミングは他レイヤーに任せた方が良さそう
- 593 名前:デフォルトの名無しさん [2016/04/29(金) 13:41:09.09 ID:7UhRF0XY.net]
- MacでCargoを使ってLinux用のバイナリを作成したいのですが、どうやればできますか?
- 594 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 15:01:33.90 ID:JX6DmXiZ.net]
- >>593
Linuxバイナリ(elfフォーマット?)を吐くクロスコンパイルのためのgccを用意し、 rustcのコマンドラインオプションでリンカとしてgcc渡せばいけるらしい 適当にググって見つかった記事 解説記事(英語) https://github.com/japaric/rust-cross/blob/master/README.md#cross-compiling-with-rustc 日本語記事 qiita.com/yasuyuky/items/7849931d4924864e40b3 ARMバイナリの説明っぽいけど、上の記事から同様にできそう
- 595 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 20:53:52.02 ID:NuB51tNS.net]
- >>592
他のレイヤーって、どんな選択肢があるの? goとrustの目標は同じようなものじゃないかな、と思う。 現状の結果も似たようなもんに見えるし。 いや、厳密に比較した訳じゃないけどね…
- 596 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 21:40:02.52 ID:6d5pj9gK.net]
- rustはGCもないしgoよりもっと機械より
リアルタイム性が必要なところではrustに分がありそう
- 597 名前:591 [2016/04/29(金) 21:57:03.71 ID:7UhRF0XY.net]
- >>594
ありがとうございます!試してみます!
- 598 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 06:49:30.08 ID:RNVquJmq.net]
- >>592
まあ、注意して書けばC++と同等のパフォーマンスが出る、というのが実際のところでしょう Rust特有のオーバーヘッドとかは無いですし
- 599 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 08:27:27.63 ID:NXU0px5d.net]
- >>597
rustup使うとクロスコンパイル用のターゲット追加も簡単にできるらしい
- 600 名前:デフォルトの名無しさん [2016/04/30(土) 14:34:10.03 ID:Q97tfhpp.net]
- >>591
まだ若い言語だし、学習コストも高目だからかねー。
- 601 名前:595 [2016/04/30(土) 14:48:55.99 ID:hZlPwcrG.net]
- >>599
rustup試してみましたが以下のエラーが出てビルドできませんでした。 $ cargo build --target x86_64-unknown-linux-gnu Compiling philosopher v0.1.0 (file:///Users/hoge/rust/philosopher) error: linking with `cc` failed: exit code: 1 note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L"...(長すぎて書き込めないので省略) note: clang: warning: argument unused during compilation: '-pie' ld: unknown option: --as-needed clang: error: linker command failed with exit code 1 (use -v to see invocation) error: aborting due to previous error
- 602 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 20:19:13.61 ID:nmBsk/Cs.net]
- >>601
unknown optionで落ちてるから、clangのバージョンの問題じゃない? なんとなく
- 603 名前:599 [2016/04/30(土) 23:06:42.19 ID:QU2PhAJ9.net]
- >>602
一応新しいバージョンを使っているはずなのですが… $ clang --version Apple LLVM version 7.3.0 (clang-703.0.29) ちなみにbrewでgccをインストールしてcargoのリンカをそれに設定してもダメでした…
- 604 名前:デフォルトの名無しさん [2016/05/01(日) 00:09:25.06 ID:C8GC+yTl.net]
- JavaですらC++の二十倍速いのに同等ってことは無いだろう。
- 605 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 14:02:22.00 ID:vpP9ivFq.net]
- VMとネイティブだよ?
C++のライブラリのどっかの出来が悪くて遅いみたいな話かな 「Java 20倍 C++」とかで検索するとJavaがCの10〜20倍遅いって記述しか見当たらん
- 606 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 14:07:31.13 ID:g2gZsLck.net]
- 多くのJava VMはC++で出来てるんだからC++より速くはならんだろ
と思ったが、スレッドプールを事前に用意&スレッドオブジェクト解放をGCに任せて遅延させるなどで、それらを計測時間に含めないなら速く見えるか その辺加味してもrustはどうだろうね ライフサイクルに合わせてスレッドオブジェクト生成、解放してるなら高々同等になりそうなものだが
- 607 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 14:17:07.11 ID:vpP9ivFq.net]
- LLVMでネイティブコンパイルされるんだから、言語よりライブラリの問題だな
それこそRustは低レベルプログラミングが出来る訳だし
- 608 名前:デフォルトの名無しさん [2016/05/01(日) 17:13:53.64 ID:tKi6j9CT.net]
- 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています 言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか? Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw The Covenant Project 概要 Covenantは、純粋P2Pのファイル共有ソフトです 目的 インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します 特徴 Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW) 接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です DHTにはKademlia + コネクションプールを使用します UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません 1p
- 609 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 19:42:13.84 ID:vpP9ivFq.net]
- その人を困らせようと思っているのでない限り、>>608の行動は間違っている
- 610 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 19:53:36.50 ID:5f/j1Sd0.net]
- まあ悪意でやってるんだろう。
- 611 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 20:15:56.60 ID:jOtWeASF.net]
- D言語スレにもあったぞこれ
|

|