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

レス数が1000を超えています。これ以上書き込みはできません。
2023/10/28(土) 13:45:00.38ID:fh9BWjjr
「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていう雑談スレ。

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

前スレ: 結局C++とRustってどっちが良いの? 7traits
http://mevius.5ch.net/test/read.cgi/tech/1693451813/

関連スレ(マ板): Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理ミス。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2023/12/05(火) 22:57:00.41ID:iiJ5Z2H1
全部独り言だったりしてw
2023/12/06(水) 01:20:30.01ID:N0N71GtG
メモリに展開するのにオーバーフローしてもエラーを通知しないの?
https://japan.zdnet.com/article/35212258/

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

どの言語?具体名あげてくれ。
2023/12/06(水) 01:58:21.86ID:+XLnMsko
[gc unsafe] [🔍]
2023/12/06(水) 09:15:07.04ID:oM0gjrfW
>>867-868
循環参照は?
925デフォルトの名無しさん
垢版 |
2023/12/06(水) 09:17:14.31ID:oM0gjrfW
>>867
>あらゆる本で紹介されてない

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

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

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

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

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

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

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

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

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

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

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

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

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

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

恐怖!auto_ptr再発明男!
2023/12/06(水) 19:24:48.89ID:lBgUAnRO
>>965
紙本は絶版っぽい
kindleがあるから買うか悩むなあ
クソ高いし
2023/12/06(水) 19:26:54.33ID:lBgUAnRO
確かに不毛過ぎる気はする
本質的じゃない部分ですげー頭使わなきゃならんし
面白い部分でもない
素直にrust使うべきだわ
2023/12/06(水) 19:48:07.27ID:Pw3WwC1e
銀行はやったこと無いけどSIerの下請けで
お役所のシステム移行の
仕事したときにライブラリ一つに数万個のテストケースが
用意されてあらゆる仕様適合をチェックしていたので
実装でアホなことしててもテストで叩き落とせばよいという
思想なのかも
2023/12/06(水) 20:02:44.32ID:Knh+cYx8
>>964
GoFのBridgeパターン
2023/12/06(水) 20:16:14.69ID:3kI3ay52
ヘッダーに実装書きまくるのが今のクソc++だからpimplにしたところでというのはある
2023/12/06(水) 20:37:00.46ID:MnzvwPfi
実装を書かざるを得なくなってヘッダーと呼ぶのが不適切になったから.hの拡張子がなくなった
2023/12/06(水) 20:57:06.52ID:N0N71GtG
Pimplの良い説明を見つけた
この中のstd::shared_ptrの場合が今議論されている項目のようだ
http://www17.plala.or.jp/KodamaDeveloped/LetsProgramming/details_pimpl_idiom.html
2023/12/06(水) 22:01:15.11ID:rDPAp/5U
IT大手がRustへ舵を切るわけだな
2023/12/06(水) 22:38:24.64ID:UoD976YL
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/
2023/12/06(水) 22:38:53.88ID:UoD976YL
>>972
構造が似てるだけで全然別のもの
979デフォルトの名無しさん
垢版 |
2023/12/07(木) 00:06:56.11ID:3PWWuEZS
デザインパターンとは構造について述べたもの
pimplはBridgeパターンの一適用例
別のものではない
2023/12/07(木) 00:37:25.72ID:mM7hpDu4
>>979
>デザインパターンとは構造について述べたもの
全然違うよ
GoFにもそういう考えを明確に否定する内容が書いてある
2023/12/07(木) 00:41:10.07ID:katRzGi9
C++オブジェクト設計という本にはbridgeパターンの一種で継承や多態性が必要がない場合の単純な例としてPimplの説明があった
982デフォルトの名無しさん
垢版 |
2023/12/07(木) 00:52:49.01ID:3PWWuEZS
>>980
議論をしたければ
GoFに書いてあるそういう考えを明確に否定する内容
を述べ給え
983デフォルトの名無しさん
垢版 |
2023/12/07(木) 00:55:08.82ID:3PWWuEZS
>>981
一見して分かりそうなもんだけどね
2023/12/07(木) 01:04:03.35ID:Avn/NPEq
C++の不完全型とJavaのインターフェースが同じに見える人には同じに見えるんだろう
985デフォルトの名無しさん
垢版 |
2023/12/07(木) 02:06:38.63ID:Sudvf4UZ
>>980
そんなこと書いてねーぞ
2023/12/07(木) 09:57:06.17ID:XOE4A360
RustでGUIのアプリがつくりたいです
2023/12/07(木) 11:16:21.90ID:Gb/m/afO
egui
2023/12/07(木) 13:36:44.52ID:XOE4A360
>>987
ありがとう
これはおもしろそうでごす
2023/12/07(木) 23:09:48.18ID:wfAAUjY+
えぐい
990デフォルトの名無しさん
垢版 |
2023/12/08(金) 09:55:56.32ID:k3Bpg+TD
踏んどくか
2023/12/08(金) 09:58:29.65ID:k3Bpg+TD
結局C++とRustってどっちが良いの? 9traits
https://mevius.5ch.net/test/read.cgi/tech/1701997063/
2023/12/08(金) 10:01:41.64ID:dTkbwwL5
unsafe {
次スレいらんわボケ
}
2023/12/08(金) 10:15:03.32ID:k3Bpg+TD
・めとくか
2023/12/08(金) 10:27:55.85ID:gyEpWkla
Cで書かれたプログラムがある
Rustに移植せよ
https://uguisu.skr.jp/othello/7gyou.html
https://ideone.com/0xz2SJ
2023/12/08(金) 10:38:32.80ID:DJ4GSkDO
こんな短く書けるんだ!
2023/12/08(金) 10:39:02.81ID:k3Bpg+TD
RustはCとの相性は良いがC++との相性は最悪
2023/12/08(金) 10:39:54.69ID:k3Bpg+TD
どうしてもC++を捨てられない人は
RustよりNim使った方が救われる
2023/12/08(金) 10:40:47.47ID:k3Bpg+TD
>>994
このスレの腕自慢建ちなら一瞬で移植してくれるだろう
2023/12/08(金) 10:41:18.48ID:k3Bpg+TD
間違えた
x 建ち
o 達
2023/12/08(金) 10:41:47.84ID:k3Bpg+TD

https://mevius.5ch.net/test/read.cgi/tech/1701997063/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 40日 20時間 56分 48秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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