C++相談室 part153

■ このスレッドは過去ログ倉庫に格納されています
2020/10/10(土) 23:18:20.00ID:i4F+i14Y
https://mevius.5ch.net/test/read.cgi/tech/1589424805/
※前スレ
C++相談室 part152
https://mevius.5ch.net/test/read.cgi/tech/1594528940/

テンプレおしまい
2020/10/18(日) 06:35:44.42ID:e/dVAB4j
コンパイラを実装してみれば嫌でもワカル
2020/10/18(日) 07:44:07.32ID:+ySY8JLF
そんな極端なキチガイみたいなこと言うな!
・・とかつっこみたいかもしれないが、意外とそれ真理から困る >>277
C++ が現状あちこち解り辛い仕様になってる色々な理由のほとんどが
コンパイラの実装の都合であることがおおい
2020/10/18(日) 09:07:32.28ID:CqLBM1Q2
>>273
この人達>>277>>278の言う事を真に受けるのなら、組み込み開発をやるといい。
アセンブラレベルでC++が理解できる。
コンストラクタ、デストラクタがどのようなタイミングで呼ばれるのか、グローバル変数、ローカル変数はどのようなメモリ領域を使うのか、ヒープ領域の挙動...経験を積むと自然にC++の細かい挙動が理解できる。

そういうミクロな話じゃない?
なら、常にC++の最新企画の仕様を調べよ。
入門書に書かれていない便利な機能が色々あるぞ。

そういえば質問内容は完全に理解したいだったな。じゃあ、どっちもやれ。
2020/10/18(日) 10:13:18.70ID:e/dVAB4j
完全に理解と型安全には正直ゴールがあるかどうか疑わしい
281デフォルトの名無しさん
垢版 |
2020/10/18(日) 11:52:18.14ID:H1xH1BRx
>>279
そういう話になるから結局C++じゃなくてCからやれって話になるんだよ
C++は有害
2020/10/18(日) 11:54:54.20ID:CqLBM1Q2
>>281
どこに有害要素があるのかわからん。
283デフォルトの名無しさん
垢版 |
2020/10/18(日) 14:45:22.41ID:5IG+e1ti
>>279
そうしてソフト構築能力皆無な
C++博士ができあがったのだった
284279
垢版 |
2020/10/18(日) 15:23:40.89ID:Erm+FeMo
> そうしてソフト構築能力皆無な
> C++博士ができあがったのだった

まぁ、C++を完全に理解したところでっていうね。
そんな暇あれば別言語を学んだり、フレームワークの使い方を学んだりDDDやTDDとか学べって話だわな。
2020/10/18(日) 20:08:20.51ID:347vI+AY
オブジェクト指向プログラミングと言っても、各コンポーネントというかプログラムの最小単位は多くの場合手続き型で記述することになるよな?
どこからどこまでを「最小単位」と見なすか、という問に対する基準というかガイドラインを知りたいな(筆者の主観が混じるとしても)
286デフォルトの名無しさん
垢版 |
2020/10/18(日) 21:04:28.67ID:oU6L/1KQ
この時代に生きててSNS発信を頑張らないやつはアホだ。
https://www.youtube.com/watch?v=TPMNmuWQm_o
【事例付き】YouTuberは最強の副業である件について。
https://www.youtube.com/watch?v=wB8hNuNVoIw&;t=267s
【初心者向け】YouTubeの始め方・稼ぎ方を徹底解説!
https://www.youtube.com/watch?v=YEw-a8qlADM
【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない!
https://www.youtube.com/watch?v=jYdWfjjzD7Y
YouTubeを伸ばすコツ【5つの本質論/初心者向けのセミナーです】
https://www.youtube.com/watch?v=fn-LxP9Unmc
【悲報】YouTuberはマジで難しいので、ほぼ挫折すると思う【無理ゲー】
https://www.youtube.com/watch?v=iKREw5p0Yqc
2020/10/18(日) 21:05:46.61ID:e/dVAB4j
ソフトウェアの良い設計というのは
結果的に破綻も漏れも無く抽象化できていればおk
あくまで結果
成功の秘訣は8割方センス
2020/10/18(日) 21:10:04.50ID:N2+RrN1t
>>287
あらゆる仕事はスーパーマンがやれば全て解決という
結局何も言ってない空論

現場でマジこれ言ってるやつは求人にクリプトン星人と書いている
人事屋としての究極の無能
2020/10/18(日) 21:13:31.38ID:OvLc2vD2
>>285
正直言うと、当たり前のように使われる手続き型という言葉がピンと来ない。

オブジェクト指向におけるソースコードの適切な分割方法を知りたいってこと?
2020/10/18(日) 21:20:59.62ID:OvLc2vD2
抽象レイヤーから具象レイヤーまで順番に話を進めていく方が俺は好きだがな。
一言目で無能呼ばわりするのはどうかと。
2020/10/18(日) 21:26:52.52ID:e/dVAB4j
>>288
早くうまく書けた奴に次の仕事もやらせるのが一番弊害が少ない
理解や気づきの機会は外から与えることはできるが
それがどう理解や吸収につながるかとなると当人の資質や性向のファクターが大きいすぐる
2020/10/18(日) 21:36:12.84ID:OvLc2vD2
>>287

> ソフトウェアの良い設計というのは
> 結果的に破綻も漏れも無く抽象化できていればおk

そうだね。ただ、具体的にどんなノウハウを与えれば、>>288の言うスーパーマンを生み出すかってのが次の疑問だろうな。

自分はOOP、TDDあたりのノウハウが身につけば余裕だと思っているが。
2020/10/18(日) 21:42:13.49ID:e/dVAB4j
OOPは物事を整理する仕組みは提供してくれるが
どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ
実際>>287にゼロベースで的確に答えることは難しい
TDDは設計を検証する仕組みは提供してくれるが以下略

んまーテストケースをいっぱい書くというのは
物事簡潔に済ませる習慣が身につく良い経験かも試練、
2020/10/18(日) 22:21:54.75ID:OvLc2vD2
>>293

> OOPは物事を整理する仕組みは提供してくれるが
> どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ

その通り。だからこそ、そのセンスを磨かせるためにTDDもセットで紹介してみた。
まず、自分の設計が正しいか妥当性確認する手段も無いと間違ったオブジェクト指向が身に付く恐れがあるからね。

結局のところ、個々のセンスを磨かせないと駄目だが...センスを磨かせる環境を整えるのはリーダーの役割だと思う。
何もない状態でセンスで何とかせよ、よりは改善が期待できるよ。
2020/10/19(月) 00:20:11.11ID:lLBStDOZ
コンパイラの都合というよりかはcとの互換性とランタイム速度優先のための仕様によるものだろう。
てかむしろもっとコンパイラの都合考えたらもう少しまともな仕様になっとるわ。
2020/10/19(月) 05:23:08.92ID:f5AfjsGE
スーパーマンはある種の天才で、体系的に天才を教育する方法はないと思う。特に今現在の教育は全体の平均値を上げる事に主眼を置いているから。

大多数がほどほど幸せになる方法としてある程度うまくいってたけど、極少数が全体に絶対的な影響を及ぼすソフトウェアの世界だと効率の悪さが目立ってくるよね。

天才を見つけておいて必要な時に協力してもらうしかないんじゃないかな。全てにおいて天才はいないし来てもくれないので、得意分野では天才的みたいな奴と仲良くしておくぐらいか
297デフォルトの名無しさん
垢版 |
2020/10/19(月) 11:06:36.21ID:4f6/Swqm
体系的に天才を教育する方法
ってのは実は簡単で、C++をやらせればいい
2020/10/19(月) 11:15:17.99ID:8zry6OWB
それは教育する方法ではなく
多数の中から天才を見つける方法なのでは?
2020/10/19(月) 11:37:24.11ID:VFLM6HTy
選ばれても来るかどうかは天才次第
2020/10/19(月) 12:11:42.92ID:0OpHGeV7
プログラムの才能のある人材を発掘する方法は、以前だとLispかHaskellをやらせるのが定番だったけど今はどうなのかね?
2020/10/19(月) 12:44:51.59ID:QMGC8XAt
まずクソ企業で天才が居座るメリット無くね?
誰かが頑張ってくれるだろうみたいな雑魚集団と仕事したくねーわ。
302デフォルトの名無しさん
垢版 |
2020/10/19(月) 13:49:59.16ID:asy7wTux
>>296
天才とは言っていない
ttp://equallove-2017.blog.jp/archives/24499215.html
ttp://equallove-2017.blog.jp/archives/24508935.html
ttps://star.programming-study.com/
2020年10月17日放送分
TK-80の産みの親?
元マイクロソフトでwindows95の開発に参加?
良く判らんけど
Windows95の生みの親に直撃!開発秘話やプログラミングの裏話、子どもたちに伝えたい思いを告白
2020/10/19(月) 15:44:35.47ID:99pu8OZG
>>301
誰かが頑張ってくれるだろうみたいな雑魚がいない企業をおまえさんは知っているの?
2020/10/19(月) 20:56:03.32ID:lLBStDOZ
残念ながらGAFAでもその種の馬鹿はいる。
2020/10/20(火) 00:14:11.70ID:0Qd32UHv
君たち C++ の話をしろ
306デフォルトの名無しさん
垢版 |
2020/10/20(火) 03:00:21.68ID:C47XLKZf
deleteで解放しようとするとたまに落ちるバグがあるのですが
try〜catchで囲っても、やっぱ落ちます。
これって例外で処理することはできないんでしょうか?
それともやばいバグ過ぎてつかまえられないだけなのでしょうか?
307デフォルトの名無しさん
垢版 |
2020/10/20(火) 03:05:40.63ID:U9bI1hKI
投げない例外は捕まえられないのでは?
2020/10/20(火) 03:09:48.67ID:C47XLKZf
>>307
これじゃダメなんでしょうか?
すみませんC++よくわかってなくて…

try{
delete p;
}catch(...){
std::cerr << "error!" << std::endl;
}
309デフォルトの名無しさん
垢版 |
2020/10/20(火) 03:14:10.05ID:U9bI1hKI
>>308
pのデストラクタの中で何かが起きていて、そこで例外が投げられないから補足できないのでは?

それと経験的に、再現性の無いバグは、十中八九、未定義の記憶域を読むことで発生する。
2020/10/20(火) 03:23:38.12ID:NaQDrxzK
丼なスパゲティーコードをメンテしてるか気になる
2020/10/20(火) 03:27:44.66ID:C47XLKZf
>>309
デストラクタは何もないので
どこかでメモリ処理がおかしくなってるんでしょうね…
一旦、動くようにしてみたかったのですが、もうちょっと調べてみます。
ありがとうございました。
2020/10/20(火) 03:36:12.53ID:NaQDrxzK
そういうときに役に立つのがprintfデバッグだろ
どの工程で起こったのかある程度目星がつく
2020/10/20(火) 04:45:58.59ID:C47XLKZf
>>321
継承元の親クラスを何個も辿ってよく調べたら
コンストラクタの中で怪しいポインタにアクセスしている個所がありました。
おそらくこれが原因だと思います。
皆さん有難うございました。
2020/10/20(火) 07:34:58.90ID:OBwoowsU
デストラクタとdelete演算子はデフォルトでnoexceptなんで、
例外発生時点で異常終了してしまい、try〜catchじゃ捕まえられないそうだ。
https://cpprefjp.github.io/lang/cpp11/noexcept.html
2020/10/20(火) 07:48:57.86ID:wzOsKsv0
そういう問題じゃねえよ
不定のポインタは検出不能だ
2020/10/20(火) 08:40:05.01ID:OBwoowsU
いや、今回の問題の解決のために書いたわけではなくて、
>>308のように書いても無駄だと伝えるために書いた。
そのあたり明示せずに書き込んですまん。
317デフォルトの名無しさん
垢版 |
2020/10/20(火) 11:34:12.27ID:pHiz9StD
atexit()
exit()
で捕捉出来ないかな
2020/10/20(火) 11:51:22.81ID:uu0FmVn9
デバッガに頼るのは甘え
プロはprintfだけで正しくデバッグする!
319デフォルトの名無しさん
垢版 |
2020/10/20(火) 11:56:25.10ID:pHiz9StD
プロは logger 使うし
百歩譲っても使うのは fprintf の方
2020/10/20(火) 13:10:32.17ID:wzOsKsv0
printfが使える環境ならな
そうでない場面がごまんとあるから
選択肢は多いに越したことはない
2020/10/20(火) 13:21:42.91ID:NaQDrxzK
シリアルモニタくらいは用意できるだろ
322デフォルトの名無しさん
垢版 |
2020/10/20(火) 13:21:52.61ID:vcQhkuUZ
基本的にprintfデバッグの延長
制度化体系化されたprintfデバッグがログ取り

loggerはより高度なprintfデバッグであり、その基本がprintfデバッグになる
この変数を眺めりゃ万事OK という直感が涵養される

loggerの出力先が10万キロ離れたプリンタなこともある
2020/10/20(火) 13:23:45.82ID:wzOsKsv0
オシロ使ったりもする
2020/10/20(火) 13:26:30.76ID:C+6cO9mm
路地穴は使うよね
2020/10/20(火) 13:28:29.10ID:56eYC1pE
スペアナくらいは普通使うよね
2020/10/20(火) 14:24:10.56ID:wzOsKsv0
無線屋さん?
2020/10/20(火) 14:27:50.64ID:Y3GT62kx
C#を作ったアンダース・ヘルスバーグもデバッガのステップ実行よりもprintfを使うってインタビューで言ってたな
2020/10/20(火) 14:34:50.28ID:kixGkAna
尻穴は使うよね
329デフォルトの名無しさん
垢版 |
2020/10/20(火) 17:41:32.21ID:AdA8N6MK
C++23のdraftが公開されてた
http://wg21.link/n4868
2020/10/20(火) 17:48:19.32ID:wzOsKsv0
>>329
情報ありがとう
2020/10/20(火) 22:08:32.52ID:glKVTYwZ
>>300
C のポインタ、特に関数ポインタ、とか
リカーシブ、とかで十分でしょう
2020/10/21(水) 00:07:59.13ID:HJxHMNRz
尻カーブ?
333デフォルトの名無しさん
垢版 |
2020/10/21(水) 11:15:30.61ID:xBgAWF1Y
シッタカブリ
334デフォルトの名無しさん
垢版 |
2020/10/21(水) 11:18:26.05ID:F4fghCXJ
printfデバッグなんてあり得んけどな。
2020/10/21(水) 11:45:48.97ID:SYSvovlW
>>334
でも最初のうち、プログラムが小さいうちは、それが一番手っ取り早いですね
336デフォルトの名無しさん
垢版 |
2020/10/21(水) 11:52:32.13ID:xBgAWF1Y
printf デバッグは完成後に printf の行を消すと動かなくなったりするω
2020/10/21(水) 12:15:19.02ID:EPxGxCCv
関数化やクラス化でプログラムを小さくするわけで、あんまり関係ないな
assertを使うときもそうだが、デバッグ用のコードに副作用を入れちまうのはヘボ以下
2020/10/21(水) 12:41:52.63ID:BgzupaSs
デバッグOffして弊害残すヤツは動作の仕組み把握出来てないだけだろ
>>336、まず貴様のコーディングセンスを磨いてから出直してこい青二才
2020/10/21(水) 23:09:27.50ID:oE8Yb73v
非同期で動くブツ同士の通信はprintfデバッグ大活躍なのでは…
誰がいつ何を呼んで何を渡したのかと呼ばれたほうが本当に受け取ったのかがすぐワカル

printf消去忘れについては条件コンパイルを使えば良いし、
Ad-hocな追加ならいかに大量にやってもソースコード管理システムで安全に消すこともできるわけやし、
2020/10/22(木) 00:49:05.87ID:VEHOj23m
未定義動作踏んでるときとかにprintfを呼び出すことでたまたま動くようにできたりする
ということか
341デフォルトの名無しさん
垢版 |
2020/10/22(木) 10:43:36.11ID:vPWH9GQz
>本当に受け取ったのかがすぐワカル

buffer flush しないと判らんし
flush すると勝手に改行する環境とかあるし
そこまで便利ってほどでもなくね
nonbuffered しろってか
2020/10/22(木) 10:47:06.06ID:ZfML18uZ
ここまでの話をまとめると
やはりprintfデバッグが最強、ということですね
2020/10/22(木) 12:25:12.96ID:QhFI+vyp
#ifdef DEBUG
 #define PUTCHAR(a) (putchar(a), fputc(a, _fpDbg))
#else
 #define PUTCHAR(a) (putchar(a))
#endif
PUTCHAR(*ptr++);
みたいなことをやれば デバッグ時だけ*ptr++ が二回評価されて結果は変わってしまう。
2020/10/22(木) 12:29:38.65ID:PrgepFj3
>>343
インライン関数に置き換えられるだろ
少しは頭使え
2020/10/22(木) 12:30:03.14ID:Pdn6awLx
デバッグ関係ねーじゃん
2020/10/22(木) 12:31:48.09ID:QhFI+vyp
>>344
そんなことは当たり前。
IQが低い人と話すとこれだから困る。
2020/10/22(木) 12:34:55.42ID:PrgepFj3
>>346
わかってるならインラインで書けよ池沼
2020/10/22(木) 12:38:34.09ID:QhFI+vyp
>>347
駄目な例を敢えて書いたんだ。
どうしてそれが分からないの、あなた達には?
IQが高い人には駄目な例が単なる例として出されたのだと分かるのに
ここの人達にはそれがわからない。
2020/10/22(木) 12:39:39.22ID:3l9/RVrp
>>339
非同期なアプリでprintf使うとタイミングが変わることがあるから安心できんな
デバッガよりは遥かに良いけど
2020/10/22(木) 12:41:58.22ID:QhFI+vyp
>>336
「printf デバッグは完成後に printf の行を消すと動かなくなったりするω」
と書いていたが、>>340が指摘した理由だけではないので、
そうなる他の理由の1例を>>343で書いた。
2020/10/22(木) 12:45:00.97ID:QhFI+vyp
これが考える力なんだよ。
マスコミを含めて「知識知識」と言う人が多いが、生まれつきの頭が悪いと
>>344 >>347 のような馬鹿な発想しか出来ないのでどうにもなら無い。
俺に比べれば、おまえが池沼の癖に。
2020/10/22(木) 12:48:35.56ID:t0UpjLw/
マクロを使う必要性が全く感じられなくてリアリティがない
2020/10/22(木) 13:11:57.24ID:PrgepFj3
>>351
おまえ自分のこと頭おかしいと思わないならかなり進んだ病気だな
2020/10/22(木) 14:13:12.96ID:+Chcwfvy
>>353
精神病院に行け。
2020/10/22(木) 16:17:21.51ID:t0UpjLw/
C++の話しねえやつは出てけ
2020/10/22(木) 17:13:27.21ID:Ztx90rC8
C++ラーメン次郎うめえ
2020/10/22(木) 18:56:55.19ID:N0tQIHiY
>>350
たぶんみんなは
そりゃマクロ使えば何でもありありだろ
そんなことでドヤるとかバカじゃねーの
って思ってる…
2020/10/22(木) 19:00:31.57ID:wCIm4hGG
>>335
printfデバッグを肯定するとは
ロートルの吹きだまり感かなりある
2020/10/22(木) 19:08:50.28ID:lftkiv5C
printfごときで騒いでる方が精神いかれてんだろ。。
360デフォルトの名無しさん
垢版 |
2020/10/22(木) 19:11:08.49ID:dQkQeqlj
今はJTAGがあるので、そんなにお金がかからない。
それでも、プロセッサごとにデバッグ環境を用意できるわけないだろ!!というのが日本企業の現状なら、中韓に任せて野菜でも育てる道が効率よい。
中韓は用意できるし、売り切ることが出来る。
printfデバッグなんてインパール作戦と同じ。
物量が違いすぎる。
361デフォルトの名無しさん
垢版 |
2020/10/22(木) 19:15:22.48ID:dQkQeqlj
お前たちは農民に戻れ。
ハイ解散。
2020/10/22(木) 20:52:46.17ID:RiQFyYLu
>>360
私のマザーボードの JTAG/IEEE1149.1 はどれですか?
363デフォルトの名無しさん
垢版 |
2020/10/22(木) 21:09:21.98ID:dQkQeqlj
>>362
OS開発の場合は、専用のボードを用いることを視野に入れる。
それが無理なら、中韓に任せて撤退するべし。
2020/10/22(木) 23:42:23.12ID:PrgepFj3
#ifdef DEBUG
 #define PUTCHAR(a) do{auto b=a;putchar(b), fputc(b, _fpDbg);}while(0)
#else
 #define PUTCHAR(a) (putchar(a))
#endif
死ねザコw
2020/10/23(金) 08:10:45.22ID:DuAJkWLf
センズリマクロ
2020/10/23(金) 12:27:51.26ID:mEDgqyfG
>>364
else節もコピーしろザコw
2020/10/23(金) 12:34:55.69ID:wQpWPNJn
教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒「そういう場合は、inline使えよ馬鹿教師」
という馬鹿生徒の集まり。
学級崩壊。
2020/10/23(金) 12:38:30.14ID:DuAJkWLf
教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒A「そういう場合は、inline使えよ馬鹿教師」
生徒B「こういうやり方ならいいんだよ、死ねザコw」
教師「」
2020/10/23(金) 12:48:55.12ID:wQpWPNJn
inline関数や、>>364のやり方が分かった上で教師は言っている。
それとも、おまえらの通った学校の教師はそんなことも分からない
くらい程度が低かったのか?
どこの学校だよ。
2020/10/23(金) 13:33:06.99ID:g1Zoxl1Q
ここは教室じゃねぇんだよバカが
とっととキエロ
2020/10/23(金) 13:52:00.54ID:DuAJkWLf
俺が通った学校の教師か
化学のおじいちゃん先生だったな
当時C++はまだ世に出てなかったから
マクロの使い方は知らなかっただろうな
2020/10/23(金) 15:17:01.62ID:vvEFmscd
へー、Cにはマクロないんだ?
2020/10/23(金) 16:10:04.88ID:HRhvOpQY
>>372
#define マクロはありますが、lisp 様仕様マクロはありません
2020/10/23(金) 16:52:36.06ID:GtGn5ZF1
c++の文句をいって
cの話を延々はじめる
そしてどっちも言い尽くされた話

printfデバッグやってるじじいの特徴
2020/10/23(金) 16:57:39.47ID:DuAJkWLf
>>372
C++が世に出る前っていつ頃かわかってる?
その頃のCを化学のおじいちゃん先生がやってると思ったの?
おまえさんでさえK&R Cなんか使えるのか?
376デフォルトの名無しさん
垢版 |
2020/10/23(金) 17:12:38.69ID:2f10zgGH
DxLib は printfDx で printf 推奨ω
2020/10/23(金) 17:55:43.35ID:vvEFmscd
>>371 ではC++はまだ世に出てなかったからマクロの使い方は知らなかっただろうと言ってるのに
>>375 では化学のおじいちゃん先生がCなんてやってるわけないだろうと言っている

それではC++が世に出ててもその頃のC++なんておじいちゃん先生はやらなかったのでは。
だとすると >>371 はいったい何が言いたかったのか…
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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