Mozilla発のRust言語のスレ
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
前スレ
Rust part8
https://mevius.5ch.net/test/read.cgi/tech/1579834072/
探検
Rust part9
■ このスレッドは過去ログ倉庫に格納されています
2020/08/23(日) 01:07:35.52ID:MgEpWwVh
160デフォルトの名無しさん
2020/09/19(土) 02:11:22.63ID:U+RTm7Td >>154
数学が分からん人には、LinkedListの優秀性も理解できない。
実験しても実験の仕方が間違っているので間違った結果になっているが、
本人が気づかない。
C++のStrousstrup氏も間違っている。
集団幻想。
それだけ数学的なことは才能が必要だということだ。
多数決では、ArrayListが圧勝と言うことになってしまっているが、それは
本等は間違い。
数学が分からん人には、LinkedListの優秀性も理解できない。
実験しても実験の仕方が間違っているので間違った結果になっているが、
本人が気づかない。
C++のStrousstrup氏も間違っている。
集団幻想。
それだけ数学的なことは才能が必要だということだ。
多数決では、ArrayListが圧勝と言うことになってしまっているが、それは
本等は間違い。
161デフォルトの名無しさん
2020/09/19(土) 02:19:57.57ID:U+RTm7Td 数学的なことは、99%位の人が正しく理解できないので、ベンチマークテスト
のプログラムも1%位の人しか正しくかけない。
だからデタラメな集団幻想が、LinkedListが過小評価に繋がっている。
まだ、雑誌などでは学歴フィルターというか、頭の良さフィルターをかけて入社
させない仕組みがあるので、あまり間違ってはないが、ネットはめちゃくちゃ。
見ていたら、論文にまでしてしまっているひとまでいるようだが、間違っている。
のプログラムも1%位の人しか正しくかけない。
だからデタラメな集団幻想が、LinkedListが過小評価に繋がっている。
まだ、雑誌などでは学歴フィルターというか、頭の良さフィルターをかけて入社
させない仕組みがあるので、あまり間違ってはないが、ネットはめちゃくちゃ。
見ていたら、論文にまでしてしまっているひとまでいるようだが、間違っている。
162デフォルトの名無しさん
2020/09/19(土) 02:23:16.42ID:Vwp+/AeQ >>95
グラフ表現とかでもlinkedlist使わんの?
グラフ表現とかでもlinkedlist使わんの?
163デフォルトの名無しさん
2020/09/19(土) 03:22:40.39ID:Q84IJBEo あーあっち側の人すかー
有意義な議論ができるかと思ってた
皆さまご苦労さまです
有意義な議論ができるかと思ってた
皆さまご苦労さまです
164デフォルトの名無しさん
2020/09/19(土) 11:06:03.78ID:Ltx9b8Lt とりあえずベンチマーク取ってみたらええやん。。よくいる種類の馬鹿だよね。
こういうタイプはフィボナッチヒープとか大好きなんだよな。
こういうタイプはフィボナッチヒープとか大好きなんだよな。
165デフォルトの名無しさん
2020/09/19(土) 11:36:48.27ID:iDecIr7K ArrayListおじさんはArrayDequeをどう評価するの?
166デフォルトの名無しさん
2020/09/19(土) 12:38:52.28ID:2HkJedVD >>162
グラフは何かしらのツリー構造を使うからLinkedListは使わないでしょ
グラフは何かしらのツリー構造を使うからLinkedListは使わないでしょ
167デフォルトの名無しさん
2020/09/19(土) 16:29:00.47ID:4d+Mnie5168デフォルトの名無しさん
2020/09/19(土) 16:47:45.15ID:4d+Mnie5169デフォルトの名無しさん
2020/09/19(土) 17:53:59.50ID:Qry/LSKT まだ続くなら、動的配列とリストの具体的なベンチマークのコードを載せてくれ
rustが好ましい
rustが好ましい
170デフォルトの名無しさん
2020/09/19(土) 18:25:43.76ID:nFBIHSQH >>167
Javaでは、末尾追加の aitと、途中削除の rit、先頭への追加 は、LinkedListの方が
速いという結果だね。
この場合、要素数が2万個だけど、もっと多くなると理論上、その差はいくらでも開いて行く。
また、単純に全要素を足すsumitとsumforでは、0.25%, 1.4% の差しかない。
逆に、末尾追加のalastは、ArrayListの方が4.8倍速い。
これはLinkedListの場合、1要素ずつメモリアロケーターを呼び出しているので遅くなっており、
予想通り。
しかし、先頭追加のa0とalastの時間差が、LinkedListではほとんどない(理論上は全くないのだが)
のに対し、ArrayListでは82倍もあるのも予想通りの結果。
LinkedListは、先頭、末尾、途中のどこを操作しても、理論上、時間差が(ほぼ)ないが、
ArrayListは、大きく違ってくるというのが理論上予想されたことで、このベンチマークは正しく
それを反映している。
Javaでは、末尾追加の aitと、途中削除の rit、先頭への追加 は、LinkedListの方が
速いという結果だね。
この場合、要素数が2万個だけど、もっと多くなると理論上、その差はいくらでも開いて行く。
また、単純に全要素を足すsumitとsumforでは、0.25%, 1.4% の差しかない。
逆に、末尾追加のalastは、ArrayListの方が4.8倍速い。
これはLinkedListの場合、1要素ずつメモリアロケーターを呼び出しているので遅くなっており、
予想通り。
しかし、先頭追加のa0とalastの時間差が、LinkedListではほとんどない(理論上は全くないのだが)
のに対し、ArrayListでは82倍もあるのも予想通りの結果。
LinkedListは、先頭、末尾、途中のどこを操作しても、理論上、時間差が(ほぼ)ないが、
ArrayListは、大きく違ってくるというのが理論上予想されたことで、このベンチマークは正しく
それを反映している。
171デフォルトの名無しさん
2020/09/19(土) 18:27:51.00ID:nFBIHSQH >>170
なお、末尾追加も、同じサイズのノードに限定したものなら、メモリアロケーターが
劇速のものが作れるので、LinkedListでも、ArrayListに匹敵するくらい速度が
出るように作れる。
なお、末尾追加も、同じサイズのノードに限定したものなら、メモリアロケーターが
劇速のものが作れるので、LinkedListでも、ArrayListに匹敵するくらい速度が
出るように作れる。
172デフォルトの名無しさん
2020/09/19(土) 18:28:30.00ID:nFBIHSQH173デフォルトの名無しさん
2020/09/19(土) 18:30:31.19ID:nFBIHSQH この結果は、JavaのLinkedListが、素直にLinkedListを素朴に実装しているから
出てきたもの。
一方、STLは、設計が悪いので初心者が誤解を招く結果が出てしまう。
それは、追加する場所をアドレスではなく、先頭からの通し番号で指定する
ことが標準になっていたりするから。
出てきたもの。
一方、STLは、設計が悪いので初心者が誤解を招く結果が出てしまう。
それは、追加する場所をアドレスではなく、先頭からの通し番号で指定する
ことが標準になっていたりするから。
174デフォルトの名無しさん
2020/09/19(土) 18:48:41.03ID:cxOsPIuF >>173
> 先頭からの通し番号で指定することが標準になっていたりするから。
なんでそんな間違った前提を置いてるんだ?
C++ の std::list にそんな機能はないってことをたびたび指摘されてるが、
あんたは今までリンクリストの優位性がどうこう言ってたのとは別の人なんか?
(いや、そんなはずはないよな、こんな荒らし野郎が何人もいるとは思いたくない。)
> 先頭からの通し番号で指定することが標準になっていたりするから。
なんでそんな間違った前提を置いてるんだ?
C++ の std::list にそんな機能はないってことをたびたび指摘されてるが、
あんたは今までリンクリストの優位性がどうこう言ってたのとは別の人なんか?
(いや、そんなはずはないよな、こんな荒らし野郎が何人もいるとは思いたくない。)
175デフォルトの名無しさん
2020/09/19(土) 19:00:07.16ID:iDecIr7K Javaはmalloc/freeが超速いので、他の言語よりはLinkedListに優しい
176デフォルトの名無しさん
2020/09/19(土) 19:14:15.33ID:6s6pvu7S >>175
どうせ妄想を書いてるだけだろ
どうせ妄想を書いてるだけだろ
177デフォルトの名無しさん
2020/09/19(土) 19:22:13.23ID:k5fZduun GC言語は領域の再利用をgc時に行うからnewの時に空きを探す手間が少ない。
単純に端っこから割り当てていくだけ。
単純に端っこから割り当てていくだけ。
178デフォルトの名無しさん
2020/09/19(土) 19:39:34.30ID:nFBIHSQH179デフォルトの名無しさん
2020/09/19(土) 19:57:18.05ID:X3OIhUCa Listスレかな?
180デフォルトの名無しさん
2020/09/19(土) 23:26:19.32ID:4d+Mnie5181デフォルトの名無しさん
2020/09/19(土) 23:52:44.02ID:61l8trcl ゲームエンジン・データベースなどの本には、メモリプールを作る方法が、よく載っている
同じサイズの要素を、まとめて確保して、そのプール内で管理する方法
同じサイズの要素を、まとめて確保して、そのプール内で管理する方法
182デフォルトの名無しさん
2020/09/20(日) 00:02:10.17ID:MLu0Cj9r 次はhashmap vs vector
183デフォルトの名無しさん
2020/09/20(日) 00:06:23.82ID:hvjw0ZD9 ここで定番のRustハッシュ関数遅い問題で一悶着
184デフォルトの名無しさん
2020/09/20(日) 00:17:48.39ID:mlVvoUwY185デフォルトの名無しさん
2020/09/20(日) 01:00:22.31ID:zH0CDqJ7 >>181
システムコールの呼び出し回数を押さえるため?
でも通常のmalloc/freeもプロセス再起動されなければ領域再利用されるよね。
なら最初にmallocでガバっと取って、実際に使う時にfreeしてmallocしなおせば良くない?
ゲーム専用機の場合はシステムのAPIもいまいちだったりするから自前でメモリ管理もありだと思うし、DBの場合もキャッシュやら共有メモリやらmmapしてどうたらで自前で管理したいのもわかる。
でもそれ以外で普通のOS上のアプリで自前でメモリプール管理するメリットってどれだけあるの?
システムコールの呼び出し回数を押さえるため?
でも通常のmalloc/freeもプロセス再起動されなければ領域再利用されるよね。
なら最初にmallocでガバっと取って、実際に使う時にfreeしてmallocしなおせば良くない?
ゲーム専用機の場合はシステムのAPIもいまいちだったりするから自前でメモリ管理もありだと思うし、DBの場合もキャッシュやら共有メモリやらmmapしてどうたらで自前で管理したいのもわかる。
でもそれ以外で普通のOS上のアプリで自前でメモリプール管理するメリットってどれだけあるの?
186デフォルトの名無しさん
2020/09/20(日) 01:12:40.58ID:GOdQy7G8 予め決まったサイズを確保することが多いから、予めまとめて確保しておいて数珠繋ぎにしておけば最速で出し入れできる
187デフォルトの名無しさん
2020/09/20(日) 01:16:59.26ID:GOdQy7G8 16msecの間にすべての処理を完了しないといけないからmalloc呼び出しなんてありえないよ
188デフォルトの名無しさん
2020/09/20(日) 01:29:40.54ID:mlVvoUwY >>167
このデータの作り方だとLinkedListでもかなり連続したメモリ領域が使われてる可能性が高いような気がする
Javaの場合はList<int>じゃなくList<Integer>で
値を使うケースだとポインタを辿る必要があるのでそれも結果に影響しそう
このデータの作り方だとLinkedListでもかなり連続したメモリ領域が使われてる可能性が高いような気がする
Javaの場合はList<int>じゃなくList<Integer>で
値を使うケースだとポインタを辿る必要があるのでそれも結果に影響しそう
189デフォルトの名無しさん
2020/09/20(日) 03:23:18.11ID:7hHTPvJJ >>159 に答えれる方いませんか?
ここはリスト議論のスレッドですか?
ここはリスト議論のスレッドですか?
190デフォルトの名無しさん
2020/09/20(日) 08:14:35.07ID:nUMPJonN191デフォルトの名無しさん
2020/09/20(日) 09:09:08.11ID:sD69NUu0 挿入が必要なら普通はヒープ組むのになんで誰も突っ込まんの?
192デフォルトの名無しさん
2020/09/20(日) 10:27:51.76ID:iRiS7kHZ テキストエディタのようなものだと、アプリを起動して編集し始めた時から、
新しく追加したデータに関しては、対応するノードは、Heapからアロケートしても、
連続したアドレスに載っている。
ロードした直後、最後の行のノードのアドレスと、編集で追加したノード
のアドレスが近い。
編集で追加した行の直前直後のノードのアドレスと、編集で追加したノードのアドレスは
不連続である。
しかし、キャッシュは、何も、最後の1つのページだけしか覚えておけないわけでなく、
1000種類位は覚えておける。
だから、このくらいだと、どちらもキャッシュに乗ることになる。
なお、ArrayListの場合、途中へ追加すると、半分近くの要素に対してコピー動作が
必要になるが、その際、キャッシュを全て使い切ってしまうことがある。
配列の全データが100MBだとすると、このコピー動作のために100MB分のデータが
いったんキャッシュに読み込まれる必要がある。
キャッシュはL3ですら8MB程度しかないので、これだと全くキャッシュが足りなくなる。
その点、LinkedListは、このようなキャッシュ汚染は生じない。
新しく追加したデータに関しては、対応するノードは、Heapからアロケートしても、
連続したアドレスに載っている。
ロードした直後、最後の行のノードのアドレスと、編集で追加したノード
のアドレスが近い。
編集で追加した行の直前直後のノードのアドレスと、編集で追加したノードのアドレスは
不連続である。
しかし、キャッシュは、何も、最後の1つのページだけしか覚えておけないわけでなく、
1000種類位は覚えておける。
だから、このくらいだと、どちらもキャッシュに乗ることになる。
なお、ArrayListの場合、途中へ追加すると、半分近くの要素に対してコピー動作が
必要になるが、その際、キャッシュを全て使い切ってしまうことがある。
配列の全データが100MBだとすると、このコピー動作のために100MB分のデータが
いったんキャッシュに読み込まれる必要がある。
キャッシュはL3ですら8MB程度しかないので、これだと全くキャッシュが足りなくなる。
その点、LinkedListは、このようなキャッシュ汚染は生じない。
193デフォルトの名無しさん
2020/09/20(日) 10:32:00.78ID:iRiS7kHZ194デフォルトの名無しさん
2020/09/20(日) 10:48:59.50ID:iRiS7kHZ >>193
テキストエディタの例だと、100万行のファイルを読み込んだとしても、
実際に閲覧したり、書き込んだりしたい場所は、数箇所に集中することが
多い。
LinkedListの場合だと、編集時に行を挿入する場合、全データを移動する
必要が無いので、1行当たり、数10バイトくらいのコピーで済む。
この場合、キャッシュ汚染はほとんど生じない。
一方、ArrayListだと、100万行のコピー動作が必要になり、その際に
キャッシュを浪費してしまう。
テキストエディタの例だと、100万行のファイルを読み込んだとしても、
実際に閲覧したり、書き込んだりしたい場所は、数箇所に集中することが
多い。
LinkedListの場合だと、編集時に行を挿入する場合、全データを移動する
必要が無いので、1行当たり、数10バイトくらいのコピーで済む。
この場合、キャッシュ汚染はほとんど生じない。
一方、ArrayListだと、100万行のコピー動作が必要になり、その際に
キャッシュを浪費してしまう。
195デフォルトの名無しさん
2020/09/20(日) 10:55:21.87ID:GOdQy7G8196デフォルトの名無しさん
2020/09/20(日) 11:02:59.45ID:iRiS7kHZ197デフォルトの名無しさん
2020/09/20(日) 14:40:25.89ID:2Z1dYVPL なんでテキストエディタの例でArratListが出てくるんだ
198デフォルトの名無しさん
2020/09/20(日) 17:50:32.22ID:rmF3ZCsn スレ間違ってますよ
199デフォルトの名無しさん
2020/09/21(月) 04:23:45.31ID:6Tk/tz3a200デフォルトの名無しさん
2020/09/22(火) 01:30:08.72ID:oMNW4x3G CSのスレでも立てればいいのにな
無駄なマウントとプライドで議論になってないじゃん
無駄なマウントとプライドで議論になってないじゃん
201デフォルトの名無しさん
2020/09/22(火) 02:42:29.78ID:EwzeVKsQ あっちで相手にされないからこっちに来るんだろう
202デフォルトの名無しさん
2020/09/22(火) 02:55:14.94ID:3nDER7vv あっちってどこ?
203デフォルトの名無しさん
2020/09/22(火) 03:04:18.34ID:EwzeVKsQ 本人にだけ判れば良いんだよ
204デフォルトの名無しさん
2020/09/23(水) 23:05:59.13ID:JL46F86k Rust 初心者ってか始めてもないけど、
fn main() {
println!("Hello, world!");
}
これってセミコロン要るの?
fn main() {
println!("Hello, world!");
}
これってセミコロン要るの?
205デフォルトの名無しさん
2020/09/23(水) 23:22:55.07ID:O1ICXtuo206デフォルトの名無しさん
2020/09/24(木) 04:24:32.56ID:sKL6gd3p なんでreturn文省略するん
207デフォルトの名無しさん
2020/09/24(木) 08:46:29.52ID:imaK44AN208デフォルトの名無しさん
2020/09/24(木) 19:57:00.21ID:AHitBJm/ 関数型のフリがしたいから。
209デフォルトの名無しさん
2020/09/24(木) 20:40:06.68ID:aHCv/EIt return省略は関数型なのか?
関数型をふりをするなら {} を省略して = で書くとかでは
関数型をふりをするなら {} を省略して = で書くとかでは
210デフォルトの名無しさん
2020/09/24(木) 21:02:07.22ID:anZxJGRt lispのprognみたいな感じじゃね。
セミコロンを書くとその後に空の式があるようにみなすのはイケてないと思うけど。
セミコロンを書くとその後に空の式があるようにみなすのはイケてないと思うけど。
211デフォルトの名無しさん
2020/09/24(木) 21:34:50.13ID:sW11ypIO expressionをstatementにするのがセミコロン
statementは`()`として扱われる
セミコロン不要にして必要に応じて`()`を明記するスタイルのほうがイケてたとは思う
returnを省略するのは慣習
関数を含めて式が値に評価されていくというメンタルモデルなので
”return文”という感覚ではないのかもね
statementは`()`として扱われる
セミコロン不要にして必要に応じて`()`を明記するスタイルのほうがイケてたとは思う
returnを省略するのは慣習
関数を含めて式が値に評価されていくというメンタルモデルなので
”return文”という感覚ではないのかもね
212デフォルトの名無しさん
2020/09/25(金) 01:43:09.63ID:rqLAnW3Q C++系言語に見た目を近づけるという設計意図があるから()を明記するという判断にはならなかっただろうとおもう
213デフォルトの名無しさん
2020/09/25(金) 06:33:09.44ID:JNOcuagu 戻り値型の宣言にも -> () っていちいち書かなくていいしなあ
そういうもんだとしか
そういうもんだとしか
214デフォルトの名無しさん
2020/09/25(金) 07:11:20.18ID:LUJK9/4D なんで戻り値は型推論してくんないんだろう。
215デフォルトの名無しさん
2020/09/25(金) 07:33:16.25ID:SbSfhD0k 単純に、セミコロンの有無だけで区別するのが視認性が良くないんだよな。
エディタの方で違いを目立たせられたりしたらいいけど。
エディタの方で違いを目立たせられたりしたらいいけど。
216デフォルトの名無しさん
2020/09/25(金) 07:58:20.78ID:ZK6gJNpW217デフォルトの名無しさん
2020/09/25(金) 19:12:30.94ID:yo3ZA1rx >>215
いまさらどうにもならないが、使いはじめの頃は、もっと視認性のあるフレーズ使ってくれてたらなぁと思ってた。
例えば、F#の
hofe |> ignore
なんかは、冗長ではあるが逆に視認性も良く、捨てる気満々の書き方で気に入ってる。
いまさらどうにもならないが、使いはじめの頃は、もっと視認性のあるフレーズ使ってくれてたらなぁと思ってた。
例えば、F#の
hofe |> ignore
なんかは、冗長ではあるが逆に視認性も良く、捨てる気満々の書き方で気に入ってる。
218デフォルトの名無しさん
2020/09/25(金) 23:12:55.80ID:ZK6gJNpW そういえばelse節の無いif式は()に評価されるんだっけか
219デフォルトの名無しさん
2020/09/25(金) 23:17:40.79ID:ZK6gJNpW https://doc.rust-lang.org/reference/expressions/return-expr.html
ってかそもそもRustのreturnは式だったわ
return bar;はreturn文じゃなくて式文の一種だったわ
ってかそもそもRustのreturnは式だったわ
return bar;はreturn文じゃなくて式文の一種だったわ
220デフォルトの名無しさん
2020/09/26(土) 06:07:19.66ID:Jy/kksq4 コンピューターはともかく、人間にはreturnくらいの文字的冗長性があった方が視認性がいい。
221デフォルトの名無しさん
2020/09/26(土) 08:31:48.23ID:2tuZfHCi ifは末尾}に;不要なのにletは末尾}に;必要なのだるい
222デフォルトの名無しさん
2020/09/26(土) 09:30:48.93ID:en54jqZM >>220
returnがあればearly returnだと識別できるのでその意味では視認性は高い
ただセミコロンというC系言語経験者が注視しない記号に新しく重要な意味をもたせたから戸惑う
>>221
ifブロック末尾のセミコロンは常に省略できるわけじゃない
https://doc.rust-lang.org/reference/statements.html#expression-statements
セミコロンがないと意図通りパースできないケースってほとんどないと思うので
そのうちJSのASIのようなものでセミコロン不要になる未来もある気がする
returnがあればearly returnだと識別できるのでその意味では視認性は高い
ただセミコロンというC系言語経験者が注視しない記号に新しく重要な意味をもたせたから戸惑う
>>221
ifブロック末尾のセミコロンは常に省略できるわけじゃない
https://doc.rust-lang.org/reference/statements.html#expression-statements
セミコロンがないと意図通りパースできないケースってほとんどないと思うので
そのうちJSのASIのようなものでセミコロン不要になる未来もある気がする
223デフォルトの名無しさん
2020/09/26(土) 10:01:37.83ID:GOW7LNc9 個人的にはセミコロンうんぬんよりifの中括弧が苦痛
/* c */
#include <stdio.h>
#define min(a, b) ((a) < (b) ? (a) : (b)) // スッキリ
int min2(int a, int b) {return a < b ? a : b;} // ややスッキリ
int min3(int a, int b) {
if (a < b) return a; else return b; // スッキリ?
}
int main() {
printf("%d ", min(3, 2));
printf("%d ", min2(3, 2));
printf("%d ", min3(3, 2));
return 0;
}
// rust
fn main() {
let min = |a, b| if a < b {a} else {b}; // 中括弧が嫌
//let min = |a, b| if (a < b) a else b; // これならスッキリ
//let min = |a, b| if a < b then a else b; // あるいはこれ
println!("{}", min(3, 2));
}
(* ocaml *)
let min a b = if a < b then a else b (* スッキリ *)
let () = print_int (min 3 2)
/* c */
#include <stdio.h>
#define min(a, b) ((a) < (b) ? (a) : (b)) // スッキリ
int min2(int a, int b) {return a < b ? a : b;} // ややスッキリ
int min3(int a, int b) {
if (a < b) return a; else return b; // スッキリ?
}
int main() {
printf("%d ", min(3, 2));
printf("%d ", min2(3, 2));
printf("%d ", min3(3, 2));
return 0;
}
// rust
fn main() {
let min = |a, b| if a < b {a} else {b}; // 中括弧が嫌
//let min = |a, b| if (a < b) a else b; // これならスッキリ
//let min = |a, b| if a < b then a else b; // あるいはこれ
println!("{}", min(3, 2));
}
(* ocaml *)
let min a b = if a < b then a else b (* スッキリ *)
let () = print_int (min 3 2)
224デフォルトの名無しさん
2020/09/26(土) 12:46:41.58ID:XnDuVG4Q はいはいdangling else dangling else
225デフォルトの名無しさん
2020/09/26(土) 13:01:32.24ID:nz56jET8 Goもそうだけど、条件式に括弧を使わないのがいまだに慣れない。
226デフォルトの名無しさん
2020/09/26(土) 13:49:35.37ID:Rxc/dJS+ BASIC は要らなかったから慣れてる。
3項演算子考えたやつは天才。
3項演算子考えたやつは天才。
227デフォルトの名無しさん
2020/09/26(土) 14:34:05.78ID:d+bfMgei228デフォルトの名無しさん
2020/09/26(土) 14:40:21.79ID:Lg3GZEAb >>225
そのへんとモジュールまわりはPythonの影響かなと思った
そのへんとモジュールまわりはPythonの影響かなと思った
229デフォルトの名無しさん
2020/09/26(土) 16:28:05.98ID:en54jqZM >>228
PythonというよりRubyだろね
コアチームは過去も含めてRubyコミュニティ出身者が多いから
モジュールはPythonのようにファイルベースじゃなくキーワードで名前空間をきちんと切るし
クロージャの書き方だったりreturnを書かない慣習だったりも他言語に比べて類似性が高い
PythonというよりRubyだろね
コアチームは過去も含めてRubyコミュニティ出身者が多いから
モジュールはPythonのようにファイルベースじゃなくキーワードで名前空間をきちんと切るし
クロージャの書き方だったりreturnを書かない慣習だったりも他言語に比べて類似性が高い
230デフォルトの名無しさん
2020/09/26(土) 16:42:46.56ID:d+bfMgei 型システムは ML 系の言語でよくあるやつだし、
そっち方面の影響もあるんじゃないの?
そっち方面の影響もあるんじゃないの?
231デフォルトの名無しさん
2020/09/26(土) 17:41:02.34ID:iHt0gIo3232デフォルトの名無しさん
2020/09/26(土) 17:52:07.70ID:YRaYmiXd233デフォルトの名無しさん
2020/09/26(土) 18:02:33.75ID:2tuZfHCi if a < b => a else => b っていう変なもんを思いついてしまった
だーめだこりゃ
だーめだこりゃ
234デフォルトの名無しさん
2020/09/27(日) 04:32:18.28ID:Wycq4Ck4 セミコロンとかはEdition上げて撤廃してほしいけど、ここまでRustのOSS書かれてたら無理だろなぁ...
235デフォルトの名無しさん
2020/09/27(日) 07:58:10.90ID:ePGxxCtX >>232
それはSmalltalkだろ
それはSmalltalkだろ
236デフォルトの名無しさん
2020/09/27(日) 08:00:03.20ID:6sIZ9RBB Rust, Go, Elixir などの新しい言語は、Ruby の影響が強い。
Ruby で最も良いのは、すべての進数の数値リテラルに、_ を含められること
こういうコメントを書かなくて済む
1000000 // 1_000_000
Ruby で最も良いのは、すべての進数の数値リテラルに、_ を含められること
こういうコメントを書かなくて済む
1000000 // 1_000_000
237デフォルトの名無しさん
2020/09/27(日) 09:53:51.56ID:xq8pY9v9 戻り値の有無がセミコロンだけで区別されている現状をどうにかしないとそもそもセミコロン廃止なんて
無理だろうけど、セミコロンレスってそんなにいいかねぇ?
行の折り返しを間違えて別の文になってしまってもスルーされる場合があるのがなんか嫌。
ASIがあるJSでもメジャーどころのスタイルガイドはみんなASIを信用しないでセミコロン使うことに
なっているし。
pythonだとセミコロン使わないスタイルも多いけど、あっちはインデントで判別できるしね。
無理だろうけど、セミコロンレスってそんなにいいかねぇ?
行の折り返しを間違えて別の文になってしまってもスルーされる場合があるのがなんか嫌。
ASIがあるJSでもメジャーどころのスタイルガイドはみんなASIを信用しないでセミコロン使うことに
なっているし。
pythonだとセミコロン使わないスタイルも多いけど、あっちはインデントで判別できるしね。
238デフォルトの名無しさん
2020/09/27(日) 10:45:39.75ID:5NvF/cEJ >>237
>ASIを信用しないでセミコロン使うことに
ASIを信用してないわけじゃないよ
ASIの仕様はJSの仕様で決まってるから例外的に挿入されない場合もはっきり分かってる
セミコロンを使うスタイルが多いのはミニファイとかを考慮してるから
JSの場合は普通に書いてる分にはセミコロンの有無でほぼ違いが無い上に
セミコロンレスで書いてもリンター使って自動挿入できるから実質書き手の自由
1行に複数文書いてるときでもなければセミコロンに特別な意味はないから気にする必要がない
>ASIを信用しないでセミコロン使うことに
ASIを信用してないわけじゃないよ
ASIの仕様はJSの仕様で決まってるから例外的に挿入されない場合もはっきり分かってる
セミコロンを使うスタイルが多いのはミニファイとかを考慮してるから
JSの場合は普通に書いてる分にはセミコロンの有無でほぼ違いが無い上に
セミコロンレスで書いてもリンター使って自動挿入できるから実質書き手の自由
1行に複数文書いてるときでもなければセミコロンに特別な意味はないから気にする必要がない
239デフォルトの名無しさん
2020/09/27(日) 11:08:19.83ID:OQ0JAVEc セミコロンは基本的にはあっていいけどたまに}のあとに;必要なやつとかあったりしてこれはイヤ
240デフォルトの名無しさん
2020/09/27(日) 11:27:51.54ID:xq8pY9v9 たしかに「ASIを信用しないで」というと疑っているみたいだから「依存しないで」の方が
適切だったかも。
いずれにしても、どのスタイルガイドもプログラマの意図と異なる判断がされる危険を
挙げていて、それを防ぐためには明示的にセミコロンを記述する方が良いと謳っている。
minifyはそれこそminify時にセミコロンを補完すればいいんだから関係ないと思う。
適切だったかも。
いずれにしても、どのスタイルガイドもプログラマの意図と異なる判断がされる危険を
挙げていて、それを防ぐためには明示的にセミコロンを記述する方が良いと謳っている。
minifyはそれこそminify時にセミコロンを補完すればいいんだから関係ないと思う。
241デフォルトの名無しさん
2020/09/27(日) 11:40:37.55ID:NFiicpwR242デフォルトの名無しさん
2020/09/27(日) 12:00:44.11ID:4LQaG5je セミコロン撤廃要望多いとは思えないんだけどRFCとか書いてる人いるのか?
243デフォルトの名無しさん
2020/09/27(日) 12:27:31.82ID:MoLnvbgN セミコロン書き忘れる事は多々あるけど、意図しない値が返ってとかならない(はず)なので別に困らない
それより、Docs.rsに見にくいクレートが有る方が困る、AutoとBlanket以外のShow hidden undocumented itemsを
デフォルトで展開するオプションが有れば良いのに、この議題はどっかで見たような気がする。
それより、Docs.rsに見にくいクレートが有る方が困る、AutoとBlanket以外のShow hidden undocumented itemsを
デフォルトで展開するオプションが有れば良いのに、この議題はどっかで見たような気がする。
244デフォルトの名無しさん
2020/09/27(日) 12:34:01.78ID:FTgnsV+4 >>241
1967のPL/Iあたりからかな?登場時期からするともっと広まってもおかしくなかった気もするけど、16/32ビットリテラルしかなかった時代には需要なかったんだろうね。verilogは何ビットでもいけるから必要だけど。
最近は128ビット型とかBigIntとかでようやく必要になってきたってことか。
1967のPL/Iあたりからかな?登場時期からするともっと広まってもおかしくなかった気もするけど、16/32ビットリテラルしかなかった時代には需要なかったんだろうね。verilogは何ビットでもいけるから必要だけど。
最近は128ビット型とかBigIntとかでようやく必要になってきたってことか。
245デフォルトの名無しさん
2020/09/27(日) 12:55:24.47ID:ePGxxCtX rustのAPI documentなんか読みづらい気がする
うまく説明できないけど
型クラスのあたりも見づらい
うまく説明できないけど
型クラスのあたりも見づらい
246デフォルトの名無しさん
2020/09/27(日) 13:55:00.63ID:5NvF/cEJ >>240
きちんとした手順にそったminifyだけを指して言ったわけじゃないんだが
GoogleやAirbnbのstyle guideを見ると確かにそういう意図ではないみたいだね
npmやGithubみたいにセミコロンレスのstandard style使ってるところも多いから
「メジャーどころはみんなセミコロンを明示的に書く」というのはちと言い過ぎかな
いずれにしろJSの場合は1コマンドで一瞬で切り替え可能で書く時はどっちでいいから
Rustとはかなり事情が違うと思う
きちんとした手順にそったminifyだけを指して言ったわけじゃないんだが
GoogleやAirbnbのstyle guideを見ると確かにそういう意図ではないみたいだね
npmやGithubみたいにセミコロンレスのstandard style使ってるところも多いから
「メジャーどころはみんなセミコロンを明示的に書く」というのはちと言い過ぎかな
いずれにしろJSの場合は1コマンドで一瞬で切り替え可能で書く時はどっちでいいから
Rustとはかなり事情が違うと思う
247デフォルトの名無しさん
2020/09/27(日) 14:15:05.14ID:5NvF/cEJ >>242
探してみたらRFCあったけどCloseされてた
https://github.com/rust-lang/rfcs/issues/2583
C/C++/G#/Javaあたりから来た人はセミコロンあるのが普通だろうけど
Go/Scala/Swift/Kotlin/Ruby/Pythonだとセミコロンないのが普通なので面倒くさく感じるのよ
RFCのやり取りや↓ここの議論を見るとセミコロンが不要になる可能性はもうないね
https://internals.rust-lang.org/t/make-some-separators-optional/4846
探してみたらRFCあったけどCloseされてた
https://github.com/rust-lang/rfcs/issues/2583
C/C++/G#/Javaあたりから来た人はセミコロンあるのが普通だろうけど
Go/Scala/Swift/Kotlin/Ruby/Pythonだとセミコロンないのが普通なので面倒くさく感じるのよ
RFCのやり取りや↓ここの議論を見るとセミコロンが不要になる可能性はもうないね
https://internals.rust-lang.org/t/make-some-separators-optional/4846
248デフォルトの名無しさん
2020/09/27(日) 15:12:03.29ID:FTgnsV+4 セミコロンレスってフォーマット的な改行と文末の改行を文脈を見て判断する必要があるから好きじゃないなぁ。
一文が複数行になりやすいビルダーパターンとかイテレータアダプタの類いが特に。
入力する側としてはほとんど無意識に打ってるから特に面倒とも感じないし。
一文が複数行になりやすいビルダーパターンとかイテレータアダプタの類いが特に。
入力する側としてはほとんど無意識に打ってるから特に面倒とも感じないし。
249デフォルトの名無しさん
2020/09/27(日) 15:18:06.12ID:ePGxxCtX IntelliJ使えばセミコロンを殆ど見えないような色に設定できるぞ
250デフォルトの名無しさん
2020/09/27(日) 19:00:04.17ID:4LQaG5je 典型的なbikeshed
251デフォルトの名無しさん
2020/09/28(月) 01:45:21.81ID:1Vhx5XJ3 >>223
ocamlってセミコロン必要じゃなかったっけ?
ocamlってセミコロン必要じゃなかったっけ?
252デフォルトの名無しさん
2020/09/28(月) 07:53:40.34ID:cZtg7eSb >>251
この例では必要になる場所は無い
この例では必要になる場所は無い
253デフォルトの名無しさん
2020/09/28(月) 09:58:13.64ID:UVos1NUC docsのフロント部分は特に強いUXデザイナーがいない感じがすごくする
254デフォルトの名無しさん
2020/09/28(月) 18:49:05.66ID:5HiAAmxH >>251
トップレベルの分を区切るのに;;を使う
ただしletの直前、ファイルの最後、などでは省略できる
https://ocaml.org/learn/tutorials/structure_of_ocaml_programs.ja.html
構文は
https://ocaml.org/releases/4.11/htmlman/language.html
let min a b = if a < b then a else b (* letの直前だから;;省略 *)
let () = print_int (min 3 2) (* ファイルの最後だから;;省略 *)
トップレベルの分を区切るのに;;を使う
ただしletの直前、ファイルの最後、などでは省略できる
https://ocaml.org/learn/tutorials/structure_of_ocaml_programs.ja.html
構文は
https://ocaml.org/releases/4.11/htmlman/language.html
let min a b = if a < b then a else b (* letの直前だから;;省略 *)
let () = print_int (min 3 2) (* ファイルの最後だから;;省略 *)
255デフォルトの名無しさん
2020/10/01(木) 14:03:33.62ID:WCPslwmj slice::windowsのstrバージョンみたいなのってないのでしょうか。
ようするにある文字列に含まれる連続するn文字を頭から順に返すイテレータを作ってくれるようなやつです。
ようするにある文字列に含まれる連続するn文字を頭から順に返すイテレータを作ってくれるようなやつです。
256デフォルトの名無しさん
2020/10/01(木) 18:29:40.74ID:HHhjPj0U >>255
ないのでVec<char>を生成してwindowsを呼ぶとか
let cs: Vec<_> = String::from("あいうえお").chars().collect();
let ws: Vec<_> = cs.windows(2).map(|v| v.iter().collect::<String>()).collect();
ないのでVec<char>を生成してwindowsを呼ぶとか
let cs: Vec<_> = String::from("あいうえお").chars().collect();
let ws: Vec<_> = cs.windows(2).map(|v| v.iter().collect::<String>()).collect();
257デフォルトの名無しさん
2020/10/01(木) 18:54:04.45ID:i8Yvf3kp 文字幅が可変長 (utf-8) であっても windows みたいなことをするのはそんなにコスト大きくないよね?
ふたつのポインタを一文字ずつ進めるだけなんだから O(N) で出来るはず。
ふたつのポインタを一文字ずつ進めるだけなんだから O(N) で出来るはず。
258デフォルトの名無しさん
2020/10/02(金) 09:46:31.03ID:D4+ZSkLl アロケートなしだと、
(0..s.len()-n).map(|i| &s[i..i+n])
となるけど自分で-nとか+nとかiとかやるのめっちゃアホくさいしそのうちミスりそう
(0..s.len()-n).map(|i| &s[i..i+n])
となるけど自分で-nとか+nとかiとかやるのめっちゃアホくさいしそのうちミスりそう
259デフォルトの名無しさん
2020/10/02(金) 14:20:31.00ID:iKrdrFom >>258
アロケートなしならこれでもいけるはず。utf8を食わせると死ぬけど
.as_bytes().windows(2).map(|v| std::str::from_utf8(v).unwrap())
アロケートなしならこれでもいけるはず。utf8を食わせると死ぬけど
.as_bytes().windows(2).map(|v| std::str::from_utf8(v).unwrap())
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 「超富裕層」への追加課税、対象の目安は「年間所得6億円」に引き下げで最終調整…27年からの適用目指す [どどん★]
- 日本、G7への中国招待を懸念 議長国フランスに慎重な対応要請 [どどん★]
- 千晴におちんちん舐めてもらいたい♥
- たまにはこういうドーナッツ食いたくなるよな
- にぎにぎペニスにぎペニス♪
- ブタをぶったたく
- 【悲報】ジャップ、日中戦争に賛成が5割弱...軍歌の音が聞こえる... [856698234]
- ひまだねー
