プログラミング言語 Rust 3 [無断転載禁止]©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2017/05/21(日) 14:04:29.55ID:9L9dm7b/
Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。

http://www.rust-lang.org/
https://github.com/rust-lang/rust

Servo
https://servo.org/
https://github.com/servo/servo

◆前スレ
プログラミング言語 Rust 2
http://echo.2ch.net/test/read.cgi/tech/1478023960
2017/10/07(土) 12:40:30.10ID:efrwvuZ0
チューニングで気にするのはメモリ配置よりCPUキャッシュに乗るかどうかでは
そのとき配列のサイズが気にされるというだけで
2017/10/07(土) 12:44:02.10ID:bipqd+gM
>>937
>>930
これの解釈は?
2017/10/07(土) 12:59:08.16ID:PzpAWNqF
データ構造としての「配列」と言語機能としての配列は別の話だから。
2017/10/07(土) 14:30:31.33ID:bipqd+gM
O(1)でもO(n)でも a[i]と書けるなら配列だって感覚?
そう考えるのは自由だがまともな話はできなさそうだな。
2017/10/07(土) 15:00:19.40ID:FL3S/Goc
Rustの話はないんでしょうか
943デフォルトの名無しさん
垢版 |
2017/10/07(土) 16:04:55.47ID:+/+oWVUp
そんなの処理系によるわ
動作は変わらないからどうでもいい
2017/10/07(土) 17:48:20.09ID:M+fCWBh9
JavaScriptのArrayを配列と呼ぶのは間違いだ!
と吠えている人がいますね
2017/10/07(土) 19:34:14.94ID:efrwvuZ0
そんなに気になるならソース見に行けで終わり
2017/10/07(土) 20:58:38.51ID:PTRnmd1t
>>941
逆にちゃんとした定義ってあるの?
2017/10/08(日) 00:52:44.13ID:riNh/ezn
>>943
>そんなの処理系によるわ
>動作は変わらないからどうでもいい

オーダーの違いはまさに動作の違い

> JavaScriptのArrayを配列と呼ぶのは間違いだ!
> と吠えている人がいますね

データ構造としての配列じゃないのはそうだろ
配列じゃなくてハッシュマップですよねー
というのがマトモなCS出身者の反応
2017/10/08(日) 07:38:16.10ID:whyFhQ9X
引き続きオーダー厨がフィーバーしてんなw

>>946
>>926, >>928曰く、C言語には仕様として配列は連続領域であることが決まってるらしいよ
んで、Javaでは特に連続領域で実装することを仕様と定めてないよねーって話をしてんだろ
2017/10/08(日) 08:29:08.64ID:Eg4i3QFB
>データ構造としての配列じゃないのはそうだろ
>配列じゃなくてハッシュマップですよねー

結局、それまで展開していたオーダー云々の論理はどっかにやって
「配列じゃないものは配列じゃない」ってかw
2017/10/08(日) 09:02:22.19ID:p8wkQapI
ポインタの値が連続でも実メモリ空間のアドレスは連続とは限らないし
そのあたりのアドレスの連続性の抽象化をOSでやるか言語の処理系でやるかの違いと思えば
配列の要素の仮想メモリ空間でのアドレスが必ずしも連続ではない言語処理系があっても良いと思う
2017/10/08(日) 09:38:42.04ID:whyFhQ9X
>>949
配列とは、連続領域で確保されO(1)でアクセス可能なものと(俺の中で)定義する
それ以外の仕様、実装による配列は配列とは認めない

という論理で一応オーダー云々も彼の中では含まれてるんじゃないかな
ポインタのポインタで配列を設計したら、それはもうハッシュであり配列ではない的なことも言ってるし
多数の言語仕様, 言語処理系で配列ではないものが配列として扱われてて大変そうだなって思うね:D
952デフォルトの名無しさん
垢版 |
2017/10/08(日) 10:03:07.61ID:W71T9805
JSのArrayは配列じゃなくてリスト
TypedArrayが配列

メモリが連続化を気にするとかどれだけ低レベルな言語使ってるんだ
インターフェイスが同じなら実装とかどうでもいい
老害かよ
2017/10/08(日) 10:54:24.49ID:T4FplNPL
データ構造の読み書きのオーダーも仕様の内だけど、メモリ上のレイアウトまで仕様という考えはマイナーじゃない?
アドレスを当然のように明示的に扱う言語だと当然の範疇かもしれんし情報として提供して欲しいけど、そうでない言語ならn番目の要素へのアクセスがO(1)であれば配列でいい
で、Rustはアドレス直触りは可能だけど普通はやらない。Cみたいに構造体のメモリ上の表現がはっきり決まってるわけでもないし
2017/10/08(日) 15:41:19.83ID:EDHW4lpZ
>>951
> 配列とは、連続領域で確保されO(1)でアクセス可能なものと(俺の中で)定義する

そう思うのは勝手だけどそれに基づいて他人を批判するってどんだけ独善的なんだ
2017/10/08(日) 18:42:51.40ID:4PvrPlQX
そろそろRustの話に戻してくれ
2017/10/08(日) 18:57:23.11ID:riNh/ezn
array data structure でググるさま
2017/10/08(日) 20:18:32.63ID:whyFhQ9X
>>952
(配列の定義を)お前がそう思うんならそうなんだろう お前ん中ではな
ちなみに、Rustスレ住民はRust言語を使ってるゾ

>>953
Rustのstructメンバは連続を保証してるんでなかったかいな
repr((C)で宣言した時に限ってるんだっけ、unsafe多用してる変態がいたら教えてくれ
2017/10/09(月) 00:25:52.32ID:KLfOKOYK
>>933
それって、(一次元)コンテナでは。
で、コンテナの実装方法として配列やらリンクドリストやらが存在する。
2017/10/09(月) 00:29:02.79ID:KLfOKOYK
>>952
> インターフェイスが同じなら実装とかどうでもいい
そういう目的にはrust使う必要なくね?
2017/10/09(月) 00:30:54.57ID:KLfOKOYK
>>953
Rustがそういう態度だと言うのなら、C/C++の代わりには使えないなぁ
2017/10/09(月) 01:24:12.13ID:EU3MdReC
>>953
システムレベル言語でそれは無い
2017/10/09(月) 07:09:58.47ID:HQb3QT54
https://play.rust-lang.org/?gist=9e8a69e064b98d48c48e237d87d005a1&;version=nightly

これ、少し前の nightly-2017-09-15-x86_64-apple-darwin だと通るのに、
最新の nightly だと conflicting implementations を起こすな。
rustup update したら急にビルドに失敗して驚いた。
2017/10/09(月) 08:32:46.93ID:/FMCjJgs
nightlyが仕様変更したりバグったりするのを逐一驚いてたら大変じゃない?
2017/10/09(月) 09:00:12.81ID:CsWYGxTc
>>958
もともと配列やその他のデータ構造からインターフェースのみ抽出したものがコンテナなんで、
それを言語仕様の側からは単に配列と称していることはあるだろう。
仮にそれを認めないとしても、元の質問の「JVMの配列は連続しているか」が「JVMのコンテナ(?)は
連続しているか」になるだけ。
2017/10/09(月) 10:26:26.16ID:EKQlpQJF
いるなぁC++のプロジェクトでarrayで十分なところに無駄にmap使いまくるやつ
おっさんプログラマとしては看過できないんだが(少なくとも仕事では)
これが時代なんだろうか
2017/10/09(月) 11:43:46.40ID:iPiyLv0T
なにか問題でも?
2017/10/09(月) 14:35:43.67ID:y6Coq1tU
メモリコスト、CPUコストについて定量的に説明できるかな
2017/10/09(月) 14:47:42.14ID:5Wk6yJf6
自分もどちらかと言えば効率厨のつもりだけど
実行コストと可読性が大差ないなら好きな方を使えばいいと思う
2017/10/09(月) 15:19:06.41ID:ICZ1WqoM
コンテナ使うとコストが見えにくくてよく分からん
2017/10/09(月) 17:24:05.08ID:65lUV9pA
さすがに array と map ではアルゴリズム自体違うわけだしそれはなしだろ。
2017/10/09(月) 18:49:17.20ID:GUc1DOLO
Vec<f32> を Vec<f64>に変換したいのですがどうしたらいいでしょうか?
やりたいのは
&[f64]を引数として受け取る関数にVec<f32>の内容を渡したいのですが。
2017/10/09(月) 20:31:04.63ID:2SZ05bPF
https://play.rust-lang.org/?gist=0cd6e0b3f8c028d720b6936505df6c9b&;version=undefined

受け取る関数がTraitでf32, f64を受けろと思うけど、外部ライブラリで作ってるなら仕方ないんだろうよ
2017/10/09(月) 20:46:44.09ID:g5Xwcr4f
>>972
ありがとうございます

今回は外部ライブラリだからしょうがないかな

普通はなんのtraitで受けとるんでしょうか?
2017/10/11(水) 16:41:05.41ID:3w9jP5qe
色々あるんだろうけど、こんな一例
https://play.rust-lang.org/?gist=d00fb7f7041fce1649767ecf95bb936a&;version=stable

AsRefとかIntoとかFromとか、なんかその辺調べたらいいんじゃないかなぁ
他人に公開する目的のpub fn以外で使うのはバイナリ容量増やす一因になるからいたずらには使いたくは無い(他人がする分には気にしない
ただまぁ、枯れたおっさんプログラマの感想であって、map, arrayの使い分けに口出すおっさんは同様に口出してくると思うので注意されたし
2017/10/11(水) 17:46:13.24ID:6qFX/88z
>>974
基本的に↓を使ってるんで、
https://docs.rs/alga/0.4.0/alga/general/trait.Real.html

これの
https://docs.rs/alga/0.4.0/alga/general/trait.SupersetOf.html
あたりを使えばいいんすかねぇ
2017/10/11(水) 20:18:32.35ID:SdSs/e3t
rustって難しいって聞くけどどうなの?

数百行程度のcliツールとか作るのにも適してる?
2017/10/11(水) 20:36:37.19ID:wUY7e6c6
借用やライフタイムを理解できない内は難しいかもね。
978デフォルトの名無しさん
垢版 |
2017/10/11(水) 20:58:57.23ID:gwIT2xqO
%%%%4NEL%%%%
000-SAV-&1.0888214%ML<\47MBL%0.2\MSSSS4.213>
1.8882/%B/%SB/<\2/7BL\%\%B!B%47L%Si72B>%10.2%\
002%\B%===>>>52.B<\rbc/2.8>>\7B<<\7LB>>\72S\<%\42%><\br>001BYON$\%7L2%3.33GHz>>>2.3GHz<\br>
41.B%LB%"<<%11.6$%><<\86.1B>>2LB>"B???S3>>71$-?>6%<\br>
082@<\7L@@<\br>
\LOOP>0<1Entra
2017/10/12(木) 09:41:32.32ID:cYUXFwFa
>>975
RealがSupersetOf<f64>を継承してるから受け取る関数がf64を扱うならTrait Realを受ける形でも良さそう
Alga使ったことなくてどっちを使う方がスマートなのか分からんから、自分が取り回しやすいと思う形でどうぞ
2017/10/13(金) 09:07:46.54ID:ZLjOYpzW
Announcing Rust 1.21 - The Rust Programming Language Blog
https://blog.rust-lang.org/2017/10/12/Rust-1.21.html

めぼしい変更無し。
2017/10/13(金) 15:11:36.11ID:bp4APqrz
Rustの話をしないRust板の住人
言語として形になってないから言語のことを話せないんだろうなぁ
直近もまともな更新ないし、世間の話題も下火だし
工作員さんもっと頑張らないといけませんよ(ハナホジ)
982デフォルトの名無しさん
垢版 |
2017/10/13(金) 17:39:13.20ID:xbVdueHZ
tanakhのrustベタ褒めツイートでも列挙しようか
2017/10/13(金) 17:40:12.67ID:+y/vofi6
>>976
性能だすために生ポ触るとかしなければボローイングなんかも
そんな難しく考えずにコード書けるとは思う。
一部の馬鹿が言語機能をドヤしたいってのが一番流行るのを妨げてる。
2017/10/13(金) 17:44:57.66ID:PbP1JTIY
じゃんじゃんクローンすればいいんだよ
性能に困ったときだけ再考すればいい
2017/10/13(金) 18:36:57.97ID:FAMCtm4a
>>980
何代目の時報か知らんけど次スレよろ
あと、2年近くかかって取り込まれたrvalue static promotionをスルーするとかどうかしてんぜ
2017/10/13(金) 18:45:29.22ID:RXIUnIoB
ムーブセマンティクスをきちんと意識すれば借用はそこまで難しかないよね
まあそこでCの経験が却って邪魔になるところがあるわけだけど
2017/10/13(金) 20:29:09.18ID:5Bkpm/HR
QtをやったあとでもRustの有り難みって実感出来る?
2017/10/13(金) 22:43:54.95ID:dC2M8380
borrowing というか mutable aliasing だけはやっぱり辛いなあ。
多くの場合 struct メンバの false sharing なんだよね…。
2017/10/14(土) 14:12:57.17ID:VwleOtKV
>>980
「Rust 1.21」リリース
2017年10月13日16:15 末岡洋子
https://mag.osdn.jp/17/10/13/161500
2017/10/14(土) 17:39:51.15ID:uWD69LeP
次スレ

プログラミング言語 Rust 4
https://mevius.5ch.net/test/read.cgi/tech/1507970294/
2017/10/15(日) 14:37:51.04ID:WeNwPolS
>>986
moveや借用は簡単なんだけど、その結果引き起こされる制限を回避していくのが面倒。
2017/10/15(日) 17:36:12.11ID:GYZBU1+2
>>991
その「面倒」って感じるのがまさしくCの経験の負の遺産なわけよ
2017/10/16(月) 10:08:35.93ID:ZoMoe7Af
脱出しようとして墜落してるのか
2017/10/20(金) 00:44:35.87ID:2lESXdgM
994
2017/10/20(金) 00:45:47.02ID:2lESXdgM
995
2017/10/20(金) 00:46:13.27ID:2lESXdgM
996
2017/10/20(金) 00:46:56.38ID:2lESXdgM
997
2017/10/20(金) 00:48:00.58ID:2lESXdgM
998
2017/10/20(金) 00:48:41.67ID:2lESXdgM
999
2017/10/20(金) 00:49:08.90ID:2lESXdgM
1000
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 151日 10時間 44分 40秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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