Mozilla発のプログラミング言語「Rust」のスレです
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
前スレ
プログラミング言語 Rust 3
https://mevius.5ch.net/test/read.cgi/tech/1495343069/
プログラミング言語 Rust 4
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/10/14(土) 17:38:14.04ID:uWD69LeP683デフォルトの名無しさん
2018/01/15(月) 12:11:40.00ID:9C6ITO5u 人生楽しくなさそうだね
684デフォルトの名無しさん
2018/01/15(月) 12:31:52.75ID:Cin8FKvr 逆にどんどん使ってくれというところもあるし場所によるとしか
どちらのケースが多いかは知らない
どちらのケースが多いかは知らない
685デフォルトの名無しさん
2018/01/15(月) 13:32:29.94ID:w3dU/zjB686デフォルトの名無しさん
2018/01/15(月) 13:55:34.30ID:plpGsHa9 人間、数回の経験ですべてがそうであると錯覚しやすいからねー
特に失敗は記憶に残りやすい(将来に活かせるとは言ってない)
特に失敗は記憶に残りやすい(将来に活かせるとは言ってない)
687デフォルトの名無しさん
2018/01/15(月) 14:29:56.48ID:w3dU/zjB ところで全く話変わるんだけど。
最近Rustの勉強をしてるんだけど、まだ慣れないし、C++もあまりやってこなかったので、
俺のバカな頭じゃ理解できないことがいっぱいあるから誰か教えて。
質問1
Rustってimmutable参照は複数持てるけど、mutable参照は1つしか持てない決まりになってるよね。
それってたぶんマルチスレッドのことを考えてそうなってるんだよね?(この時点ですでに勘違いしてる?)
けどRustではSyncトレイトとSendトレイトを実装してない限り、スレッド間で変数の受け渡しできないんだよね?
これって逆に言えばSyncとSendを実装してない場合はシングルスレッドなんだからmutable参照が複数あっても問題ないんじゃないの?
なんでマルチスレッドを全く使わないコードを書いてる時でもmutable参照は1つだけしか使えないの?
SyncトレイトとSendトレイトについてなんか勘違いしてる?
質問2
Rustで木構造やグラフ構造を定義する時に循環参照(子が親の参照を持ちたいとか)する時って、たぶんRcとWeakを使うことになるよね?
そして木構造を可変にしたいときはさらにRc<RefCell<T>>って形になるよね?
このRefCell使うとボローチェッカの制約をコンパイルエラーじゃなくて実行時にパニックするように変わるんだよね?
こうするしかないのはRc<RefCell<T>>使わずに木構造を作ろうとして執行錯誤したけど無理だったからそうするしかないんだなと思って納得したんだけど、
RefCell使っちゃうとボローチェッカが効かなくなるからせっかくRustを使ってるメリットが無くなったような気がしてくるんだよね。
それでもRustを使うメリットって何?
RefCell使ってるとこ以外はボローチェッカが効くんだからunsafeコードと同じようにラッパーで包んでやれば上位層に悪影響は出ないよねってこと?
それともC++とかで同じように木構造を作ると、Rustだと単純にパニックするだけだけど、C++だとデバッグがメチャクチャ困難なバグになったりするの?
たとえRefCellを使っていたとしてもRustを使うメリットはしっかりあるんだって思える明確な理由を誰か教えて。
この言語やってるともしかして俺ってすっげーバカなの?って不安になってくる。
長文すいませんが、誰か教えてください。
最近Rustの勉強をしてるんだけど、まだ慣れないし、C++もあまりやってこなかったので、
俺のバカな頭じゃ理解できないことがいっぱいあるから誰か教えて。
質問1
Rustってimmutable参照は複数持てるけど、mutable参照は1つしか持てない決まりになってるよね。
それってたぶんマルチスレッドのことを考えてそうなってるんだよね?(この時点ですでに勘違いしてる?)
けどRustではSyncトレイトとSendトレイトを実装してない限り、スレッド間で変数の受け渡しできないんだよね?
これって逆に言えばSyncとSendを実装してない場合はシングルスレッドなんだからmutable参照が複数あっても問題ないんじゃないの?
なんでマルチスレッドを全く使わないコードを書いてる時でもmutable参照は1つだけしか使えないの?
SyncトレイトとSendトレイトについてなんか勘違いしてる?
質問2
Rustで木構造やグラフ構造を定義する時に循環参照(子が親の参照を持ちたいとか)する時って、たぶんRcとWeakを使うことになるよね?
そして木構造を可変にしたいときはさらにRc<RefCell<T>>って形になるよね?
このRefCell使うとボローチェッカの制約をコンパイルエラーじゃなくて実行時にパニックするように変わるんだよね?
こうするしかないのはRc<RefCell<T>>使わずに木構造を作ろうとして執行錯誤したけど無理だったからそうするしかないんだなと思って納得したんだけど、
RefCell使っちゃうとボローチェッカが効かなくなるからせっかくRustを使ってるメリットが無くなったような気がしてくるんだよね。
それでもRustを使うメリットって何?
RefCell使ってるとこ以外はボローチェッカが効くんだからunsafeコードと同じようにラッパーで包んでやれば上位層に悪影響は出ないよねってこと?
それともC++とかで同じように木構造を作ると、Rustだと単純にパニックするだけだけど、C++だとデバッグがメチャクチャ困難なバグになったりするの?
たとえRefCellを使っていたとしてもRustを使うメリットはしっかりあるんだって思える明確な理由を誰か教えて。
この言語やってるともしかして俺ってすっげーバカなの?って不安になってくる。
長文すいませんが、誰か教えてください。
688デフォルトの名無しさん
2018/01/15(月) 14:49:21.64ID:RpZewdhM Rustなんて使った時点で騙されてる
その辺は言語設計が破綻してる証拠
悪いこと言わんからC++きちんと勉強してRustは忘れよう
その辺は言語設計が破綻してる証拠
悪いこと言わんからC++きちんと勉強してRustは忘れよう
689デフォルトの名無しさん
2018/01/15(月) 15:28:44.95ID:w3dU/zjB690デフォルトの名無しさん
2018/01/15(月) 16:35:55.57ID:tRnPToa/ 木構造にRcは要らんだろ
各ノードは直接の親にしか所有されないんだから
各ノードは直接の親にしか所有されないんだから
691デフォルトの名無しさん
2018/01/15(月) 17:21:29.47ID:pZIK1LNL 質問1について分かりやすいのがforループだな
あるベクタをforループ中に、forの対象にしてるベクタそのものにpushするみたいな黒魔術操作を禁止するために
forループを回してる間は回す対象の配列にイミュータブル参照を作ってる状態にしてコンパイラにチェックさせる
あるベクタをforループ中に、forの対象にしてるベクタそのものにpushするみたいな黒魔術操作を禁止するために
forループを回してる間は回す対象の配列にイミュータブル参照を作ってる状態にしてコンパイラにチェックさせる
692デフォルトの名無しさん
2018/01/15(月) 17:44:57.62ID:prlexpko 質問1がそうなっている理由は、以下のようなケースで解放済みのVecにアクセスしてしまうことを防ぐというのもある
let mut foo = Some(vec![]);
let foo_mut = &mut foo;
let foo_ref = foo.as_ref().unwrap();
foo_mut = None;
println!("{:?}", foo_ref); // drop 済みのVecへのアクセス
let mut foo = Some(vec![]);
let foo_mut = &mut foo;
let foo_ref = foo.as_ref().unwrap();
foo_mut = None;
println!("{:?}", foo_ref); // drop 済みのVecへのアクセス
693デフォルトの名無しさん
2018/01/15(月) 19:10:45.82ID:pZIK1LNL 重箱の隅だが四行目は
*foo_mut = None
だな
*foo_mut = None
だな
694デフォルトの名無しさん
2018/01/15(月) 20:48:46.10ID:w3dU/zjB >>691, >>692
なるほど。mutable参照が1つしか取れない理由はマルチスレッド以外にも理由があったのか。
単純なコードだけど実際に示されないと気が付けないな。(少なくとも俺は)
やっぱりGC無しの言語はメモリ管理が難しいな。
そして、それをコンパイラがはじいてくれるのはやっぱり有難い。
納得のいく答えが得られた。教えてくれてありがとう。
>>690
それは木構造でも親から子を辿るだけで済む場合に限定されない?子から親を辿りたくなった場合だと無理じゃない?
子は複数いるんだからそれぞれの子が全て親のmutable参照を持つことはできないよね。
だって、mutable参照は1つしか作れないんだから。
そうするとRcとWeakとRefCellを使わざるを得なくなるよね?ならない?使わなくても済む方法があるの?
ちなみにRcじゃなくてArenaっていう仕組みを使うって方法ならどっかのブログで見たんだけど、
その方法だと動的に追加していくことは出来るけど、動的に削除を行うことは出来ないよね。
例えばJavaScriptのDomツリーとかはparentNodeで子から親のNodeを辿れるようになってるし、
appendChildとかremoveChildとかでNodeを動的に追加したり削除したりももちろん出来るよね。
それと同じようなことをRustでもしたかったらRcとWeakとRefCellを使うしかないんじゃないかと思ってるんだけど。
なるほど。mutable参照が1つしか取れない理由はマルチスレッド以外にも理由があったのか。
単純なコードだけど実際に示されないと気が付けないな。(少なくとも俺は)
やっぱりGC無しの言語はメモリ管理が難しいな。
そして、それをコンパイラがはじいてくれるのはやっぱり有難い。
納得のいく答えが得られた。教えてくれてありがとう。
>>690
それは木構造でも親から子を辿るだけで済む場合に限定されない?子から親を辿りたくなった場合だと無理じゃない?
子は複数いるんだからそれぞれの子が全て親のmutable参照を持つことはできないよね。
だって、mutable参照は1つしか作れないんだから。
そうするとRcとWeakとRefCellを使わざるを得なくなるよね?ならない?使わなくても済む方法があるの?
ちなみにRcじゃなくてArenaっていう仕組みを使うって方法ならどっかのブログで見たんだけど、
その方法だと動的に追加していくことは出来るけど、動的に削除を行うことは出来ないよね。
例えばJavaScriptのDomツリーとかはparentNodeで子から親のNodeを辿れるようになってるし、
appendChildとかremoveChildとかでNodeを動的に追加したり削除したりももちろん出来るよね。
それと同じようなことをRustでもしたかったらRcとWeakとRefCellを使うしかないんじゃないかと思ってるんだけど。
695デフォルトの名無しさん
2018/01/15(月) 20:53:28.00ID:Cin8FKvr 双方向参照する場合はそう
RefCell使わなければならないケースでrustの方がうれしいのは、
実行時にはなってしまうが&mutのエイリアスがチェックされることかな
C++だと領域破壊してもそれらしく動いてしまうとかあり得てバグの発見が遅れる
RefCell使わなければならないケースでrustの方がうれしいのは、
実行時にはなってしまうが&mutのエイリアスがチェックされることかな
C++だと領域破壊してもそれらしく動いてしまうとかあり得てバグの発見が遅れる
696デフォルトの名無しさん
2018/01/16(火) 05:17:55.44ID:4jams3dQ697デフォルトの名無しさん
2018/01/16(火) 12:11:08.60ID:JwS671kg https://news.mynavi.jp/article/20180110-568199/
モジラ工作員ざまあ!!!wwwww
いやー一年は工作でごまかせたかもしれないがさすがにメッキが剥げてきたね!
これが現実!!
騙されてるやつはまだ間に合うぞ!
モジラ工作員ざまあ!!!wwwww
いやー一年は工作でごまかせたかもしれないがさすがにメッキが剥げてきたね!
これが現実!!
騙されてるやつはまだ間に合うぞ!
698デフォルトの名無しさん
2018/01/16(火) 12:21:19.07ID:Tvp4qB7j699デフォルトの名無しさん
2018/01/16(火) 13:02:13.48ID:JwS671kg700デフォルトの名無しさん
2018/01/16(火) 13:03:09.51ID:InRpqwJl701デフォルトの名無しさん
2018/01/16(火) 13:18:52.31ID:4ikneXPL そもそも、みんなが使ってる言語だから良い言語みたいな理論を持ち出せば、
PHPをとても良い言語だと認識しければならなくなるんだが。
その辺を>>697はどう考えてるんだ?たぶん何も考えてないんだろうけど。
それとも、もしかしてPHP最高!とか思ってる奴だったか。
PHPをとても良い言語だと認識しければならなくなるんだが。
その辺を>>697はどう考えてるんだ?たぶん何も考えてないんだろうけど。
それとも、もしかしてPHP最高!とか思ってる奴だったか。
702デフォルトの名無しさん
2018/01/16(火) 13:31:11.79ID:JwS671kg703デフォルトの名無しさん
2018/01/16(火) 13:37:29.94ID:4ikneXPL だれも見向きもしない言語ってのはつまり人気のない言語のことだろ。
人気のない言語はクソ言語ってことにすると、逆説的に、
人気のある言語は良い言語になっちゃうよね。
人気のない言語はクソ言語ってことにすると、逆説的に、
人気のある言語は良い言語になっちゃうよね。
704デフォルトの名無しさん
2018/01/16(火) 13:39:54.74ID:JwS671kg 論理学できない人?
見向きもされないのは悪い言語 が真でも
見向きされる言語は良い言語 は真じゃないよ?
論理学できないからRustなんてもてはやすんだろうけど
見向きもされないのは悪い言語 が真でも
見向きされる言語は良い言語 は真じゃないよ?
論理学できないからRustなんてもてはやすんだろうけど
705デフォルトの名無しさん
2018/01/16(火) 13:50:01.38ID:0jSYVjYj その理屈は論理学として正しいがそれを認めると
順位表では何が良い言語か一生懸命みてもわからんから意味なさそう
順位表では何が良い言語か一生懸命みてもわからんから意味なさそう
706デフォルトの名無しさん
2018/01/16(火) 14:05:58.36ID:4ikneXPL >>704
それは悪かった。
どうせ君は物事を1か0でしか考えられない人間だと思ってたから、
そういう思考回路の人間だと思って会話を進めようとしてしまった。
じゃあ、別の方向から突かせてもらうけど、
関数型言語って最近(最近というほどでもないか?)の流行りじゃん?
でも、関数型言語の祖先ってLispとか言われてたりするよね。
で、そのLispはかなり昔から存在したわけだよね。
何で昔は一部の物好きだけが使ってて他は見向きもしなかったのに、
今更になって認められていろんな言語にラムダ式とかが採用されたの?
見向きもされない言語はクソ言語のはずなのになんで?
(ちなみにこの理論は反論できる余地があります)
それは悪かった。
どうせ君は物事を1か0でしか考えられない人間だと思ってたから、
そういう思考回路の人間だと思って会話を進めようとしてしまった。
じゃあ、別の方向から突かせてもらうけど、
関数型言語って最近(最近というほどでもないか?)の流行りじゃん?
でも、関数型言語の祖先ってLispとか言われてたりするよね。
で、そのLispはかなり昔から存在したわけだよね。
何で昔は一部の物好きだけが使ってて他は見向きもしなかったのに、
今更になって認められていろんな言語にラムダ式とかが採用されたの?
見向きもされない言語はクソ言語のはずなのになんで?
(ちなみにこの理論は反論できる余地があります)
707デフォルトの名無しさん
2018/01/16(火) 14:40:03.83ID:JwS671kg Lispが関数型言語の祖先かと言われると副作用だらけだし違和感しかないな
別に最近の言語のラムダ式はラムダ計算を構文に持ち込んだだけで、LispのS式まわりの成果を持ち込んだわけでもなかろうに
どちらかというとHaskellとかML系列の成果の方が主だろう
RustがLisp的な立ち位置になると言いたいんだろうが、言語のお粗末な出来から言ってもそれはない
別に最近の言語のラムダ式はラムダ計算を構文に持ち込んだだけで、LispのS式まわりの成果を持ち込んだわけでもなかろうに
どちらかというとHaskellとかML系列の成果の方が主だろう
RustがLisp的な立ち位置になると言いたいんだろうが、言語のお粗末な出来から言ってもそれはない
708デフォルトの名無しさん
2018/01/16(火) 14:45:36.44ID:4ikneXPL 別にLispに限定した話じゃないよ。
関数型言語って昔からあるよね。でも当時は誰も見向きもしなかったよね。
見向きもされない言語がクソ言語なら関数型言語が
今更になって認められるのはおかしいよね?ってだけ。
関数型言語って昔からあるよね。でも当時は誰も見向きもしなかったよね。
見向きもされない言語がクソ言語なら関数型言語が
今更になって認められるのはおかしいよね?ってだけ。
709デフォルトの名無しさん
2018/01/16(火) 16:31:38.96ID:bxI2XEx+ 言語が変わらなくても時間の経過によって環境の方が変化して評価が変わることは十分に有り得る
プロセッサ負荷やメモリ使用量などの足枷がユルユルになって来たことで評価が高くなったのではないか
従って当時とか現在とかの時世を無視しては語れないこともある
プロセッサ負荷やメモリ使用量などの足枷がユルユルになって来たことで評価が高くなったのではないか
従って当時とか現在とかの時世を無視しては語れないこともある
710デフォルトの名無しさん
2018/01/16(火) 16:51:39.64ID:JwS671kg それを認めると将来Rustがクソではなかったと証明される余地があるってことで、
それは事実ではないから違うな
今評価されてるのはあくまでラムダ計算であってLispではない、と言えば分かるか?
それは事実ではないから違うな
今評価されてるのはあくまでラムダ計算であってLispではない、と言えば分かるか?
711デフォルトの名無しさん
2018/01/16(火) 16:54:05.43ID:4ikneXPL712デフォルトの名無しさん
2018/01/16(火) 16:56:00.39ID:6i0TmEx8 木構造もインデックス使って書かないといけないのか
713デフォルトの名無しさん
2018/01/16(火) 17:19:58.51ID:4ikneXPL714デフォルトの名無しさん
2018/01/16(火) 17:41:30.80ID:O2dbzEJM ここまで言語に粘着する精神が理解出来ない
715デフォルトの名無しさん
2018/01/16(火) 18:24:58.75ID:IF1qR6jo >>694
子→親のリンク無し縛りでも動的な追加削除はできると思うけど。
子からのリンクが必要なのは、各ノードへの参照をそのままイテレータとして見せて前後移動したい場合のみじゃね
で、まあ、子からのリンクが絶対必要として、そのためにRc使って要らん参照カウンタと間接参照を各ノード毎に持たせるってすごい無駄に思える
諦めてraw pointerでいいんじゃないかなあ……
子→親のリンク無し縛りでも動的な追加削除はできると思うけど。
子からのリンクが必要なのは、各ノードへの参照をそのままイテレータとして見せて前後移動したい場合のみじゃね
で、まあ、子からのリンクが絶対必要として、そのためにRc使って要らん参照カウンタと間接参照を各ノード毎に持たせるってすごい無駄に思える
諦めてraw pointerでいいんじゃないかなあ……
716デフォルトの名無しさん
2018/01/16(火) 21:10:33.64ID:4jams3dQ >>696
センスの無さを自分に感じる…Rust難しいな
https://play.rust-lang.org/?gist=0d5f8e5d767ac5b2a0b32b272e8c3797&version=stable
センスの無さを自分に感じる…Rust難しいな
https://play.rust-lang.org/?gist=0d5f8e5d767ac5b2a0b32b272e8c3797&version=stable
717デフォルトの名無しさん
2018/01/16(火) 23:04:02.65ID:oMs3dhar 案外、未来でRustで書かれたプログラムが暴走して人類の危機だから、
現代にタイムリープしてきてRustを普及させまいとする工作員の可能性が微粒子レベルで存在……しないか
現代にタイムリープしてきてRustを普及させまいとする工作員の可能性が微粒子レベルで存在……しないか
718デフォルトの名無しさん
2018/01/16(火) 23:45:58.12ID:xhrqQ7lp そうだったら5chみたいな辺境じゃなくてもっとちゃんとしたところで活動してるだろ
719デフォルトの名無しさん
2018/01/17(水) 00:18:50.74ID:0/gSTs3q >>716
木構造がどういう構造なのかを勉強したほうがいい
木構造がどういう構造なのかを勉強したほうがいい
720デフォルトの名無しさん
2018/01/17(水) 01:17:11.33ID:SxnML8zQ >>717
これすき
これすき
721デフォルトの名無しさん
2018/01/17(水) 01:43:08.30ID:YpnCuGck スカイネットはRustで書かれていたか…
723デフォルトの名無しさん
2018/01/17(水) 18:26:41.06ID:yaCIVqOg 子供じみたレスばかり
724デフォルトの名無しさん
2018/01/17(水) 22:00:00.30ID:jFkmgXk5 言語オタクが喜びそうな機能を盛り込んだら本当に飛びつきやがったw
みたいな言語だよな。
みたいな言語だよな。
725デフォルトの名無しさん
2018/01/17(水) 22:09:59.44ID:L8tEPBaK 飛び付いたオタクは無事モジラの養分となりましたとさ
726デフォルトの名無しさん
2018/01/18(木) 23:44:13.29ID:dg9MpWjG オッス!オラMozillaの養分!Rustいっちょやってみっか!
727デフォルトの名無しさん
2018/01/19(金) 10:54:19.44ID:Oz2p1EAg またrustfmtごたついてる?
728デフォルトの名無しさん
2018/01/19(金) 12:31:26.28ID:Bq+piyrd あれがごたついてなかったことが過去にあったか?
729デフォルトの名無しさん
2018/01/19(金) 12:47:00.76ID:Oz2p1EAg せやねw
昨日まではcomponentに残ってたんだけどなぁ
また "rustup run nightly cargo install rustfmt-nightly -f" でいれるかー
昨日まではcomponentに残ってたんだけどなぁ
また "rustup run nightly cargo install rustfmt-nightly -f" でいれるかー
730デフォルトの名無しさん
2018/01/19(金) 17:48:34.83ID:8na6CAQi stableのやつ使えば良いのでは
731デフォルトの名無しさん
2018/01/19(金) 20:17:30.04ID:Oz2p1EAg >>730
deprecated言われるんだよー
deprecated言われるんだよー
732デフォルトの名無しさん
2018/01/19(金) 22:14:56.98ID:mTCJnuoL ビルド速度がgo並になったら起こして
733デフォルトの名無しさん
2018/01/20(土) 00:14:19.48ID:kiT7y7oh Rustのビルドそんなに遅いか?
Scalaと比べたら誤差だろ
Scalaと比べたら誤差だろ
734デフォルトの名無しさん
2018/01/20(土) 04:07:03.70ID:d0zmNqbj 誤差が流行語か何かなの?
735デフォルトの名無しさん
2018/01/20(土) 11:11:11.19ID:Ceherv8P >>731
rustup component add rustfmt-preview --toolchain stable
でインストールできるやつのつもりだった
なぜかcargo-fmtは入ってないけど
rustup component add rustfmt-preview --toolchain stable
でインストールできるやつのつもりだった
なぜかcargo-fmtは入ってないけど
736デフォルトの名無しさん
2018/01/20(土) 11:44:54.08ID:3qVias3W 代入の結果が () を返すのって一見不満なんだが…
#include <stdio.h>
int main() {
int a, b;
a = b = 10;
printf("%d, %d", a, b); // 10, 10
return 0;
}
a = b = 10
p [a, b] # [10, 10]
let b = ref 0 in
let a = b := 10 in
Printf.printf "%b, %d\n" (a = ()) !b (* true, 10 *)
fn main() {
let (a, b);
a = b = 10;
println!("{:?}, {:?}", a, b); // (), 10
}
上から c, ruby, ocaml, rust の結果
所有権のこと考えるとこうなるしかないのかな
#include <stdio.h>
int main() {
int a, b;
a = b = 10;
printf("%d, %d", a, b); // 10, 10
return 0;
}
a = b = 10
p [a, b] # [10, 10]
let b = ref 0 in
let a = b := 10 in
Printf.printf "%b, %d\n" (a = ()) !b (* true, 10 *)
fn main() {
let (a, b);
a = b = 10;
println!("{:?}, {:?}", a, b); // (), 10
}
上から c, ruby, ocaml, rust の結果
所有権のこと考えるとこうなるしかないのかな
737デフォルトの名無しさん
2018/01/20(土) 12:30:50.40ID:QK7u6cD2738デフォルトの名無しさん
2018/01/20(土) 18:49:44.85ID:oxqYKpr1 >>736
VBAだと a = b = 10 は a = (b = 10) となり (b = 10)は比較演算になって aはBoolean型になるよ
VBAだと a = b = 10 は a = (b = 10) となり (b = 10)は比較演算になって aはBoolean型になるよ
739デフォルトの名無しさん
2018/01/21(日) 00:23:31.24ID:zciK/NY/740デフォルトの名無しさん
2018/01/23(火) 19:31:47.22ID:DTlLuart https://qiita.com/SatoshiTerasaki/items/5bd3ee78a60f9a02e0fc
juliaにすら速度で負ける自称低レベル言語があるらしい
別の意味で低レベルwwwwww
juliaにすら速度で負ける自称低レベル言語があるらしい
別の意味で低レベルwwwwww
741デフォルトの名無しさん
2018/01/23(火) 20:25:24.96ID:dAr3tjSO 数値計算ならjuliaは最速でいいだろ
742デフォルトの名無しさん
2018/01/23(火) 20:28:32.79ID:xDBTrEL/ 疑似乱数ライブラリの差ね
743デフォルトの名無しさん
2018/01/23(火) 20:37:51.11ID:S1z+wM9L 最適化のかかるリリースビルドしてない可能性は?
744デフォルトの名無しさん
2018/01/23(火) 21:02:12.15ID:vM+Fbylb745デフォルトの名無しさん
2018/01/23(火) 21:07:23.42ID:dAr3tjSO アンチスレのほうがアンチが話題ふってくれてRustに貢献してる感じする
746デフォルトの名無しさん
2018/01/23(火) 23:14:43.88ID:mIozX/Eh 俺の環境でも
Julia: 8.58sec
Rust: 9.66sec
で1秒遅いな。でも特にチューニングしてないコードで Julia にここまで迫るなら十分だな。
Julia: 8.58sec
Rust: 9.66sec
で1秒遅いな。でも特にチューニングしてないコードで Julia にここまで迫るなら十分だな。
747デフォルトの名無しさん
2018/01/24(水) 00:30:05.97ID:HGDwBfie juliaってスクリプト言語なのに、
スクリプト言語に負けて十分な速度と言い張る低級言語wwwwww
いやー信者ってすげえわwwwwww
スクリプト言語に負けて十分な速度と言い張る低級言語wwwwww
いやー信者ってすげえわwwwwww
748デフォルトの名無しさん
2018/01/24(水) 02:48:41.80ID:0VEJNLN9 いやでもJuliaに勝とうと思えばIntel Fortran持ち出してくるか
Cで環境固有のattribute使いまくるぐらいしか無いぞ割りとまじで
JuliaもバックエンドはLLVMではあるんだけどな
Cで環境固有のattribute使いまくるぐらいしか無いぞ割りとまじで
JuliaもバックエンドはLLVMではあるんだけどな
749デフォルトの名無しさん
2018/01/24(水) 05:34:41.30ID:KYfXJC7V 速い乱数ライブラリつかえばいいだけでは
750デフォルトの名無しさん
2018/01/24(水) 05:48:01.55ID:Em3Ccg5v 乱数生成のアルゴリズムが一致してないものを比べても言語の速さは比べられんだろう
Juliaの乱数生成のアルゴリズムが速度面で優れてるってことが分かっただけだ
それでも動的言語でこの速度は確かにすごいと思うが
あとC言語のベンチの結果が載ってないのも痛いな
これじゃJuiliaが速いってことは分かってもRustが遅いかどうかは分からん
でもJuiliaって数値計算特化の言語なんだろ
だったら文字列処理とかは遅いんじゃないの?
もう少しいろんな方面からパフォーマンス測ってみないとなんとも言えんな
Juliaの乱数生成のアルゴリズムが速度面で優れてるってことが分かっただけだ
それでも動的言語でこの速度は確かにすごいと思うが
あとC言語のベンチの結果が載ってないのも痛いな
これじゃJuiliaが速いってことは分かってもRustが遅いかどうかは分からん
でもJuiliaって数値計算特化の言語なんだろ
だったら文字列処理とかは遅いんじゃないの?
もう少しいろんな方面からパフォーマンス測ってみないとなんとも言えんな
751デフォルトの名無しさん
2018/01/24(水) 06:38:42.48ID:EfrrCAID ボトルネックの概念はどこいった
752デフォルトの名無しさん
2018/01/24(水) 07:51:23.43ID:Ko1heN49 ***が速いと言われているので使ってみて言うほど速くなった試しはないな
実際に使うときはIO性能も重要だしよく使う言語の方が最適化手法を知っているというのもありそう
実際に使うときはIO性能も重要だしよく使う言語の方が最適化手法を知っているというのもありそう
753デフォルトの名無しさん
2018/01/24(水) 09:29:26.67ID:xzoUw+gH Rustが将来どの分野で使われるようになるか分からないけど、
少なくとも科学技術計算の分野に食い込むのは無さそうね
過去の資産もない上に速度的な優位も無いんじゃねぇ
少なくとも科学技術計算の分野に食い込むのは無さそうね
過去の資産もない上に速度的な優位も無いんじゃねぇ
754デフォルトの名無しさん
2018/01/24(水) 10:25:57.27ID:/aStfyAp そもそも既存の資産を置き換えるほどの魅力がない
学習コストもばかにならない
学習コストもばかにならない
755デフォルトの名無しさん
2018/01/24(水) 10:29:05.95ID:t7u6g4uo そもそもrustの魅力って何?
コンパイル通させてくれない言語って印象しかない
コンパイル通させてくれない言語って印象しかない
756デフォルトの名無しさん
2018/01/24(水) 12:02:46.02ID:QyvetUd4 コンパイル通させてくれないのが魅力
757デフォルトの名無しさん
2018/01/24(水) 12:12:31.05ID:U+b9l8FZ スレッドプログラムが書きにくいのがうり
758デフォルトの名無しさん
2018/01/24(水) 12:43:30.69ID:E4B4d2jG コンパイラが手取り足取り教えてくれるから誰でも簡単に安全なコードが書けるよ
759デフォルトの名無しさん
2018/01/24(水) 13:08:56.48ID:MMmENHs8 >>757
rustはスレッド書きやすいと思うんだけど
書きにくいって思う人が書きやすいと思うのはどんな言語?goみたいな?
ネイティブと軽量スレッドの違いあるけど記述自体は殆ど変わらんと思うけど
軽量スレッドが言語に組込まれてないから?
rustはスレッド書きやすいと思うんだけど
書きにくいって思う人が書きやすいと思うのはどんな言語?goみたいな?
ネイティブと軽量スレッドの違いあるけど記述自体は殆ど変わらんと思うけど
軽量スレッドが言語に組込まれてないから?
760デフォルトの名無しさん
2018/01/24(水) 13:33:02.69ID:t7u6g4uo コンパイル通せないのが魅力って、つまり
malbolgeみたいな実用じゃなくて難解言語ネタの一種ってこと?
malbolgeみたいな実用じゃなくて難解言語ネタの一種ってこと?
761デフォルトの名無しさん
2018/01/24(水) 14:10:35.06ID:odqQ8MKT アンチスレでマジになるなって
762デフォルトの名無しさん
2018/01/24(水) 17:06:47.36ID:AZpyydI9 >>750
NimのベンチはCと変わんねーよ
NimのベンチはCと変わんねーよ
763デフォルトの名無しさん
2018/01/24(水) 18:33:54.36ID:EfrrCAID764デフォルトの名無しさん
2018/01/24(水) 18:55:55.94ID:Ko1heN49 そもそも科学数値計算はマルチコア・マルチノードで並列で処理するような
765デフォルトの名無しさん
2018/01/24(水) 20:32:13.14ID:0VEJNLN9 >>763
競プロこそ全員違うアルゴリズムなんだから速度比べても当てにならん例じゃね
競プロこそ全員違うアルゴリズムなんだから速度比べても当てにならん例じゃね
766デフォルトの名無しさん
2018/01/24(水) 20:44:20.26ID:FegGsCEt 数日前 Twitterに落ちてたWebFrameWorkの比較
https://github.com/tbrand/which_is_the_fastest
https://github.com/tbrand/which_is_the_fastest
767デフォルトの名無しさん
2018/01/24(水) 22:10:38.68ID:HGQIxA/O まともに話題提供する人は本スレに書き込んでね。
ここは荒らしたい人専用です。
ここは荒らしたい人専用です。
768デフォルトの名無しさん
2018/01/24(水) 22:32:48.54ID:Kg6vgwEo >>767
本スレってどこ
本スレってどこ
769デフォルトの名無しさん
2018/01/24(水) 22:38:34.80ID:Em3Ccg5v アンチは話題を提供してくれるという意味ではありがたいが
速度や人気度の話ばっかりで構文系の話が出てこないんだよなぁ。
ライフタイムがジェネリックとごっちゃになって書きづらくね?とか、
box構文いい加減にstableにしろよ いつまでnightlyのままなんだよ?とか
swiftみたいにOption型をOption<T>じゃなくてT?って書けるようにしろよ とか
標準ライブラリ薄すぎだろ?もう少し分厚いの用意しろよ とか
そういう類の文句はなんで出てこないんだ?
速度や人気度の話ばっかりで構文系の話が出てこないんだよなぁ。
ライフタイムがジェネリックとごっちゃになって書きづらくね?とか、
box構文いい加減にstableにしろよ いつまでnightlyのままなんだよ?とか
swiftみたいにOption型をOption<T>じゃなくてT?って書けるようにしろよ とか
標準ライブラリ薄すぎだろ?もう少し分厚いの用意しろよ とか
そういう類の文句はなんで出てこないんだ?
770デフォルトの名無しさん
2018/01/24(水) 22:44:43.09ID:wqIqxjCG ライブラリ薄いってどういう意味?
771デフォルトの名無しさん
2018/01/24(水) 22:46:12.69ID:EfrrCAID 最近のKaggleのコンテストでRust使ってる人が上位にいたという話を聞いた
772デフォルトの名無しさん
2018/01/24(水) 23:45:26.58ID:MMmENHs8 標準ライブラリが少なくて外部crateに頼る方針のことでしょ
node.jsに近くてGoの正反対
node.jsに近くてGoの正反対
773デフォルトの名無しさん
2018/01/25(木) 00:39:04.73ID:vRTgxjb6 ライブラリ戦略についてはもうとっくにRustチームの方針は出てるから
一読することをおすすめする
https://blog.rust-lang.org/2017/05/05/libz-blitz.html
一読することをおすすめする
https://blog.rust-lang.org/2017/05/05/libz-blitz.html
774デフォルトの名無しさん
2018/01/25(木) 00:42:15.89ID:vRTgxjb6 Option<T>に関してはSwift使ったことないから全く気にしたことなかったな
OCamlとかScalaとかフツーにOptionって書くし
box構文についてはなくても困らないとかそういう理由だろう
それよりimpl Traitとかdynキーワードとかトレイト境界の特殊化とか
もっと大事なのあると個人的には思うが
OCamlとかScalaとかフツーにOptionって書くし
box構文についてはなくても困らないとかそういう理由だろう
それよりimpl Traitとかdynキーワードとかトレイト境界の特殊化とか
もっと大事なのあると個人的には思うが
775デフォルトの名無しさん
2018/01/25(木) 01:55:14.44ID:ERdxOKN9 >>773
それについてはもう知ってる
個人的にもう少し公式が積極的に用意してほしいなという願望を書いてみただけ
ライブラリ探すの面倒なんだよな
ただでさえ学習コスト高いんだから出来るだけ気軽に試せるようにとか
それ以外のところで努力しないと普及しないんじゃって不安になる
アンチ側からもこういった意見が出てもいいと思うんだけど出ないんだよな
速度云々とかStackOverFlowとか質問系サイトでの質問数云々とかばっかりでさ
構文だったり公式の方針とかには不満はないの?「こんな構文はダサすぎる」とかさ
それについてはもう知ってる
個人的にもう少し公式が積極的に用意してほしいなという願望を書いてみただけ
ライブラリ探すの面倒なんだよな
ただでさえ学習コスト高いんだから出来るだけ気軽に試せるようにとか
それ以外のところで努力しないと普及しないんじゃって不安になる
アンチ側からもこういった意見が出てもいいと思うんだけど出ないんだよな
速度云々とかStackOverFlowとか質問系サイトでの質問数云々とかばっかりでさ
構文だったり公式の方針とかには不満はないの?「こんな構文はダサすぎる」とかさ
776デフォルトの名無しさん
2018/01/25(木) 02:11:58.34ID:rC3mCmPe rustcでwindows gui用exeをコンパイルするためにコンパイラに指定するフラグって何ですか?
777デフォルトの名無しさん
2018/01/25(木) 02:12:53.18ID:ERdxOKN9 >>774
impl Traitって戻り値の型にTraitを指定して限定的に型推論を効かせようとしてるやつのこと?
あれって引数の型も型推論できるんだっけ?
確かnightlyでは動くんだよね?まだstableには出来ないのかな?
トレイト境界の特殊化って何だ?今調べてみたけどこれのことか?
https://qiita.com/sinkuu/items/450ee1219b10072f09e8
へぇこんなのあるのか知らんかった
こういう話題が欲しかったんだありがとう
impl Traitって戻り値の型にTraitを指定して限定的に型推論を効かせようとしてるやつのこと?
あれって引数の型も型推論できるんだっけ?
確かnightlyでは動くんだよね?まだstableには出来ないのかな?
トレイト境界の特殊化って何だ?今調べてみたけどこれのことか?
https://qiita.com/sinkuu/items/450ee1219b10072f09e8
へぇこんなのあるのか知らんかった
こういう話題が欲しかったんだありがとう
778デフォルトの名無しさん
2018/01/25(木) 03:06:48.02ID:9u+v4BXM >>765
最速を目指すような解法ならどれも大体同じでしょ
最速を目指すような解法ならどれも大体同じでしょ
779デフォルトの名無しさん
2018/01/25(木) 07:25:36.79ID:Ab7Hvweq780デフォルトの名無しさん
2018/01/25(木) 09:55:44.06ID:sTHeRA3m781デフォルトの名無しさん
2018/01/25(木) 11:40:56.27ID:0g84eQqw 本スレとやらが過疎ってレベルじゃなく、アンチスレが大盛況なモダン言語()があるらしいwwwwwwwww
782デフォルトの名無しさん
2018/01/25(木) 11:44:16.98ID:0g84eQqw Rustの構文とかバージョン1.0越えてるのにどんどん新しいRFC承認してばかすか変更加えてる未完成品じゃん
そんな状態でバージョン1系名乗るとかモジラの頭の悪さがよく出てる
そもそもnightlyの機能がないとクロージャー返す関数すらかけないってなんのネタ言語?
トレイト周りも、実装記述できないパターンいくつもあって草しか生えない
そんな状態でバージョン1系名乗るとかモジラの頭の悪さがよく出てる
そもそもnightlyの機能がないとクロージャー返す関数すらかけないってなんのネタ言語?
トレイト周りも、実装記述できないパターンいくつもあって草しか生えない
■ このスレッドは過去ログ倉庫に格納されています
