結局C++とRustってどっちが良いの? 6traits

レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
垢版 |
2023/07/29(土) 15:05:46.55ID:2Hm/yplK
C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていう雑談スレ。

前スレ 
https://itest.5ch.net/mevius/test/read.cgi/tech/1688129795

関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.n...cgi/prog/1619943288/
2023/08/24(木) 15:51:29.49ID:YZsWFF7D
競技プログラミングみたいな何の能力を測定しているのか、
また、参加者も限られるようなものの成績が良かった
ことと、言語に対する評価眼を持っていることは別である。
評価とは、審査する側が誰であるかによって異なってしまう。
国際組織でも、アメリカの金で成り立っている組織は、
アメリカの意見になってしまうことは良く知られている
のと同様、プログラムでも学問の世界でも同様だと考えられる。
825デフォルトの名無しさん
垢版 |
2023/08/24(木) 15:56:25.89ID:hEI/Eij5
>>824
それで?
2023/08/24(木) 15:56:54.62ID:YZsWFF7D
「若いから年上の人より正しい判断が出来る」とは限らない。
しかも、その若者の能力が高いかどうかを判定しているのが
京大総長というような高齢の権威者の場合はなおさら。
何を持って人の能力を判断しているのか問題、という問題
が起きる。
2023/08/24(木) 16:00:05.43ID:YZsWFF7D
京大総長が、「この人はプログラミング能力がすばらしい」などと
判断したとしよう。
しかし、それは「京大総長基準」に過ぎない。
「プログラミング能力が素晴らしい」とは、一体何を
もって決めるのか。
仮に素晴らしかったとしても、プログラミング言語の
良し悪しをその人一人が判断してよいということでもない。
2023/08/24(木) 16:12:01.07ID:M4GRlfeF
それで?
829デフォルトの名無しさん
垢版 |
2023/08/24(木) 18:17:38.62ID:QG+ZRfMP
test
2023/08/24(木) 18:50:59.70ID:RER6Zrq6
パソコンが高価だった時代はゲーム機が貧者の味方
その時代のゲームは今でも売買されているが開発者の利益にはならない
むしろ過去の商用ソフトは衰退させた方が最新のゲームを売りやすい
831デフォルトの名無しさん
垢版 |
2023/08/24(木) 18:52:23.22ID:CY1BVKcv
#[derive'Copy, Clone)]
たとえば古い passwd ファイルの形式とかで使われていた
root:x:0:0:root:/root:/bin/bash
user01:x:500:500::/home/user01:/bin/bash
のような「:」区切りのテキストファイルのデータベースを扱いたいとき
C標準のライブラリは何ですか?
Rust用のcrateで言うと何ですか?
2023/08/24(木) 19:15:40.09ID:zclBScKH
なんでそんなこと聞くの?
2023/08/24(木) 22:11:36.44ID:3ljd7W/g
自作自演の準備じゃね
2023/08/25(金) 00:12:20.33ID:1ayFYibv
>>831
区切るだけならstr.split(':')かstr.splitn(7, ':')
構造体に入れるなら一般的にserde crate
そのケースならcsv crateでコロンにデリミタ指定でもいけるはず
2023/08/25(金) 00:21:37.84ID:jCG33I6S
Cなら自分はstrtokが好きかなあ もちろんいろいろとunsafe
2023/08/25(金) 03:14:57.13ID:VpCvI12o
Ruby で、CSV モジュールを使って書いた

UNIXプログラミング質問すれ Part10
https://mevius.5ch.net/test/read.cgi/tech/1303113996/936-937
2023/08/25(金) 05:21:04.13ID:+GAmI8K8
>>681
わかりみ
838デフォルトの名無しさん
垢版 |
2023/08/25(金) 07:20:56.16ID:vekBwhc6
BDS-C とか α-C の人は少数派かな
2023/08/25(金) 07:34:56.19ID:jCG33I6S
THINK Cとか、CodeWarriorとかあったけどねえ 内製にはgccで十分だわって
2023/08/25(金) 10:05:27.96ID:QjCfYj97
マクロはズル
非売品はチート
ネイティブコンパイラは商品という雰囲気
2023/08/25(金) 21:47:21.62ID:dgCh3EK3
スレタイだけ見て検証結果だけ見に来ました
どこですか?
2023/08/25(金) 22:49:31.05ID:TKWUIPKw
検証結果ならC++とRustの平行線が交差してるところに書いてあるよ
2023/08/26(土) 09:36:49.47ID:6yPOQcjp
何番のレスですか?
2023/08/26(土) 10:17:55.69ID:YvKfERa1
MS「BASICとCってどっちが儲かるの」
科学「推測するな。速度を計測しろ」
アンチOSS「ソースを見れない方が勝つ」
2023/08/26(土) 10:47:48.15ID:oTZjsNGJ
>>844
アホ科学者「推測するな。速度を計測しろ」
知的科学者「思考実験しろ」
2023/08/26(土) 12:11:26.64ID:n9Zpgb21
科学的wの含意がわからないバカは単なるバカより悪性度が高い
2023/08/26(土) 12:50:41.78ID:EQIr/PqP
参照で充分なのに所有権の移転を要求する関数があると
いちいちcloneしてから渡さないといけないから非効率
もちろん一回呼ぶだけならclone不要だが
ループ中とかで何度も呼ぶ用途には使えない
なんでそんな関数の設計になってるんだろう?
別にメリットでもあるんか?
2023/08/26(土) 13:34:35.63ID:Zw1oRqbC
日本の科学界は理論軽視。実験ばかりしてる。
849デフォルトの名無しさん
垢版 |
2023/08/26(土) 13:51:37.78ID:BkdXpONX
日本のプログラマは設計軽視
実装ばかりしている
2023/08/26(土) 13:53:57.47ID:1I5XjMeW
まだ検証結果とかないんですね
結果だけは知りたいので、そのうちまた来ます
2023/08/26(土) 13:54:42.84ID:X9B+4TBT
無駄な事を如何に合理的に行うか
2023/08/26(土) 17:14:09.12ID:BANL9PLy
>>847
例えばどの関数?
2023/08/26(土) 18:20:57.77ID:SuFMWKx7
>>852
誰かばれるからネットでは言えないだろうて。
854デフォルトの名無しさん
垢版 |
2023/08/26(土) 18:28:43.52ID:PUW/Ds/i
逆じゃね
日本人は実装軽視
設計でガチガチに固めすぎる
2023/08/26(土) 18:35:38.61ID:d2gT63Zp
>>853
具体例出せないんだと
本人の認識に問題あるのか
関数の作りに問題があるのかわからない
2023/08/26(土) 18:39:02.26ID:rFnbk731
わからなくていいんじゃない?
2023/08/26(土) 19:54:07.81ID:W0ZiOB7w
わかってないのに何かわかったつもりになって書き込まれているクソスレ
2023/08/26(土) 21:07:05.08ID:0tgAAb31
上には上がある わかったつもりでも、さらに賢い奴から見ればクソ
自分なりに勉強して持論もまとめてるが、わかったなんて思わないもんだ
2023/08/26(土) 21:55:32.22ID:H12RzSKf
さすが老害スレww
2023/08/26(土) 22:24:06.83ID:lapxHx5e
賭け事とか軽率な行動をしなければいいよ
頭の中が謙虚だろうが傲慢だろうが行動に直結しなければいい
いくら謙虚になっても忠誠心か何かで極端な行動をするパターンはある
2023/08/26(土) 22:46:59.85ID:rQ60jT/J
さすが老害スレw
2023/08/27(日) 02:06:49.72ID:q6Sk83rz
判ると解るの違いも分からないとか単なるバカだろ
2023/08/27(日) 02:08:05.98ID:fTLdLIfO
あーそれめっちゃわーかーるー!
864デフォルトの名無しさん
垢版 |
2023/08/27(日) 02:39:08.79ID:v+5WY+8u
Firefoxは何かと問題が多い
2023/08/27(日) 10:34:56.61ID:m1noAQBG
構造体に演算子オーバーロードしたいときって,所有権持ってかれないように構造体の参照に対して演算子オーバーロードでいいの?
期待通りに動くんだけど
&a + &b
みたいな書き方になってまどろっこしい
2023/08/27(日) 10:46:11.22ID:FBPgStJh
(*a).演算()やa->演算()を間違えてa.演算()と書いたらエラーになるのがC++で
エラーにならないのがRustじゃないの
2023/08/27(日) 10:50:29.34ID:fHPM9HO/
>>855
前者だったことが判明
2023/08/27(日) 11:12:20.72ID:KN9Q47l4
勝利宣言おじさん!
2023/08/27(日) 12:47:03.16ID:nwdT7crg
>>867
ネットで身元がばれるような情報が書けない事をいいことに
勝利宣言してしまう人。
2023/08/27(日) 13:02:52.22ID:gIdFwVfH
くやしそうww
2023/08/27(日) 13:15:32.07ID:nwdT7crg
どうせ普及し無い事が分かってるし、なんとでも言え。
2023/08/27(日) 13:30:23.89ID:FBPgStJh
スマホや自動車の部品のように
買わされたけど存在意義は知らない物が普及することはよくある
2023/08/27(日) 13:50:59.05ID:HtzqCBy6
おじさん思考トレース

おじさんはね
Rustに部分的にでも欠陥があるかのような物言いは許せないんだよ
コードが出れば今すぐにでもそいつのせいにしてマウントして打ち消しようと思うんだけどね
証拠がないならそいつのせいってことで断定してマウントとっちゃうのが手っ取り早いから、もうそういうことにしちゃうよ
2023/08/27(日) 13:53:29.74ID:HtzqCBy6
こうして今日もRustの名誉は保たれた
875デフォルトの名無しさん
垢版 |
2023/08/27(日) 14:19:51.40ID:FzVOeawK
FirefoxはRustで書かれてる
2023/08/27(日) 14:42:04.03ID:ZMNQeswV
めちゃくちゃくやしかったんだなwwwww
クッソおもろい
877デフォルトの名無しさん
垢版 |
2023/08/27(日) 14:45:24.00ID:wLUi1wnU
FirefoxってRustでも書かれているってだけで
C/C++の方がまだ多いうだよ
2023/08/27(日) 14:53:34.38ID:FBPgStJh
確率的にはコンパイラのバグよりもアプリかライブラリのバグが多いから
コンパイラに欠陥があった的な物言いは分が悪い
これをやりたいためにライブラリを外部に丸投げする方式が普及している
879デフォルトの名無しさん
垢版 |
2023/08/27(日) 15:00:51.57ID:FzVOeawK
使用率100%は電池が減る
2023/08/27(日) 16:29:11.02ID:CnmnxBvX
>>865
普通はCopyにする
Copyにできないなら明示的にcloneする
どちらにも採用できない状況なら
参照に対してのみオーバーロードを書く

+や-の演算子はdot演算子と違ってauto-referencingが効かないから
&a + &bみたいな書き方になるのは現状では避けようがない
将来的にauto-refが効くように改修されることがもしあれば
a + bのような書き方もできるようになるかもしれない
2023/08/27(日) 17:02:53.80ID:dtO6uWju
>&a + &b
>みたいな書き方になってまどろっこしい

Copy実装したくない大型なら参照を使うから&a + &bの書き方がありがたい
小型ならCopy実装してa + bと書ける
2023/08/27(日) 17:07:29.78ID:FBPgStJh
大きいサイズの値を2回以上コピーするのを1回にするような最適化は
コピーコンストラクタに副作用がない保証があればできる気がする

そしてRustのCopyの振る舞いはユーザが勝手に定義できない
2023/08/27(日) 18:00:17.55ID:U2l728xv
>>867
具体例出せないと後者の可能性高いだろ。
標準ライブラリやOSSならそういう問題は他の誰かからも指摘入って修正されるだろうし。
2023/08/27(日) 18:26:07.84ID:5kryRYaj
>>880
ありがとう
auto-refないから&a+&bって書き方になるのね
理解したわ
2023/08/27(日) 18:47:19.96ID:9Fw72WPV
>>883
具体例はfn add(self, rhs: Rhs) -> Outputだったということでしょ
2023/08/27(日) 19:50:49.96ID:zk2DK/9o
>>885
なるほどね
やはり勘違いしていたわけだ
&selfと書いていないから参照はダメだと思い込んでしまったのだろう
実際にはもちろんself自体が参照型でもOK
2023/08/27(日) 19:55:22.28ID:zk2DK/9o
一般的にもトレイトのメソッドfoo(self, ...)についてself自体が&T型の場合もある
&T型はCopy実装されているため消費されても構わない
ようはポインタだから
2023/08/27(日) 20:33:53.99ID:E6sVfEz/
え、その二つの話つながってたの?
2023/08/27(日) 21:23:31.52ID:Cz9QaAKK
比較演算子とかはauto-ref/derefできたほうがいいと思うが算術演算子はexplicitな今のスタイルの方がいいと思う
今でも&a + &bの中身がa.clone() + b.clone()になってるやつとかやめて欲しい
2023/08/27(日) 21:33:56.56ID:OVTDvFv9
>>885でSelfもRhsもOutputも自由なのでT次第でT + T、T + &T、&T + &Tなどそれぞれ最適な実装ができる
例えばT + &T -> Tは敢えて消費してそのメモリを居抜して返す効率パターン
例えば計算途中の中間生成Tは消費されてもよいわけで再び結果の中間生成Tに転用できる
2023/08/27(日) 21:35:11.73ID:Aks4ymi6
>>889
俺もそう思う
コピーして演算なら a+bで良いと思うけど
デカいオブジェクトで参照で演算なら&a+&bのほうがわかりやすいから良いと思う
2023/08/27(日) 21:44:01.12ID:OVTDvFv9
数値計算以外にも応用できて
Rhsは &T でなくてもよいため
例えば { string.push_str(other_str); string } と書くところを
string + other_str と簡潔に書ける
以下の居抜き実装があるため

impl Add<&str> for String {
 type Output = String;

 #[inline]
 fn add(mut self, other: &str) -> String {
  self.push_str(other);
  self
 }
}
2023/08/27(日) 21:45:30.32ID:Aks4ymi6
>>888
俺もなんで&a+&bの&を書くのがまどろっこしいが
>>847
>参照で充分なのに所有権の移転を要求する関数があると
>いちいちcloneしてから渡さないといけないから非効率
に結び付くのか理解できないが,でも、rust野郎は激頭いいから同じ質問を形を変えた質問と
見抜いたんだろう
2023/08/28(月) 03:04:54.55ID:kRbDFKro
質問してる人と答えてる人が同じ人だったら怖いなあ
895デフォルトの名無しさん
垢版 |
2023/08/28(月) 03:16:32.18ID:gISZWwhM
自演の多いスレ
2023/08/28(月) 09:03:13.17ID:ponuOfxz
ほんそれ
>>873-874
2023/08/28(月) 10:16:26.38ID:uyUKevyw
くやしすぎて負け惜しみを書かずにはいられない老害爺ww
2023/08/28(月) 12:32:28.64ID:PXcIjE1o
Rustの名誉を守るため、日々欠かさずパトロール。
そうしてRustの名誉は保たれているのだ。
2023/08/28(月) 12:58:11.57ID:v69lGQmU
質問してたのは行列演算の人でしょ
900デフォルトの名無しさん
垢版 |
2023/08/28(月) 13:33:08.88ID:EHUcz/c8
>>847>>865両方とも?
2023/08/28(月) 14:14:10.40ID:fWSSPYAk
impl<'a> Add for &'a Foo
impl<'a> Add<&'a Foo> for Foo
これで、変数名に&はつかないけど括弧に&がつく感じにできるね
a + b + c == &(a + b) + c == a + &(b + c)
2023/08/28(月) 15:01:10.40ID:Lf88OaGD
それだけじゃ無理
2023/08/28(月) 15:28:15.79ID:YEWHN9+F
Rustで学ぶなんとかとかいう本いっぱい出ているし、結構個人でやる気のあるやつは覚えるんじゃね?
Rust人口増えている印象。
2023/08/28(月) 16:02:44.46ID:Ga4nU38J
この出版不況にそれは凄いじゃん!
2023/08/28(月) 17:40:21.62ID:g5rB6bRy
数年後はHaskellみたいな存在になってそう
2023/08/28(月) 17:40:22.57ID:v1Y6udqG
数年後はHaskellみたいな存在になってそう
2023/08/28(月) 18:31:30.91ID:F1J/4/k0
地学を笑えば名誉を保てそうなのに
逆に名誉を捨てて地学を取る芸風みたいな
908デフォルトの名無しさん
垢版 |
2023/08/28(月) 19:57:39.97ID:4Zx7/Z20
数年後にはHaskellみたいなってると言う人が数年前からいるけど数年後もいるだろうなぁ
2023/08/28(月) 20:08:53.96ID:BueC5+dS
数年前はHaskellはまだブームだったからその時は誉め言葉だったんじゃないの?
2023/08/28(月) 20:46:16.35ID:o8MpXwtV
まあそもそもC++人口がそんなに多くないのにそこからRUSTに移行する人間なんて更に少ないわな
2023/08/28(月) 20:47:30.82ID:C2T1kkQt
ちょっと勉強するならいいけどビジネスでRust書くとか発狂しそう
2023/08/28(月) 20:53:03.47ID:kRbDFKro
そろそろ質問する人と答える人が出てくるかも
2023/08/28(月) 21:01:02.40ID:DV0IBXio
単純なoperator overlodingでもTと&Tの組み合わせで最低4パターンは考慮しないといけないからな
一般的なビジネスアプリケーションでこういう手間をかけるだけのメリットを享受できるケースは少ない
2023/08/28(月) 22:06:15.45ID:LALZht9t
operator overlodを使うビジネスアプリケーションw
あるとしてもoperator overlodを定義するのはライブラリの仕事
利用者は型エラー起こさないように使うだけであり一般的な静的型付け言語どれも同じ
2023/08/28(月) 22:36:07.58ID:78Jgmrk1
>>914
知らない分野に無理にコメントしなくていいぞ
2023/08/28(月) 22:50:16.52ID:t6DgO9mO
ないな
算術以外でオーバーロードは必要ない
関数(メソッド)名で目的をはっきりさせる
2023/08/28(月) 22:53:49.98ID:56ZoPPYl
くやしくてイチャモンつけたかっただけだろw
2023/08/28(月) 23:04:09.89ID:o8MpXwtV
バカでも書けるフレームワークでも無ければビジネス利用は無いだろね
919デフォルトの名無しさん
垢版 |
2023/08/28(月) 23:07:53.29ID:N5WGrjIW
>>916
operator<<
operator>>
2023/08/28(月) 23:08:27.79ID:F1J/4/k0
PerlやC++の演算子を想定してるんだろうけど
若者はそんなものは知らん
PythonとRustは失敗を繰り返さなかった
2023/08/28(月) 23:30:17.72ID:t6DgO9mO
>>919
シフトは整数以外で使ったことないな
そんなものをオーバーロードしてどうするんだよ
意味不明になるぞ
2023/08/28(月) 23:56:35.09ID:LALZht9t
>>915
具体的にoperatorをoverload実装して使うビジネスアプリケーションを言ってみろよ
例えば多倍長を利用するとしても汎用ライブラリが実装するから該当しないよな
2023/08/29(火) 00:00:35.21ID:J3xeIa5d
一般的には算術演算子よりも比較演算子をオーバーロードすることのほうが多いだろうな
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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