競え
※前スレ
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:biBE4xC0251デフォルトの名無しさん
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と似ています。
329デフォルトの名無しさん
2022/01/01(土) 02:07:14.76ID:KzNGE8bI 安全性という観点では、RustはHaskellと似ているように思います。
熱心なHaskellユーザーはコンパイルが終わればバグが無いことを保証されると主張します。
Rustと全く同じです。
熱心なHaskellユーザーはコンパイルが終わればバグが無いことを保証されると主張します。
Rustと全く同じです。
330デフォルトの名無しさん
2022/01/01(土) 02:10:16.54ID:jvk1ETyF Javaを含めるとこうなる
安全なコードを書けるか保証できるか
Rust > Java > C++ > C
Javaはヌルポインタによる参照でエラー例外が実行時に起き得る
Rustはそれさえも起きない
したがって速さだけでなくメモリ安全の点でも Rust > Java が確定済
Javaが勝てる点がない
そのためJavaを捨ててRustへ移行するプロジェクトもある
安全なコードを書けるか保証できるか
Rust > Java > C++ > C
Javaはヌルポインタによる参照でエラー例外が実行時に起き得る
Rustはそれさえも起きない
したがって速さだけでなくメモリ安全の点でも Rust > Java が確定済
Javaが勝てる点がない
そのためJavaを捨ててRustへ移行するプロジェクトもある
331デフォルトの名無しさん
2022/01/01(土) 02:11:02.91ID:KzNGE8bI Haskellもまた、C++と比較して優位性が主張されることの多い言語のひとつです。
しかし、JavaやRustと比較されることは一切在りません。
Java、Rust、Haskellでは、どれが最も優れているのでしょう?
しかし、JavaやRustと比較されることは一切在りません。
Java、Rust、Haskellでは、どれが最も優れているのでしょう?
332デフォルトの名無しさん
2022/01/01(土) 02:13:26.08ID:KzNGE8bI でもRustはJavaより遅いですよね?
Javaは実行時最適化によりC++より20倍速いことがbenchmarkで判明していますよ。
10年以上も前に。
Javaは実行時最適化によりC++より20倍速いことがbenchmarkで判明していますよ。
10年以上も前に。
333デフォルトの名無しさん
2022/01/01(土) 02:15:29.86ID:KzNGE8bI C++を改良したD言語もあります。
DとRustならどちらが優れているのでしょう?
DとRustならどちらが優れているのでしょう?
334デフォルトの名無しさん
2022/01/01(土) 02:16:49.60ID:KzNGE8bI 出自からして、D言語もまたC++と比較して優位性が述べられる言語のひとつです。
しかし、RustやHaskellと比較されることは在りませんね。
どちらが優れているのでしょう?
しかし、RustやHaskellと比較されることは在りませんね。
どちらが優れているのでしょう?
335デフォルトの名無しさん
2022/01/01(土) 02:25:43.18ID:jvk1ETyF まずは決定的な違いを勉強しなさい
GCのない言語 Rust C++ C
GCのある言語 Java D C# Go Haskell Python Ruby JavaScript ...
GCのない言語 Rust C++ C
GCのある言語 Java D C# Go Haskell Python Ruby JavaScript ...
336デフォルトの名無しさん
2022/01/01(土) 02:31:24.00ID:KzNGE8bI >>335
GCの有無で何が変わりますか?
JavaやRuby、Pythonは組み込みにも使われますし、宇宙にだって行きます。
Rustよりずっと広範囲に使われています。
Rustで作られた実用的なソフトウェアはFirefoxしかないじゃないですか。
しかも、そのFirefoxだって熱心な信者以外誰も使わない。
それと比較したら、これらの言語は実用的に使われています。
GCが在ろうとなかろうと。
GCの有無で何が変わりますか?
JavaやRuby、Pythonは組み込みにも使われますし、宇宙にだって行きます。
Rustよりずっと広範囲に使われています。
Rustで作られた実用的なソフトウェアはFirefoxしかないじゃないですか。
しかも、そのFirefoxだって熱心な信者以外誰も使わない。
それと比較したら、これらの言語は実用的に使われています。
GCが在ろうとなかろうと。
337デフォルトの名無しさん
2022/01/01(土) 02:32:19.06ID:193tzZ58 >>324
大体代替手段があるのはそうだと思います
例えばnaked functionやglobal_asmは別途asmなりCなりからオブジェクトファイル生成してリンクするという代替手段があります (これがありならC-FFIできる言語は皆同等になってしまいますが...)
もともと C++ でできることは "全て" できるというかなり強い主張をされてた人がいたのでそれは言い過ぎじゃないかと言いたかっただけです
>>332
ご参考まで
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/java.html
他の言語との比較もありますよ
大体代替手段があるのはそうだと思います
例えばnaked functionやglobal_asmは別途asmなりCなりからオブジェクトファイル生成してリンクするという代替手段があります (これがありならC-FFIできる言語は皆同等になってしまいますが...)
もともと C++ でできることは "全て" できるというかなり強い主張をされてた人がいたのでそれは言い過ぎじゃないかと言いたかっただけです
>>332
ご参考まで
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/java.html
他の言語との比較もありますよ
338デフォルトの名無しさん
2022/01/01(土) 02:33:17.91ID:LNkbwGBY Rustのポジションに取って変わりたいなら、RustみたいにLinuxのKernelコードに取り込まれていってくれるとわかりやすいんだけどね
なぜC++を含む他の言語はLinux Kernelに採用されないのか、って考えると差が明瞭になってきそうだ
なぜC++を含む他の言語はLinux Kernelに採用されないのか、って考えると差が明瞭になってきそうだ
339デフォルトの名無しさん
2022/01/01(土) 02:34:00.98ID:KzNGE8bI Firefoxのバグの多さを考えても、Rustはバグを生産する言語のように思います。
340デフォルトの名無しさん
2022/01/01(土) 02:35:06.26ID:KzNGE8bI >>338
ドライバにクラスは必要ないからでは?
ドライバにクラスは必要ないからでは?
341デフォルトの名無しさん
2022/01/01(土) 02:39:59.20ID:jvk1ETyF342デフォルトの名無しさん
2022/01/01(土) 02:42:24.09ID:193tzZ58 そういえば Windows 10にRust使う話ってどうなったんだろうか
>>336
以下の記事にメモリ安全な既存の言語ではだめでCやC++やRustでないといけない理由
それらの中でもRustが良いとされる理由が書かれていますよ
https://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/
>>336
以下の記事にメモリ安全な既存の言語ではだめでCやC++やRustでないといけない理由
それらの中でもRustが良いとされる理由が書かれていますよ
https://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/
343デフォルトの名無しさん
2022/01/01(土) 02:57:17.29ID:193tzZ58 >>339
FirefoxについてC++コードをRustに書き換えたらセキュリティに関わる脆弱性数がどうなるか分析した記事がありました
https://hacks.mozilla.org/2019/02/rewriting-a-browser-component-in-rust/
結論としては完璧ではないけどRustの方がバグを減らせるということのようです
MS ResearchやGoogleのAndroidチームも類似の調査をやっていてRust採用は効果有りと判断しているみたいです
FirefoxについてC++コードをRustに書き換えたらセキュリティに関わる脆弱性数がどうなるか分析した記事がありました
https://hacks.mozilla.org/2019/02/rewriting-a-browser-component-in-rust/
結論としては完璧ではないけどRustの方がバグを減らせるということのようです
MS ResearchやGoogleのAndroidチームも類似の調査をやっていてRust採用は効果有りと判断しているみたいです
344デフォルトの名無しさん
2022/01/01(土) 04:08:48.59ID:KzNGE8bI JavaやHaskellも多くの人がC++より優れていると分析しています。
速く容易で安全なのです。
全ての点でC++を上回っています。
では、それらの言語を比較した場合、どれが最も優れているのでしょう?
速く容易で安全なのです。
全ての点でC++を上回っています。
では、それらの言語を比較した場合、どれが最も優れているのでしょう?
345デフォルトの名無しさん
2022/01/01(土) 04:11:14.25ID:KzNGE8bI ほとんどすべての言語がC++より優れていると主張します。
という事は、C++はもっとも劣った言語のひとつなのです。
Rustはもっとも劣った言語より優れていると主張しますが、優れた言語、例えばJavaやHaskellと比較したら、かなり劣っているのでは?
という事は、C++はもっとも劣った言語のひとつなのです。
Rustはもっとも劣った言語より優れていると主張しますが、優れた言語、例えばJavaやHaskellと比較したら、かなり劣っているのでは?
346デフォルトの名無しさん
2022/01/01(土) 07:34:43.36ID:JYrmLBPV 多くの人がRustとC++と比較している
比較するなら優れたもの同士を突き合わせるはずだ
なのにJavaやHaskellは影も形もないつまり論外ってことだ
全ての言語がC++に対して優位性を主張するのも
C++が最も現実的で優れた言語だと認めているからであって
わざわざ劣っているものと比較する必要なんてないからだ
比較するなら優れたもの同士を突き合わせるはずだ
なのにJavaやHaskellは影も形もないつまり論外ってことだ
全ての言語がC++に対して優位性を主張するのも
C++が最も現実的で優れた言語だと認めているからであって
わざわざ劣っているものと比較する必要なんてないからだ
347デフォルトの名無しさん
2022/01/01(土) 09:08:27.19ID:193tzZ58 >>344
JavaやHaskellがC++より常に高速というのは明確に誤りです
https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html
ではC++がこれらの言語より優れているかというとそうではありません
言語にはそれぞれ得手不得手があります
唯一絶対の尺度で優劣を決めようとするのではなく、ある特定の用途に対してどの言語が適しているかという観点で議論した方が生産的かと思います
JavaやHaskellがC++より常に高速というのは明確に誤りです
https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html
ではC++がこれらの言語より優れているかというとそうではありません
言語にはそれぞれ得手不得手があります
唯一絶対の尺度で優劣を決めようとするのではなく、ある特定の用途に対してどの言語が適しているかという観点で議論した方が生産的かと思います
348デフォルトの名無しさん
2022/01/01(土) 09:44:43.30ID:a+oD+kQK スレタイ読め。
349デフォルトの名無しさん
2022/01/01(土) 10:50:55.11ID:E1HNnq3M いつもの人の自作自演
350デフォルトの名無しさん
2022/01/01(土) 19:02:54.41ID:n4zdCVCH GitHub・Cookpad などは、遅いRuby on Rails から、Go・Rust などへ移行している
2021年10月には、GitHubのコピーのGitLab が上場し、時価総額は約1.9兆円!
こんな大きい時価総額でも、Railsを使い続ける宣言をしている
基本、Railsは中小ベンチャーが、高品質なサービスを作るツール。
2億レコード・取引先が2万社みたいな規模でも、問題ないと言ってた
他には、組み込みのmruby の本も出た。
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
人工衛星イザナギ・イザナミで、使っている
2021年10月には、GitHubのコピーのGitLab が上場し、時価総額は約1.9兆円!
こんな大きい時価総額でも、Railsを使い続ける宣言をしている
基本、Railsは中小ベンチャーが、高品質なサービスを作るツール。
2億レコード・取引先が2万社みたいな規模でも、問題ないと言ってた
他には、組み込みのmruby の本も出た。
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
人工衛星イザナギ・イザナミで、使っている
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
- 官僚「台湾有事についての質問か、『政府として逐一答えない』と…(カタカタカタ)」高市「私1人で答弁できるわよ!」 [972432215]
- 【悲報】麻生太郎さん、オムツをしていた。晋さん…ここにいたんだね… [731544683]
