■ このスレッドは過去ログ倉庫に格納されています
結局C++とRustってどっちが良いの?
- 1 :デフォルトの名無しさん:2023/02/25(土) 09:49:46.74 ID:VRyB88xR.net
- C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな?
- 952 :デフォルトの名無しさん:2023/04/01(土) 14:25:21.95 ID:hxeslJ4Q.net
- Javaは糞
C#はチョット良い感じ
Juliaは死んだ
Rustがんがれ
Nimもがんがれ
C++は使い続けるけどね
- 953 :デフォルトの名無しさん:2023/04/01(土) 15:11:33.70 ID:rIj/v2ga.net
- >>937
C++に挫折した者ども、いまこそRustに集え
そしてRustに挫折した者ども、いま一度C++に立ち返れ
の方がバランスいいと思う
- 954 :デフォルトの名無しさん:2023/04/01(土) 16:41:11.09 ID:HWGbnwVz.net
- >>944
同名メソッドが衝突した時にどうなるかは言語によってかなり異なるから一番重要じゃないかな
衝突が許されない言語と許される場合も条件がある場合もあるよ
衝突があってもエラー出ない言語もあれば特定な時だけエラーな言語もあるね
回避方法も別名定義方式から同名自己定義や直接指定と色々だ
- 955 :デフォルトの名無しさん:2023/04/01(土) 17:25:01.59 ID:/8VZFYJJ.net
- Rustが「認め」られたことで、C++のスマポも、べき・べからずが確定したと考えておk?
- 956 :デフォルトの名無しさん:2023/04/01(土) 17:29:58.10 ID:WHqiXdwW.net
- >>955
どういう意味?
- 957 :デフォルトの名無しさん:2023/04/01(土) 17:52:08.96 ID:/8VZFYJJ.net
- 大手が認めたんだから、Rustと同等に書ければ、それはsafeなんだよな?
これまで、C++のスマポは、CppCoreGuidelinesなんてものはあっても、強制されなかった
- 958 :デフォルトの名無しさん:2023/04/01(土) 18:00:21.17 ID:WHqiXdwW.net
- Rustに関係なくC++ではスマートポインタを使用すれば安全に書けるし
スマートポインタの使用するしないにRustは全く関係ない?
ここ見てる人は俺も含めてRustに注目してはいるが
C++ユーザのほとんどはRustなど眼中にないだろう
- 959 :デフォルトの名無しさん:2023/04/01(土) 18:01:23.45 ID:WHqiXdwW.net
- 二行目最後?を消し忘れた
- 960 :デフォルトの名無しさん:2023/04/01(土) 18:06:42.88 ID:/8VZFYJJ.net
- 強制されるってのがミソだろ Rust派は、Rustなら、必ず・全部安全って言ってるんだからさ
- 961 :デフォルトの名無しさん:2023/04/01(土) 18:09:42.77 ID:vBVsKFoD.net
- >>933
某オジお得意の誤訳だったんじゃねーの?
- 962 :デフォルトの名無しさん:2023/04/01(土) 19:15:27.20 ID:ugeMTEEj.net
- >>914
> 具体型Fooが確定している状態で動的ディスパッチは絶対に発生しません
逆
動的ディスパッチが実行される時点では必ず具体型Fooが確定している
> dynと目印のついたトレイトオブジェクト経由でしか動的ディスパッチは発生しません
> そしてこのときトレイトは確定しているのでメソッド名は衝突しません
衝突する
直接のトレイトは確定しても付随するトレイト境界があれば各トレイトでメソッド名は衝突しうる
- 963 :デフォルトの名無しさん:2023/04/01(土) 19:16:31.21 ID:ma7yA/CE.net
- >>954
でも>>905によるとRust以外の話をしたつもりは無いらしいよ?
深読みしすぎじゃないかな?
- 964 :デフォルトの名無しさん:2023/04/01(土) 19:31:10.27 ID:9m4PZsrB.net
- どの言語でも他の言語とは異なる特徴があるからその説明をしてくれないとわからん
それを説明されると困る人がいるのが不思議
- 965 :デフォルトの名無しさん:2023/04/01(土) 21:31:47.02 ID:WHqiXdwW.net
- >>957,960
何を言っているのかサッパリ分からん
- 966 :デフォルトの名無しさん:2023/04/01(土) 21:44:43.97 ID:NRw2BG4n.net
- そいつはRustのこともC++のことも何も知らないくせに
なにかコメントしたいだけの池沼なので放置するしかない
- 967 :デフォルトの名無しさん:2023/04/01(土) 21:50:56.74 ID:WHqiXdwW.net
- ひょっとしてGC君かな?
- 968 :デフォルトの名無しさん:2023/04/01(土) 21:55:20.36 ID:3M3YuI+X.net
- >>958
C++でスマポを使ってもヌル安全性もデータ競合安全性も得られない
さらに複雑化した時のスマポの使い方ミスで多くの問題が起きてきたことを考えると
本当に必要なのはスマポが正しく使われていない時にコンパイルエラーを出すこと
現状のC++は欠陥品であり今後も多くのセキュリティホールを生み出し続けるだろう
- 969 :デフォルトの名無しさん:2023/04/01(土) 21:57:58.76 ID:WHqiXdwW.net
- >>968
おおGCくんが来た
>C++でスマポを使ってもヌル安全性もデータ競合安全性も得られない
どんなミスか興味があるのでソースで示してね
- 970 :デフォルトの名無しさん:2023/04/01(土) 22:10:09.20 ID:rBOo7R6g.net
- >>743
同感
Rustは衛生的マクロな点を始めとして各種マクロが優秀すぎる
C++がダメすぎるんだよな
テンプレートも問題ありすぎ
- 971 :デフォルトの名無しさん:2023/04/01(土) 22:21:05.85 ID:nbXeTJU5.net
- ディスパッチの定義を捻じ曲げたのと同じで
衝突の定義も捻じ曲げにきてるよな
- 972 :デフォルトの名無しさん:2023/04/01(土) 23:32:16.53 ID:AdU+jSWJ.net
- >>940
コードがわかりくいのかなと思って
vtableのところをもう少しわかりやすくしてみた
trait TraitA { fn method1(&self); fn method2(&self); }
trait TraitB { fn method1(&self); fn method2(&self); }
trait TraitAB: TraitA + TraitB {}
struct Foo;
impl TraitA for Foo { fn method1(&self) {} fn method2(&self) {} }
impl TraitB for Foo { fn method1(&self) {} fn method2(&self) {} }
impl TraitAB for Foo {}
macro_rules! as_addr { ($target:expr) => { &($target) as *const _ } }
macro_rules! as_array { ($addr:expr, $index:expr) => { *(($addr) as *const usize).offset($index) } }
macro_rules! vtable { ($dyn:expr, $index:expr) => { unsafe { as_array![as_array![as_addr!($dyn), 1], $index] } } }
fn main() {
let foo = Foo;
let dyn_foo: &dyn TraitAB = &foo;
assert_eq!(vtable![dyn_foo, 0], std::ptr::drop_in_place::<Foo> as usize);
assert_eq!(vtable![dyn_foo, 1], std::mem::size_of::<Foo>());
assert_eq!(vtable![dyn_foo, 2], std::mem::align_of::<Foo>());
assert_eq!(vtable![dyn_foo, 3], <Foo as TraitA>::method1 as usize);
assert_eq!(vtable![dyn_foo, 4], <Foo as TraitA>::method2 as usize);
assert_eq!(vtable![dyn_foo, 5], <Foo as TraitB>::method1 as usize);
assert_eq!(vtable![dyn_foo, 6], <Foo as TraitB>::method2 as usize);
}
このように各トレイトの同名メソッドを区別してvtableのインデックス化(このコードだと他の部分含めてインデックス3~6)をしている
- 973 :デフォルトの名無しさん:2023/04/01(土) 23:39:50.11 ID:62NQQrT2.net
- これ次スレたてるの? あるいはどっかの雑スレに合流?
- 974 :デフォルトの名無しさん:2023/04/01(土) 23:53:21.20 ID:3egme1as.net
- C/C++ vs Rustとしてあった方が良いと思うけどね
雑スレだとGCの勢力が強くなりそう
- 975 :デフォルトの名無しさん:2023/04/02(日) 00:22:03.90 ID:Xkdfgrgv.net
- 5chでC++↓Rust↑している人のC++理解度の低さは強調してしすぎることはない
https://mevius.5ch.net/test/read.cgi/tech/1652347700/385-392
- 976 :デフォルトの名無しさん:2023/04/02(日) 00:30:37.47 ID:bY6+UifX.net
- >>972
汚コードに磨きをかけるなよ
普通に関数で書けるものをネストさせたマクロにするセンスに脱帽
- 977 :デフォルトの名無しさん:2023/04/02(日) 00:32:38.03 ID:xbcpqSco.net
- 単純に開発効率の問題だよな
C++よりRustは実行デバッグの時間がかなり減って開発効率がいい
- 978 :デフォルトの名無しさん:2023/04/02(日) 00:39:46.89 ID:GYBlNyWI.net
- 汚コード唱えるやつがコードを示したことがなく信用できない
- 979 :デフォルトの名無しさん:2023/04/02(日) 00:43:54.27 ID:W9/nq+tL.net
- 建てた 叫んで埋めていいぞー
結局C++とRustってどっちが良いの? 2traits
https://mevius.5ch.net/test/read.cgi/tech/1680363777/
- 980 :デフォルトの名無しさん:2023/04/02(日) 00:48:46.53 ID:Xkdfgrgv.net
- >>978
君の日本語がおかしいって話なんで、ソースで示すべきことは何も無いよ
それともなにか示してほしいの?
- 981 :デフォルトの名無しさん:2023/04/02(日) 01:41:46.92 ID:DBhEEanc.net
- スレを読んでいて技術的な論争は興味深いんだけど
他人への攻撃をしてる人たちは邪魔なんで消えてほしい
- 982 :デフォルトの名無しさん:2023/04/02(日) 02:09:25.03 ID:WdMf4Ye5.net
- そもそも>>1がソースを書けないと思われる
特にC++は読めもしないのだろう
RustとC++を技術的に比較するなら両方のソースをある程度書けないと不可能
- 983 :デフォルトの名無しさん:2023/04/02(日) 07:26:34.66 ID:W9/nq+tL.net
- >>3 にあるとおり、やれっていわれたらやる マとしてはこれでFA
慣れは必要だけど、要求される頃には、定石も今以上に揃うだろうし
ここ読んでて、食わず嫌いしてたRustを眺めなおしてから、
CppCoreGuidelines 読んだら、めっちゃわかりやすかった
これだけで俺には十分収穫あったね
- 984 :デフォルトの名無しさん:2023/04/02(日) 07:39:56.12 ID:W9/nq+tL.net
- Linusに認められた、これだけで、Rustの「勝利」は外形的事実 争う必要はない
はずなのに、そのうえまだ、Rustの優位を主張するのに全力な香具師がいる
若いなって正直思う 昔俺もああだったぜ
C++を母語としている者が考えることは、次に何を取り込むか
やっぱ #pragma safe は欲しいね
そのうしろに値くらい付いてもいい safeの詳細も、進化していくだろうから
- 985 :デフォルトの名無しさん:2023/04/02(日) 07:53:54.77 ID:W9/nq+tL.net
- あああと、パタンマッチを知らなかったのも俺だ (知らぬは)一生の恥になるとこだったw
静的にソースコードを解析してsafeを証明できる、ガイドライン違反を指摘できることだとばかり
rustcのサンプル出してくれた奴には悪かった
「たしかに面白い…けど、こういうの、Cなら、yylvalっぽく処理するよね…」っていう印象だったんだ
inspectってのが来たら来るらしいので、来たら喜んで遊んでみるとして
優位性の根拠になるか? それホントC++に必要? ってのは次スレに持ち越したい
っていう埋め
- 986 :デフォルトの名無しさん:2023/04/02(日) 10:51:04.91 ID:D26hzdDf.net
- >>985
キミは周回遅れのド素人でかつ
人より知能が劣るからもう発言しなくていいです
これはいじわる発言じゃなくて、助言です
- 987 :デフォルトの名無しさん:2023/04/02(日) 10:59:32.98 ID:W9/nq+tL.net
- よく言われるよ
Rustのエヴァンジェリストが暴れていいのに、初心者の俺に黙っとけはないなあ
せいぜい質問させてもらうよ
- 988 :デフォルトの名無しさん:2023/04/02(日) 11:04:00.93 ID:xlKg15xW.net
- >>981と>>986は同一人物です
皆さん次スレでも騙されないようご注意を
- 989 :デフォルトの名無しさん:2023/04/02(日) 11:10:11.81 ID:6UFMeU2Z.net
- >>976
複オジメソッドに釣られてるよ
気をつけて
- 990 :デフォルトの名無しさん:2023/04/02(日) 11:12:51.90 ID:Xkdfgrgv.net
- 自分の間違いを認められるだけマシ
>>981は露骨に複おじだけど
>>986=>>847=ID:BpzIAh0Kは違う気がするんよなあ
あんまり雑認定しすぎるとおじサイドの「自演に見えてるやつは頭がおかしい」の批判が有効になってしまうから、確証を持てないならほどほどにな
- 991 :デフォルトの名無しさん:2023/04/02(日) 11:17:21.13 ID:W9/nq+tL.net
- ダックタイピングみたいなもんじゃないんw
- 992 :デフォルトの名無しさん:2023/04/02(日) 11:34:39.31 ID:E52hJVrB.net
- 俺は池沼と複オジをこのスレから排除したいだけよ
だって時間のムダだもん
- 993 :デフォルトの名無しさん:2023/04/02(日) 11:42:03.77 ID:Xkdfgrgv.net
- やめろバカ!複おじを野に放つ気か!?
せっかく平和なRust本スレが実現できて、後はヤツが追い払った住民たちを呼び戻すだけだというのに!
- 994 :デフォルトの名無しさん:2023/04/02(日) 11:44:18.44 ID:W9/nq+tL.net
- 残念だが、初心者お断りとは書いてなかったんだなあ
そうくると思って、俺がとっととスレ建てちまったからねw
- 995 :デフォルトの名無しさん:2023/04/02(日) 11:45:16.10 ID:E52hJVrB.net
- >>993
そうかそっちか
それは申し訳なかった
こっちを隔離にすべきやね
複オジも池沼(ID:W9/nq+tL)もこっちに張り付く気マンマンらしいし
- 996 :デフォルトの名無しさん:2023/04/02(日) 12:34:42.17 ID:uooZ7ifu.net
- まあまあ同じスレで出会った仲間なんだから仲良くしようや
- 997 :デフォルトの名無しさん:2023/04/02(日) 13:29:57.68 ID:Ky8sq4kq.net
- Rustが良いって言ってる人は
C/C++のポインタとメモリ管理理解出来なかったからだろ
- 998 :デフォルトの名無しさん:2023/04/02(日) 13:30:14.04 ID:Ky8sq4kq.net
- おにまい
- 999 :デフォルトの名無しさん:2023/04/02(日) 13:30:23.82 ID:Ky8sq4kq.net
- 梅
- 1000 :デフォルトの名無しさん:2023/04/02(日) 13:30:34.24 ID:Ky8sq4kq.net
- 櫻
- 1001 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1001
313 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★