[過去ログ] 結局C++とRustってどっちが良いの? 8traits (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(2): 2023/10/28(土)13:45 ID:fh9BWjjr(1/2)調 AAS
「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていう雑談スレ。

・C/C++ <=> Rust いまさら聞けない移行質問なども適当にどぞ
・レスバはじめんのは勝手だけど、面白いこと・へぇなこと書いたヤツが優勝
・マな話は、マのスレもご活用ください↓

前スレ: 結局C++とRustってどっちが良いの? 7traits
2chスレ:tech

関連スレ(マ板): Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理ミス。Rustにする」
2chスレ:prog
903: 2023/12/05(火)18:13 ID:Ppu4uIXE(1)調 AAS
>>902
Weak Reference等を使って循環参照を手動で避ける方法が用意されてるかどうかは手動メモリ管理かどうかとは全く関係ないよ
904: 2023/12/05(火)18:43 ID:gtr9NjJz(5/6)調 AAS
>>894
気持ち的にはラップしたいかなあ
905
(1): 2023/12/05(火)19:04 ID:gtr9NjJz(6/6)調 AAS
全銀システム障害「詳細設計書見落とし」でオーバーフローの痛恨、再発防止なるか
https://xtech.nikkei.com/atcl/nxt/column/18/00001/08680/

Rustを使えばいいじゃない
906: 2023/12/05(火)19:13 ID:gquaqYbt(1)調 AAS
IBMだったらJavaだったのに
907
(2): 2023/12/05(火)19:18 ID:800y2Su3(1)調 AAS
積極的にC++を使いたがる人ってC++のどこに魅力を感じているんだ
908: 2023/12/05(火)19:24 ID:GrTJwyK/(1)調 AAS
Cとの互換性
909
(2): 2023/12/05(火)19:32 ID:4rw/VL0P(1)調 AAS
>>897
問題はGC言語は *常に* GC機能ありなところ。
910: 2023/12/05(火)19:40 ID:iiJ5Z2H1(4/5)調 AAS
>>907
オブジェクト指向w
911
(1): 2023/12/05(火)20:04 ID:3vhS3QGH(1)調 AAS
リファレンスカウンター気にするくらい速度を求めるなら、RAIIすら嫌だとはならんのかな
mallocはプログラムの最初に一回呼ぶ以外は許されない
912: 2023/12/05(火)20:31 ID:GM9Glwep(1)調 AAS
>>907
組み込み系でオブジェクトやりたい人
あと意図的に悪意あるコードを仕込む人とか。
913: 2023/12/05(火)21:15 ID:HiCWBikd(2/2)調 AAS
やりたいことが出来るのが一番の理由
アンリミテッドが魅力
914: 2023/12/05(火)21:36 ID:9fH1d+k3(1)調 AAS
参照カウントて結構コストあったよな……と探したら解説見つけた。
yamasa.hatenablog.jp/entry/2021/01/29/012525

昔は並列処理と相性悪いと言われていたけど、今はどうかね?
915: 2023/12/05(火)21:36 ID:ckmQfDX3(1)調 AAS
++C Unsafety Unlimited C++
916
(1): 2023/12/05(火)21:43 ID:tZxAn7Rl(1)調 AAS
>>909
GC言語でもunsafeで手動管理とかできるよ
Rustと同じで基本がsafeだからC++をsafeにしていくよりもずっと簡単で問題が起きにくいアプローチ
917: 2023/12/05(火)21:59 ID:puqODfvy(1)調 AAS
>>902
>そのため複数所有者を使わざるを得ない場合に限定して用いる
複数所有者を使わざるを得ない状況かどうかを確実に見分けるのはそれなりに難しい
Rustの場合はコンパイル通らないから無駄にRc/Arcを違うことはあっても逆はないので安全
C++は逆もある
>>853が「めちゃくちゃ安全になる」と言ってる理由もその辺にあるのでは
918: 2023/12/05(火)22:10 ID:vNAfxFS3(1)調 AAS
>>911
RAII自体はコストゼロ
RAIIで解放されるスタック上の値の型にデストラクタがある時にその実行コストがかかる
そしてヒープ領域を所有していればヒープ解放コストがかかる
何度もヒープ確保解放を繰り返すよりはなるべく最初に確保するのはもちろん正しい
スタック領域で済ませられるならさらに望ましい
919: 2023/12/05(火)22:57 ID:iiJ5Z2H1(5/5)調 AAS
全部独り言だったりしてw
920: 2023/12/06(水)01:20 ID:N0N71GtG(1/7)調 AAS
メモリに展開するのにオーバーフローしてもエラーを通知しないの?
https://japan.zdnet.com/article/35212258/

言語はCらしいけどどういうプログラムなんだろう
まじでmallocしてそこにmemcpyしてるだけなんじゃないか
対策はRustで書き直せ
921: 2023/12/06(水)01:23 ID:N0N71GtG(2/7)調 AAS
たとえクソレガシーだったとしても書き込むアドレスの範囲が想定してるものかのチェックは入れるべきだろう
どうせオフセットも手計算だろうし
922
(1): 2023/12/06(水)01:40 ID:MT5mgeUa(1/6)調 AAS
>>916
>>909
>GC言語でもunsafeで手動管理とかできるよ

どの言語?具体名あげてくれ。
923: 2023/12/06(水)01:58 ID:+XLnMsko(1/4)調 AAS
[gc unsafe] [🔍]
924
(1): 2023/12/06(水)09:15 ID:oM0gjrfW(1/8)調 AAS
>>867-868
循環参照は?
925
(2): 2023/12/06(水)09:17 ID:oM0gjrfW(2/8)調 AAS
>>867
>あらゆる本で紹介されてない

a)全ての本で紹介されていない
b)紹介された本がひとつもない

どっちの意味?念のため確認
926: 2023/12/06(水)09:18 ID:oM0gjrfW(3/8)調 AAS
>925 補足
a)全ての本で紹介されていない (紹介されてる本は少なくとも一つ以上ある)
927: 2023/12/06(水)09:20 ID:oM0gjrfW(4/8)調 AAS
>>868
思い付いている人は大勢居る

>>865
>C++で極力Rustっぽく書く

いやいや Rust 以前から Rust 無関係に C++ で普通に C++ っぽく描いた結果でしょ
きみ承認欲求強過ぎるね
928: 2023/12/06(水)10:53 ID:CNnXy5JV(1)調 AAS
>>922
メジャーなとこで言えばC#とかSwiftとか
929
(1): 2023/12/06(水)11:45 ID:oM0gjrfW(5/8)調 AAS
>>905
やっぱりNATテーブル不良で再起動したら治るルーターじゃん
930: 2023/12/06(水)12:09 ID:4VSkBLs6(1)調 AAS
>>929
頭大丈夫か?
931
(2): 2023/12/06(水)12:31 ID:3kI3ay52(1/5)調 AAS
型推論の是非を問いたい
書くのは楽かもしれないが読みにくくね?
型の重複記述は省きたいがまったく型がわからなくなると理解が難しくなる
読みやすさを優先すべきだと思うがどうだろう
IDEやエディタのサポートでカバーされるという考え方もあるが、カーソル合わせないとわからないしな
932
(2): 2023/12/06(水)12:44 ID:lEEu+DT0(1/2)調 AAS
>>931
ややこしい型の手書きとか効率悪化の元だから駄目。

せいぜいIDEに型のコメントを自動生成させるくらいまでだな。手動は更新されなくなってバグの温床になる。
933: 2023/12/06(水)12:46 ID:MT5mgeUa(2/6)調 AAS
>>931
けっこう同意。
変数初期化ではリテラルでの場合だけ型推論利用して、そうでなければ型書いちゃうことも多い。
934
(1): 2023/12/06(水)12:51 ID:MT5mgeUa(3/6)調 AAS
>>932
>手動は更新されなくなってバグの温床になる。

型変わったらコンパイル通らないし、型明示がバグの温床になるってのは無い。
修正の手間が増えるってのはわかる。
935: 2023/12/06(水)12:54 ID:B4jpx9xe(1)調 AAS
複雑な型名を知る必要がない場合も多い
例えばRustなら関数の引数型も返り型でも具体的な型名を書かずに
impl Trait名 と使う機能のトレイト名だけを指定したり
936: 2023/12/06(水)12:56 ID:lEEu+DT0(2/2)調 AAS
>>934
c++はスライシングあるからエラーにならない例外もある。
レアケースだけど。
937
(1): 2023/12/06(水)13:09 ID:6EzLMFr7(1/5)調 AAS
同じ情報を二重に書くのはプログラマなら普通疑問に思う
938
(1): 2023/12/06(水)13:12 ID:N0N71GtG(3/7)調 AAS
>>924
コピー時はweak_refで渡すので良いかと思うのだが
939: 2023/12/06(水)13:14 ID:N0N71GtG(4/7)調 AAS
>>925
普通に考えてaじゃないの?
なんで紹介とか出てくるんだ?
940
(1): 2023/12/06(水)13:17 ID:3kI3ay52(2/5)調 AAS
>>937
ある程度の重複さによってミスを早期発見できる効果があるから一概にそうはいえないぞ
941: 2023/12/06(水)13:31 ID:UHi6Tpqq(1)調 AAS
俺のプログラムにバグがあるのは
俺がまだ本気出してないだけだから
942: 2023/12/06(水)13:38 ID:+XLnMsko(2/4)調 AAS
どれだけスレが進行しても客観的な基準が示されず
主観バトルを発生させ続け
留まるところを知らない概念

可読性
943: 2023/12/06(水)13:40 ID:uGBP6FLN(1/3)調 AAS
>>938
いやそれだとshared_ptrの意味ないから
shared_ptr使う限りは本質的には解決は難しい
それは生でshared_ptr使う場合も同じ
get_weakというメソッドでweak_refでラップして返すメソッドを提供するとかだろう
944
(1): 2023/12/06(水)13:44 ID:uGBP6FLN(2/3)調 AAS
全銀のシステムこの規模で低レイヤーのメモリ操作しまくるのにC使ってるのマジで狂気としか思えないな
コードレベルのユニットテストもないのだろうし
絶対こういうこと起きるやん
945
(2): 2023/12/06(水)13:55 ID:6EzLMFr7(2/5)調 AAS
>>940
保守できなくなるから必ず避けるべき
946
(1): 2023/12/06(水)14:04 ID:3kI3ay52(3/5)調 AAS
>>945
プログラミング言語自体、ある程度の冗長性があるようにデザインされている
たからこそコンパイルエラーという現象が起こる
そもそもテストを書くという行為が重複した作業なのだけどやるだろ?
仕様変更したら書き直しなのは仕方ない
947
(2): 2023/12/06(水)14:06 ID:ts/cnrJA(1/3)調 AAS
Cであることは関係なくね?
データ形式の共有に失敗すればどこでも起こりそう
記事だけだとよく分からんけどAAABBBをABABABって誤認した感じでしょ
948: 2023/12/06(水)14:10 ID:4S+GIU/C(1)調 AAS
ABAP
949
(1): 2023/12/06(水)14:11 ID:6EzLMFr7(3/5)調 AAS
>>946
>プログラミング言語自体、ある程度の冗長性があるようにデザインされている
それは妥協の産物で悪だよ

>たからこそコンパイルエラーという現象が起こる
冗長性がない言語があったとしてコンパイルエラーは起こるし意味がある

>そもそもテストを書くという行為が重複した作業なのだけどやるだろ?
>仕様変更したら書き直しなのは仕方ない

最初に型名が正しいと確認されたら型推論に任せるべきです
950: 2023/12/06(水)14:17 ID:N0N71GtG(5/7)調 AAS
>>947
どこを読んだらそうなるんだ?
951: 2023/12/06(水)14:41 ID:oM0gjrfW(6/8)調 AAS
>>945
>保守できなくなるから必ず避けるべき

保守する気がなくなるから必ず避けるべき
ならわかる
952
(1): 2023/12/06(水)14:44 ID:uGBP6FLN(3/3)調 AAS
>>947
なんも分かってなくて草
あの記事だけで普通は全部理解できるぞ
953
(1): 2023/12/06(水)14:52 ID:3kI3ay52(4/5)調 AAS
>>949
> 最初に型名が正しいと確認されたら型推論に任せるべきです

その最初の確認ってどうすんのさ?
まったく字面では現れない場合があるよね
もともとはその場合の話
954
(1): 2023/12/06(水)15:01 ID:ts/cnrJA(2/3)調 AAS
>>952
記事から全部理解できたならたぶん別の記事だと思う
955: 2023/12/06(水)15:07 ID:N0N71GtG(6/7)調 AAS
>>954
正確にはスライド
普通にわかる
956: 2023/12/06(水)15:12 ID:6EzLMFr7(4/5)調 AAS
>>953
まぁそうだね
>>932で私の言いたいことは書かれてたや
957
(1): 2023/12/06(水)15:22 ID:aoO2XCof(1)調 AAS
全銀のやつは記事に書いてることはわかるがめちゃくそ疑問だらけ

なんで生成時にサイズチェックしないのか
なんで生成されたテーブルをチェックしてないのか
なんで生成されたテーブル使った試験をしてないのか

一般企業でもなかなかお目にかかれないひどい内容だがそれを金融系のしかも全銀がやっちゃうってのが信じられないわ
958: 2023/12/06(水)15:26 ID:MT5mgeUa(4/6)調 AAS
>>944
同感
959
(1): 2023/12/06(水)15:33 ID:MT5mgeUa(5/6)調 AAS
型推論よりインテリセンスとか補完がうざい。
こっちの入力リズムに合わないとイラっと来ることある。
960: 2023/12/06(水)16:16 ID:oM0gjrfW(7/8)調 AAS
>>957
同感
961: 2023/12/06(水)16:17 ID:oM0gjrfW(8/8)調 AAS
>>959
判る
入力enterで違う単語になってたら殺意を覚える
962
(1): 2023/12/06(水)18:22 ID:SQhb0To1(1/2)調 AAS
Pimplが説明してるある本がないか立ち読みしたのだがあった
最近出たC++ソフトウェア設計という本にモロに書いてあった
こんな本いつの間に出てたんだ?
モロに俺がドヤ顔したパターンじゃねえか...
この本内容もめちゃくちゃ良いぞ
963: 2023/12/06(水)18:31 ID:6EzLMFr7(5/5)調 AAS
pimplってGoFになかったっけ?
964
(1): 2023/12/06(水)18:37 ID:+XLnMsko(3/4)調 AAS
ヘッダファイルの変更のせいで再コンパイルされるC++特有の問題に対処するのが主目的のpimplがなんでGoFにあると思ったんですか?
965
(1): 2023/12/06(水)18:54 ID:MT5mgeUa(6/6)調 AAS
>>962
pimpl、10年前の本「C++のためのAPIデザイン」(2012年)にも載ってるぞ。
966
(1): 2023/12/06(水)18:55 ID:SQhb0To1(2/2)調 AAS
まあPimplの主張はコンパイルサイズを固定するとか
内部を隠蔽することが主目的っぽいね
この本ではImplにunique_ptrを使ってコピー時にmoveする実装になってる
967: 2023/12/06(水)19:05 ID:ts/cnrJA(3/3)調 AAS
知ってると役に立つけどC++使う気が失せる技法のひとつだな
968: 2023/12/06(水)19:09 ID:+XLnMsko(4/4)調 AAS
>>966
>unique_ptrを使ってコピー時にmoveする

恐怖!auto_ptr再発明男!
969: 2023/12/06(水)19:24 ID:lBgUAnRO(1/2)調 AAS
>>965
紙本は絶版っぽい
kindleがあるから買うか悩むなあ
クソ高いし
970: 2023/12/06(水)19:26 ID:lBgUAnRO(2/2)調 AAS
確かに不毛過ぎる気はする
本質的じゃない部分ですげー頭使わなきゃならんし
面白い部分でもない
素直にrust使うべきだわ
971: 2023/12/06(水)19:48 ID:Pw3WwC1e(1)調 AAS
銀行はやったこと無いけどSIerの下請けで
お役所のシステム移行の
仕事したときにライブラリ一つに数万個のテストケースが
用意されてあらゆる仕様適合をチェックしていたので
実装でアホなことしててもテストで叩き落とせばよいという
思想なのかも
972
(1): 2023/12/06(水)20:02 ID:Knh+cYx8(1)調 AAS
>>964
GoFのBridgeパターン
973: 2023/12/06(水)20:16 ID:3kI3ay52(5/5)調 AAS
ヘッダーに実装書きまくるのが今のクソc++だからpimplにしたところでというのはある
974: 2023/12/06(水)20:37 ID:MnzvwPfi(1)調 AAS
実装を書かざるを得なくなってヘッダーと呼ぶのが不適切になったから.hの拡張子がなくなった
975: 2023/12/06(水)20:57 ID:N0N71GtG(7/7)調 AAS
Pimplの良い説明を見つけた
この中のstd::shared_ptrの場合が今議論されている項目のようだ
http://www17.plala.or.jp/KodamaDeveloped/LetsProgramming/details_pimpl_idiom.html
976: 2023/12/06(水)22:01 ID:rDPAp/5U(1)調 AAS
IT大手がRustへ舵を切るわけだな
977: 2023/12/06(水)22:38 ID:UoD976YL(1/2)調 AAS
pimplはScott MeyersのEffective Modern C++が詳しい(Effective C++にもある程度書いてある)
shared_ptrじゃなくunique_ptrを使えと書いてる
https://en.cppreference.com/w/cpp/language/pimpl
https://herbsutter.com/gotw/_100/
978: 2023/12/06(水)22:38 ID:UoD976YL(2/2)調 AAS
>>972
構造が似てるだけで全然別のもの
979
(1): 2023/12/07(木)00:06 ID:3PWWuEZS(1/3)調 AAS
デザインパターンとは構造について述べたもの
pimplはBridgeパターンの一適用例
別のものではない
980
(2): 2023/12/07(木)00:37 ID:mM7hpDu4(1)調 AAS
>>979
>デザインパターンとは構造について述べたもの
全然違うよ
GoFにもそういう考えを明確に否定する内容が書いてある
981
(1): 2023/12/07(木)00:41 ID:katRzGi9(1)調 AAS
C++オブジェクト設計という本にはbridgeパターンの一種で継承や多態性が必要がない場合の単純な例としてPimplの説明があった
982: 2023/12/07(木)00:52 ID:3PWWuEZS(2/3)調 AAS
>>980
議論をしたければ
GoFに書いてあるそういう考えを明確に否定する内容
を述べ給え
983: 2023/12/07(木)00:55 ID:3PWWuEZS(3/3)調 AAS
>>981
一見して分かりそうなもんだけどね
984: 2023/12/07(木)01:04 ID:Avn/NPEq(1)調 AAS
C++の不完全型とJavaのインターフェースが同じに見える人には同じに見えるんだろう
985: 2023/12/07(木)02:06 ID:Sudvf4UZ(1)調 AAS
>>980
そんなこと書いてねーぞ
986: 2023/12/07(木)09:57 ID:XOE4A360(1/2)調 AAS
RustでGUIのアプリがつくりたいです
987
(1): 2023/12/07(木)11:16 ID:Gb/m/afO(1)調 AAS
egui
988: 2023/12/07(木)13:36 ID:XOE4A360(2/2)調 AAS
>>987
ありがとう
これはおもしろそうでごす
989: 2023/12/07(木)23:09 ID:wfAAUjY+(1)調 AAS
えぐい
990: 2023/12/08(金)09:55 ID:k3Bpg+TD(1/8)調 AAS
踏んどくか
991: 2023/12/08(金)09:58 ID:k3Bpg+TD(2/8)調 AAS
結局C++とRustってどっちが良いの? 9traits
2chスレ:tech
992: 2023/12/08(金)10:01 ID:dTkbwwL5(1)調 AAS
unsafe {
次スレいらんわボケ
}
993: 2023/12/08(金)10:15 ID:k3Bpg+TD(3/8)調 AAS
・めとくか
994
(1): 2023/12/08(金)10:27 ID:gyEpWkla(1)調 AAS
Cで書かれたプログラムがある
Rustに移植せよ
https://uguisu.skr.jp/othello/7gyou.html
https://ideone.com/0xz2SJ
995: 2023/12/08(金)10:38 ID:DJ4GSkDO(1)調 AAS
こんな短く書けるんだ!
996: 2023/12/08(金)10:39 ID:k3Bpg+TD(4/8)調 AAS
RustはCとの相性は良いがC++との相性は最悪
997
(1): 2023/12/08(金)10:39 ID:k3Bpg+TD(5/8)調 AAS
どうしてもC++を捨てられない人は
RustよりNim使った方が救われる
998: 2023/12/08(金)10:40 ID:k3Bpg+TD(6/8)調 AAS
>>994
このスレの腕自慢建ちなら一瞬で移植してくれるだろう
999: 2023/12/08(金)10:41 ID:k3Bpg+TD(7/8)調 AAS
間違えた
x 建ち
o 達
1000: [さげ] 2023/12/08(金)10:41 ID:k3Bpg+TD(8/8)調 AAS

2chスレ:tech
1001
(1): 1001 ID:Thread(1/2)調 AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 40日 20時間 56分 48秒
1002
(1): 1002 ID:Thread(2/2)調 AAS
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。

▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/

▼ UPLIFTログインはこちら ▼
2ch板:login
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.266s*