競え
※前スレ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
探検
C vs C++ vs Rust Part.2
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2021/12/15(水) 12:35:50.91ID:biBE4xC0229デフォルトの名無しさん
2021/12/25(土) 23:46:56.47ID:cn6bnobm 試し割り法で検索しろ
230デフォルトの名無しさん
2021/12/26(日) 00:33:01.70ID:kT157QEc >>228
素数が足し算平均2.5回程度で求まるアルゴリズムを説明してくれないか?
素数が足し算平均2.5回程度で求まるアルゴリズムを説明してくれないか?
231デフォルトの名無しさん
2021/12/26(日) 02:08:18.89ID:N3NYq5+A Rustという世界最高の言語があるのに、なぜRubyを使うのが正しいのか。
リーン・スタートアップという本を読めばわかるよ。
リーン・スタートアップという本を読めばわかるよ。
232デフォルトの名無しさん
2021/12/26(日) 10:42:00.41ID:bwDwv7pP Ruby on Railsは、GitHub, Airbnb, Disney, Hulu, SoundCloud, Shopify といった世界的に有名な企業や、
日本国内でも、note、クックパッド、freee、マネーフォワード、Progate、Qiita などで使われている
2021年10月には、GitHubのコピーで、Railsを使い続ける宣言をしている、
GitLab が上場し、時価総額は約1.9兆円!
一方、GitHubはGo へ以降する
Railsを使う理由を端的に言えば、もうかるから
Ruby biz Grand prix 2020 大賞を受賞した、Ruby の女神・池澤あやかも言ってる。
他の言語では開発者を確保しにくいので、Railsに切り替えた
日本国内でも、note、クックパッド、freee、マネーフォワード、Progate、Qiita などで使われている
2021年10月には、GitHubのコピーで、Railsを使い続ける宣言をしている、
GitLab が上場し、時価総額は約1.9兆円!
一方、GitHubはGo へ以降する
Railsを使う理由を端的に言えば、もうかるから
Ruby biz Grand prix 2020 大賞を受賞した、Ruby の女神・池澤あやかも言ってる。
他の言語では開発者を確保しにくいので、Railsに切り替えた
233デフォルトの名無しさん
2021/12/26(日) 10:47:24.01ID:bwDwv7pP Mediator は、空港の管制塔
234デフォルトの名無しさん
2021/12/26(日) 15:09:49.43ID:h4Mdc0Ob >>214
仲介手数料、信用創造、お前が同じ穴の狢、アホのRustオジサンです
仲介手数料、信用創造、お前が同じ穴の狢、アホのRustオジサンです
235デフォルトの名無しさん
2021/12/26(日) 16:15:26.85ID:Tvo9Wvhs >>173
1億までの素数を全て生成するのに足し算2.5億回で済む理由がわかった
素数でなければ1万以下の素数が約数として必ずあるから順に最大素数9973まで調べるだけでよい
1億/2 + 1億/3 + 1億/5 + 1億/7 + 1億/11 + … + 1億/9973 = 約2.5億の足し算で原理的には済むはず
1億までの素数を全て生成するのに足し算2.5億回で済む理由がわかった
素数でなければ1万以下の素数が約数として必ずあるから順に最大素数9973まで調べるだけでよい
1億/2 + 1億/3 + 1億/5 + 1億/7 + 1億/11 + … + 1億/9973 = 約2.5億の足し算で原理的には済むはず
236デフォルトの名無しさん
2021/12/26(日) 21:21:30.44ID:MtmTWc/M237デフォルトの名無しさん
2021/12/26(日) 21:25:21.15ID:XOSaINd5 エラトステネスの篩、のことなのでは?
でも1億分のバッファとか、勿体ない気がしますね…
でも1億分のバッファとか、勿体ない気がしますね…
238デフォルトの名無しさん
2021/12/26(日) 22:30:41.92ID:RjefXsAR そこで区間篩ですよ
239デフォルトの名無しさん
2021/12/26(日) 22:31:44.15ID:kT157QEc 発見済みの素数を使ってループして数Xが素数かどうかを調べてるだけだろ?
足し算平均2.5回って意味不明なんだが?
足し算平均2.5回って意味不明なんだが?
240デフォルトの名無しさん
2021/12/26(日) 22:57:15.49ID:Tvo9Wvhs241デフォルトの名無しさん
2021/12/26(日) 23:11:50.20ID:Tvo9Wvhs そう書いていたら謎が解けた
>>235
> 1億/2 + 1億/3 + 1億/5 + 1億/7 + 1億/11 + … + 1億/9973 = 約2.5億の足し算で原理的には済むはず
これは1億✕(1/2 + 1/3 + 1/5 + 1/7 + 1/11 + … )だから括弧内は素数の逆数の和でlog log N
1億がNだから足し算の回数はO(N log log N)なのか
>>235
> 1億/2 + 1億/3 + 1億/5 + 1億/7 + 1億/11 + … + 1億/9973 = 約2.5億の足し算で原理的には済むはず
これは1億✕(1/2 + 1/3 + 1/5 + 1/7 + 1/11 + … )だから括弧内は素数の逆数の和でlog log N
1億がNだから足し算の回数はO(N log log N)なのか
242デフォルトの名無しさん
2021/12/26(日) 23:46:34.73ID:L9HJqboW243デフォルトの名無しさん
2021/12/27(月) 00:18:24.10ID:OK/wNcge >>242
C言語でいいから加算で素数を求めるアルゴリズム書いてくれない?
C言語でいいから加算で素数を求めるアルゴリズム書いてくれない?
244デフォルトの名無しさん
2021/12/27(月) 08:37:12.33ID:vZ39sN8j このスレで出てきているテレーターがよくわからんのだけど、wikipediaの定義と違うんかいな?
ttps://ja.m.wikipedia.org/wiki/%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF
ttps://ja.m.wikipedia.org/wiki/%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF
245デフォルトの名無しさん
2021/12/27(月) 09:31:03.72ID:2XZCOhTP >>244
その日本語wikiは怪しいので英語のwikiを見るといい
その日本語wikiは怪しいので英語のwikiを見るといい
246デフォルトの名無しさん
2021/12/27(月) 13:29:55.23ID:ZyPtB7dw 100回繰り返すのと1億回繰り返すのとどっちがマヌケに見えるか、億という言葉を使えば賢く見えるのか?
億回繰り返さないと理解できないのか、汚コードRust相談室と化したC vs C++ vs Rustスレに未来はあるのか
億回繰り返さないと理解できないのか、汚コードRust相談室と化したC vs C++ vs Rustスレに未来はあるのか
247デフォルトの名無しさん
2021/12/27(月) 14:18:09.83ID:Btn3kp2t 隔離スレに未来などあるわけあるか
248デフォルトの名無しさん
2021/12/27(月) 18:22:06.83ID:/o/Y1bP3 >>244
実際のコード例で体験していくと理解が早い
例えばこの計算をしたいとする
>>235
> 素数でなければ1万以下の素数が約数として必ずあるから順に最大素数9973まで調べるだけでよい
> 1億/2 + 1億/3 + 1億/5 + 1億/7 + 1億/11 + … + 1億/9973 = 約2.5億の足し算で原理的には済むはず
コードは>>176の素数生成イテレータも使って以下のイテレータ4つの連鎖で求まる
let result: i32 = 素数生成::<i32>()
.take_while(|&p| p < 10000)
.map(|p| 100000000 / p)
.sum();
途中のtake_while()は条件を満たす間だけ取るイテレータでこの場合は「1万未満」が条件
map()は変換するイテレータで「素数pを1億/p」へ変換している
最後にsum()で流れてきた1億/pを「全て足して」目的を達成
このように個々の単機能イテレータを複数組み合わせて連鎖させることでプログラミングできる
実際のコード例で体験していくと理解が早い
例えばこの計算をしたいとする
>>235
> 素数でなければ1万以下の素数が約数として必ずあるから順に最大素数9973まで調べるだけでよい
> 1億/2 + 1億/3 + 1億/5 + 1億/7 + 1億/11 + … + 1億/9973 = 約2.5億の足し算で原理的には済むはず
コードは>>176の素数生成イテレータも使って以下のイテレータ4つの連鎖で求まる
let result: i32 = 素数生成::<i32>()
.take_while(|&p| p < 10000)
.map(|p| 100000000 / p)
.sum();
途中のtake_while()は条件を満たす間だけ取るイテレータでこの場合は「1万未満」が条件
map()は変換するイテレータで「素数pを1億/p」へ変換している
最後にsum()で流れてきた1億/pを「全て足して」目的を達成
このように個々の単機能イテレータを複数組み合わせて連鎖させることでプログラミングできる
249デフォルトの名無しさん
2021/12/27(月) 21:02:50.96ID:/sRDJTH0 まーたイテレータの定義をよくわかってないやつがヘンテコな説明しちゃう
250デフォルトの名無しさん
2021/12/27(月) 22:13:30.95ID:h+0xE8z4 ヘンテコなとこに気がつけなかったんだけど、どのへん?
251デフォルトの名無しさん
2021/12/27(月) 23:21:22.61ID:N7w3YVE+ 今どきの言語のイテレータは>>248で合っている
しかしC++のイテレータは低レベルでポインタを抽象化したものと考えたほうがいいので注意
C++にもようやくmap()に相当するものが入ったが他言語とは異なりtransform()という名前など使いにくい
今どきのプログラミングしたいなら素直にRustを使ったほうが便利
しかしC++のイテレータは低レベルでポインタを抽象化したものと考えたほうがいいので注意
C++にもようやくmap()に相当するものが入ったが他言語とは異なりtransform()という名前など使いにくい
今どきのプログラミングしたいなら素直にRustを使ったほうが便利
252デフォルトの名無しさん
2021/12/27(月) 23:38:31.34ID:0wmEJTQl253デフォルトの名無しさん
2021/12/27(月) 23:39:05.80ID:pyO9ra+c この文中に>>入れる自作自演の同一人物の基地外Rustのくせはほんと気持ち悪い。また引用で > 使う
254デフォルトの名無しさん
2021/12/27(月) 23:41:50.94ID:OK/wNcge 伝統的には値を生成するものはジェネレータと呼ぶわな
255デフォルトの名無しさん
2021/12/27(月) 23:46:27.40ID:Bqcwp6fR >>253
はちみつ病だからスルーしてさしあげろ
はちみつ病だからスルーしてさしあげろ
256デフォルトの名無しさん
2021/12/27(月) 23:49:02.66ID:N7w3YVE+ >>254
それは観点が違うな
値を生成するものであってもイテレータとして機能するものと機能しないものがある
つまり重要な点はイテレータとして機能するか否かのみ
Rustの1..nやこのスレの素数生成はイテレータとして機能しているから明白にイテレータ
それは観点が違うな
値を生成するものであってもイテレータとして機能するものと機能しないものがある
つまり重要な点はイテレータとして機能するか否かのみ
Rustの1..nやこのスレの素数生成はイテレータとして機能しているから明白にイテレータ
257デフォルトの名無しさん
2021/12/28(火) 01:27:16.67ID:iF4hooVM ジェネレータはみんなイテレータだから
258デフォルトの名無しさん
2021/12/28(火) 10:31:13.05ID:wyc7do74 やっぱり頭がおかしいよ、1..nはRange { start: 1, end: n }と同じ。Rust公式でもイテレータじゃなく
単にRangeと言っているだけなのに、それが機能するかという観点ならfor inが無ければ機能しないから
イテレータじゃない。collect()がイテレータをコレクションに変換するように、for inで(暗黙)変換されるだけ。
こいつ、あちこちで暴れてる
単にRangeと言っているだけなのに、それが機能するかという観点ならfor inが無ければ機能しないから
イテレータじゃない。collect()がイテレータをコレクションに変換するように、for inで(暗黙)変換されるだけ。
こいつ、あちこちで暴れてる
259デフォルトの名無しさん
2021/12/28(火) 11:06:40.72ID:We8KhoPF RangeはIterator実装してるからrustの定義ではイテレータではあるのでは
260デフォルトの名無しさん
2021/12/28(火) 11:57:32.05ID:c+MbZA8y 汚コード厨まだ居るのか
261デフォルトの名無しさん
2021/12/28(火) 12:05:42.28ID:SY7gTV8u >>258
君もイテレータがわかってないお仲間さんなので仲良く勉強しとけ
君もイテレータがわかってないお仲間さんなので仲良く勉強しとけ
262デフォルトの名無しさん
2021/12/28(火) 12:13:02.75ID:SY7gTV8u プログラミング初心者でもないのにイテレータを理解してないやつがRustスレに多いのはなぜ?
263デフォルトの名無しさん
2021/12/28(火) 12:16:44.18ID:F00FUyP7 ここ本スレではなく隔離スレ
スレ民の目的はただの冷やかし
スレ民の目的はただの冷やかし
264デフォルトの名無しさん
2021/12/28(火) 14:55:22.51ID:uwqQYFJJ "仲介イテレータ"
約 2 件 (0.26 秒)
すげー、全世界で、このスレにしかその言葉は存在しない
約 2 件 (0.26 秒)
すげー、全世界で、このスレにしかその言葉は存在しない
265デフォルトの名無しさん
2021/12/28(火) 15:25:43.05ID:c+MbZA8y 厨怪イッテレータ
266デフォルトの名無しさん
2021/12/28(火) 15:44:45.74ID:WXYqKfV2 >>262
一番レスの多い自演厨が理解してないから、そう見えるだけ
一番レスの多い自演厨が理解してないから、そう見えるだけ
267デフォルトの名無しさん
2021/12/28(火) 16:37:20.65ID:a2iPSFXu イテレータには狭義のイテレータと広義のイテレータがある
広義のイテレータは狭義のイテレータとイテレータメソッドを合わせたものである
(A) イテレータ(狭義)
Rustで言えばtrait Iteratorを実装するもの
コード上で「impl Iterator for 各イテレータが返す型」となって現れる
各イテレータが返す型は通常structでありimpl Iterator<Item=T>を満たす
メソッドとしてnext()を持ちこれがOption<T>を返す
(B) イテレータメソッド
Rustで言えば上述イテレータ(狭義)のメソッドとなるもの
コード上では「impl 宣言用トレイト for Iterator」の中で現れる
各イテレータメソッドが返す型は任意でありfor_each()のように無しもある
対象となったイテレータ(狭義)のnext()を利用する側となる
>>195
| (1) 発信イテレータ … >>174で示しました素数生成、レンジ(0..n)、配列やVecに対するiter()などチェーンでは先頭に来るもの
| (2) 仲介イテレータ … map()、filter()、enumerate()などチェーンでは中間に来るもの
| (3) 受信イテレータ … find()、fold()、collect()などチェーンでは最後に来るもの
その分類で言えば
(1) = (A) かつ not (B) = イテレータ(狭義)だが イテレータメソッドではない
(2) = (A) かつ (B) = イテレータ(狭義)であり イテレータメソッドでもある
(3) = not (A) かつ (B) = イテレータメソッドだが イテレータ(狭義)ではない
広義のイテレータは狭義のイテレータとイテレータメソッドを合わせたものである
(A) イテレータ(狭義)
Rustで言えばtrait Iteratorを実装するもの
コード上で「impl Iterator for 各イテレータが返す型」となって現れる
各イテレータが返す型は通常structでありimpl Iterator<Item=T>を満たす
メソッドとしてnext()を持ちこれがOption<T>を返す
(B) イテレータメソッド
Rustで言えば上述イテレータ(狭義)のメソッドとなるもの
コード上では「impl 宣言用トレイト for Iterator」の中で現れる
各イテレータメソッドが返す型は任意でありfor_each()のように無しもある
対象となったイテレータ(狭義)のnext()を利用する側となる
>>195
| (1) 発信イテレータ … >>174で示しました素数生成、レンジ(0..n)、配列やVecに対するiter()などチェーンでは先頭に来るもの
| (2) 仲介イテレータ … map()、filter()、enumerate()などチェーンでは中間に来るもの
| (3) 受信イテレータ … find()、fold()、collect()などチェーンでは最後に来るもの
その分類で言えば
(1) = (A) かつ not (B) = イテレータ(狭義)だが イテレータメソッドではない
(2) = (A) かつ (B) = イテレータ(狭義)であり イテレータメソッドでもある
(3) = not (A) かつ (B) = イテレータメソッドだが イテレータ(狭義)ではない
268デフォルトの名無しさん
2021/12/28(火) 17:20:35.84ID:UIm7WL46269デフォルトの名無しさん
2021/12/28(火) 18:00:29.58ID:p0MyQfYl 素数生成君と仲介イテレータ君は同一人物だったのか
どおりで
どおりで
270デフォルトの名無しさん
2021/12/28(火) 22:24:23.54ID:ndrZKvgW271デフォルトの名無しさん
2021/12/28(火) 22:25:36.06ID:t/L66bQ2 こいつ何度間違っても全く反省しないなww
良い子は鵜呑みにしないで自分で調べようね
良い子は鵜呑みにしないで自分で調べようね
272デフォルトの名無しさん
2021/12/28(火) 22:28:28.38ID:t/L66bQ2 あ、>>270のことじゃないからね
273デフォルトの名無しさん
2021/12/28(火) 22:35:42.94ID:t/L66bQ2 >>270
詫びがてら説明しておくがイテレータは数えあげる人のこと
「次くれ」→ 「はい、どうぞ」
「次くれ」→ 「はい、どうぞ」
「次くれ」→ 「もうありません」
数えあげる対象物を数えあげる人自身が持ってる場合もあれば持ってない場合もある
impl Iteratorしてるのがイテレータなのは間違いない
詫びがてら説明しておくがイテレータは数えあげる人のこと
「次くれ」→ 「はい、どうぞ」
「次くれ」→ 「はい、どうぞ」
「次くれ」→ 「もうありません」
数えあげる対象物を数えあげる人自身が持ってる場合もあれば持ってない場合もある
impl Iteratorしてるのがイテレータなのは間違いない
274デフォルトの名無しさん
2021/12/28(火) 22:49:58.47ID:a2iPSFXu275デフォルトの名無しさん
2021/12/28(火) 23:41:11.95ID:c9bIiubz 出典もなしに能書き垂れるのやめろ
276デフォルトの名無しさん
2021/12/28(火) 23:52:38.14ID:a2iPSFXu デザインパターンの一つであるイテレータパターンの説明図 (wikipediaより)
https://upload.wikimedia.org/wikipedia/commons/c/c5/W3sDesign_Iterator_Design_Pattern_UML.jpg
next()を持つものがイテレータ
つまり>>267の定義で合っている
https://upload.wikimedia.org/wikipedia/commons/c/c5/W3sDesign_Iterator_Design_Pattern_UML.jpg
next()を持つものがイテレータ
つまり>>267の定義で合っている
277デフォルトの名無しさん
2021/12/28(火) 23:56:51.47ID:OoEjLphs 視野が狭く思い込んだら多くの人が警告しているのに完全に無視し「定義」だの仲介だの創造だの自分勝手に講釈を垂れる
278デフォルトの名無しさん
2021/12/28(火) 23:59:15.51ID:a2iPSFXu Rust公式Bookでも同じ
https://doc.rust-jp.rs/book-ja/ch13-02-iterators.html
全てのイテレータは、標準ライブラリで定義されているIteratorというトレイトを実装しています。
Iteratorトレイトを実装するには、Item型も定義する必要があり、
そして、このItem型がnextメソッドの戻り値の型に使われています。
イテレータに対して直接nextメソッドを呼び出すこともできます。
https://doc.rust-jp.rs/book-ja/ch13-02-iterators.html
全てのイテレータは、標準ライブラリで定義されているIteratorというトレイトを実装しています。
Iteratorトレイトを実装するには、Item型も定義する必要があり、
そして、このItem型がnextメソッドの戻り値の型に使われています。
イテレータに対して直接nextメソッドを呼び出すこともできます。
279デフォルトの名無しさん
2021/12/29(水) 01:29:32.54ID:R7H13gAM280デフォルトの名無しさん
2021/12/29(水) 02:02:16.54ID:8RYkbehC281デフォルトの名無しさん
2021/12/29(水) 03:47:51.11ID:L3UdfSEZ イテレーターの定義はIteratorを実装してる型で良いと思うがそれがどう C vs C++ vs Rust に繋がるのか
282デフォルトの名無しさん
2021/12/29(水) 09:34:00.36ID:/J/UmHDr283デフォルトの名無しさん
2021/12/29(水) 12:27:51.74ID:EOkSZQC4 イテレータメソッドというのは多くの言語では一般的にはイテレータを返すメソッドのこと
Java, C#, C++, JavaScript, Python, Ruby, Scala等々
RustではIterator Trait’s Methodsの意味で
“iterator methods”という言葉が使われるがこれは訳すなら”イテレータのメソッド”
Rustに限った話でもIterator Traitの個別メソッドを
”イテレータ”と呼んでるのはnext()を除いて聞いたことがないので
広義のイテレータを定義してるソースがあるなら提示してもらいたい
Java, C#, C++, JavaScript, Python, Ruby, Scala等々
RustではIterator Trait’s Methodsの意味で
“iterator methods”という言葉が使われるがこれは訳すなら”イテレータのメソッド”
Rustに限った話でもIterator Traitの個別メソッドを
”イテレータ”と呼んでるのはnext()を除いて聞いたことがないので
広義のイテレータを定義してるソースがあるなら提示してもらいたい
284デフォルトの名無しさん
2021/12/29(水) 13:18:44.91ID:gOOeSowg >>283
必死こいて言い訳のソースを調査中だから期待して待っててね
必死こいて言い訳のソースを調査中だから期待して待っててね
285デフォルトの名無しさん
2021/12/29(水) 13:20:17.30ID:2nRAq0Kh javaだと
public interface Iterator<E>
ここにあるメソッドをiterator methodsと読んでる人居るね
まあ単にイテレータのメソッドってことなんだけど
public interface Iterator<E>
ここにあるメソッドをiterator methodsと読んでる人居るね
まあ単にイテレータのメソッドってことなんだけど
286デフォルトの名無しさん
2021/12/29(水) 13:36:57.67ID:uJWdQe45 >イテレータメソッドというのは多くの言語では一般的にはイテレータを返すメソッドのこと
ググってみたがほとんど用例が見つからん。
ググってみたがほとんど用例が見つからん。
287デフォルトの名無しさん
2021/12/29(水) 14:15:53.78ID:cOaqDcVM ばっかもーん!それがイテレータだ!定義しろ〜!
みたいな
みたいな
288デフォルトの名無しさん
2021/12/29(水) 15:32:20.47ID:mnKs3jeD289デフォルトの名無しさん
2021/12/29(水) 17:12:35.25ID:EOas9tnv 発信イテレータ<Item=オレオレ定義>
290デフォルトの名無しさん
2021/12/29(水) 21:23:30.19ID:4Vgx4jRv たしかに「イテレータメソッド」だと「イテレータ生成メソッド」を意味する用例もあり曖昧さがある
「の」を入れて「イテレータのメソッド」とした方がいいだろう
(A) イテレータ
trait Iteratorを実装するもの
コード上で「impl Iterator for 各イテレータが返す型」となって現れる
各イテレータが返す型は通常structでありimpl Iterator<Item=T>を満たす
メソッドとしてnext()を持ちこれがOption<T>を返す
(B) イテレータのメソッド
イテレータのメソッドとして機能するもの
コード上では「impl 宣言用トレイト for Iterator」の中で現れる
イテレータの各メソッドが返す型は任意でありfor_each()のように無しも可
対象イテレータのnext()を利用する側となる
「の」を入れて「イテレータのメソッド」とした方がいいだろう
(A) イテレータ
trait Iteratorを実装するもの
コード上で「impl Iterator for 各イテレータが返す型」となって現れる
各イテレータが返す型は通常structでありimpl Iterator<Item=T>を満たす
メソッドとしてnext()を持ちこれがOption<T>を返す
(B) イテレータのメソッド
イテレータのメソッドとして機能するもの
コード上では「impl 宣言用トレイト for Iterator」の中で現れる
イテレータの各メソッドが返す型は任意でありfor_each()のように無しも可
対象イテレータのnext()を利用する側となる
291デフォルトの名無しさん
2021/12/29(水) 21:25:05.27ID:4Vgx4jRv // 例: イテレータ CountUp
struct CountUp(isize);
impl Iterator for CountUp {
type Item = isize;
fn next(&mut self) -> Option<isize> {
self.0 += 1;
Some(self.0)
}
}
// 例: イテレータのメソッド average()
trait AverageMethod {
fn average(&mut self) -> isize;
}
impl<I: Iterator<Item=isize>> AverageMethod for I {
fn average(&mut self) -> isize {
let mut len = 0;
let mut sum = 0;
while let Some(n) = self.next() {
len += 1;
sum += n;
}
sum / len
}
}
fn main() {
let a = CountUp(0).take(99).average();
assert_eq!(a, 50);
}
struct CountUp(isize);
impl Iterator for CountUp {
type Item = isize;
fn next(&mut self) -> Option<isize> {
self.0 += 1;
Some(self.0)
}
}
// 例: イテレータのメソッド average()
trait AverageMethod {
fn average(&mut self) -> isize;
}
impl<I: Iterator<Item=isize>> AverageMethod for I {
fn average(&mut self) -> isize {
let mut len = 0;
let mut sum = 0;
while let Some(n) = self.next() {
len += 1;
sum += n;
}
sum / len
}
}
fn main() {
let a = CountUp(0).take(99).average();
assert_eq!(a, 50);
}
292デフォルトの名無しさん
2021/12/30(木) 00:04:05.78ID:MoU6yrVg 反応がないとうんこしたと流してない。不安に襲われるような感じ
293デフォルトの名無しさん
2021/12/30(木) 14:31:45.54ID:Qz6d/gAR >>291のイテレーターとメソッドをCやC++で実装することも可能ですか?
どんな感じのコードになりますか?
どんな感じのコードになりますか?
294デフォルトの名無しさん
2021/12/30(木) 22:06:33.40ID:uQWTVZvM Rustを勧めるとだけ言っておく
295デフォルトの名無しさん
2021/12/31(金) 05:37:35.76ID:FgwbS9xc ここにいるRust屋はC/C++が書けないってことがはっきりしている
296デフォルトの名無しさん
2021/12/31(金) 06:22:24.67ID:0hDlQtG+ 単純にC++が不得手な分野が多すぎ
Rustだと楽に書けるからこのスレに書かれているコードがRustばかりになっている
プログラミング言語としての優劣の違い
Rustだと楽に書けるからこのスレに書かれているコードがRustばかりになっている
プログラミング言語としての優劣の違い
297デフォルトの名無しさん
2021/12/31(金) 07:44:51.93ID:M33hR7ol Rustだと楽にかける分野ってメモリ安全性関連以外ない気がする
298デフォルトの名無しさん
2021/12/31(金) 07:51:10.24ID:FgwbS9xc Rustはイテレータ作れる文法用意されててスゴイ言語ってことか
まあトイプログラム作るのに秀でた言語いじって喜んでるレベルじゃ
あらゆる分野のアプリケーションが書かれてきたC++の実績は理解できないだろうな
せいぜい不得意なことと言えばスクリプト言語で代用される分野くらいだろ
まあトイプログラム作るのに秀でた言語いじって喜んでるレベルじゃ
あらゆる分野のアプリケーションが書かれてきたC++の実績は理解できないだろうな
せいぜい不得意なことと言えばスクリプト言語で代用される分野くらいだろ
299デフォルトの名無しさん
2021/12/31(金) 08:08:48.60ID:tc6fCfYn300デフォルトの名無しさん
2021/12/31(金) 08:23:51.96ID:M33hR7ol301デフォルトの名無しさん
2021/12/31(金) 08:33:21.86ID:BI8sFyN6302デフォルトの名無しさん
2021/12/31(金) 09:32:24.05ID:Lhm1MIug303デフォルトの名無しさん
2021/12/31(金) 10:43:31.43ID:faZP1uCu C++20 からコルーチンが入ってジェネレータは割と書きやすくなったよ
とはいえイテレータのほうが従来通りのポインタ的用法に引きずられてるからなんともだけど
https://cpprefjp.github.io/lang/cpp20/coroutines.html
とはいえイテレータのほうが従来通りのポインタ的用法に引きずられてるからなんともだけど
https://cpprefjp.github.io/lang/cpp20/coroutines.html
304デフォルトの名無しさん
2021/12/31(金) 11:38:15.61ID:tc6fCfYn >>300
c++でもできるけどenumの値とunionのvariantの組み合わせはプラグラマが意識しないといけない
rustだとmatch式のcond部分に値を書けばrust-analyzerがすべてのarmのスケルトンを作ってくれるから
穴埋めしていくだけで処理が書けて楽
c++でもできるけどenumの値とunionのvariantの組み合わせはプラグラマが意識しないといけない
rustだとmatch式のcond部分に値を書けばrust-analyzerがすべてのarmのスケルトンを作ってくれるから
穴埋めしていくだけで処理が書けて楽
305デフォルトの名無しさん
2021/12/31(金) 12:10:32.68ID:M33hR7ol >>304
まあrustの方がc++よりパターンマッチング楽なのは認めるよ間違いない
まあrustの方がc++よりパターンマッチング楽なのは認めるよ間違いない
306デフォルトの名無しさん
2021/12/31(金) 21:01:38.85ID:7OQCq2Au C++と比べてRustだとメモリ安全にできるから、スレッドセーフなコードも誰でも書けるよ
そういったメモリ安全関連の利点がなきゃ存在意義のない言語だよね
書いたコードが高速に動作するかどうか、とかはまた別の話だけど
そういったメモリ安全関連の利点がなきゃ存在意義のない言語だよね
書いたコードが高速に動作するかどうか、とかはまた別の話だけど
307デフォルトの名無しさん
2021/12/31(金) 21:30:26.51ID:Cc3nB8ek308デフォルトの名無しさん
2021/12/31(金) 21:55:39.97ID:2Zk/vij+ http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1371r3.pdf
パターンマッチング構文が提案されてる。
パターンマッチング構文が提案されてる。
309デフォルトの名無しさん
2021/12/31(金) 21:55:45.65ID:0hDlQtG+ >>298
C++で書けることは全てRustで書ける
C++が優位な点は過去実績しかない
これは両方やればはっきりと認識できる
そのスクリプト言語的な記述や利便性がRustにあるという認識は正しい
かゆいところにも手が届くスクリプト言語という側面もある
C++で書けることは全てRustで書ける
C++が優位な点は過去実績しかない
これは両方やればはっきりと認識できる
そのスクリプト言語的な記述や利便性がRustにあるという認識は正しい
かゆいところにも手が届くスクリプト言語という側面もある
310デフォルトの名無しさん
2021/12/31(金) 22:00:54.10ID:2Zk/vij+ Rustはスクリプト言語なのか。
311デフォルトの名無しさん
2021/12/31(金) 22:02:16.06ID:tc6fCfYn >>306
CやC++と同等の性能特性を持つ言語の選択肢は限られてるから安全性以外の理由でRustが採用されることもあると思うよ
CやC++と同等の性能特性を持つ言語の選択肢は限られてるから安全性以外の理由でRustが採用されることもあると思うよ
312デフォルトの名無しさん
2021/12/31(金) 22:03:31.93ID:XhcmshbG Rustって循環参照安全に書けないんじゃなかったけ?
313デフォルトの名無しさん
2021/12/31(金) 22:11:10.66ID:Cc3nB8ek314デフォルトの名無しさん
2021/12/31(金) 22:18:59.59ID:tc6fCfYn315デフォルトの名無しさん
2021/12/31(金) 22:24:28.60ID:tc6fCfYn316デフォルトの名無しさん
2022/01/01(土) 00:53:57.74ID:xczakg94 Rustのmatch式はScalaの後追いパクリw
317デフォルトの名無しさん
2022/01/01(土) 01:00:44.48ID:193tzZ58318デフォルトの名無しさん
2022/01/01(土) 01:12:03.78ID:jvk1ETyF プログラミング言語としての比較結果は明瞭
適用可能な範囲は同じかつ最速
いずれもGCがなく低レベル操作も可能
Rust = C++ = C
したがって勝負は他の点
コード記述が楽に簡潔に書けるか
Rust > C++ > C
安全なコードを書けるか保証できるか
Rust > C++ > C
適用可能な範囲は同じかつ最速
いずれもGCがなく低レベル操作も可能
Rust = C++ = C
したがって勝負は他の点
コード記述が楽に簡潔に書けるか
Rust > C++ > C
安全なコードを書けるか保証できるか
Rust > C++ > C
319デフォルトの名無しさん
2022/01/01(土) 01:22:01.85ID:193tzZ58 >>318
> いずれもGCがなく低レベル操作も可能
これはRustはnightly使うこと前提?
低レベルな機能についてはまだまだunstableなものが多いので少なくともstableなRustではC/C++でできること (処理系依存なものも含む) がすべてできるとは言えないのでは
https://doc.rust-lang.org/stable/unstable-book/
新たな(pre-)RFCも日々提案されてるし現状で十分とあぐらをかくべきではないと思う
> いずれもGCがなく低レベル操作も可能
これはRustはnightly使うこと前提?
低レベルな機能についてはまだまだunstableなものが多いので少なくともstableなRustではC/C++でできること (処理系依存なものも含む) がすべてできるとは言えないのでは
https://doc.rust-lang.org/stable/unstable-book/
新たな(pre-)RFCも日々提案されてるし現状で十分とあぐらをかくべきではないと思う
320デフォルトの名無しさん
2022/01/01(土) 01:33:41.15ID:KzNGE8bI ということは、RustはC++よりJavaと比較する言語なのでは?
321デフォルトの名無しさん
2022/01/01(土) 01:41:42.07ID:193tzZ58 >>309の
> C++で書けることは全てRustで書ける
を念頭に置いた話で "全て" は言い過ぎ、C++でないとできないこともあるだろうと言いたかった
CやC++の低レベル操作は Rust でも "だいたい" できて大抵のユースケースでは困らない
と言うのが正確だと思う
Java は GC あり VM 言語だから低レベル操作の観点でのRustとの類似度で言ったらCやC++の方が近い
> C++で書けることは全てRustで書ける
を念頭に置いた話で "全て" は言い過ぎ、C++でないとできないこともあるだろうと言いたかった
CやC++の低レベル操作は Rust でも "だいたい" できて大抵のユースケースでは困らない
と言うのが正確だと思う
Java は GC あり VM 言語だから低レベル操作の観点でのRustとの類似度で言ったらCやC++の方が近い
322デフォルトの名無しさん
2022/01/01(土) 01:44:00.63ID:KzNGE8bI メモリーの安全性を強調する言語と言えばJavaが筆頭に挙げられるのでは?
Javaは実行時最適化を行うのでC++より速いと主張されます。
この点もRustと酷似している。
Javaは実行時最適化を行うのでC++より速いと主張されます。
この点もRustと酷似している。
323デフォルトの名無しさん
2022/01/01(土) 01:45:59.28ID:KzNGE8bI JavaもRustもC++と比較した優位性を主張するのですが、JavaとRustならどちらが優れているのでしょう?
324デフォルトの名無しさん
2022/01/01(土) 01:46:52.68ID:jvk1ETyF325デフォルトの名無しさん
2022/01/01(土) 01:50:45.71ID:KzNGE8bI Javaは組み込みにも使われ、それどころかpico javaというJavaを効率よく実行できる組み込み用プロセッサのアーキテクチャ迄あるんですよ。
完全にRustと一致するじゃないですか。
実績を考えたらRustを完全に包含しています。
なぜJavaとの比較を嫌がるのですか?
完全にRustと一致するじゃないですか。
実績を考えたらRustを完全に包含しています。
なぜJavaとの比較を嫌がるのですか?
326デフォルトの名無しさん
2022/01/01(土) 01:51:16.51ID:KzNGE8bI もしかしてRustはJavaに負けているのですか?
327デフォルトの名無しさん
2022/01/01(土) 02:00:04.72ID:LNkbwGBY GCがあってデータ競合も起きないマルチパラダイム言語で、C,C++以上の爆速で動く処理系があるとするならそら優秀だろうと思うわ
Javaは実際にはそんなに爆速じゃないだろうし、データ競合の対策がしやすい言語とも思えんけど
Javaは実際にはそんなに爆速じゃないだろうし、データ競合の対策がしやすい言語とも思えんけど
328デフォルトの名無しさん
2022/01/01(土) 02:05:29.52ID:KzNGE8bI 活気があったころは、C++と比較して20倍速いと主張するサイトもありましたよ。
まさに爆速です。
Rustと似ています。
まさに爆速です。
Rustと似ています。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化 過去10年間に使用のメールアドレスや電話番号等も [Hitzeschleier★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★2 [七波羅探題★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★3 [Hitzeschleier★]
- 【速報】年収の壁の自民案判明、26年は168万円 [蚤の市★]
- 「ワールドトリガー」原作1話から完全新作アニメ化、よりパワーアップした1stシーズンとして [爆笑ゴリラ★]
- もしがく:三谷幸喜×菅田将暉の青春群像劇 2週ぶり第10話視聴率3.2% 「さらば八分坂」次週最終回 [ひかり★]
- 【速報】統一教会から100万円の現金を受け取った疑いで現職大臣が辞職へ [709039863]
- 「ミニトマトがボウルに入ってるから使ったら残りはラップして輪ゴムしといてー」👉アスペ系旦那、とんでもない行動に出てしまう [242521385]
- お昼のまったり🍵😶‍🌫🤏すこすこハウス🏡
- 自閉症児の父親「中絶しておけば良かった。 家族が欲しかったのに、手に入れたのは人間たまごっち」 [777114754]
- 【高市悲報】維新、複数人が国保逃れの脱法行為にバチーン!と関与か😰せやかて外国人ガー! [359965264]
- ネトウヨ「中国ロシアとの戦争?日本にはアメリカがついてるので100%勝ちますよ」 [165981677]
