X



C++相談室 part146
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2019/11/07(木) 11:35:36.76ID:4wggfTwe
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part145
http://mevius.5ch.net/test/read.cgi/tech/1568362404/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
0114デフォルトの名無しさん
垢版 |
2019/11/23(土) 02:47:31.93ID:dFQ8RRrN
C++はすぐ深刻なエラーになるからコーディングに注意を要しストレスで禿げる
0116デフォルトの名無しさん
垢版 |
2019/11/23(土) 08:18:19.78ID:FPHze3FN
プログラミング言語好きの人たちが集まるネットコミュニティの
雰囲気にあてられてハゲるんと違うか?
C++界隈は他の言語に比べて攻撃的な物言いをする人が多い気がするぞ。
皆がトーバルズ氏になりたがってる、みたいな。

ハゲ先生の本を(和訳本で)読むと穏やかな人格者っぽい感じなのに。
0118デフォルトの名無しさん
垢版 |
2019/11/23(土) 11:19:54.13ID:ZGOtfnpM
C++はもうC#の後追いやってるだけだからなww
テンプレートにうつつ抜かしてる間に生産性以外でもC#に劣る言語仕様に成り下がった
0121デフォルトの名無しさん
垢版 |
2019/11/23(土) 13:16:56.60ID:iYvqsLVH
今はやりのpythonを使う人はpybind11とかでpython用のC++プラグイン作るだろうから、これからもC++は色んな所で使われ続ける。
0122デフォルトの名無しさん
垢版 |
2019/11/23(土) 13:20:40.03ID:jA/F562D
後追いというか、C++を最も使い込んでいるのはMSなんだからC#に似てくるのは当然
0123デフォルトの名無しさん
垢版 |
2019/11/23(土) 13:38:45.00ID:ZGOtfnpM
何寝言逝ってる
C#で新たな規格が決まって
だいぶ遅れて、C++がそれ取り込んでという順番がつづいてるだろうがwww
0129デフォルトの名無しさん
垢版 |
2019/11/23(土) 16:25:19.22ID:6kdTmmEk
yieldは40年前からある技術だけどな。
cライクの言語に取り入れたという意味ではエポックメイキングだったんだろう。
その2つくらい?
0132◆QZaw55cn4c
垢版 |
2019/11/23(土) 16:46:36.89ID:bse8qODO
>>128
中間言語や VM の存在は C# の本質ではないと思います
マイクロソフトもいずれネイティブコードを吐く C# コンパイラを出してくるでしょう、私には VM なんてなんの腹の足しにもならない無駄な機構にしかみえません
0133デフォルトの名無しさん
垢版 |
2019/11/23(土) 16:49:37.49ID:KvoIJqUR
PGのVM設計するときに参照するのがx86だったりとかで、結局ロックインしちゃってる気がする。
複数の未知のCPUにJITできるように組んでないような気がする。
0134デフォルトの名無しさん
垢版 |
2019/11/23(土) 17:12:01.03ID:3WxMvOwa
wintelの目指すトコロはCPUアーキテクチャと専用高級言語の囲い込みでしょ
C++を潰すには、みたいな第二次ハロウィン怪文書を思案中だよきっと
0137デフォルトの名無しさん
垢版 |
2019/11/23(土) 18:14:16.80ID:U8iKLMmJ
>>136
できますが、結局、GCを使うので、C++並の速度にはなりません。
GCが動いた場合、処理時間のオーダーが違うので、CPUがどんなに速くなっても
どんなに最適化を施しても無理です。
0141デフォルトの名無しさん
垢版 |
2019/11/23(土) 20:59:39.93ID:W1wK9gMe
ビジネス用途を想定しているC#と基礎技術を支えるC++が競合してると思ってるのが面白い
0142デフォルトの名無しさん
垢版 |
2019/11/23(土) 21:20:13.50ID:fygFNKSM
GC で止まるのが嫌なら、GCの無い、Rust を使え!

その代わり、かなり注意深くプログラミングしないといけないw
0144デフォルトの名無しさん
垢版 |
2019/11/23(土) 21:28:04.03ID:ItEg5azI
昔は1日の業務の終わりにGCを走らせてから帰宅したもんだ。翌朝までにGCが完了してればそれで充分だった。
いまは物理メモリが広いので速度クリティカルな部分ではGCを無効化するのもありかもしれない。
それだとしてもC#はC++を置き換えられないよ。思想が違うもの。
0145デフォルトの名無しさん
垢版 |
2019/11/23(土) 21:35:18.52ID:fY6FJFDb
やっぱ今衝突とか爆発しそうなその瞬間に寄りによってGC走ったら悔やんでも悔やみきれないからな
GCなし言語には生き残ってもらわないと
0150デフォルトの名無しさん
垢版 |
2019/11/24(日) 15:08:37.94ID:FJ6sVzWZ
Rustはコンパイルが通った時点で(メモリ管理に関しては)注意深くプログラミングし終えたことになる、
抜け穴がないわけではないが普段気にするほどではない
0151デフォルトの名無しさん
垢版 |
2019/11/24(日) 15:14:02.85ID:FJ6sVzWZ
GCとプログラムの実行速度の姦計は、
GCが極力動かないようにプログラマの側で工夫する余地があるから必ずしも打つ手が無いわけでは…
(GCが動き出したらワーストケースの見積りが吹っ飛ぶというのはあるが

とゆーわけでC++に比べてC#がいまいち遅いのはGCが主犯というわけではなく、
オブジェクトに参照経由で毎回間接アクセスする言語仕様なのと
JITでマルチプラットフォーム対応可能なことと引き換えに最適化があんま利かせられていないせいだと思う
あとネイティブコードを呼び出す最にマーシャリングもするし、
ジャヴァのサンドボックス思想をパクるために仕方なかった側面、
0152デフォルトの名無しさん
垢版 |
2019/11/24(日) 15:29:19.64ID:FJ6sVzWZ
ユーザーコードがバックグラウンドタスク(応答時間非規定で可)でGCを使うだけなら
GCとリアルタイム性は両立しないわけでは無い

まあGC有りのプログラミング言語でプログラムする状況で
GCが使われる状況がバックグラウンドタスクのみに限定されるというのは
非現実的な想定かもしれんが
0154はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/11/24(日) 17:46:57.62ID:FzCW75Pg
今時のよくできた GC (の実装) はインクリメンタル化されてるから、
良い感じに暇なときを見つけて動いてくれるっしょ
0156デフォルトの名無しさん
垢版 |
2019/11/24(日) 18:49:08.07ID:np+ynBzF
あれ?この人職業プログラマなの?
趣味でお気楽にやってるだけの人だと持ってた
0158デフォルトの名無しさん
垢版 |
2019/11/24(日) 19:43:00.54ID:aq7LfmWh
わたくしが「現代現象」と呼称する一連の悲劇的な出来事は
なんの変哲もない日常がいきなり変貌を遂げるものであり
その猶予は0.1秒もない

スイスチーズモデルを天文学的数字ですり抜けたそれら現代現象への対処時間は大抵は1秒未満になる
なので未来になればなるほど思いもよらない意味不明で突発的で素早い破壊事象が起こる

これを踏まえて車載映像の事故映像を見てみると猶予が本当に少ないことが分かる
なので自動運転では各種の重い処理はマーフィーの法則によれば衝突する0.1秒前の「暇な時」に動き出す
これを超克するには未来予知が必要になる
0159◆QZaw55cn4c
垢版 |
2019/11/24(日) 19:55:00.69ID:oHJXyQoT
>>155
はちみつさんは lisp-er ですから、lisp-er 的な視点で現在のプログラミング環境をみれば、
やっと時代が lisp に追いついてきた、という感慨が発生するのも自然だと思いますよ
GC も lisp の産物ですから

「適正に欠く」と判断する推論内容は理解できませんね
0160デフォルトの名無しさん
垢版 |
2019/11/24(日) 20:23:39.32ID:lsOVnPbd
>>159
それは、おまえも適性を欠いているということだ
形容詞に比較をつけないとか、定量的でないとか、
魔法的にアレしてくれるだろうとか
おまえの頭ん中も同じだとここで露呈して今どんな気持ち?
0161◆QZaw55cn4c
垢版 |
2019/11/24(日) 21:42:37.16ID:oHJXyQoT
>>160
私に適性がないのはそのとおりなのでしょうが、いちいち定量的に条件を明示して話をしなければならないわけでもないでしょう
魔法的にアレするレイヤーの話は別途規定する前提で、今は特に大局観を語りたいときにはね

あなたは、戦術レベルの話はできても戦略レベルの話は理解できない大局観に欠いた狭量な、例えば java 屋さんに見えますね
0164デフォルトの名無しさん
垢版 |
2019/11/24(日) 22:23:01.28ID:gOHxLuuk
>>132
>いずれネイティブコードを吐く C# コンパイラを出してくる
すでに出とるが
いつの時代の話しだ
0166はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/11/25(月) 00:55:16.50ID:a5DfrA3a
>>159
ワイは Scheme 使いでもあるし日常的には Scheme の方をよく使ってはいるが、
長いことバイナリマンだったし、 LISP の思想にそんな強い思い入れはないわ。

ただ、評価とかごちゃごちゃ言ってないで手早く書いて実測しろってのは LISP 的かもね。
今では他の言語でも書きながら速いサイクルで回して改善するスタイルって一般的じゃね?
書き始めは楽観的にやってるよ。

なるべく楽して必要になってから手間かけりゃいいんだよ。
そんでもってゆるふわに富豪的プログラミングしてても割と足りてしまう経験の方がおおいなぁ。

>>156
俺は趣味人やで。
0168デフォルトの名無しさん
垢版 |
2019/11/25(月) 10:37:33.23ID:fJS33Jzt
>>163
これだけ広いスパン使われて、いろいろな書き方がある言語なのに
ユーザーは多様性に非寛容というのはなかなか興味深い現象。
0178デフォルトの名無しさん
垢版 |
2019/11/25(月) 21:40:59.01ID:p8s7YmVo
C#って、これ以上の普及はもう無理だろ。WindowsのUIアプリでしか存在価値はない。
MonoはイマイチでJavaはなくならんし、WebもAIもスクリプト言語系でOK。
タイムクリティカルなエンジン部をC++で書いて、スクリプト言語(Python含めて)
使うのが主流化してる。C#を使う場面が無い。
0180デフォルトの名無しさん
垢版 |
2019/11/25(月) 21:58:44.19ID:K0cOW7SD
会社の上層部がMSの営業に騙されてAzureの導入を決めてしまった場合、
マネージドサービスの利用のためにはC#を使用せざるを得ない
他の言語では事実上使い物にならない
0182デフォルトの名無しさん
垢版 |
2019/11/26(火) 00:49:10.79ID:FjVBoEgv
保守的な経営者とそこそこの技術力の社員でも使えるんだからAzureというのは大したもんだな
0186デフォルトの名無しさん
垢版 |
2019/11/26(火) 05:54:06.62ID:PYT33B53
>タイムクリティカルなエンジン部をC++で書いて、スクリプト言語(Python含めて)
>使うのが主流化してる。C#を使う場面が無い。

主流て、そんなもん昔からほぼこういう書き方してるだろwww
そこで、スクリプト言語を使ってどれだけ実行時間に影響与えてるか正しく認識してないのが多い。
ここでC#使ってこんなに違うのかと初めて気づく。
そして、単に実行速度ってことならエンジンにC++使わずともC#でもそこそこ勝負できるってことも認識するのが情弱。

タイムクリティカルな用途ならそれこそOSからしてラウンドロビンなんか使わない。
RTOSでわざわざ、メモリプール設定してるのに、new/delete繰り返すようなC++流の書き方はそもそもよろしくない。
C++で非推奨の限りなくpure Cに近い書き方してるのはもはやC++とはいわんだろ。
0187デフォルトの名無しさん
垢版 |
2019/11/26(火) 07:33:35.08ID:auNO4ARl
> RTOSでわざわざ(中略)C++流

そう思い込んでる迷惑なのがいるんだよ
おまえみたいな
0188デフォルトの名無しさん
垢版 |
2019/11/26(火) 08:07:38.46ID:uPJEEVDZ
タイムクリティカルもいろんなレベルがあるから

ハード実装
FPGA
OSレスのフルアセンブラ
RTOS + C
....
クラウド
0189デフォルトの名無しさん
垢版 |
2019/11/26(火) 08:12:14.93ID:uPJEEVDZ
> C++で非推奨の限りなくpure Cに近い書き方してるのはもはやC++とはいわんだろ。

テンプレート、ラムダ、...を使いまくるコーディングだけがC++じゃない
小規模組み込みでnewすら使わない泥臭いC++もC++
0191デフォルトの名無しさん
垢版 |
2019/11/26(火) 10:50:10.03ID:6Teht3Z8
クラスにupdateという関数があってそれが何回もメイン関数にあるインスタンスから呼び出されるのですが
update内で変数宣言を書いている場合、領域の確保は呼び出される度に行われますか?
0195デフォルトの名無しさん
垢版 |
2019/11/26(火) 13:01:29.72ID:njyF587z
変数自体はスタック(またはレジスタ)に割り当てられるから
確保解放のコストは気にするな

変数の内部(コンストラクタ他)でのメモリ確保解放や初期化処のコストは当然気にしよう
パフォーマンスの問題であればクラス変数にする等
0196デフォルトの名無しさん
垢版 |
2019/11/26(火) 13:05:09.36ID:auNO4ARl
関数を使おうってときに
関数内変数をデータメンバに改造するアホが
うちの若いのにいたら焼きだ
0198デフォルトの名無しさん
垢版 |
2019/11/26(火) 13:14:44.26ID:njyF587z
バッファをあらかじめ確保しておくなんて
ごく当たり前のことだと思ってたけど
そうじゃないのか?

updateなんていう、
クラスの内部に直結してそうな関数ならなおさら
0199デフォルトの名無しさん
垢版 |
2019/11/26(火) 13:16:07.35ID:XO/gVUyI
とか抜かすやつに限って計測もせずに片っ端から最適化と称した難読化をしやがる
0201デフォルトの名無しさん
垢版 |
2019/11/26(火) 13:20:23.43ID:XO/gVUyI
>>200
パフォーマンスの問題であるなら、まずは計測する
そして最適化厨が必死に難読化を施しているその箇所は、殆どの場合パフォーマンスに全く影響しない
0202デフォルトの名無しさん
垢版 |
2019/11/26(火) 13:23:10.22ID:njyF587z
パフォーマンスを考えなくていいプログラムなら
そもそもC++を選ぶのが間違い
0204デフォルトの名無しさん
垢版 |
2019/11/26(火) 13:25:28.02ID:njyF587z
パフォーマンスなのかフラグメントなのか使用リソースなのか
何を気にしてるのかはわからないけど
0205デフォルトの名無しさん
垢版 |
2019/11/26(火) 13:35:02.29ID:XO/gVUyI
再入やマルチスレッドで死ぬ恐れもあるから、このレベルの初心者にバッファの事前確保が当然だなどという阿呆な考えを植え付けることはテロ行為に等しい
0207デフォルトの名無しさん
垢版 |
2019/11/26(火) 15:17:34.53ID:GwsQnBsH
>>191はstaticがついてなければyesで終わる話
それに勝手な前提つけたしていらん押し付けをするからお前らは駄目なんだぞ
0210デフォルトの名無しさん
垢版 |
2019/11/26(火) 16:11:06.83ID:FF/Zqwz/
https://ideone.com/kprgQF
ちょっと暇だったので、
昔のビットシフトの掛け算と割り算って、
今の技術使ったら爆速になるんじゃないかと思ったのですよ。
で、書いてみたのだけど、知識不足で到達しないんだ。
なんでだろう??
0211デフォルトの名無しさん
垢版 |
2019/11/26(火) 16:15:11.65ID:fUnM+X7O
>>202
そのプログラム全体が速度が要求される訳でもなかろう。必要なところだけ必要なぶんだけ高速化しろよ。
速度が要求されない部分も別にわざわざ別の言語で作るメリットがなければC++のままで構わないわけだし。
0212デフォルトの名無しさん
垢版 |
2019/11/26(火) 16:18:03.80ID:fUnM+X7O
>>208
質問者にとっては混乱させられるだけの余分な情報だし、知っている人からすれば当たり前で価値のない情報だし、実のない議論したいだけの無意味な付け足しは要らんよ。
0213デフォルトの名無しさん
垢版 |
2019/11/26(火) 16:46:50.53ID:FF/Zqwz/
俺が言いたいのは一つだ。
C言語は超高等言語なので、その前にC++使うのだ!
■ このスレッドは過去ログ倉庫に格納されています

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