C++相談室 part165

レス数が1000を超えています。これ以上書き込みはできません。
2023/10/31(火) 07:37:38.52ID:+ZyYyqMO0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
C++相談室 part164
https://mevius.5ch.net/test/read.cgi/tech/1683600652/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2025/04/13(日) 14:25:22.49ID:cgsGBgQOM
それだったら関数に分けたほうが稼げる気がするけど
2025/04/13(日) 14:43:21.80ID:zW1FzTwb0
大昔や一部の組み込みみたいなスタックや関数呼び出しのコストが重い世界だと
余分な関数書くな全部main()に納めろみたいな文化もある
2025/04/13(日) 14:45:54.31ID:wdBPVi5v0
>>938
ワンチップマイコンとかかなぁ
940デフォルトの名無しさん (アウアウウー Sacb-gg6d)
垢版 |
2025/04/13(日) 15:14:08.46ID:4yNzrwxra
stack8段しかないとかならそうなるわね
2025/04/13(日) 21:40:21.31ID:ui4bTaon0
基本はdon't repeat yourselfかね。

繰り返しで無いのなら縦長のブロックも許容できる。
2025/04/13(日) 22:13:41.04ID:b1PigeDH0
コンテキストの量にもよるよな
高速化の結果複雑なコンテキストになること多いけど、そうなると関数分けが難しくなる
2025/04/15(火) 09:57:20.08ID:jku5RD3N0
極端にリソースが制限されているマイコンの場合はそもそも C や C++ が適した選択肢なのかどうかという疑問がある。
どうせインラインアセンブラまみれになるのだし、いっそマクロアセンブラのほうが見通しが良い気がするよ。
944デフォルトの名無しさん (ワッチョイ 5f11-gGXF)
垢版 |
2025/04/15(火) 11:01:48.32ID:l4YFawe/0
【脳科学】「政治行動の激しさ」に関連する脳回路の存在が研究で判明 [すらいむ★]
http://egg.5ch.net/test/read.cgi/scienceplus/1744637408/

上記のリンクをたどったリンク先の本文とコメントを読まれると・・・
余裕ありますか・・・
大々的にインターネット上にばらまかれました!
2025/04/15(火) 11:31:51.94ID:vVagySV10
>>925-926
C++26で事前条件事後条件が入るっしょ、他の言語ほど凝ったものではなく単なるassertの別記法ではあるけど
バグなんだから検出次第即落として問題ないし
2025/04/15(火) 20:44:04.00ID:WjK3uBtU0
contractsのこと言ってるのなら単なるassertの別記法ではないぞい
947デフォルトの名無しさん (ワッチョイ ff3d-/z+w)
垢版 |
2025/04/17(木) 00:57:26.62ID:TtQSF/vr0
>>923
ヒープ領域はどうなんの?
2025/04/17(木) 01:00:09.35ID:A9DKvgPb0
>>947
生ポ使う方が悪い
2025/04/17(木) 01:58:20.90ID:IaMMIkKx0
リソースの後始末はデストラクタでやる (スマートポインタの利用を含む) ように設計するのが基本ではあるが……。
どうしてもそうできない事情があるなら後始末が必要な場所で例外を一旦キャッチすればいい。

例外が投げられるのは例外が投げられるような状況に対処させるためだ。
対処が必要な箇所でキャッチするというシンプルな話だろ。
2025/04/20(日) 16:24:04.18ID:Eo/IXC4V0
MCPって面白そうだけどもC++のSDKってないんだな
ラッパーとかないんかな?
2025/04/21(月) 09:32:27.45ID:W4eIGfRa0
MCPは単なるJSON-RPCだから仕様書とスキーマをAIに突っ込めばすぐできるでしょ
MCPサーバーなんてどうせAI丸投げで実装させるのが基本だし、
速度も完全にIOとLLMがボトルネックだから、わざわざC++で実装しようなどという奴はいないのだろう
2025/04/21(月) 20:22:54.72ID:ArvlOry0a
reasonというソフトのrack extentionを作りたいです。
2025/04/21(月) 20:23:58.17ID:ArvlOry0a
javaの鉄則、では、goto文は使うな!と書いてましたが、皆さんどうっすか?
2025/04/21(月) 20:40:44.85ID:NUGisEOi0
Dijkstra先生の例の論文でも読んでこい
2025/04/21(月) 21:41:22.47ID:++xqwTI40
>>953
防災設備みたいなものだ。
使わないで済むほうが良いけど必要なときに避けようとすれば被害が大きくなる。

だけど goto は使わないで済むときに使ってしまうと更に被害が出る。
なので自分の判断に自信がないなら教条的に goto を避けたほうが全体としては比較的にマシなんだよ。

そもそも状況が理想的でないことも多いのだから理想通りにプログラムを構成できなくても仕方がない。
もうぐちゃぐちゃになってるものでもどうにかしなきゃならないときはあるだろ。
2025/04/21(月) 22:36:31.36ID:amcA96LQ0
>>953
プログラミングにおいて再帰は最も重要な構造であり、C++もスタックフレームやASTなど再帰的な構造を暗黙の了解として成り立っている。

しかしgotoはこの再帰構造を容易く破壊してプログラムに混沌をもたらす。よってgotoは使ってはならない。
2025/04/21(月) 23:23:45.99ID:7ucDJhu90
>>951
レス有難うございます
Oat++なるウェブフレームワークにoatpp-mcpなるライブラリがあるようです
まずはOat++から遊んでます
2025/04/22(火) 07:13:32.77ID:UYuDPI7gM
gotoが駄目ならlongjmpを使えば良いじゃない by マリー
2025/04/22(火) 08:22:15.23ID:oDpGVZXg0
setjmp/longjmpをANSIに詰め込んでるの💩だよね
2025/04/23(水) 17:25:43.12ID:4FkXeR/00
アドバイスありがとうございます。駿台電子のネットワークの先生が昔、あらゆるプログラミング言語の中で一番、処理が早いのはC++だと言っていたので、頑張ります。
2025/04/23(水) 23:23:42.67ID:1cvTRmDz0
いまだにgoto論とかw
いかに効率的にAIに作らせるかの時代だぞ
誤差レベルの最適化なんかやってる場合かよ
2025/04/24(木) 00:55:04.53ID:ClCGshC50
まずAIにテストをつくらせてだな。。
2025/04/24(木) 08:02:23.17ID:3fimUhF30
C++使いはジジィが多いからAIどころかIDEすら拒絶してるもんな
70年代からずっとgoto論だのインデント文字数だのvi vs emacs論争をたぶん絶滅するまで続けてるよ
2025/04/24(木) 08:42:38.65ID:WKi0rg0u0
>>961
そのあたりは要件定義とかユースケースとかの話だから、問題領域が違うよ。

しかし>961もそうだけど、AIの使い方の話をしているやつからPM知識の匂いがしないのはなんでかね。
AI利用法とかPMで長年研究してきた問題と重複する部分が多いのに。
2025/04/24(木) 08:45:22.69ID:YbDQClr8M
また香ばしいの来たなw
2025/04/24(木) 11:46:10.31ID:cjL4AtoW0
まずそのgotoの話し始めたコテがどう見ても知的に問題がありそうな感じなのに
そいつの話題に乗って語り始めちゃったところで、まともな結論にたどり着けるはずもなく…
967デフォルトの名無しさん (アウアウウー Sa21-NXaD)
垢版 |
2025/04/24(木) 13:24:56.21ID:ndm7u60Wa
C++よりCの方が速い
2025/04/24(木) 13:38:32.65ID:rhg+hx6mp
まあ、クラス関数テーブル参照する分C++の方が遅いかなw
2025/04/24(木) 13:43:43.90ID:pnRjJMwb0
クラス関数テーブルって何?
2025/04/24(木) 13:51:17.41ID:XeDfAgiK0
vtableのことかよ
最近のはプリフェッチ改善されてきているからな
2025/04/24(木) 16:00:45.28ID:ewKS50go0
>>968
メンバ関数は必ずvtableを参照するものではない(非仮想のメンバ関数)
参照しなければCと変わらん
Cでvtable相当のものを用意してそれを介して関数呼べば
仮想メンバ関数呼ぶのと変わらん
2025/04/24(木) 16:39:12.09ID:aYrGN0fKa
rack extention作りますが、グラニュラーとstutterとフーリエ変換付けたら、デスマーチ状態になりそうだなあ。
2025/04/24(木) 16:55:57.61ID:cjL4AtoW0
ね、バカに反応するだけ時間の無駄だって
2025/04/24(木) 20:09:19.15ID:pnRjJMwb0
この場合に何を指してクラス関数という言葉を使ったか (そしてそれが速度的ペナルティに繋がると思ったか) は当人にしかわからんが、私なりに推測すると Java Python Ruby などで言うところのクラスメソッドから間違った類推をして得られた概念ではないかと思う。
これらの言語は「クラスはオブジェクトである」というパラダイムの世界で、抽象メソッドでもインスタンスメソッドでもない場合でも動的なディスパッチを必要とする場合がある。
もちろん C++ ではそうではなく、仮想関数を除けばコンパイル後には関数を指す唯一無二のアドレスが確定していて C の関数と比べて速度的不利はないし、仮想関数のようなことを C でやろうとすれば間接参照なり分岐なりのコストはどうせ必要なので仮想関数を C++ の速度的不利というのは無理筋だ。
ただ、充分な理解なく不必要に速度的不利な機能を使ってしまうことが (C よりは) 高いだろうという意味では C++ が不利と言えなくもないかもね。
2025/04/24(木) 20:50:08.03ID:4KP0cuFt0
vectorは境界チェックするから遅くてゴミでCの配列には必要ないから最強だって暴れてた超天才Cグラマ様おったなあ
2025/04/24(木) 23:12:29.97ID:DqjjH7fdr
境界チェックはしてるんだけど、最適化の過程で霧散する…

…いまは、どこの言語もそのくらいはできるからね
2025/04/24(木) 23:14:17.38ID:Nm4FYEaNa
オライリーで、head first C++が洋書で無いかなあ。
2025/04/25(金) 07:29:57.52ID:IL/no3kVa
そりゃ、あなたたちは、プログラマーというサラリーマンなんだから、僕はバカですよ。。。とほほ。。。
2025/04/25(金) 14:23:29.54ID:M7r6gaHPa
fstream iostream は糞ですね判ります
2025/04/25(金) 18:10:11.03ID:nRYa5Nu+0
C++に触れるものは、遅かれ早かれ、duck test ってものを解する

バカのように振舞うな
2025/04/25(金) 19:48:12.66ID:fabJEISTM
なんでも基礎的な内容をしっかりと勉強しておけば後で役に立つから頑張ればよい
ジジイになる前に少しでも覚えろ
2025/04/25(金) 20:07:56.20ID:fabJEISTM
大昔はmemsetが最適化で消されて気が付かないで徹夜してデスク蹴ったりマウス投げたりしてたんだぞ
関数のアドレスすら存在しない超高速処理で速度的には超有利
流石C++
2025/04/26(土) 02:15:34.80ID:kmHF58M00
…あ。>>980 踏んでたわ

わっちょい自分は苦手で、やったことないんだわ
けっきょく、>>1 の、!extend* を、何行貼ったら、>>1 のようになるの
2行みえてるけど、3行貼ったらいいんだよな
2025/04/26(土) 05:38:20.00ID:qC2gIsX80
昔と出力コードが変わったなと思うのはコプロ周りの処理がSSE前提になった事かなぁ
2025/04/26(土) 10:35:41.92ID:pbPDl6lv0
>>983
C++相談室 part166
https://mevius.5ch.net/test/read.cgi/tech/1745631298/
2025/04/26(土) 15:49:00.51ID:G2uFKMwFM
みなさんはstd::filesystem::path使ってますか?それともただの文字列操作してますか
2025/04/26(土) 15:54:33.92ID:IX/fzv3ga
boostの方のは使ってた
2025/04/26(土) 17:25:44.72ID:DKbZdqM30
>>961
breakもcontinueもgotoの一種なのだから仕方が無い
行先がスコープの始まりか終わりに限定される、というのが良心的なだけで
実行フローをぐちゃぐちゃにできうる能力のはgotoとほとんど変わらないし、、、
for (i=0; i < 100; i++) {
  if (i == a) { continue; }
  if (i == b) { break; }
  if (i == c) { continue; } // i== aとi==cをまとめるとしたら、if (i == a && i != b && i == c) { continue; }としないとバグ
  if (i == d) { break; }
}

また例外はスローする関数と条件を把握していない限り、
いつ炸裂するかわからないステルスgoto文がコード中にばらまかれているのとだいたい同じ……
従って構造化プログラミングで議論に結論がデタと考えるのは早計で、goto問題は永遠に古くて新しい問題……
2025/04/26(土) 21:55:33.90ID:P90TCdD80
一生やってろよw
2025/04/26(土) 23:03:17.16ID:KeLpsr3P0
大量のコードが不可分にもつれあった状態を作れるgotoと
連接・分岐・反復という構造を崩さないcontinue/breakの
違いがわからないようならどうしようもない。
2025/04/26(土) 23:12:16.46ID:qC2gIsX80
古いXLISPのソース見たら発狂するのかしら?
2025/04/27(日) 00:35:43.45ID:J2DPm7Xn0
そんなに構造化が嫌なら最初から機械語で書けばいい
gotoしかないから楽しいかもよ
私は嫌です
2025/04/27(日) 05:06:56.76ID:sqtCgEt90
いや普通の機械語・アセンブラでも、いまどきキレイに書くからw

AIがコード生成しだしたらもうしらん あいつら疲れ知らずの限界なしだから
994デフォルトの名無しさん (アウアウウー Sa1b-Dl8r)
垢版 |
2025/04/27(日) 14:53:44.65ID:rRExk4WBa
「機械語はgotoしかない」は明らかに嘘だな
2025/04/27(日) 15:18:04.41ID:5TUg21k+0
せやば
2025/04/27(日) 17:44:14.12ID:0aN/b0Iq0
ダイクストラが言う構造化プログラミングはモジュールとか抽象データ型とかも含む広範で抽象的な概念として説明されている。
連接・分岐・反復で構成しようという話はそれより前に発表されたものだが、この時代は構造化もクソもないプログラムがまかり通っていたという前提がある。
まずはその三要素を基礎に据えて構成したらわかりやすくね? という提案 (というか感想?) に過ぎず、それで全て事足りるみたいな主張ではない。
(理論上は連接・分岐・反復で全て表現可能であるという証明はされている。)

構造化プログラミングの考え方のキモは構造は人間の認知の中にあるということ。
人間が思考しているときの構造を書き表すためにどんな言語機能 (またはデザインパターン) があればよいの? ってのが構造化プログラミングの議論なんだよ。
書いた人が思ってる構造が表現されているなら構造化プログラミングだし、構造化プログラミングのために用意された機能を使っていても構造が表れていなければ構造化プログラミングではない。
まあついでに言えば書き表されたものについて (コンパイラも人間も) 検証しやすいことも大事だ。

機械的に goto を除去したらむしろ構造が失われるという例をクヌースが出したりもしていて、結局のところはどんな機能も正しく使えば正しいし、悪い使い方をすれば駄目になるというシンプルな話。
そんなわけで break が構造化を崩すか崩さないかは使い方による。
ただ、常識的に考えて break は goto より構造を破綻させにくいだろうってだけ。
997デフォルトの名無しさん (ワッチョイ 9f35-3+vo)
垢版 |
2025/04/27(日) 18:16:26.55ID:yHO53gwR0
ダイクストラがじゃなくてもうちょい場を学ぼう
便所でいきなり大声で演説垂れ始める人がいたらみんな引くもんなんだよw
2025/04/27(日) 19:25:43.76ID:sqtCgEt90
>>997 >>997
999デフォルトの名無しさん (スフッ Sdbf-Nh+M)
垢版 |
2025/04/28(月) 10:15:47.67ID:3WBgyNGdd
連接と分岐があれば反復は要らない説
2025/04/28(月) 10:19:08.06ID:AuNLagCl0
C++相談室 part166
https://mevius.5ch.net/test/read.cgi/tech/1745631298/
仲良く使ってね
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 545日 2時間 41分 30秒
レス数が1000を超えています。これ以上書き込みはできません。