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/
結局C++とRustってどっちが良いの? 6traits
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2023/07/29(土) 15:05:46.55ID:2Hm/yplK100デフォルトの名無しさん
2023/08/02(水) 01:11:29.45ID:8pIQRBW6 誰でも知ってることを長文で書かなくていいから>>80読んでね
101デフォルトの名無しさん
2023/08/02(水) 01:15:12.91ID:iG8SsFh7102デフォルトの名無しさん
2023/08/02(水) 01:28:10.98ID:NJTTLLY6 >>99
その文書に根拠が書かれていないからわからない
その文書によるとclangとrustcならば上手くいくのだからRust側の問題ではなくclang側の問題でもない
仮に問題があるとすればgcc側の問題なのだろう
そしてその場合かあると仮定するとC言語のみでもgccとclangで上手くいかないケースが存在するのだろう
その文書に根拠が書かれていないからわからない
その文書によるとclangとrustcならば上手くいくのだからRust側の問題ではなくclang側の問題でもない
仮に問題があるとすればgcc側の問題なのだろう
そしてその場合かあると仮定するとC言語のみでもgccとclangで上手くいかないケースが存在するのだろう
103デフォルトの名無しさん
2023/08/02(水) 01:34:00.68ID:MBDISWVo very experimentalなのは単純に実績が浅いからでしょ
同じ規格に合わせて作ったつもりでも実際に組み合わせると想定外の問題が生じる場合がある
この辺は結合テストの経験がないとピンとこないかもしれない
同じ規格に合わせて作ったつもりでも実際に組み合わせると想定外の問題が生じる場合がある
この辺は結合テストの経験がないとピンとこないかもしれない
104デフォルトの名無しさん
2023/08/02(水) 01:51:18.44ID:TcjEDVFj >>103
実績は10年以上あるでしょ
例えば/usr/lib/の下にあるライブラリファイルがgccかclangかどちらでコンパイルされたものかに関わらず
gccからもclangからもそれらライブラリを区別なく使われて問題を起こさず動いてきた
そこはELFのフォーマットが定められているからコンパイラの違いがあっても大丈夫
実績は10年以上あるでしょ
例えば/usr/lib/の下にあるライブラリファイルがgccかclangかどちらでコンパイルされたものかに関わらず
gccからもclangからもそれらライブラリを区別なく使われて問題を起こさず動いてきた
そこはELFのフォーマットが定められているからコンパイラの違いがあっても大丈夫
105デフォルトの名無しさん
2023/08/02(水) 02:02:17.30ID:iG8SsFh7 linuxのソースに含まれない外部配布のカーネルモジュールのコンパイルって
普通コンパイラを(バージョンも含めて)揃えない?
神経質過ぎるだけかな?
普通コンパイラを(バージョンも含めて)揃えない?
神経質過ぎるだけかな?
106デフォルトの名無しさん
2023/08/02(水) 03:18:19.71ID:stxSLRlm 結論
C++使いとRust使いは生産性が低い
C++使いとRust使いは生産性が低い
107デフォルトの名無しさん
2023/08/02(水) 06:19:43.25ID:2Ms30o08 生産性最強は…「さくっと探してくる」
なんでも自作(内製)しようとしちゃうよね、自分にもそんな時期がありました
勉強にはなるけど
なんでも自作(内製)しようとしちゃうよね、自分にもそんな時期がありました
勉強にはなるけど
108デフォルトの名無しさん
2023/08/02(水) 09:10:06.07ID:4pI1Wfnv >>93-95
hissi.org を AI に掛けたらそろそろ自演検出出来る時代
hissi.org を AI に掛けたらそろそろ自演検出出来る時代
109デフォルトの名無しさん
2023/08/02(水) 14:23:27.46ID:iG8SsFh7 教師データが少なすぎて精度が上がらんやろ
110デフォルトの名無しさん
2023/08/02(水) 20:35:38.56ID:HZivUK5/ >>101
こういうことじゃないか
少し前にRust派が貼った https://github.com/microsoft/windows-rs は、
win32 APIをunsafeなRustで受けてる そういうreadmeになってるからそうなんだろう
unsafeなAPIにRustが接続してるんだから、たしかに道理
Rust派がいうように、どんどんRust世代(Swiftとかも含む)のAPIが増えてくると、
所有権情報がついたAPIになるわけだから、C++(とC)も当然それに合わせていく必要があるし、
それがわかってるなら、いまのうちから追随に向けたC++の発展を期待するぜ、っていうわけ
こういうことじゃないか
少し前にRust派が貼った https://github.com/microsoft/windows-rs は、
win32 APIをunsafeなRustで受けてる そういうreadmeになってるからそうなんだろう
unsafeなAPIにRustが接続してるんだから、たしかに道理
Rust派がいうように、どんどんRust世代(Swiftとかも含む)のAPIが増えてくると、
所有権情報がついたAPIになるわけだから、C++(とC)も当然それに合わせていく必要があるし、
それがわかってるなら、いまのうちから追随に向けたC++の発展を期待するぜ、っていうわけ
111デフォルトの名無しさん
2023/08/02(水) 20:46:07.42ID:ss9KhaID C++なんざ何処が良いのか分からん
C#ほどセーフティーな訳でも無ければ
アセンブラみたいに痒い所に手が届く訳でもない
C#ほどセーフティーな訳でも無ければ
アセンブラみたいに痒い所に手が届く訳でもない
112デフォルトの名無しさん
2023/08/02(水) 21:02:46.80ID:bcW2DJn5 普通はインラインアセンブラとか使えるぞ たまに便利
113デフォルトの名無しさん
2023/08/02(水) 21:43:56.55ID:2DJiiIQu114デフォルトの名無しさん
2023/08/03(木) 06:38:17.02ID:x4MCSOl6 サポートしてもらわないと困るって話
Rustがそこまで普及するんならね
Rustがそこまで普及するんならね
115デフォルトの名無しさん
2023/08/03(木) 08:14:30.82ID:8npqW66R C/C++の問題点はプログラム全体がunsafeエリアな点にある
Rustのように自動的に安全が保証されるsafeエリアを作るべきだ
Rustのように自動的に安全が保証されるsafeエリアを作るべきだ
116デフォルトの名無しさん
2023/08/03(木) 13:49:40.33ID:Lr04Zjag unsafe { } なコード描き捲れば良いじゃん
誰も止めないし
誰も止めないし
117デフォルトの名無しさん
2023/08/03(木) 14:47:00.92ID:8npqW66R 生のメモリはunsafeだからunsafeなエリアをゼロにするのは無理だが最小限に閉じ込めることはできる
ちなみにunsafeなエリアとは自動的に安全性が保証されず人間が安全性を保証しなければならない意味であり安全でないコードの意味ではない
C/C++は全てがunsafeなエリアとなっていることが根本的な問題であるためC/C++に導入すべきはsafeなエリアとunsafeなエリアの区別の導入
ちなみにunsafeなエリアとは自動的に安全性が保証されず人間が安全性を保証しなければならない意味であり安全でないコードの意味ではない
C/C++は全てがunsafeなエリアとなっていることが根本的な問題であるためC/C++に導入すべきはsafeなエリアとunsafeなエリアの区別の導入
118デフォルトの名無しさん
2023/08/04(金) 02:45:20.65ID:9vVWYNaF 科学者は、新しいものより古いものを好むような気がする。
やっとFortranからC++に移行したみたいな感じじゃない。
やっとFortranからC++に移行したみたいな感じじゃない。
119デフォルトの名無しさん
2023/08/04(金) 09:03:06.23ID:XLfSEGlw unsafe { C++ }
unsafe { unsafe { Fortran }}
unsafe { unsafe { Fortran }}
120デフォルトの名無しさん
2023/08/04(金) 11:28:27.58ID:rcIkyW/J >>118
ある年齢以下だと科学者でもかなりpythonが主流派だよ。
ある年齢以下だと科学者でもかなりpythonが主流派だよ。
121デフォルトの名無しさん
2023/08/04(金) 12:38:38.48ID:Hxv32tG4 unsafeは名前が悪い。
noguardがguidelessの方が実態に合っている。
noguardがguidelessの方が実態に合っている。
122デフォルトの名無しさん
2023/08/04(金) 12:40:31.64ID:l9tpj9tS123デフォルトの名無しさん
2023/08/04(金) 13:02:53.96ID:2tbTIxDy124デフォルトの名無しさん
2023/08/04(金) 13:09:44.29ID:TzILUUtf 俺はコンパイラの支援なんか不要!
安全なコード書けるから!
などというバカ対策
安全なコード書けるから!
などというバカ対策
125デフォルトの名無しさん
2023/08/04(金) 13:32:31.68ID:sr1c8EdF いくら自信があっても
いくら百戦錬磨のプロでも
思い込みや見逃しでミスが入り込む可能性がある
そしてミスがないと主張してもその客観的な根拠はなく頭の中にしかない
C/C++にも客観的に自動的に安全性が保証されるsafeエリアを導入すべきだ
そしてプログラム本体にunsafeエリアが露出せずに済むようにsafeなライブラリ関数を充実すべきだ
いくら百戦錬磨のプロでも
思い込みや見逃しでミスが入り込む可能性がある
そしてミスがないと主張してもその客観的な根拠はなく頭の中にしかない
C/C++にも客観的に自動的に安全性が保証されるsafeエリアを導入すべきだ
そしてプログラム本体にunsafeエリアが露出せずに済むようにsafeなライブラリ関数を充実すべきだ
126デフォルトの名無しさん
2023/08/04(金) 14:14:29.32ID:egOIBhxw 急にスレのベレルが下がったな
127デフォルトの名無しさん
2023/08/04(金) 14:23:45.74ID:neuFS+YA 気のせいです
128デフォルトの名無しさん
2023/08/04(金) 14:45:44.75ID:z0X1ZVr3 >>125
唐突なポエム草
唐突なポエム草
129デフォルトの名無しさん
2023/08/04(金) 15:02:43.37ID:BcxuRAkw もっともマトモな層は、コード書きに行ってこんなとこ来ないからw
130デフォルトの名無しさん
2023/08/04(金) 15:21:59.11ID:9eDSr/2C 急にスレのベレルが下がったな
131デフォルトの名無しさん
2023/08/04(金) 15:39:49.20ID:XLfSEGlw 高かったことが一度でも在ったかのような言い草だな
132デフォルトの名無しさん
2023/08/04(金) 15:45:57.96ID:f95F43ae 散髪屋に安全ガミソリを強制したり、マシン語プログラマを
蔑みそうな思想だな。
蔑みそうな思想だな。
133デフォルトの名無しさん
2023/08/04(金) 15:49:31.23ID:f95F43ae 安全ガミソリは刃に毛が挟まって取れなくなって、
再利用しにくいのに対し、直刃のかみそりは、
安全面さえ気をつければ手入れが簡単で再利用しやすい
からプロは後者を好んで使う。
それと同じ。
再利用しにくいのに対し、直刃のかみそりは、
安全面さえ気をつければ手入れが簡単で再利用しやすい
からプロは後者を好んで使う。
それと同じ。
134デフォルトの名無しさん
2023/08/04(金) 15:51:38.78ID:f95F43ae 直刃のかみそりを好んで使うプロたちに対して、
「お前らは客の安全性を疎かにする自信過剰で傲慢な
駄目な奴ら」
だとか言うつもりか。
「お前らは客の安全性を疎かにする自信過剰で傲慢な
駄目な奴ら」
だとか言うつもりか。
135デフォルトの名無しさん
2023/08/04(金) 15:56:47.17ID:i+NL2LDR 急にスレのベレルが下がったな
136デフォルトの名無しさん
2023/08/04(金) 15:58:20.80ID:BcxuRAkw137デフォルトの名無しさん
2023/08/04(金) 16:01:00.54ID:f95F43ae マシン語プログラマに対して、
「おまえらは、自身の腕を過信する安全性軽視の
駄目プログラマだ」
なんて言う権利は他人には無いと思う。
「おまえらは、自身の腕を過信する安全性軽視の
駄目プログラマだ」
なんて言う権利は他人には無いと思う。
138デフォルトの名無しさん
2023/08/04(金) 16:09:50.05ID:S7yEvO65 >>137
安全性とは何なのかも定義も理解できていないからそんな馬鹿げた書き込みばかりしてるのか
安全性とは何なのかも定義も理解できていないからそんな馬鹿げた書き込みばかりしてるのか
139デフォルトの名無しさん
2023/08/04(金) 16:17:28.67ID:f95F43ae 結局、相手を馬鹿にしてRustを推すのが、Rust信者の
やり口。
やり口。
140デフォルトの名無しさん
2023/08/04(金) 16:31:11.69ID:EJnCR0gN 安全カミソリは安全ではないし
直刃のカミソリを使うプロでも客に切り傷つけることはよくある
直刃のカミソリを使うプロでも客に切り傷つけることはよくある
141デフォルトの名無しさん
2023/08/04(金) 19:56:00.95ID:l9tpj9tS 直刃のカミソリっていうか、柄もないカミソリの刃だけを使うようなもんだろ。
自分も痛い目みること含めて。
自分も痛い目みること含めて。
142デフォルトの名無しさん
2023/08/04(金) 20:09:16.36ID:S7yEvO65 他人が書いた部分や使ってるライブラリやその孫ライブラリまで含めて全ソースをチェックするのは非現実的だからな
もちろん自分で書いた部分やリファクタリングした部分も万が一のチェックを書き換えるたびにするのも手間暇コスト増
unsafeでもunguardでも呼び名はなんでもいいからsafe/guard部分がコンパイラによる自動チェックされるようになれば人間がチェックすべき部分は激減できる
もちろん自分で書いた部分やリファクタリングした部分も万が一のチェックを書き換えるたびにするのも手間暇コスト増
unsafeでもunguardでも呼び名はなんでもいいからsafe/guard部分がコンパイラによる自動チェックされるようになれば人間がチェックすべき部分は激減できる
143デフォルトの名無しさん
2023/08/04(金) 20:15:00.62ID:bJlFt79O 急にスレのベレルが下がったな
144デフォルトの名無しさん
2023/08/04(金) 20:26:53.92ID:og8Edpiv ダングリングの検出ってGPTの登場で
言語側が備える意味は最早なくなった
そのうち外部にチェックプログラムが登場するよ
ABIが非互換になるデメリットを考えると
なおさらRustに追随する言語はないと思う
さよならRustの未来を信じた皆さん
言語側が備える意味は最早なくなった
そのうち外部にチェックプログラムが登場するよ
ABIが非互換になるデメリットを考えると
なおさらRustに追随する言語はないと思う
さよならRustの未来を信じた皆さん
145デフォルトの名無しさん
2023/08/04(金) 20:36:35.81ID:q/UYza0u >>144
ダングリングなんて小さな問題だけが対象ではないことを理解していなさそうにもみえるが
これまで外部ログラムがいくら頑張っても各種問題を静的に見つけることはできていないし今後も無理だろう
AIであろうとそれは同じであり神のようなAIが登場するならその時は全ての言語のプログラマー全員廃業だ
ダングリングなんて小さな問題だけが対象ではないことを理解していなさそうにもみえるが
これまで外部ログラムがいくら頑張っても各種問題を静的に見つけることはできていないし今後も無理だろう
AIであろうとそれは同じであり神のようなAIが登場するならその時は全ての言語のプログラマー全員廃業だ
146デフォルトの名無しさん
2023/08/04(金) 21:00:09.09ID:IJ6nE+NX147デフォルトの名無しさん
2023/08/04(金) 21:36:58.62ID:K3V5Xtdy >そのうち外部にチェックプログラムが登場するよ
今まで使ったことないのかよww
今まで使ったことないのかよww
148デフォルトの名無しさん
2023/08/04(金) 22:00:25.44ID:CoH1yBj0 CheckGPTでRustは終わる
149デフォルトの名無しさん
2023/08/05(土) 00:03:15.32ID:8PC/4Tei 残念だけど言語サポート無しにRustと同じレベルのチェックは不可能
それがわからない時点で安全なコードを書く能力もないことが分かる
それがわからない時点で安全なコードを書く能力もないことが分かる
150デフォルトの名無しさん
2023/08/05(土) 01:06:25.49ID:YeB01PWa >>149
SendやSyncのマーカートレイトなど
様々な安全性を型チェックで保証できるような枠組みがRustには揃ってるあたりのことか
C++にも導入すべきだよな
C++は色んな機能が足りなすぎる
SendやSyncのマーカートレイトなど
様々な安全性を型チェックで保証できるような枠組みがRustには揃ってるあたりのことか
C++にも導入すべきだよな
C++は色んな機能が足りなすぎる
151デフォルトの名無しさん
2023/08/05(土) 01:50:07.55ID:dts8KIsS Rustは人の命をあずかるシステムに使えますか?
152デフォルトの名無しさん
2023/08/05(土) 02:47:29.11ID:LVFgAb7y 使えます
153デフォルトの名無しさん
2023/08/05(土) 04:34:10.67ID:KocMWFZU Rust信者の正体は、ぎゃあぎゃあ五月蝿い評論家だ。
自分が上だと思って色々言ってくる。
自分が上だと思って色々言ってくる。
154デフォルトの名無しさん
2023/08/05(土) 04:36:47.68ID:KocMWFZU 実際にソフトウェアでサラリーマンとしてではなく、事業
として成功している人以外の意見はさらっと流して無視
しなければ、上手く行かない。
として成功している人以外の意見はさらっと流して無視
しなければ、上手く行かない。
155デフォルトの名無しさん
2023/08/05(土) 07:16:06.28ID:xdlV5LLb >>148
これ
これ
156デフォルトの名無しさん
2023/08/05(土) 07:31:06.33ID:YeB01PWa >>155
Rustが様々な安全性をコンパイラで保証できる仕組みは
例えばスレッド間での移動や共有の可否などを抽象的なトレイトで表現して
各型をそれらのトレイト境界で制約して型チェックで実現したりしているようだから
C++にもそういう仕組みを導入すれば自動チェックの可能性が出てくるね
Rustが様々な安全性をコンパイラで保証できる仕組みは
例えばスレッド間での移動や共有の可否などを抽象的なトレイトで表現して
各型をそれらのトレイト境界で制約して型チェックで実現したりしているようだから
C++にもそういう仕組みを導入すれば自動チェックの可能性が出てくるね
157デフォルトの名無しさん
2023/08/05(土) 08:05:44.87ID:xdlV5LLb >>156
将来的にそういうのはエディタに組み込まれたCheckGPTがやってくれるんじゃん
将来的にそういうのはエディタに組み込まれたCheckGPTがやってくれるんじゃん
158デフォルトの名無しさん
2023/08/05(土) 08:24:07.60ID:YeB01PWa >>157
言語仕様に組み込まれていないとそれは不可能と思われる
もしそれさえ覆すAIが出現した時にはプログラミング言語自体が全て滅びてしまう新時代となる
その新時代になるまでは言語仕様が強力なRustがAI支援で圧倒的に有利にみえる
言語仕様に組み込まれていないとそれは不可能と思われる
もしそれさえ覆すAIが出現した時にはプログラミング言語自体が全て滅びてしまう新時代となる
その新時代になるまでは言語仕様が強力なRustがAI支援で圧倒的に有利にみえる
159デフォルトの名無しさん
2023/08/05(土) 08:38:30.69ID:xdlV5LLb >>158
AIに最適化された言語が登場するのかも
AIに最適化された言語が登場するのかも
160デフォルトの名無しさん
2023/08/05(土) 11:23:13.95ID:NzC+Rt9F161デフォルトの名無しさん
2023/08/05(土) 11:43:54.44ID:Lx+Vx/pL クソスレ上げんな低能
162デフォルトの名無しさん
2023/08/05(土) 12:00:58.94ID:YeB01PWa163デフォルトの名無しさん
2023/08/05(土) 12:36:48.81ID:G0xPWQV0 人間がソースコードを読んで発見できるバグなら最初からバグ入らない
164デフォルトの名無しさん
2023/08/05(土) 12:44:17.52ID:NzC+Rt9F 人間が読んで発見できないバグをRustが発見できるかのような言い草だな
165デフォルトの名無しさん
2023/08/05(土) 12:48:32.07ID:C2ROzTMY たぶん、いきなり初作でバグ書いたりはしないと思うのな
あとで改造したときにエンバグする
そこでコンパイルエラーになるように言語ができてる
あとで改造したときにエンバグする
そこでコンパイルエラーになるように言語ができてる
166デフォルトの名無しさん
2023/08/05(土) 14:13:18.22ID:NzC+Rt9F ChatGPT-4では検出できないが
Rustで書けば検出出来るC/C++のバグを考えようぜ
ChatGPT-4はかなり賢いので俺は既に無いと予想するよ
Rustで書けば検出出来るC/C++のバグを考えようぜ
ChatGPT-4はかなり賢いので俺は既に無いと予想するよ
167デフォルトの名無しさん
2023/08/05(土) 14:14:11.76ID:NzC+Rt9F 俺は既に無いと主張するが
反証1つで論破できる
反証1つで論破できる
168デフォルトの名無しさん
2023/08/05(土) 14:42:07.80ID:z8pTYjl5 ChatGPTは、
じゃんけんの論理構造が理解できないから、じゃんけんの
プログラムのバグを発見できない。
じゃんけんの論理構造が理解できないから、じゃんけんの
プログラムのバグを発見できない。
169デフォルトの名無しさん
2023/08/05(土) 15:00:11.14ID:LVFgAb7y とりあえずシンプルなバグ
ChatGPT使い方分からんから検証は任せた
C++は長いこと書いてないから古い書き方があったらすまん
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
auto names = vector<string>();
names.reserve(8);
string empty = "";
string *longest = ∅
while (true) {
string name;
cin >> name;
names.push_back(name);
if (names.back().length() > longest->length()) {
longest = &names.back();
}
cout << names.size() << " names, (longest: " << *longest << ")" << endl;
}
}
ChatGPT使い方分からんから検証は任せた
C++は長いこと書いてないから古い書き方があったらすまん
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
auto names = vector<string>();
names.reserve(8);
string empty = "";
string *longest = ∅
while (true) {
string name;
cin >> name;
names.push_back(name);
if (names.back().length() > longest->length()) {
longest = &names.back();
}
cout << names.size() << " names, (longest: " << *longest << ")" << endl;
}
}
170デフォルトの名無しさん
2023/08/05(土) 15:14:36.79ID:LVFgAb7y なんか&empty;が空集合の記号に変換されて表示されてしまった…
たしかに文字参照形式だけど5chのバグ踏んだんかな
たしかに文字参照形式だけど5chのバグ踏んだんかな
171デフォルトの名無しさん
2023/08/05(土) 15:21:16.34ID:NzC+Rt9F172デフォルトの名無しさん
2023/08/05(土) 15:22:34.42ID:NzC+Rt9F G: コードを見た結果、最初の問題点は次の行で生じます。
if (names.back().length() > longest->length()) {
G: 最初の入力が行われる前、longest ポインタは nullptr に設定されています。
したがって、デリファレンス操作(-> を使用)は無効なメモリへのアクセスを引き起こし、
これは未定義の動作につながります。
この問題を解決するためには、longest ポインタを使用する前に、
有効な string オブジェクトを指すように設定する必要があります。
コードを次のように修正することで、
最初の入力の後に longest ポインタを設定することができます。
if (names.back().length() > longest->length()) {
G: 最初の入力が行われる前、longest ポインタは nullptr に設定されています。
したがって、デリファレンス操作(-> を使用)は無効なメモリへのアクセスを引き起こし、
これは未定義の動作につながります。
この問題を解決するためには、longest ポインタを使用する前に、
有効な string オブジェクトを指すように設定する必要があります。
コードを次のように修正することで、
最初の入力の後に longest ポインタを設定することができます。
173デフォルトの名無しさん
2023/08/05(土) 15:23:56.83ID:NzC+Rt9F #include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector<string> names;
names.reserve(8);
string *longest = nullptr;
while (true) {
string name;
cin >> name;
if (name == "exit") { // 終了コマンドを追加
break;
}
names.push_back(name);
// 入力後にポインタを初期化
if (longest == nullptr || names.back().length() > longest->length()) {
longest = &names.back();
}
cout << names.size() << " names, longest: " << *longest << endl;
}
return 0;
}
#include <string>
#include <vector>
using namespace std;
int main() {
vector<string> names;
names.reserve(8);
string *longest = nullptr;
while (true) {
string name;
cin >> name;
if (name == "exit") { // 終了コマンドを追加
break;
}
names.push_back(name);
// 入力後にポインタを初期化
if (longest == nullptr || names.back().length() > longest->length()) {
longest = &names.back();
}
cout << names.size() << " names, longest: " << *longest << endl;
}
return 0;
}
174デフォルトの名無しさん
2023/08/05(土) 15:24:14.45ID:LVFgAb7y もし空集合の記号が見えてたら&empty;(←半角)に修正してほしい
nullptrだと最初の比較で普通に死ぬから意図したバグが出ない
nullptrだと最初の比較で普通に死ぬから意図したバグが出ない
175デフォルトの名無しさん
2023/08/05(土) 15:27:55.04ID:NzC+Rt9F 文章を解釈してオーダにない修正(exitの追加)までしている
ChatGPT-4はマルチスレッドの競合状態なんかも検出するよ
デッドロックは試してないがら無理かもね
Rustはデッドロックは検出するんだっけ?
ChatGPT-4はマルチスレッドの競合状態なんかも検出するよ
デッドロックは試してないがら無理かもね
Rustはデッドロックは検出するんだっけ?
176デフォルトの名無しさん
2023/08/05(土) 15:30:21.32ID:LVFgAb7y 173見るとnullエラーは検出するけどvectorの再配置によるダングリングは見逃す感じでいいのかな
177デフォルトの名無しさん
2023/08/05(土) 15:33:22.24ID:NzC+Rt9F >>174 修正してみた
-string *longest = nullptr;
+string *longest = ∅
G: あなたのコードは、ユーザーからの入力を無限に受け取り、
最長の文字列を保持しようとしていますが、問題がいくつかあります。
まず、reserve関数はメモリを確保しますが、実際の要素数を増やすわけではありません。
したがって、push_backを使用すると、reserveで予約された領域を超えてメモリが確保されます。
しかし、それはこの特定のコードには重大な問題ではないと思われます。
大きな問題は、無限ループとポインタの管理です。
1. 無限ループ:while (true)とすると、無限ループになります。
これは、ユーザーが特定のアクション(例:特定のキーワードを入力する)を行わない限り、
永遠に終了しないプログラムを作成します。
これを解決するためには、ループを抜け出すための条件(例:空の名前が入力された場合)を設定する必要があります。
2. ポインタの管理:longestへのポインタが問題です。
names.back()が返す参照は、次にpush_backが呼び出されると無効になる可能性があります。
これは、push_backが内部の動的配列をリサイズする必要がある場合、
新しいメモリ領域に要素が移動され、古い参照が無効になるからです。
以下に修正したコードを示します。
-string *longest = nullptr;
+string *longest = ∅
G: あなたのコードは、ユーザーからの入力を無限に受け取り、
最長の文字列を保持しようとしていますが、問題がいくつかあります。
まず、reserve関数はメモリを確保しますが、実際の要素数を増やすわけではありません。
したがって、push_backを使用すると、reserveで予約された領域を超えてメモリが確保されます。
しかし、それはこの特定のコードには重大な問題ではないと思われます。
大きな問題は、無限ループとポインタの管理です。
1. 無限ループ:while (true)とすると、無限ループになります。
これは、ユーザーが特定のアクション(例:特定のキーワードを入力する)を行わない限り、
永遠に終了しないプログラムを作成します。
これを解決するためには、ループを抜け出すための条件(例:空の名前が入力された場合)を設定する必要があります。
2. ポインタの管理:longestへのポインタが問題です。
names.back()が返す参照は、次にpush_backが呼び出されると無効になる可能性があります。
これは、push_backが内部の動的配列をリサイズする必要がある場合、
新しいメモリ領域に要素が移動され、古い参照が無効になるからです。
以下に修正したコードを示します。
178デフォルトの名無しさん
2023/08/05(土) 15:33:27.10ID:97ZAjLd0179デフォルトの名無しさん
2023/08/05(土) 15:34:42.49ID:NzC+Rt9F #include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector<string> names;
string longest = "";
while (true) {
string name;
cin >> name;
if (name.empty()) {
break;
}
names.push_back(name);
if (names.back().length() > longest.length()) {
longest = names.back();
}
cout << names.size() << " names, (longest: " << longest << ")" << endl;
}
return 0;
}
このコードでは、longestがポインタではなく値として管理されているため、
namesの内容が変更されても影響を受けません。
また、名前が空の場合にループを抜ける条件を追加しました。
#include <string>
#include <vector>
using namespace std;
int main() {
vector<string> names;
string longest = "";
while (true) {
string name;
cin >> name;
if (name.empty()) {
break;
}
names.push_back(name);
if (names.back().length() > longest.length()) {
longest = names.back();
}
cout << names.size() << " names, (longest: " << longest << ")" << endl;
}
return 0;
}
このコードでは、longestがポインタではなく値として管理されているため、
namesの内容が変更されても影響を受けません。
また、名前が空の場合にループを抜ける条件を追加しました。
180デフォルトの名無しさん
2023/08/05(土) 15:39:09.24ID:NzC+Rt9F181デフォルトの名無しさん
2023/08/05(土) 15:41:17.99ID:NzC+Rt9F ところで>>175なんだけど
Rustってデッドロックって検出できるんだっけ?
Rustってデッドロックって検出できるんだっけ?
182デフォルトの名無しさん
2023/08/05(土) 15:44:11.69ID:97ZAjLd0 いま、C++で生ポンタを使うこと避けるようにするんじゃないのか
183デフォルトの名無しさん
2023/08/05(土) 15:45:41.69ID:LVFgAb7y184デフォルトの名無しさん
2023/08/05(土) 15:58:47.07ID:wQaB7TT9 デッドロックは人間でも解決できないパターンがあるからw
185デフォルトの名無しさん
2023/08/05(土) 16:03:33.32ID:LVFgAb7y あらゆるデッドロックを検出しようとするとデッドロックするから無理って
チューリング先生が証明してたと思う
停止性とは違うのかもしれないけどどうせ帰着ルート見つけるでしょ(適当)
チューリング先生が証明してたと思う
停止性とは違うのかもしれないけどどうせ帰着ルート見つけるでしょ(適当)
186デフォルトの名無しさん
2023/08/05(土) 16:22:05.73ID:z8pTYjl5 AIに関して。たまたま上手く行ったケースだけを
書いている可能性がある。
実際にやってみると変になることもあったりする
のがよくあるパターン。
書いている可能性がある。
実際にやってみると変になることもあったりする
のがよくあるパターン。
187デフォルトの名無しさん
2023/08/05(土) 16:44:23.90ID:NzC+Rt9F188デフォルトの名無しさん
2023/08/05(土) 16:52:12.45ID:z8pTYjl5 std::vector でよくある性質だけ、ChatGPTに
ハードコーディングされてる可能性がある。
ハードコーディングされてる可能性がある。
189デフォルトの名無しさん
2023/08/05(土) 17:30:10.13ID:YdmkUc66190デフォルトの名無しさん
2023/08/05(土) 17:46:13.30ID:YdmkUc66 デッドロックはロック順序が定まるように自主的対応するとして
一方でデータ競合についてはRustがデータ競合のないことを保証してくれる
一方でデータ競合についてはRustがデータ競合のないことを保証してくれる
191デフォルトの名無しさん
2023/08/05(土) 18:41:15.10ID:NzC+Rt9F >>190
データ競合はChatGPG-4も検出してくれる
データ競合はChatGPG-4も検出してくれる
192デフォルトの名無しさん
2023/08/05(土) 18:58:04.88ID:nLwYtk1m 実は俺は未来が見える。
Rustは普及しない。
いっちゃった。
ヤバイ。
Rustは普及しない。
いっちゃった。
ヤバイ。
193デフォルトの名無しさん
2023/08/05(土) 19:24:44.46ID:YdmkUc66 >>191
ChatGPTは検出できるケースもあるだけだぞ
Rustはデータ競合を100%回避できる
そしてデータ競合は100%回避しなければならない
100%回避できる方法がある状況でそうではないChatGPTに頼るやつはバカだと断言できる
ChatGPTは検出できるケースもあるだけだぞ
Rustはデータ競合を100%回避できる
そしてデータ競合は100%回避しなければならない
100%回避できる方法がある状況でそうではないChatGPTに頼るやつはバカだと断言できる
194デフォルトの名無しさん
2023/08/05(土) 19:35:03.34ID:3ig1p59X195デフォルトの名無しさん
2023/08/05(土) 19:45:05.47ID:YdmkUc66196デフォルトの名無しさん
2023/08/05(土) 19:56:21.43ID:ovYwnQ8g >>195
だってRust覚えるのめんどいじゃん?
だってRust覚えるのめんどいじゃん?
197デフォルトの名無しさん
2023/08/05(土) 21:11:57.10ID:xdlV5LLb はいRustの負け〜
198デフォルトの名無しさん
2023/08/05(土) 21:31:44.37ID:Ab8yJnrX199デフォルトの名無しさん
2023/08/05(土) 21:39:17.35ID:NzC+Rt9F RustやってもCを別に覚えなきゃならないじゃん?
C++覚えればCはサブセットだし楽だよ
なによりRustはやってる人が少な過ぎて人が集まらん
C++覚えればCはサブセットだし楽だよ
なによりRustはやってる人が少な過ぎて人が集まらん
200デフォルトの名無しさん
2023/08/05(土) 22:16:55.85ID:lVlXn5uE RUSTぐらいサクッと習得出来る人じゃ無ければ集まらなくって良くない?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【高市早苗】習近平激怒か [115996789]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- 🏡
- 一人で行かないほうがいい板
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 減税は低所得者差別
