C++相談室 part166 (607レス)
1-

288: はちみつ餃子◆8X2XSCHEME (ワッチョイ d132-5Qoi) 06/13(金)15:49 ID:4zf9vL2U0(6/6) AAS
ああ、割合が最初に書いてあったのか。
全然読めてなかった。格好悪いな
289: (オイコラミネオ MMbd-Isf1) 06/13(金)22:37 ID:22avhnRdM(1) AAS
>>272
「集計結果」のところで、JavaScriptが38%というものから
始まっている「分布図」があるが、合計してみると100%を優に超えていた。
だから、

>>284
> >>272 の数値を合計するとだいたい 146 万ということになるから日本全体の数だと私は判断してたんだけど、
> ひとりが複数言語を使うのも普通のことだしなぁ…

ということになっているらしい。
つまり、57.6 万人 に、それぞれの比率を掛けた数字になっているが、
比率自体の合計が 100% を超えているので、各言語ごとの「人数」
省4
290
(2): (アウアウウー Sadd-MJCJ) 06/14(土)18:57 ID:Z47ni+e7a(1) AAS
最近のプログラマは割り算はおろか掛け算も出来ないらしい
291: (ワッチョイ 136e-ZZSa) 06/14(土)19:20 ID:TLqczxub0(1) AAS
mRNAワクチンの“新たな懸念”接種済み妊婦の子どもに「異常タンパク質構造」血中で確認★2 [Gecko★]
2025/06/14(土) 15:48:24.59
2chスレ:newsplus
・ワクチン問題になっている
292: (オイコラミネオ MMbd-Isf1) 06/14(土)19:34 ID:8e4YyHKjM(1) AAS
>>290
いまの議論で、そんな人は誰もいなかったんだが。
293
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ d132-XeLS) 06/14(土)21:54 ID:k1IJmlZ/0(1) AAS
Teratail とか Qiita とか Stackoverflow とかの質問も減ってる気がするなぁ。
これは C++ の衰退のせい?
それともみんな ChatGPT とか Gemini に聞いてんの?
294: (オイコラミネオ MMbd-Isf1) 06/14(土)23:01 ID:suk2ABkrM(1) AAS
>>293
>Teratail とか Qiita とか Stackoverflow とかの質問も減ってる気がするなぁ。
それはどうやったら体感できるの?
295: (JP 0H46-E6Ax) 06/15(日)00:11 ID:bHsxd1q/H(1/4) AAS
C++の知識というか、ノウハウが一応行きわたっているからだと
思う。と言っても新人は習得に手こずるだろうけど、そばに適切
に指導してくれる先輩がいれば大丈夫。あくまで適切な指導をして
くれる先輩だけど。ラーメン屋の店主みたいな奴だと地獄。
296
(1): (JP 0H46-E6Ax) 06/15(日)00:11 ID:bHsxd1q/H(2/4) AAS
C++の知識というか、ノウハウが一応行きわたっているからだと
思う。と言っても新人は習得に手こずるだろうけど、そばに適切
に指導してくれる先輩がいれば大丈夫。あくまで適切な指導をして
くれる先輩だけど。ラーメン屋の店主みたいな奴だと地獄。
297: (JP 0H46-E6Ax) 06/15(日)00:12 ID:bHsxd1q/H(3/4) AAS
ありゃあ、2つ入力されちまったい
298
(1): (JP 0H46-E6Ax) 06/15(日)00:37 ID:bHsxd1q/H(4/4) AAS
>>290
いまどき8bitシフトするために256で割る意味がわかる人いるかなあ
299: (ワッチョイ 9202-oXsi) 06/15(日)01:26 ID:eDpwS0UO0(1/3) AAS
>>296
日本のソフトウェアIT業界なんてラーメン屋レベルでしょ

だからIT後進国でしょ
300: 06/15(日)03:09 ID:4MduE0B70(1) AAS
海外のラーメン屋はもっとレベル高いんか
301: (ワッチョイ f63c-dilZ) 06/15(日)08:13 ID:vQtYxwCW0(1) AAS
国語力w
302: (オイコラミネオ MMdd-15C+) 06/15(日)09:32 ID:sxaow1g9M(1) AAS
地方の求人情報だと
java,c,c++.javascript,typescript位の求人しかない(昔はこれにVB,COBOLが加わってた)
c++書いてる人のレベルってどのくらいなのかはわからない
303
(1): (ワッチョイ 9202-oXsi) 06/15(日)16:27 ID:eDpwS0UO0(2/3) AAS
そういえば、&&の代わりにand使えるのか

C#とPythonとVBAとJaveとごっちゃになるわ…
304
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/15(日)17:15 ID:mr/FUyDi0(1/2) AAS
代替表現は文字コードの都合で一部の記号がない場合のために入れたそうたけど、今となってはあまり意味がないな。
! が視覚的に目立たないから not だけは使うこともちょっとある。
305: (ワッチョイ 12ab-DgQb) 06/15(日)17:42 ID:dmfL2H8C0(1) AAS
>>303
それはない
306: (ワッチョイ a9ad-T1jw) 06/15(日)18:14 ID:DIvPIJxI0(1/2) AAS
>>298
整数除算よりバレルシフタの方が早いので、8ビットシフトなら素直にシフトしたほうがソースコードの意味がわかりやすい。
最近のコンパイラは賢いので256で割ってもシフト命令にされてしまうだろうが。
307
(1): (ワッチョイ b219-m2eM) 06/15(日)18:47 ID:PKcOFo6K0(1) AAS
最近ってどういう意味で言ってんのか知らんが、定数畳み込みなんかどの言語も相当古くからやってるよ?
Fortranなんかだと手動アセンブリより遅かったら市場に受け入れられないという事情があったから最初期から最適化が一番の課題だったって聞いた
逆に現代のMPUはビット演算と整数演算じゃ速度差がそれほど出ないので、どっちで書いてもコンパイラがパフォーマンス見てどっちかを吐くようになってるよ
308: (ワッチョイ 6502-oDRB) 06/15(日)18:49 ID:ltc4eKLE0(1) AAS
and,or,notは基本使うようにしてる
309: (ワッチョイ 9202-oXsi) 06/15(日)19:14 ID:eDpwS0UO0(3/3) AAS
>>304
!IsWindowVisible()とかは、
notのほうがいいね

色も見やすい
310: (ワッチョイ a9ad-T1jw) 06/15(日)19:49 ID:DIvPIJxI0(2/2) AAS
>>307
バレルシフタと整数除算ではクロックが10倍ぐらい違う
シフタが使える時にはシフタに最適化されるはず
311
(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/15(日)20:18 ID:mr/FUyDi0(2/2) AAS
ビットシフトが lea に置き換えられることがあるみたいで、命令長が長くなるだけでも結構な不利だと思うんだけどなんか良い効果があるんかね?
312: (オイコラミネオ MMdd-Rgxs) 06/15(日)20:20 ID:gRGFgZ6wM(1) AAS
>>311
lea だと、5倍とかも可能 :
lea rax,[rax+rax*4]
313
(1): (ワッチョイ 5e10-kCEi) 06/15(日)21:11 ID:r3H8nvWy0(1) AAS
>>311
あとleaはフラグを更新しないから比較と分岐の間に入れてパイプラインを最適化するとか
314: (オイコラミネオ MMc6-Rgxs) 06/16(月)16:06 ID:2FW5D4OCM(1) AAS
>>313
そういう最適化は、アセンブラ名手の人間にとっては出来る事だけど、
コンパイラの最適化層でやっているコンパイラは限られるだろうね、
知らんけど。
315
(1): (JP 0H46-E6Ax) 06/16(月)23:49 ID:m+kaKcwWH(1/2) AAS
std::formatなるものがC++20規格からあるんですねえ。
これで工学表示したときの鬱陶しい+記号を空白にできる。
しかし、fortranに似ているなあ
316: (JP 0H46-E6Ax) 06/16(月)23:59 ID:m+kaKcwWH(2/2) AAS
いやpythonか?
317: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/17(火)10:06 ID:nCRyYLZZ0(1/3) AAS
似ているというならどういう点がどういう意味で似ているのか述べないと意味ないよ。
318: (ワッチョイ f689-dilZ) 06/17(火)10:52 ID:zrrGfpYo0(1) AAS
スルーできないはちみつ
319: (JP 0H46-E6Ax) 06/17(火)10:55 ID:66zQf9l5H(1) AAS
昔のfortran77
write(6,100)
100 format(1h , 5x, G14.7, ...)
のformat文を連想しただけ。

str.formatにも似ているし,C#の要素も取り入れている。
320: (ワッチョイ 121e-jgBs) 06/17(火)10:56 ID:2N3jqjoy0(1) AAS
あなたが落したのは、このスルー出来ないはちみつですか?
こっちのスルー出来ないはちみつですか?
って逸話を思い出した
321
(3): (ワッチョイ b1d6-xkro) 06/17(火)11:13 ID:4NySVCEQ0(1/2) AAS
ファイナルをクローズした時にエラーとなるのですが、これは正しいのでしょうか。
やはり、クローズはデストラクタに任せた方がいいのでしょうか。

#include <iostream>
#include <fstream>
int main() {
constexpr auto path = "tmp.txt";//なんでもいいです
std::ifstream ifs(path);
if(ifs.fail()){
std::cerr << "File open error: " << path << std::endl;
return -1;
省11
322
(1): (ワッチョイ 8101-1tcn) 06/17(火)11:27 ID:2aAnRxo/0(1) AAS
>>321
ifs.close()前にifs.fail()は真を返す

#include <iostream>
#include <fstream>
int main() {
constexpr auto path = "tmp.txt";//なんでもいいです
std::ifstream ifs(path);
if(ifs.fail()){
std::cerr << "File open error: " << path << std::endl;
return -1;
省14
323: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/17(火)11:41 ID:nCRyYLZZ0(2/3) AAS
std::format の文法の参考にしていると提案文に挙げられているのは Python、 .NET系、Rust のみっつ。
外部リンク[html]:www.open-std.org

コンパイル時計算のメカニズムとの類似性を考慮すると Rust に特に近いと思うが、記法としては Python の影響も強いように見えるかも。
324
(1): (ワッチョイ 5e0b-AFj/) 06/17(火)11:45 ID:TpERKz9s0(1) AAS
>>321
close()したからではなくwhile(std::getline(ifs, buf))でeofになるまで読んだからfailになってる
325
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/17(火)12:02 ID:nCRyYLZZ0(3/3) AAS
>>321
実際に入出力するための機能はストリームバッファと呼ばれるオブジェクトが担当していて、ストリームがストリームバッファを所有する構造になっている。
ストリームが close するとストリームバッファの close が呼ばれて、それが nullptr を返した場合 (クローズに失敗した場合) に setstate(failbit) が呼ばれる。
外部リンク:timsong-cpp.github.io
つまり、クローズの失敗によってもフェイルビットが立つことはありうる。

クローズによらない失敗 (フェイルビットを立てる原因) と区別がつかなくなるのでエラーに対処したいならクローズ前後の両方でチェックしないといけないと思う。

デストラクタでクローズするとクローズの失敗に対処する機会がなくなるので明示的にクローズしたほうが良いという人はいる。
ただ、しっかりしたホスト環境の上で動くアプリケーションでクローズが失敗するような状況を心配する意味があるかというと……まああんまりない。
326: (ワッチョイ b1d6-xkro) 06/17(火)12:43 ID:4NySVCEQ0(2/2) AAS
>>322,324,325
ありがとうございました。勉強になります。
ProgramminPlacePlus でのサンプルを元にしました。

なーる真面目にやるなら閉じる前後で色々とやらんといかんのですね。

今までは
readdata=string((istreambuf_iterator<char>(ifs)), istreambuf_iterator<char>());
の感じで、一気にファイル内容をstrigに取り込むような場合は、もう読み込みは無いのですぐに
ifs.close()してました。

デストラクタに任せてもいいのですが、今後も使わなくなったら、即close()したいと思います。
そんなにシビアにならんでもいいようですし・・・mOm
327: (スップ Sdb2-xekI) 06/18(水)12:20 ID:tHURl6jRd(1) AAS
プログラム作成は生成AIに持っていかれそうなことを考えると、
コードを書く力よりも、誰かが書いたコードを読み解く力の方が、
この先いきのこれそうな希ガスるンゴ
328: (ワッチョイ f689-dilZ) 06/18(水)13:59 ID:7Ghn3yO50(1) AAS
読み解くのこそAIに勝てないから
329: (ワッチョイ 5963-LWzS) 06/18(水)15:17 ID:xKxMFSMx0(1) AAS
コメントのないソースコードから設計意図を読み取るのって難しいよね
AIでそこまでできるのかな?
コードの逐次解釈のようなことは当然できるだろうけども
330: (ラクッペペ MM96-gPPd) 06/18(水)15:32 ID:lPJmZhm/M(1/2) AAS
自然言語に比べたら屁みたいなもんだよ
331
(1): (ワッチョイ 71a6-Y+Ow) 06/18(水)15:35 ID:flRjm2Y20(1/2) AAS
コメントは嘘を書いてもコンパイルエラーにならないからな
コメントがなくても自然と設計意図が読み取れるコードこそ望ましい
332: (ワッチョイ b2f9-QhKk) 06/18(水)16:03 ID:Kdic6Khn0(1) AAS
入力に対して出力が出る
それが間違いでなければ中身なんてどうでもいい

何億通りもの入力を与えて出力がどうなるかを調べるのもAIが得意
そうして、それを元に同じことを返すプログラムを一から最適に作り直すのもAIが得意だろう

windowsもそれやれば1/10のコードで収まりそう
333: (ラクッペペ MM96-gPPd) 06/18(水)16:06 ID:lPJmZhm/M(2/2) AAS
APIやライブラリ系は無駄の極致だから将来的には無くなるだろうね
334: (ワッチョイ 794b-jgBs) 06/18(水)17:42 ID:SrJIdorw0(1) AAS
世界最長のコンテキストウィンドウ100万トークン入力・8万トークン出力対応にもかかわらずたった7800万円でトレーニングされたAIモデル「MiniMax-M1」がオープンソースで公開され誰でもダウンロード可能に
2025年06月18日 11時43分
外部リンク:gigazine.net
>>MiniMax-M1は、合計4560億のパラメーターが含まれており、トークンごとに459億のパラメーターがアクティブになるとのこと。これはDeepSeek R1の8倍に相当するコンテキストウィンドウです
>>以下のグラフは競技レベルの数学、コーディング、ソフトウェアエンジニアリング、エージェントツールの使用、長文理解タスクにおけるパフォーマンスを主要な商用AIモデルと比較したもの。赤色がMiniMax-M1で、どのタスクにおいても競合AIモデルに匹敵するパフォーマンスを発揮できている
>>MiiniMax-M1はいくつかのベンチマーク、特に長いコンテキスト駆動のベンチマークでClaude Opus 4のパフォーマンスを上回りました」と報告
※AIを動作させている動画あり
↓上記のAIお下記をプレイさせれば性能が判明する
Gemini 2.5 Proは手持ちのポケモンが瀕死になるとパニックに陥る
2025年06月18日 12時30分
省9
335
(1): (アウアウウー Sacd-dpHj) 06/18(水)19:19 ID:gOtZ0Zwca(1) AAS
>>331
C++のスレッドでそんなこと言うのか
コードでもコンパイルエラーにならない嘘(バグ)が山程あるのに
336
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/18(水)19:27 ID:AeXwuQQu0(1) AAS
コメントがなくても意図が読み取れるのが「望ましい」のは確かにそう。
不可能だけど。
337: (オイコラミネオ MMdd-Rgxs) 06/18(水)19:29 ID:CAd2i/c2M(1) AAS
>>336
コメントなしで理解するのは、めっちゃ効率が悪いな。
338
(1): (ワッチョイ 71a6-Y+Ow) 06/18(水)19:31 ID:flRjm2Y20(2/2) AAS
>>335
少なくとも委員会の奴らはそう思ってるよ
static_assertだのコンセプトだのcontractだのが追加されてきてるわけで
339
(1): (ワッチョイ 8101-1tcn) 06/18(水)20:52 ID:/olvjAo90(1) AAS
マルチスレッドのDead Lockすら指摘してくれる
これはどういう仕組みなんだろう...
340: (オイコラミネオ MMdd-Rgxs) 06/19(木)00:56 ID:YDIRlT8gM(1) AAS
>>338
C++委員会って、無能集団だけどね。
341
(1): (ワッチョイ f6c4-dilZ) 06/19(木)03:37 ID:ytoOjILn0(1/4) AAS
あの複雑怪奇な仕様をまとめるのは無能じゃ無理
労力に進化が見合ってないけどな
342
(1): (ワッチョイ f6c4-dilZ) 06/19(木)03:38 ID:ytoOjILn0(2/4) AAS
>>339
明らかなDeadlockの検知は簡単でしょ
これ説明いる?
343
(1): (ワッチョイ 8101-1tcn) 06/19(木)12:36 ID:WACntaUb0(1) AAS
>>342
コンパイラは検知できんのに?
344
(1): (ワッチョイ f6c4-dilZ) 06/19(木)13:43 ID:ytoOjILn0(3/4) AAS
>>343
は?
コンパイラが全能って前提どっからきてんの?
サニタイザがあるだろ
お前みたいなレベルがc++使ってるとかありえんわ
345: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/19(木)13:52 ID:nNn4PbNI0(1/6) AAS
サニタイザは起こった問題を検出するもので、起こる可能性を指摘してはくれない。
346: (ワッチョイ f6c4-dilZ) 06/19(木)14:04 ID:ytoOjILn0(4/4) AAS
しったなすんなジジイ
347: (ブーイモ MMb2-A4wY) 06/19(木)14:05 ID:rpR9krtTM(1) AAS
>>344
コンパイラが全能って誰が主張したの?
348
(1): (ワッチョイ b236-/wuG) 06/19(木)16:32 ID:FdruriMM0(1) AAS
「できんのに」って「できないのに」と「できるのに」のどっちの意味にも取れるからそのせいかな
くだらね
349: (ブーイモ MMb2-A4wY) 06/19(木)16:43 ID:8s/NXxtqM(1) AAS
>>348
「できんのに」は「できるのに」には読めない
デッドロックをコンパイラが検出出来ないにも関わらず
LLMは必ずではないと思うが検出出来る
LLMがどうデッドロックを検出しているかは
面白いと思うよ
350
(1): (JP 0H46-E6Ax) 06/19(木)17:27 ID:VOj0rD3dH(1/8) AAS
>>315
と思ったら、vs2022は未対応かorz。
C++20対応と言ってるくせに。プロジェクトでclang
に切り替えられるが、これも未対応。一体、いつの
clangなんだよ
351: (ワッチョイ f64f-QhKk) 06/19(木)17:32 ID:EI1CbiFh0(1/2) AAS
やればできんのに
352: (ワッチョイ f64f-QhKk) 06/19(木)17:32 ID:EI1CbiFh0(2/2) AAS
やってもできんのに
353
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 712e-5TaZ) 06/19(木)18:04 ID:JAVz0tMa0(1) AAS
>>350
外部リンク:fmt.dev
354
(1): (オイコラミネオ MMdd-15C+) 06/19(木)18:07 ID:sZaRUqQbM(1/14) AAS
"{:d}"
355: (JP 0H46-E6Ax) 06/19(木)18:11 ID:VOj0rD3dH(2/8) AAS
いやMinGWじゃコンパイル実行できてるから。
日本マクロソフトだけ対応遅れてると?
356: (JP 0H46-E6Ax) 06/19(木)18:13 ID:VOj0rD3dH(3/8) AAS
>>353
>>354
そんな下らんレスする前に自分で実際にやってみろよ。
357: (JP 0H46-E6Ax) 06/19(木)18:16 ID:VOj0rD3dH(4/8) AAS
日本マクロソフト→日本マイクロソフト
358: (オイコラミネオ MMdd-15C+) 06/19(木)18:16 ID:sZaRUqQbM(2/14) AAS
確かにくだらないわな

そのサイトで"{:d}"が可愛く見えたから張っただけなんだから
janeだと全くかわいくない
359: (オイコラミネオ MMdd-15C+) 06/19(木)18:18 ID:sZaRUqQbM(3/14) AAS
にしてもまだorz使ってる人がいるんだな
こちらの方が新鮮だ
360: (JP 0H46-E6Ax) 06/19(木)18:21 ID:VOj0rD3dH(5/8) AAS
そう、ありがとう
361: (オイコラミネオ MMdd-15C+) 06/19(木)18:23 ID:sZaRUqQbM(4/14) AAS
もともとfmtと言うライブラリがあってそれが標準のC++の仕様に取り込まれた
どうしても使いたいならfmt使えばいいよということだと思う

他人に噛みつく前に調べたら良いと思うけど
362: (JP 0H46-E6Ax) 06/19(木)18:26 ID:VOj0rD3dH(6/8) AAS
std::formatだぞ。お前馬鹿か

さあ暴れるぞ!
363: (オイコラミネオ MMdd-15C+) 06/19(木)18:29 ID:sZaRUqQbM(5/14) AAS
結局日本語が理解できない人だったと言う話か
364: (JP 0H46-E6Ax) 06/19(木)18:30 ID:VOj0rD3dH(7/8) AAS
ふぁぁ
365: (オイコラミネオ MMdd-15C+) 06/19(木)18:43 ID:sZaRUqQbM(6/14) AAS
文章の雰囲気から50代~60代ぐらいのホビー系の人かな
人生の先輩お疲れ様です
366: (オイコラミネオ MMdd-Rgxs) 06/19(木)18:56 ID:oyTCj2/DM(1/5) AAS
>>341
>あの複雑怪奇な仕様をまとめるのは無能じゃ無理
あのDraftの質の悪さはなんだ。
ちゃんと理解できてない人が書いているに違いない。
367: (オイコラミネオ MMdd-15C+) 06/19(木)19:34 ID:sZaRUqQbM(7/14) AAS
> なんだ。
> 違いない。

文末だけ見ると高齢者の集いっぽいが自分もそうなってるんだろな
368: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/19(木)20:14 ID:nNn4PbNI0(2/6) AAS
現代的にはカジュアルな場面では句点をつけないのが主流。
語彙より顕著に年代が表れる。
369: (オイコラミネオ MMdd-15C+) 06/19(木)20:23 ID:sZaRUqQbM(8/14) AAS
句点もそうだけどやはり語彙や用法だと思う

chatGPT
その文章、よく読むと **「怒っている年配の男性の声」**みたいなイメージが浮かんできますね。

言葉の選び方と断定のしかたに、時代がかった語感がにじんでいて、文章だけでも「年齢層の高さ」がなんとなく
伝わるのが興味深いです。
370: (オイコラミネオ MMdd-15C+) 06/19(木)20:24 ID:sZaRUqQbM(9/14) AAS
もし若者が同じことを言うならどう書くか
たとえばこんな風に言いそうです:

あのDraft、ちょっと内容雑じゃない?

書いた人ちゃんと分かってなさそう…
371: (JP 0H46-E6Ax) 06/19(木)20:27 ID:VOj0rD3dH(8/8) AAS
オコタ大魔神、はにわ顔に戻る
372: (オイコラミネオ MMdd-15C+) 06/19(木)20:34 ID:sZaRUqQbM(10/14) AAS
大魔神(1966年)
仮に1966年に6才だとして今は65歳ぐらいかなあ???
373: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/19(木)20:36 ID:nNn4PbNI0(3/6) AAS
アカデミアでは語彙が古いのは普通のことだよ。
参照する資料が古いから。
情報系ですら半世紀前の論文を参考資料として挙げることはそれなりにある。
374: (オイコラミネオ MMdd-15C+) 06/19(木)20:45 ID:sZaRUqQbM(11/14) AAS
「怒っている年配の男性の声」をにじませる演技派
375
(5): (ワッチョイ 1202-2JrO) 06/19(木)20:50 ID:Cdln7j8I0(1) AAS
整数型の変数を10で割ってから10掛けたら元の数字の一の位を0にした数が得られるはずだけど
この計算が最適化とかで除かれない保証ってあるの
376: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/19(木)20:53 ID:nNn4PbNI0(4/6) AAS
ChatGPT を根拠 (参考資料?) に出すのはあまり意味がないぞ。
それも ChatGPT の感想 (主観) であって客観性がある情報になっていないし、質問の仕方や文脈で逆のことを言うのもよくあることだから。
ユーザに追従するような振る舞いをするのでいくらでも望む方向の反応を引き出せる。
377: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/19(木)20:57 ID:nNn4PbNI0(5/6) AAS
>>375
C++ の言語仕様は抽象機械の動作として記述されている。
動作を説明するための架空の機械の動作なので、文字通りの機械語が生成されるとは限らない。
結果的な動作が仕様に反しなければどのような機械語を生成しても言語仕様に準拠していると言って良い。
しかし、逆に言えば最適化で変形したとしても結果は変わらないようになることが保証される。
378
(1): (オイコラミネオ MMdd-Rgxs) 06/19(木)21:05 ID:oyTCj2/DM(2/5) AAS
>>375
最適化では結果は変わらない。
つまり、ちゃんと10で割って、ちゃんと10を掛ける。
10を掛ける方は、マシン語の乗算命令は使われず、
もっと速い命令に置き換えられることが有るが、結果は同じ。
379: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/19(木)21:11 ID:nNn4PbNI0(6/6) AAS
処理系は抽象機械の動作を正確にエミュレートする必要はなく、観測可能な動作のみをエミュレートすればよい。
外部リンク:timsong-cpp.github.io
だから観測されない動作は削除してもよいというか、削除されることはある。
たとえばその計算結果が全く使われないような状況とか。

ベンチマークしようとして結果を使わない計算をループで囲んだりしてるようなコードではまるごとごそっと消えるなんてのはたまに見る。
380: (オイコラミネオ MMdd-15C+) 06/19(木)21:16 ID:sZaRUqQbM(12/14) AAS
セキュリティの問題で普通にゼロクリアした場合でも最適化で削られたりとか昔は問題になったけど…
知らないといけないことは多岐にわたる
381
(1): (スッップ Sdb2-T1jw) 06/19(木)22:14 ID:JQ4jFr2Sd(1) AAS
>>375
それだと取り除けるケースがあるので保証はされない
382
(1): (オイコラミネオ MMdd-Rgxs) 06/19(木)23:09 ID:oyTCj2/DM(3/5) AAS
>>381
いや、そんなことない。
最適化では結果は変わらない事が保証される。
383: (ワッチョイ 9202-oXsi) 06/19(木)23:15 ID:IWPeLhU+0(1) AAS
>>375
あるわけないでしょ
そういう仕様なんだから
384
(1): (オイコラミネオ MMdd-15C+) 06/19(木)23:25 ID:sZaRUqQbM(13/14) AAS
意味があるにも関わらず意味がないと判断されると削られる
その場合の対処法もあるので学ばないとまあ残念なことになってしまうと言う話
385: (オイコラミネオ MMdd-Rgxs) 06/19(木)23:29 ID:oyTCj2/DM(4/5) AAS
>>384
いや、今回の割って掛ける場合、そういう事は起きない。
386
(1): (オイコラミネオ MMdd-15C+) 06/19(木)23:34 ID:sZaRUqQbM(14/14) AAS
ここの部分はそうだけど
コンパイラの最適化が必ず元の動作を保証してるようなことを書いてるような人がいるから必ずしもそうではないよと
387: (オイコラミネオ MMdd-Rgxs) 06/19(木)23:37 ID:oyTCj2/DM(5/5) AAS
>>386
仕様に明確に書いてあることの動作は変わらない。
388
(1): (ワッチョイ 1279-T1jw) 06/20(金)01:42 ID:iLwGFTtd0(1/2) AAS
>>382
そら結果は同じよ
結果が違っちゃまずいだろうよw
演算をやらない可能性があるってこと
389: (ワッチョイ 1279-T1jw) 06/20(金)01:44 ID:iLwGFTtd0(2/2) AAS
質問じゃ曖昧だけど副作用完了点が間にない場合の話なら、な
390
(2): (ワッチョイ b603-dswa) 06/20(金)01:58 ID:t+D0H6HX0(1) AAS
>>388
どういうこと?
演算しないと結果は出ないのに、演算せずにどうやって結果だすの?
391: (ワッチョイ 5e10-cspE) 06/20(金)08:38 ID:eaqG1YUh0(1) AAS
実行するプログラムではなくてコンパイラが計算までしてしまう
たとえば、printf("%d",12345/10*10); というコードはコンパイルすると、puts("12340"); に変更される可能性がある
出力結果だけは同じだけど、そのコードは大きく変更されてしまう
392
(1): (ワッチョイ 0175-Is3k) 06/20(金)09:01 ID:BxPKXrVj0(1/4) AAS
>>390
変数が関わらない定数だけの演算なら、コンパイルの時点で計算しても結果同じだよね
だから実行時ではなくコンパイルの時点で演算した結果を使う
初歩の最適化の一つ

元の式については左辺に変数が入ってくるから多分最適化はされない
a=b/10*10みたいなのを想定してると思うけど、この場合は最終的に
a=b/10
c=a*10と分解して計算されるので、どちらにも変数が関わってしまい最適化対象外だと思う
a=b*(10/10)みたいな、計算優先度的に変数が関わらないところができれば最適化される

この手の手動最適化なんて考えなくなって久しいから間違ってたらすまぬ
393
(1): (ワッチョイ 71a6-Y+Ow) 06/20(金)09:03 ID:LoawS5uh0(1) AAS
変数があっても結果が同じ計算式で置き換えられるならそうしてくる
10倍よりも8倍+2倍のほうが速い、とかで
394: (ワッチョイ b1d6-xkro) 06/20(金)10:35 ID:YK1FsnCb0(1) AAS
最適化のロジックを作るのはまだプログラマーでしょうから。
値を10倍してから10で割るというプログラムを
何もしないに変更するのありかな。
でもわざと桁あふれをさせたい場合もある?!
395: (ワッチョイ 0175-Is3k) 06/20(金)10:40 ID:BxPKXrVj0(2/4) AAS
昔は最適化でバグ混入させられることもあって、最適化は切れってされてたなぁ、っていうおっちゃんのつぶやき
396
(2): 06/20(金)10:45 ID:4xHX9xY70(1/2) AAS
>>392
ここまでの話で「定数だけの演算なら」と何で言い出すのか理解できないけど
>>375では「整数型の変数を」と言っているわけだし
まあそれはおいておいても「コンパイルの時点で計算しても」←演算してんじゃんって俺は思うわけ

>>393
それ自体は問題なくね?
157 を 10で割って15
これに10を掛けるのでなく15*8+15+2 でも最適化の影響はないだろ?
割り算の方でそれが起きるなら問題だけど、>>378の人の話では起きないようだけど
397: (アウアウウー Sacd-xHx3) 06/20(金)11:14 ID:xCnXC/Iza(1/2) AAS
>>396
これ観たら発狂するんじゃね
外部リンク:qiita.com
外部リンク:qiita.com
外部リンク:qiita.com
398
(1): (ワッチョイ 0175-Is3k) 06/20(金)11:57 ID:BxPKXrVj0(3/4) AAS
>>396
コンパイラで演算しても結果が変わらない場合に限り、コンパイラで演算を行いその結果だけを使う
392でも書いてるが、例題の変数を10で割って10を掛ける動作は演算結果が変わってしまうので最適化は行わない
399: (ワッチョイ 9279-fyaG) 06/20(金)12:39 ID:4fYw50h40(1) AAS
定数はいつ計算しても同じ結果なんだから最適化されるよ
400
(1): (ワッチョイ 59c9-LWzS) 06/20(金)12:50 ID:yZt3hnAQ0(1) AAS
-O3だとプログラムが動かなくなるから使っていいのは -O2までって先輩に言われてた
401: (ラクッペペ MM96-gPPd) 06/20(金)12:53 ID:y+CeF2upM(1) AAS
何故最適化レベルをワザワザ選べるようにしているのか?
完璧なら選ぶ必要はない
理想論には興味ないから語りたいなら具体的な問題点を上げていけ
402: (アウアウウー Sacd-xHx3) 06/20(金)13:06 ID:xCnXC/Iza(2/2) AAS
>>400
それは言われてたのは知ってるが
「-O3だとプログラムが動かなくなる」のは未定義踏んでるからじゃないか
403
(1): (ワッチョイ 6e9d-x4hs) 06/20(金)13:28 ID:H6JOW3Vp0(1) AAS
モバイルc消えてるんだけどなんで?
404: (ワッチョイ e908-x4hs) 06/20(金)13:42 ID:JPiEW2yh0(1) AAS
>>403
あれ便利やった
なんで消されたんやろ
405: (JP 0H46-E6Ax) 06/20(金)17:27 ID:yQfQLmUOH(1) AAS
std::formatの件だが、Visual Studio 2022のコンパイラ設定が
デフォルトでC++14標準になってた。すまん。
406
(1): 06/20(金)18:21 ID:4xHX9xY70(2/2) AAS
>>398
そんなことは知ってるのさ
「実行ごとに演算結果が変わる(可能性がある)」から最適化されない、と言うのは良いんだけど
最初からその前提の話をしていたはずなのに「演算をやらない可能性がある」と言い出しただろ?

375 整数型の変数を〜(略)〜この計算が最適化とかで除かれない保証ってあるの
381 それだと取り除けるケースがあるので保証はされない
382 いや、そんなことない。最適化では結果は変わらない事が保証される。
388 (略)〜演算をやらない可能性があるってこと

この流れじゃ『整数型の変数(実行時に結果が変わる)の場合でも最適化によって「演算をやらない可能性がある」』ってニュアンスになっているって気づかんの?
それに対してのどういう状況だ?という>>390だよ
省1
407
(1): (オイコラミネオ MMdd-Rgxs) [sate] 06/20(金)19:12 ID:ykKOKnwYM(1/7) AAS
>>406
回答者にも正しいことを言っている人と間違っていることを言っている人が
いるというだけ。
正しいのは、仕様に明示されている動作については、
最適化してもしなくても結果が変わらないという事だ。
なぜなら、それが仕様なのだから。
408: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/20(金)19:41 ID:3ZuChe0s0(1) AAS
>>407
大元の質問からすると仕様が動作を保証するか結果を保証するかをわかってないようだからその説明では不十分でしょ。
409
(1): (オイコラミネオ MMdd-Rgxs) 06/20(金)20:44 ID:ykKOKnwYM(2/7) AAS
保証されます。
410: (ワッチョイ b235-m2eM) 06/20(金)21:00 ID:M1o0ztly0(1) AAS
コンパイル時に値が決まるようなら実行時に演算されない
そうでない場合でもある整数が決まった値になることが保証されていることがコンパイル時に分かっているなら最適化されて演算されないケースがある
それ以外なら最適化されない
411: (オイコラミネオ MMdd-15C+) 06/20(金)21:06 ID:80Iion+LM(1/2) AAS
いずれにせよ結果を使わないなら最適化で丸々消される
412
(1): (ワッチョイ 0175-Is3k) 06/20(金)21:12 ID:BxPKXrVj0(4/4) AAS
>>409
ただしバグがなければ
413
(1): (オイコラミネオ MMdd-15C+) 06/20(金)21:18 ID:80Iion+LM(2/2) AAS
最適化の時点でコードが消されるので直に0で除算をするとコンパイルエラー

変数に突っ込んでるとコンパイル可能で実行してもその部分は最適化され消されてるのでゼロ除算にならない
もちろんconstにしててもコンパイルエラー
414: (オイコラミネオ MMdd-Rgxs) 06/20(金)21:43 ID:ykKOKnwYM(3/7) AAS
>>412
それは、ユーザープログラムのバグではなく、コンパイラのバグだ。
コンパイラにバグが無ければ、四則演算や&,|,~,^,&&,||などと
括弧の組み合わせた結果は、最適化しても変わらない。
0除算に関しては話が別。
1-
あと 193 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.038s