1 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:54:06.26 ID:Nt0XFA2s.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part147 https://mevius.5ch.net/test/read.cgi/tech/1576659413/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1556142878/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語)
539 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 15:07:49.90 ID:Z95s67CZ.net] しょうもない事で攻撃的になるやつなんなの いつも吹いてしまうw
540 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 15:13:04.53 ID:G+Zw2pJ3.net] (笑)
541 名前:はちみつ餃子 mailto:sage [2020/02/09(日) 15:27:19.45 ID:OoesT11A.net] >>506 BASIC というか、古の言語にはビット演算と論理演算の区別がないものが結構あった。 全てのビットが立った状態 (-1) を真ということにしておけば ビット演算用の AND, OR, NOT がそのまま論理演算のそれとして使える。 昔はこれが気の利いた方法だったんだろう。
542 名前:デフォルトの名無しさん [2020/02/09(日) 16:19:35.32 ID:wTv3WydA.net] #define FALSE 0 ← 正しい #define TRUE 1 ← 間違い くず! 0点!! 出入り禁止!!! #define TRUE (!0) ← 正しい if(b) ← 正しい if(b != FALSE) ← 正しい if(b == TRUE) ← 間違い くず! 0点!! 出入り禁止!!!
543 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:16:55 ID:J3Qn0niW.net] >if(b != FALSE) ← 正しい これこそ糞コード
544 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:20:45 ID:GpaXptWq.net] 意味的にboolなら if (a) if (!a) で判断すべきだと思う
545 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:24:22 ID:GpaXptWq.net] if (a == TRUE) if (a == TRUE == TRUE) if (a == TRUE == TRUE == TRUE)
546 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:32:39 ID:DvSFPggO.net] とぅっとぅるぅ〜♪
547 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:40:32 ID:J3Qn0niW.net] もともと>>438と>>439を混同すんなという話なんだが、混同してる奴が次から次へと湧いて出てくるw
548 名前:デフォルトの名無しさん [2020/02/09(日) 17:46:22.21 ID:cYNa4VVg.net] ちゃうねん。
549 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:46:32.42 ID:ugWNThcV.net] >>528 #define TRUE (!0) ← 正しい C/C++ では、!0 は、必ず1 になることが仕様化されているので、仕様に準拠している 処理系ではこれは必ず、 #define TRUE 1 と書くのと同じになるので、敢えて (!0) と書く意味は無い。
550 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:48:20.60 ID:GpaXptWq.net] boolだろうがBOOLだろうがYESNOだろうが 意味がboolであればboolと同じ扱い
551 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:48:58.88 ID:6++kPC7v.net] >>529 糞コードだが > if(b == TRUE) ← 間違い くず! 0点!! 出入り禁止!!! より1億倍マシ
552 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:50:49.32 ID:GpaXptWq.net] >>528 1がイヤなら0もイヤだろう #define FALSE (0!=0) としないと
553 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 17:55:11.50 ID:J3Qn0niW.net] >>
554 名前:537 マシとか言う以前にそもそも動作が違うんだが。 bがTRUEと一致するかどうか判断するのに他にどういう書き方をするというんだろう? [] [ここ壊れてます]
555 名前:デフォルトの名無しさん [2020/02/09(日) 17:59:01.69 ID:cYNa4VVg.net] >>539 !(b != TRUE)。
556 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:02:21.32 ID:GpaXptWq.net] 普通はTRUEかFALSEしか入ってないんだよ それ以外が入ってる可能性があるなら 普通TRUEがどうかの判断だけじゃダメじゃないか?
557 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:05:49.02 ID:GpaXptWq.net] switch (b){ case FALSE: ... case TRUE: ... case ??? ... default ... } これで
558 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:07:19.16 ID:ugWNThcV.net] >>539 それは難しくいえば数学の集合論の話になる。 {0} と {非0} の二つの集合が有り、 if の条件式では、前者が偽、後者が真と評価される。 TRUEはどんな処理系であれ、必ず後者の集合の要素(元)になっていることだけは 保障されている。 なので、if ( b != 0 ) や、if (b) は正しいが、 if (b == TRUE) は絶対駄目、ということになる。
559 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:09:46.56 ID:GpaXptWq.net] >>543 BOOLなのに 1と2を区別したい事があるんだってさ
560 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:10:45.32 ID:ugWNThcV.net] if ( b == TRUE ) は、この条件式自体の動作は問題ないが、 b が TRUE ではないが、真である何らかの値を持っていたときに破綻してしまう。 BOOL b と書いた場合、本人が書いたプログラムでは b は、必ず TRUE か FALSE の二値に限って書くことになろうが、往々にして、 APIなどでは、「真」の意味で「非0」の値を返してくること関数が含まれて しまっている。 だから、勘違いや混乱が起き易い。 そのため、if ( b == TRUE ) というのは、絶対にやめておいたほうが良い書き方 となる。
561 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:16:58.01 ID:GpaXptWq.net] TRUE/FALSE以外を想定するなら 時と場合による TRUE/FALSEしか想定しないなら if (b) / if (!b) と書くべき
562 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:19:53.44 ID:TF4jiljH.net] 昔VB6からWinAPI呼ぶときの注意点として本で読んだ気がする それboolじゃないよね?とは思った
563 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:20:59.38 ID:J3Qn0niW.net] >>545 じゃあ聞いてみよう。 bがTRUEと一致するかどうか判断する必要がある場合はどう書く?
564 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:29:21.05 ID:J3Qn0niW.net] >>546 排中律が成り立たないからFALSEでないことはTRUEを意味しない。 成功した場合にTRUE、失敗した場合にFALSEを返すという関数がある場合、成功したかどうかは FALSEでないことではなくTRUEと一致するかどうかで判断しなければならない。
565 名前:デフォルトの名無しさん [2020/02/09(日) 18:29:23.53 ID:cYNa4VVg.net] >>548 !(b != TRUE)。
566 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:30:08.13 ID:aEgJYC9i.net] >>548 架空のケースについてのお答えは差し控える つか糞コードかどうかはともかく>>509 の方はMSDNの記述に準拠したコードという意味では 非の打ち所が無い(何かあってもMSDNのせいにできる
567 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:30:08.50 ID:6++kPC7v.net] >>539 > bがTRUEと一致するかどうか判断する それ自体がまずい(ことが多い)と指摘されてることにそろそろ気づこうよ…
568 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:36:27.78 ID:J3Qn0niW.net] >>552 >>514 見ているのにいまだにそんなこと言っているのはなんでだろう
569 名前:デフォルトの名無しさん [2020/02/09(日) 18:42:52.19 ID:cYNa4VVg.net] いやちゃうねん。
570 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:59:34 ID:aEgJYC9i.net] intの取り得る値の集合に対し、TRUEの定義が-93でありかつそれ以外は偽と解釈をせよと仕様に書いてあったら さすがに(b == TRUE)とか(b != TRUE)書くことを現実の選択肢として考慮せざるおえない もちろんそんな仕様が糞だが、仕様なのだからしようが無い 数学の本質は自由性にある、
571 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:07:50 ID:mORiFTgk.net] >>549 >>546 日本語読めますか?
572 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:15:36 ID:PT76WH2y.net] FALSEは定数 TRUEは範囲で観測によって収束する 適性に乏しいやつには厳しいよな
573 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:16:00 ID:mORiFTgk.net] boolからBOOLになってintになってた
574 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:16:09 ID:MeV8oXxA.net] 集合B={FALSE=0,
575 名前:TRUE=1} の場合 !FALSE=TRUE だが B'={FALSE=0,TRUE1=1,TRUE2=2,TRUE3=3} の場合 !FALSE={TRUE1,TRUE2,TRUE3} となる しかし TRUE={TRUE1,TRUE2,TRUE3} と定義すると B''={FALSE=0,TRUE} となり、同型B≡B'が示されるため、B'をboolとみなすことは可能である ただし、比較演算子は集合として同値であるのか、集合に含まれるのかを示さなければならない b⊂B'(≡B) のとき、 b=FALSE は一意だが、b=TRUE は b=1∩b=2∩b=3 を示す [] [ここ壊れてます]
576 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:17:37 ID:mORiFTgk.net] 数学関係ないのに数学ネタでひっぱってるヤツがいるな IDは違うけど同じ人? 数学関係ないから
577 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:18:03 ID:6++kPC7v.net] >>553 >>514の話なら>> 509だし、そうでないAPIもたくさんあるから > それ自体がまずい(ことが多い)と指摘 されてるんだが、まじでわかってないのか? 引っ込みつかなくなってるだけだと思ってたが…
578 名前:デフォルトの名無しさん [2020/02/09(日) 19:18:39 ID:cYNa4VVg.net] ちゃうねんちゃうねん。
579 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:19:01 ID:MeV8oXxA.net] 訂正 b=1∩b=2∩b=3 →b=1∪b=2∪b=3
580 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:22:41 ID:qoRTNAXH.net] グローバル領域にインスタンスを作って、初期化はmain()の中でしたいとします。 で、初期化に必要な情報はmain()の中で初めて分かるとします。 こういうときってそのクラスのコンストラクタとしては何もしないものを作っておいて、初期化用の関数を別途用意するというのが普通ですか? インスタンスの宣言だけしておいてコンストラクタは後で呼ぶなんてできないですよね?
581 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:23:38 ID:mORiFTgk.net] ポインタにしとけ
582 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:29:17 ID:J3Qn0niW.net] >>561 逆に不思議だわ。 「成功時に0以外の値を返す」と「成功時にTRUEを返す」は違うということがなんで理解できないのか。
583 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:30:00 ID:aEgJYC9i.net] std::unique_ptr<T>の出番
584 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:30:50 ID:bHnzUNQO.net] apiの仕様見て適切に処理で終わる話だろこれ
585 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:37:32 ID:54+KBSAm.net] optionalの出番だろ
586 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:39:43 ID:OliK3lJl.net] >>568 同意
587 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:45:02 ID:6++kPC7v.net] >>566 どこから違うことを理解してないと思った? 思い込み激しすぎw
588 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:45:29 ID:6++kPC7v.net] >>568に一票
589 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:47:47 ID:mORiFTgk.net] もともとはboolの話だったのに
590 名前:デフォルトの名無しさん [2020/02/09(日) 19:49:14 ID:VD5bohdG.net] GetGlyphOutline などで文字画像を取り出そうとすると、フォントが持ってない文字は代わりの文字を出力してくる。 (例えば、昔の毛筆フォントでは「?(はしご高)」などはMSゴシックになる。) これを抑制したいので、そのフォントがグリフデータを持っているかどうか、調べる方法はありますでしょうか?
591 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:50:25 ID:mORiFTgk.net] C++の相談?
592 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:52:53 ID:J3Qn0niW.net] >>571 違いを理解しているなら>>566の後者はまさに>>539だということも理解できそうなもんだが。
593 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 19:54:35 ID:bHnzUNQO.net] >>574 ここよりwindows apiのスレのがいいんじゃないかな
594 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:00:40 ID:6++kPC7v.net] >>576 もしかして(ことが多い)っていう意味もわかってないのか?
595 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:05:04 ID:54+KBSAm.net] win32は変な仕様多いからAPIの仕様確認しないと罠にはまる
596 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:05:21 ID:J3Qn0niW.net] 多い方に合わせろって話でもないだろう。 >>568の通りそれぞれの仕様に合わせて適切に扱えってこと。
597 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:05:58 ID:PT76WH2y.net] >>579 ほんこれ
598 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:07:59 ID:54+KBSAm.net] GetModuleFileNameとか仕様作った奴のセンスを疑う
599 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:20:16 ID:6++kPC7v.net] >>580 誰も多い方に合わせろなんて言ってないのに… 単にそういうケースが多いって言うだけの話であることも説明しないとわからんのかな?w
600 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:30:08 ID:J3Qn0niW.net] なら問題ないケースもあることを理解してるわけだ。だとすると>>552で指摘してたのはなんだろうと。
601 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:34:19 ID:6++kPC7v.net] >>584 えっ? まだ(ことが多い)ってわざわざ
602 名前:書いてる意味がわからんのか? まともな奴と会話してる時ならいちいち書かないんだが、ネット掲示板なのでわけわからん奴に絡まれないようにわざわざ書いたのに想定外の低能さんなの? [] [ここ壊れてます]
603 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:46:39.77 ID:J3Qn0niW.net] >>585 つまり>>552 は、まずい場合もあるしそうでない場合もあるという意味のない指摘なわけだ。 ようやく>>539 に戻れたな。 >>537 マシとか言う以前にそもそも動作が違うんだが。 bがTRUEと一致するかどうか判断するのに他にどういう書き方をするというんだろう?
604 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:52:41.00 ID:mORiFTgk.net] bがTRUEと一致する条件の話はしてなくて boolに対するif文をどう書くかの話だろ APIの使い方なら他スレでやって
605 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 20:55:58.33 ID:PT76WH2y.net] 余所でやれって、APIと言語仕様のズレの話だろ 正しい理解はどのようなものかという興味は スレ違いじゃねえぞ
606 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:03:28.51 ID:mORiFTgk.net] APIの正しい理解ならAPIのドキュメントを見れば良いのでは? もともとのboolの話とは全く関係ないですね
607 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:05:18.68 ID:6++kPC7v.net] >>586 > つまり>>552 は、まずい場合もあるしそうでない場合もあるという意味のない指摘なわけだ。 お前には意味ないのかもな… 必死になりすぎw
608 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:05:59.85 ID:J3Qn0niW.net] >>533 に書いたが、boolじゃなくてBOOLの話をしているのになぜかboolと混同する人が
609 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:06:45.54 ID:mORiFTgk.net] boolの話題でbool以外を語るのはこんな感じ 内部的に固定小数点なfloatライブラリもあるぞ 内部的にvectorなmapライブラリもあるぞ
610 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:07:53.15 ID:mORiFTgk.net] BOOLも同じ 意味的なBOOLが前提 それ以外は特殊事情
611 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:21:02.28 ID:J3Qn0niW.net] >>590 意味のあるなしは主観だからいいとして、結局これ理解できたかな? >>537 マシとか言う以前にそもそも動作が違うんだが。 bがTRUEと一致するかどうか判断するのに他にどういう書き方をするというんだろう?
612 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:23:11.71 ID:6++kPC7v.net] >>594 >>552 低能は一度指摘されたことを何度も繰り返すw
613 名前:い mailto:sage [2020/02/09(日) 21:32:30.02 ID:Z95s67CZ.net] boolができるまでは if (!!b) こういうイディオムもありましてね
614 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:42:44.86 ID:J3Qn0niW.net] >>576 を理解しているなら >bがTRUEと一致するかどうか判断するのに他にどういう書き方をするというんだろう? このような判断がが必要な場合があることも理解しているはずだろうが、 結局この質問には答えられない(答えたくない)ようだな。
615 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:05:36.89 ID:6++kPC7v.net] まだやってるのかよw 無能無限ループ乙
616 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:07:19.29 ID:EoI3r47q.net] あいかわらずしょーもない話題だと盛り上がるのな。
617 名前:い mailto:sage [2020/02/09(日) 22:16:06.44 ID:Z95s67CZ.net] goto、マクロ、BOOL 全部C言語の範疇なんだよなw おじさんがんばりすぎ
618 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:18:57.48 ID:aEgJYC9i.net] つか真理値の型であるbool型および 真理値の型としての名前を与えられたBOOL型の議論が Win32 APIの仕様という現実に汚染されてぐちゃらけてますな TRUEに幅が有る、なんていうおかしいことを言い出す香具師まで出る始末、!
619 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:23:19.21 ID:J3Qn0niW.net] 本当は昨日で終わっていたはずの話題なんだがな。
620 名前:◆QZaw55cn4c mailto:sage [2020/02/09(日) 22:31:58 ID:mQrdek/f.net] >>487 え?話の発端は >>438 でしょう? >>439 は >>438 の bool を BOOL にすげ替えたミスリードでしょう? >>491 もう一度いいますが、 >if (b == TRUE) と書くのはバグの原因になる のは b の型が int であれば、確かにそういえますが、b の型が bool ならばなんの問題もなにのでは? https://ideone.com/aL3agg 前提条件を全然考慮せず、条件反射的に >if (b == TRUE) と書くのはバグの原因になる と判断するのは老害的発想と私は断定しますね
621 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:33:23 ID:EiJfhZVq.net] >>602 お前が言うなよww
622 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:33:54 ID:aEgJYC9i.net] 一般論として、APIの呼び出しが成功しました、という情報にはそれ以上幅も糞も無い(成功した要因など知っても無駄 から、成功=TRUE、失敗=FALSEとする割付の下では、TRUEこそ単一値として規定されるべきブツに他ならない よって、一般論としては b == TRUEは言うほど糞ではないはずであった、
623 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:37:13 ID:aEgJYC9i.net] まあエラー要因を複数種類返したい、ということなら 成功判定は b == SUCCEEDEDでSUCCEEDEDでなかったらエラーコードが入っている、という INTかDWORD返しがストレートやったがな!(成功時非0を返す、とか言われるよりは
624 名前:デフォルトの名無しさん [2020/02/09(日) 22:42:00 ID:VD5bohdG.net] if( b == TRUE ) って、結局 if( b ) ってことだろ。
625 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:45:14 ID:Z95s67CZ.net] クソワロタ 口調も激変
626 名前:デフォルトの名無しさん [2020/02/10(月) 00:02:35 ID:SkPzv01G.net] >>555 ヘッダファイルの中で TRUE の値が -93 に #define で定義されていたとしても、C/C++ の仕様だと、0だけが偽で、0以外は真であることだけはANSI Cで決まっているので、それはない。
627 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 00:06:15 ID:hYCIpnsp.net] つまり、 #define TRUE (-93) はANSI Cの規格上非合法だからそれはない
628 名前:デフォルトの名無しさん [2020/02/10(月) 00:07:32 ID:SkPzv01G.net] >>548 その場合で、かつ、b が TRUE に一致するもの以外を除去したいなら if ( b == TRUE ) と書く以外には無い。 しかし、Win32 API の仕様でも、そのようなことを判定する必要があることはない ように通常、作られている。 何人かが指摘しているように、FALSE との判定は良いのだ。 TRUE との判定はまずい。
629 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 00:08:23 ID:hYCIpnsp.net] gotoといいBOOLといい、闇が深いな 裾野が広がれば、底辺は底なしカヨ、
630 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 00:08:59 ID:hYCIpnsp.net] >>611 >>601
631 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 00:39:11 ID:NGNAXTbr.net] 【IT】不動の人気を誇る「Python」、評価が二分される「Java」「JavaScript」 https://egg.5ch.net/test/read.cgi/bizplus/1581244420/ >JavaScript、Java、Python、「C++」「C」が特に多くの人に習得されたプログラミング言語だった
632 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 01:06:29 ID:2gVSY1CN.net] C++11規格でJavaやC#の優位性がかなり失われた気がするわ。
633 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 01:07:48.45 ID:Ro8qON5e.net] c#ならまだしもjavの優位性って?
634 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 01:35:35.28 ID:SkPzv01G.net] >>614 というか、JSやJavaは、ちゃんと学んだ人も多いだろうが、 Pythonを実際に使ったことのある人はかなり少数派だと思う。
635 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 01:38:59.61 ID:SkPzv01G.net] >>617 Javaは、GUIも出来たしブラウザ上でも動いたし、他に代わるものがなかったので それしか選択肢がなかったために実際に使った人は多かったはず。 JSも、HTMLを使おうとした際にそれしか動的言語は無かったから同様。 一方で、Pythonに関しては、似たようなものは他にたくさんあるし、 自分以外の人に使ってもらうにも実行環境のインストールが必要だし、 Javaと違って互換性にも問題あるので使いにくい。
636 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 01:43:33.69 ID:SkPzv01G.net] >>618 つまり、Pythonの評価が高いのは、前評判だけで実際に使った人が少ないから。
637 名前:デフォルトの名無しさん [2020/02/10(月) 03:53:35.38 ID:rxX2x5Pb.net] んなわけない。
638 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 04:03:09.14 ID:2gVSY1CN.net] Pythonはtypoがつらい。
639 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 08:01:35 ID:staO5LAL.net] ごちゃごちゃいうよりまずはいっぺんオッPythonで そこそこの規模のプログラム(最低1000行以上)かいてみりゃわかる はっきりいってクソだよ あんなもんで巨大なプログラムはとても書けたもんじゃない
640 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 08:53:11.04 ID:GJT/1Bxa.net] 自分で1000行も書かなくても、どこかの誰かが書いてくれたライブラリを呼び出せば 望んだ仕事をやってくれるって部分がPythonの好まれる理由じゃないのん
641 名前:? C++を使う人は、Pythonの流行を裏から支えてる感じで。 [] [ここ壊れてます]
642 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 10:10:17.80 ID:hDJC6jsQ.net] pythonで1000行くらいで根をあげてるようじゃ どんなコード見ても文句言い出すだろ。。仕事にならんわ。
643 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 10:24:50.55 ID:JgTqubiS.net] インデントをきっちり合わせないといけないので、Cの適当なインデントにうんざりしてる人にはむしろ合うかもしれない でも関数やブロックが大きくなると、同一階層を探すのがつらくなるので、適切なブロック、関数分けが必須になる いずれにしても、神経質な人には合ってるのかもしれない
644 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 10:46:13.48 ID:oMyz9pGE.net] 機械学習ならpythonほぼ必須なんだが いまだにやったことないとか ロートルなのを白状してるようなもん
645 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 11:15:12.10 ID:yW0oU9fF.net] 変数がどんな型にも化けられる変態言語
646 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 11:25:16.00 ID:8A84p9rG.net] pythonがいいとは思わないけど、perlがクソすぎるので相対的にマシだから流行ってる それ以上の理由はないと思う
647 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 11:37:39.28 ID:oMyz9pGE.net] perlの代替っていつの時代の話だよ お前完全に取り残されてるぞ
648 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 11:50:23.10 ID:SkPzv01G.net] Pythonは、スマホで動かすのは難しいらしい。 少なくともスクリプト言語として動かすのは困難。 デスクトップマシンですら、 ・互換性の問題がある。Ver 2系と Ver 3系で大幅に異なると聞いた。 ・Windowsですらどの処理系が標準か不明。 ・GUIがちゃんとまともに使えるかどうか不明。
649 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 11:55:31.13 ID:SkPzv01G.net] >>630 Pythonのせいではなく、Perlのようなスクリプト言語がそもそも使えないという スマホの限界だとは思う。 スマホでも使えることは使えても、IDEのような専用環境だけで使えるだけでは 本来のスクリプト言語としては使い物にならない。 このスマホの時代に Perl, Python, Ruby は合わないかも。
650 名前:デフォルトの名無しさん [2020/02/10(月) 11:58:33.88 ID:SkPzv01G.net] iOS, Android 共通にスクリプト的なことをやりたいなら、もう、スクリプト言語は諦めて、 C++で書いておいて iOSではSwift とリンクし、Androidでは、JNIを使ってJavaから 呼び出すほうがずっと簡単。 なお、AndroidならシェルスクリプトがPythonなんかより遥かに簡単に使える。
651 名前:はちみつ餃子 mailto:sage [2020/02/10(月) 12:13:49.40 ID:gblDkkh1.net] >>625 - 括弧などに従って自動でインデントが付く - 手動 (あるいは半自動) でインデントの位置を合わせる これの二択だったら前者の方が「きっちり」してると思うわ。 まあインデントの付け方にいくつかの選択肢がある点はやりづらい面も あるかもしれんが、自由度と統一性は両立できないもんだしな。 Python はいじったことないからよう知らんけど、 (インデントで構造を表す系統の文法である) Haskell を書くのはつらかった。 Haskell ではインデントと改行の替わりに波括弧とセミコロンも使えるけど、Python にそういうのないの?
652 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 12:34:04 ID:oMyz9pGE.net] pythonをswift, javaなんかと比較してる人は 隔離された世界で誰にも使われないアプリを細々と作ってる感じがするわw 学習系を含むデータ解析のツールとして環境が優れてるからpythonが人気なんだよ c++でテンプレートいじってるよりビッグデータ解析してビジネス提案できる方がはるかに収入高い
653 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/10(月) 12:51:05 ID:gblDkkh1.net] おっ、煽り入りました〜〜
654 名前: [] [ここ壊れてます]
655 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 13:26:43 ID:NGNAXTbr.net] ビジネス提案おじさん
656 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 14:18:49.02 ID:SkPzv01G.net] >>633 ブロック開始終了記号とインデントを両方組み合わせたものが一番分かり易くて間違いにくい。 インデントだけでやると、個人的には見間違いそうで神経をすり減らすので辛い。
657 名前:デフォルトの名無しさん [2020/02/10(月) 17:30:56 ID:rxX2x5Pb.net] 研究者が使うのにPythonは良い選択なんじゃないの。 事務作業にVBAが良い選択なのと同様に。
658 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:40:26 ID:pqZ9DEAl.net] 今さらですが、そもそもWin32のFALSEって、0であることは保証されてるんですか? BOOL b = FALSE; if (b) { ここに来ないことは保証されてるんですか? }
659 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:42:58 ID:SkPzv01G.net] >>639 まともな C/C++ では、FALSE はどんな処理系でも 0 であることが保障される。
660 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:43:39 ID:SkPzv01G.net] >>639 当然、そこに来ないことも保障される。
661 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:52:19 ID:M5G7J8Pl.net] >>639 規格書のようなレベルで規定されているかどうかは知らないけど、公式ドキュメントの至るところで FALSEは0である前提で書かれているものが見つかるから、そこを疑う必要はないと思う。 >>640 FALSEはWindows SDKの定義であってC/C++とは直接関係ないんだが。
662 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/10(月) 18:04:03 ID:gblDkkh1.net] >>640 現実にはそうだってのならわかるが、質問は保証があるかどうかなんだから、根拠を添えろよ。 少なくとも現状の WinDef.h では FALSE は 0 、 TRUE は 1 と定義されているのはわかったし、 常識的に考えればこれが変更されることはないが、 私はマイクロソフトのドキュメントからこれを裏付けるような文言を見つけられなかった。 BOOL が int であることは発見できた。 https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types should be TRUE or FALSE って書いてあるのにこれに反するような API があるのはアレだよな……。
663 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:06:40 ID:AZ4KAaI2.net] システムハンガリアンもそうだけど明白な違反が堂々と放置されているからなあ
664 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:08:58 ID:SkPzv01G.net] >>642 >>643 [根拠] 数学的に以下の根拠となる: 1. FALSE は、if ( FALSE ) とすると、偽として処理されることは絶対に保障される。 2. if (x) で x が偽として評価されるのは、ANSI C も、古い C でも必ず 0 という1つの値のみであり、他の値はすべて真と評価される。 1, 2 を両方成り立たせるためには、FALSE は必ず 0 でなければならないことが 証明される。
665 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:10:00 ID:SkPzv01G.net] 数学が大事です。 今の場合、仕様書に書いてなくても、数学的に考えれば絶対であることが証明できます。
666 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:13:48.89 ID:M5G7J8Pl.net] 昨日の奴かw BOOLとboolは別物だということが結局最後まで理解できなかったんだな。
667 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:19:36.47 ID:1F9oSbm6.net] windows apiのスレでやってくれよ
668 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:21:23.11 ID:1D/jLqBa.net] >>645 頭が悪いとか話が通じないってよく言われない? 言われる度に相手の方が間違ってると思ってるだろうけど、話が通じてないのはお前が自分の間違いを認識できてないからだぞw
669 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:22:28.83 ID:SkPzv01G.net] このスレには、失礼ですが、はちみつさんも含め、数学に弱い人が多いようです。
670 名前:デフォルトの名無しさん [2020/02/10(月) 18:23:02.20 ID:SkPzv01G.net] >>649 いや、むしろ逆に現実では天才と呼ばれています。
671 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:25:05.67 ID:SkPzv01G.net] 仕様書にすべては書いてなくても、数学で考えれば絶対であることが証明できる事柄があるのです。 今回のもその一例です。
672 名前:はちみつ餃子 mailto:sage [2020/02/10(月) 18:25:15.66 ID:gblDkkh1.net] ああ、荒らしに来ただけか。 まぜっかえすにしてももうちょっとマシなこと言えよ。
673 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:27:13.76 ID:rZ6GQco7.net] 東大数学科卒だが >>650 は頭が弱いと思う
674 名前:デフォルトの名無しさん [2020/02/10(月) 18:27:37.23 ID:rxX2x5Pb.net] マクロはほとんど書く
675 名前:必要なくなったよね。 [] [ここ壊れてます]
676 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:27:43.95 ID:SkPzv01G.net] 失礼ですが、はちみつ氏は、C++の仕様には詳しいですが、それ以外は結構間違っています。
677 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:29:09.02 ID:rZ6GQco7.net] >>656 ここでの君の書き込みだけで判断すると 君が間違ってる可能性が高い
678 名前:デフォルトの名無しさん [2020/02/10(月) 18:29:40.36 ID:SkPzv01G.net] >>654 でも現実に私は天才と言われています。
679 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:30:41.13 ID:rZ6GQco7.net] 数学の実績は?
680 名前:デフォルトの名無しさん [2020/02/10(月) 18:31:14 ID:SkPzv01G.net] >>1 私は、東大数学科の人とは意見が一致することが多いです。 よく考えてみてください。 もし分からないようなら、多分、あたなは東大数学科ではないか、レベルが落ちてしまったと思われます。
681 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:33:21 ID:rZ6GQco7.net] 学科は?
682 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:33:32 ID:M5G7J8Pl.net] まとめるとこう。 1. BOOL型およびTRUE/FALSEは真偽値として用いるために*Windowsで独自に定義*されたものだが 厳密には真偽値と振る舞いが異なる 2. 具体的には、FALSEでなれければTRUE、TRUEでなければFALSE、という排中律が成り立たない 3. 排中律が成り立たない以上、FALSEとの比較、TRUEとの比較はそれぞれ意味がある
683 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:34:10 ID:SkPzv01G.net] ここは、学歴も実績も嘘を付けてしまうので参考になりません。 東大数学科と言うのもたぶんデタラメでしょう。
684 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:34:25 ID:rZ6GQco7.net] なんでWindows前提?
685 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:37:31 ID:rZ6GQco7.net] 排中律君も数学君と同じ人かと思った 違うのかな? 普通の言葉で書こうよ 書けるでしょ
686 名前:はちみつ餃子 mailto:sage [2020/02/10(月) 19:01:26.22 ID:gblDkkh1.net] >>664 TRUE を持つ内では皆が共通に論じられるほど広く知られたもののひとつだからでしょ。 反例としてはひとつあれば充分。 ちなみに「TRUE と比較するべきではない」に対する反例ね。 true であれ TRUE であれ、それと == で比較するのが罠になりやすいっつーのは 罠になりやすい部分として有名すぎて逆によく知られている常識だが、 絶対不変の定理みたいに言い始めたやつがいたから変なことになってるんだよ。 現実はそんな綺麗なもんじゃねーよっていうのに Windows はうってつけだろ?
687 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:02:19.07 ID:VRCQc/iz.net] BOOLはWindows APIでしか使わないと思ってるから話が通じないんだな 数学君はなぜ話が通じない? BOOLがTRUE, FALSE, UNKNOWN, ERROR からなる集合だったら?
688 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:04:47.41 ID:4ZzuDNO4.net] >>664 >>639 からの流れで、あくまでWin32APIの中でのFALSEの話をしているからだろう
689 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:06:03.16 ID:VRCQc/iz.net] BOOLは非常に広い環境で使われていて その多くはTRUE/FALSEの2値を示す型として使われる こういう普通の環境では if (b) / if (!b) で判断するのが最良 そうではない特殊な環境(Windows APIなど)は 個々のAPI別に語らないと意味が無い
690 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:06:46.57 ID:VRCQc/iz.net] Wimdows APIに限定した話ならここですべきではない 他へ
691 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:33:07.36 ID:M5G7J8Pl.net] つまり、Windowsで>>439 のように書いていたのをWindowsのBOOLを知らずに否定しちゃう人、 というネタそのものを体現してくれたわけだな。
692 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:35:42.65 ID:Ro8qON5e.net] BOOLについて議論するならどのBOOLか限定しないと enum BOOL {TRUE,FALSE}; みたいなのかもしれないし 負論理の入出力ポート読み書きする値だとかで順番も重要だったりして
693 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:47:34.98 ID:VRCQc/iz.net] >>671 何が「つまり」だか Windows APIが色々と特殊なのは知ってるよ Windows 2.0から組んでるし 特殊事情はあくまで特殊事情
694 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:56:01 ID:M5G7J8Pl.net] そもそも、特殊じゃない「普通の環境」のBOOLって何ぞ? typedef bool BOOL; とかw
695 名前:デフォルトの名無しさん [2020/02/10(月) 20:01:48 ID:rxX2x5Pb.net] https://ideone.com/T9gWWT こうなるので、負の型にキャストするのが良いんですかね?
696 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 20:25:38.47 ID:L7QZkeGE.net] なんでBOOLの話をしてんだよジジイども
697 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 20:46:16.46 ID:te1zn0Q+.net] 標準にはboolと_Boolしかないんだからそれ以外はどこぞの馬の骨が好き勝手に決めただけの独自定義 そのライブラリのマニュアル熟読しろでこの話は終わり
698 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 21:07:46.28 ID:oMyz9pGE.net] >>675 そうなんだけど C言語スレでやれ じじくさい話ばっかりでうんざりするわ
699 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 21:11:10.36 ID:dan9Jlhp.net] ナウでヤングな話題よろ
700 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 21:30:33.43 ID:Ui+QSiGG.net] じゃあboolに戻すけど if (b == true) これ書く異常者は一定数おるわな
701 名前: mailto:sage [2020/02/10(月) 21:33:51.78 ID:3bnN/FFY.net] >>680 私には正常な書き方に思えますよ その書き方のどこが異常なのでしょうか?
702 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 21:37:09.03 ID:AZ4KAaI2.net] if (b) で済むのを if (b == true) と書くのは if (b == true == true) と書く異常者と同じ きりねえって話
703 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 21:38:01.11 ID:AZ4KAaI2.net] 括弧ねえと読めねえ「異常者」出てこいw
704 名前:デフォルトの名無しさん [2020/02/10(月) 21:49:47.77 ID:rxX2x5Pb.net] >>678 ちゃうねん。
705 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 21:51:16.94 ID:oMyz9pGE.net] >>683 つまんないことでイキんなカス
706 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 21:51:26.11 ID:M5G7J8Pl.net] bool b; if (b == true) // コードスメルではあるがバグではない BOOL b; if (b == TRUE) // 正しいか正しくないかは状況による
707 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 21:53:08.25 ID:AZ4KAaI2.net] >>685 C++スレでC++以外の言語という「つまんないこと」でイキってんのおまえだろ
708 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 21:53:54.97 ID:AZ4KAaI2.net] おまえみたいの「いちびり」って言うんだけど意味わかる?w
709 名前: mailto:sage [2020/02/10(月) 21:55:45.19 ID:3bnN/FFY.net] >>682 バグにならなければ問題ないのでは? >if (b == true == true) とは私も書きませんが、だからといって異常だとは思わない というか、あなたの「異常」の定義が異常なのでは?
710 名前: mailto:sage [2020/02/10(月) 21:56:36.80 ID:3bnN/FFY.net] >>688 いちびり、とは、あなた、関西人ですなぁ
711 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:02:36.14 ID:AZ4KAaI2.net] >>689 正常と異常の境をおまえさんはどこだと思っている?
712 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:02:53.98 ID:VRCQc/iz.net] >>674 Windowsしか知らないの? 世界が狭い 非常に多くの環境でBOOLを使う
713 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:03:55.09 ID:AZ4KAaI2.net] >>690 ああ、おまえほんまは関西人ちゃうなw 俺もほんまの関西人ちゃうけどなw
714 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:04:40.63 ID:AZ4KAaI2.net] >>692 大文字のBOOLを使う「非常に多くの環境」とは?
715 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:06:02.65 ID:VRCQc/iz.net] >531や>>682 が異常とは思えないって まじかQZ
716 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:07:56.51 ID:M5G7J8Pl.net] >>692 その定義を出してみなよ。 標準の仕様じゃないんだからその環境ごとの特殊な定義であることは変わらんだろ。
717 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:14:01.58 ID:VRCQc/iz.net] 本当に知らないんだ まじか
718 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:22:07.37 ID:4ZzuDNO4.net] >>697 その返しは口喧嘩に負けた小学生みたいだから、ちゃんと相手の質問に答えなよ
719 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:23:41.11 ID:1F9oSbm6.net] 非常に多いなら具体例2、3あげて終わりでしょ
720 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:24:53.62 ID:M5G7J8Pl.net] もう自分で何を言っているのかわからなくなっているんだろうな。 BOOLやTRUEの定義が環境によって異なる場合があると認めた時点で if (b == TRUE) これが正しいと言えるかどうかはその定義次第だということになるのに。
721 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:29:19.34 ID:TAH0RZ5f.net] 俺の狭い経験だと BOOLはintで、TRUEは1、FALSEは0 しか見たことないけど、他の定義の環境ってあるの
722 名前:ゥな? [] [ここ壊れてます]
723 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:33:34.58 ID:PZnoEIEf.net] −1というか全ビットonは何かで見た
724 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:50:32.94 ID:Qny4UpdU.net] windef.hのFALSEが-1とかに変更されたら、既存のソースは崩壊だろうな
725 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 23:14:46.53 ID:zaYnGTVS.net] !FALSE
726 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 23:38:01.28 ID:yW0oU9fF.net] typedef unsigned BOOL:1; ならまだ救いがあった なんでint型にしてんだろうな
727 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 00:40:44 ID:wwgXq7Q5.net] >>705 それは BitField みたいだけど、構造体メンバ以外で使えるようになったんだっけ?
728 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 01:18:20 ID:wwgXq7Q5.net] >>703 FALSEは絶対的に0のまま。
729 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 01:20:55 ID:wwgXq7Q5.net] もしかしたら、Rubyが、0をtrueと解釈してしまうことから変なことを思ってる 人がいるのかもしれないが、C/C++においては、言語仕様的に条件式で偽と 解釈されるのは、古くから、唯一、整数の 0 しかないなかったので、言語仕様が 修正されない限り TRUE が 0 以外の値にマクロ定義されることは絶対に無い。
730 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 02:07:59 ID:iFdutQCH.net] あれ? もしかして私・・また同じ日を繰り返してる・・??
731 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 02:12:10 ID:lTJc7ZeR.net] まだやってんのかお前ら ゲハ厨みたいなスレだな
732 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 02:43:47.12 ID:wwgXq7Q5.net] >>708 スマン: 誤:修正されない限り TRUE が 0 以外の値にマクロ定義されることは絶対に無い。 正:修正されない限り FALSE が 0 以外の値にマクロ定義されることは絶対に無い。
733 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 02:58:41.73 ID:f/mZFEPY.net] >>681 if(b)で十分なのにif(b==true)と書くのはif((a==b)==true)と書くのと同じで冗長なんだよ これがすぐに理解できないなら論理を簡潔にする能力が欠如してるのでプログラミングの才能はないね
734 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 03:04:36.42 ID:wwgXq7Q5.net] >>712 しかも、b は、少なくとも見かけ上は int 型ではなく、BOOL 型だし。 それに他の言語の場合、if の条件式に入れられるのは唯一 bool 型の 場合があり、一番 if の条件式に入れ易い型。
735 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 03:08:16.20 ID:wwgXq7Q5.net] >>713 他の言語の場合、例えば x, y が整数型の場合、 x == y とした結果の型が bool 型。 そして、if の条件式に入れられるのは bool 型のみだったりする。 だから、もともと b が bool 型なのに、敢えて b == true と判定して また bool 型に「直して」しまうのはとても奇妙な感じになる。 その文化との兼ね合いから、C/C++ でも、b が BOOL 型の場合は、 if (b) とするのが美しく見える。
736 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 03:33:01.69 ID:AiNLffgv.net] MISRA-C でも、if( 変数 )で、変数が実質的にブール型の場合は、これでOK int a = ( 5 < 10 ); printf( "%d", a ); /* 1 */ if( 5 < 10 ) と、if( a ) は同じ意味。 a は、実質的にブール型
737 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 06:36:51 ID:DrkniQZr.net] bool型が存在しない時代に何故bool型になるのか
738 名前: mailto:sage [2020/02/11(火) 08:01:59.71 ID:Sh/x76Zj.net] >>695 異常を「コンパイラがコンパイルできない」と定義していますから
739 名前: mailto:sage [2020/02/11(火) 08:02:50.77 ID:Sh/x76Zj.net] >>712 コンパイルが通るんだったら異常ではないのでは?
740 名前: mailto:sage [2020/02/11(火) 08:03:52.59 ID:Sh/x76Zj.net] >>712 >論理を簡潔にする能力が欠如してる 簡潔すぎてわかりにくいのも困りますね、プログラミングはまず他人への分かりやすさを優先するべきでは?
741 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 08:29:09.76 ID:lXsf9fbV.net] 簡潔過ぎて分かりにくいって何? if (b) で分かりにくいなら 変数名が適切でないとかそもそも分かりにくい作りとか 他に問題があるんじゃないの?
742 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 08:33:12.52 ID:lXsf9fbV.net] もしかして if (a ==b) よりも if ( (a == b) == true ) の方が見やすいとかいっちゃう?
743 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 08:56:04 ID:tUwi24Vl.net] そりゃ if (a == 42) よりも if (a == 42 == true)
744 名前:フほうが見やすいし if (a == 42 == true != false) のほうがさらに見やすいのが異常者 [] [ここ壊れてます]
745 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 08:58:48 ID:lXsf9fbV.net] カッコも付けないと見にくいよな if (((a == 42) == true) != false)
746 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 09:09:46 ID:Kcy+Q8b9.net] どれだけ冗長に書けるか選手権?
747 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 09:15:23 ID:oAfdlMqH.net] QZは変なこだわりに固執するやつだから、一般的な感覚とか常識とかについて議論しようとしてもそもそも議論が噛み合わないし、スレを無駄に汚すだけ
748 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 09:21:24 ID:tUwi24Vl.net] if (true == true == true == b == true) if (true == b == true == b == true) int *p = &*&*(int *)&*&*&*&*&*(int *)&a;
749 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 09:34:27 ID:Gt4Evnq6.net] ようちえんじがかんじをつかわないでってぐずってるのとおなじだね
750 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:19:17.04 ID:G5APdl5q.net] 異常とは、普通じゃないことだよ 少数派のこと if (b == true == true) は明らかに異常 if (b == true) はたまに見るけど、まぁ異常かな
751 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:34:12.60 ID:lXsf9fbV.net] つまりQZは異常
752 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:35:43.55 ID:Kcy+Q8b9.net] boolやBOOLでない変数abcをif(a==b==c)と書きたい事はある。
753 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:56:56.94 ID:0rT9FQIK.net] QZってコイツ片山だっけ?
754 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:01:53.65 ID:u3DUqgh+.net] if(b==true) はifのなかには比較入れないとダメだと思っているんじゃね そう言う言語もあるし
755 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:09:22.66 ID:IotAbjtu.net] 「rust が c++ を超えた!! 神!!」みたいな記事をよく見ますけど、今後c++がrustから学んでもっと良くなることって期待して良いですよね? rustに勉強のコストを割くか迷っています
756 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:12:06.04 ID:HeZx7HUk.net] >>731 片山はQZほど馬鹿ではない まず国籍が違う
757 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:29:50.94 ID:Ci+AyeA2.net] なぜ if (a == true) と書くやつがでてくるのか それは条件式に食わせるためには比較演算子で値から「真偽値」に変える必要があると 思っていてそれがboolと同値と理解していないからだろ だからそういうやつは if (a == 42 == true) とは書かない この例はむしろboolを理解してるやつからしか出てこない発想 やつらはいったん「真偽値」になればあとは論理演算子でつなげると理解している ある意味、条件式を作るときのイディオムに馬鹿正直に従っているわけで別に 異常だと騒ぐほどひどくはない 別の見方をすればboolを特別視しないで書いてるわけで、 冗長にはなるが共通のフォーマットで書ききるってことはほかでもあることだ そう思えばやっぱりひどくはない 実際おれは特別読みにくいとは感じないし、この無駄は最適化で消える 何かの機会にこれ冗長だよねと教えてやるぐらいで十分
758 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:37:00.49 ID:kh2SGwFh.net] ほんといつまでやってんの
759 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:38:29.11 ID:KQZ3+5BK.net] 冗長な書き方をする人の真意なんて測りようもないし理由が一つに決められるわけもないだろう。 想像するだけ無駄。
760 名前:はちみつ餃子 mailto:sage [2020/02/11(火) 12:17:11.73 ID:GpQNLMm4.net] >>715 そう書くべきだしそれが普通ってことはわかってんだって。 自分で書く分にはそう書くよ。 でも、他者が書いたコードを読むときや利用するときは > 変数が実質的にブール型の場合は っていう前提を確信できない場合がある。 整数型で真偽値の代用にすることがある C/C++ では 型で判断できないことがあるから罠だよねって話をしてるんだよ。 真っ当なデザインではない場合があるから思い込まずにちゃんと確認しようねってこと。
761 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:09:17.27 ID:lXsf9fbV.net] >>735 同値 意味
762 名前:オらないのね [] [ここ壊れてます]
763 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:15:33.26 ID:Gt4Evnq6.net] > この例はむしろboolを理解してるやつからしか出てこない発想 そりゃそうだ ifの制御式は比較でなければならないと言い張るやつへの皮肉なわけで
764 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:19:47.85 ID:QCVkc9h/.net] operator =(BOOL value){ if(value==0){ return FALSE; else if(value==1||value==2||...){ }
765 名前:デフォルトの名無しさん [2020/02/11(火) 15:21:35.11 ID:IKSpGnXe.net] >>596 あったあった 今はわざわざそれ使う理由忘れた
766 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:25:53 ID:Uk2CrnAG.net] Cだとそれで必ず0か1になるからTRUEと比較しても大丈夫!っていうクソみたいなバッドノウハウ
767 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:28:40 ID:QCVkc9h/.net] operator ==(BOOL value){ if(this->value == 0){ if(this->value == value){ return TRUE; } } else{ if(value==1||value==2||...){ return TRUE; } } }
768 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:38:44 ID:KQZ3+5BK.net] >>743 そもそもTRUEと比較する必要はないしWindowsから出てきたイディオムでもないと思うが。 どちらかというとtruthyな値からtrueを得るイディオムとして使われているような。 よく見かけるのはJavaScriptとか。
769 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:45:19.74 ID:Gt4Evnq6.net] リターン式から返却値の型を推定させる場合にはautoが必要だ
770 名前:◆QZaw55cn4c mailto:sage [2020/02/11(火) 17:36:36 ID:Sh/x76Zj.net] >>725 あなたのいう「一般的」というものが、実はそれほど一般的ではなかった、という可能性はありませんかね? というか、まずあなたのいう「一般的」をあなたの言葉で定義するべきでしょう あなたに定義できますか?
771 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 18:04:17 ID:G5APdl5q.net] 単語の意味は辞書引けよ APIの仕様はヘルプ読め、と同様だな なんで個人が定義するんだよ
772 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/11(火) 18:24:26 ID:GpQNLMm4.net] get.secret.jp/pt/file/1581413018.png
773 名前:はちみつ餃子 mailto:sage [2020/02/11(火) 18:40:23.65 ID:GpQNLMm4.net] true と比較したけりゃすればいいじゃないの。 そのプロジェクト内で一貫したポリシーがあるのならそれでいいよ。
774 名前:デフォルトの名無しさん [2020/02/11(火) 18:49:13.60 ID:TuMeiRsT.net] ちゃうねん。
775 名前:デフォルトの名無しさん [2020/02/11(火) 18:52:49 ID:TuMeiRsT.net] ストリーム遅いな。
776 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 20:44:57.22 ID:f/mZFEPY.net] コード規約「if(bool)はif(bool==true)と書かなければならない」 やだよ、そんな規約ww 規約決めるまでに紛糾してプロジェクト始められねぇよw
777 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 20:57:43.57 ID:Z6POtQL5.net] どっちでもええやん
778 名前:デフォルトの名無しさん [2020/02/11(火) 22:08:40 ID:Pk2ehCPz.net] explicit operator boolだとラムダとかの戻り値強制したいときそうなっちゃわない? value() && true か value() || false static_cast<bool>(value())は好きじゃない
779 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 22:19:09 ID:Uk2CrnAG.net] 素直に戻り値boolに指定しろよ
780 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 22:21:59 ID:ggTX+OPA.net] 意味的にboolの型であればboolにキャスト そうじゃないなら意味通りにboolに変換
781 名前:◆QZaw55cn4c mailto:sage [2020/02/11(火) 22:23:23 ID:Sh/x76Zj.net] >>258 mmap を確かめています、なんだかすごく時間がかかってしまいました… ideone はファイルを作らせてくれないみたいですね… https://ideone.com/zXFtEY fd と fd に紐付いた mmap をつくっておいて、 ?fd 側にデータを追加すれば mmap でも見えるのですが、 ?mmap 側からデータを追加しても fd は増量しないようですね 今は cygwin で見てますが、ちゃんと linux をいれて確かめるつもりです…
782 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 22:24:35 ID:ggTX+OPA.net] オンメモリで出来ることは素直にオンメモリでやれば
783 名前:デフォルトの名無しさん [2020/02/11(火) 23:36:09 ID:TuMeiRsT.net] くじで決めてはどうか。
784 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 23:39:16 ID:RnNFx+rl.net] モンテカルロ法やな
785 名前:デフォルトの名無しさん [2020/02/11(火) 23:56:08 ID:TuMeiRsT.net] I/Oの遅さの陰に隠れてたけど。 ストリームよりSSDのほうが速いよって時代になって困る。
786 名前:デフォルトの名無しさん [2020/02/12(水) 01:53:51 ID:CB9IiDBv.net] YouTuberは「最強の職業」である理由。 https://www.youtube.com/watch?v=XjV3Nb0-hgA 【事例付き】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=VatNILApW4U 収益化から丸1年!YouTubeでいくら稼いだか公開。 https://www.youtube.com/watch?v=-zQxuQqZ5eA&t=103s その動画で月商○○万!? YouTubeで稼ぐ裏技的アプローチ。 https://www.youtube.com/watch?v=7I4APU_6i9o&t=433s 【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない! https://www.youtube.com/watch?v=jYdWfjjzD7Y 【第一回】SNS、YouTube、ブログで稼ぐ方法を、丁寧に解説します! https://www.youtube.com/watch?v=erNiLOncDnY
787 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 06:38:05.77 ID:m8mhjAm7.net] >>763 グロ
788 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 10:03:09.83 ID:DWihvkH4.net] https://qph.fs.quoracdn.net/main-qimg-2c09000282ddcbb32359dc242831a052
789 名前:デフォルトの名無しさん [2020/02/12(水) 16:01:35.18 ID:a1w2Xqz0.net] >>743 ああなるほど if(TRUE == !!b) のことか if(!!b) は javascript の方だろ
790 名前:はちみつ餃子 mailto:sage [2020/02/12(水) 16:24:33.81 ID:KQxiYwOn.net] ! は見づらいから私は not と書くことにしてる。
791 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 17:16:20.22 ID:DU9qWhLl.net] 一応、alternative tokensに規定はあるが 使う奴の心は #define BEGIN { なんてやるやつと同質だね
792 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 17:20:59.01 ID:DU9qWhLl.net] Cにも_Boolがなきゃヤダジタしてたやつとか マジそういう言語へ行ったきり帰ってくるなって感じ で結局BOOL < 0みたいなオカシイことが起き出す原因を作りやがる
793 名前:はちみつ餃子 mailto:sage [2020/02/12(水) 17:47:16.08 ID:KQxiYwOn.net] C と C++ で解釈が違うのに結果として動作は同じみたいなのがたまにあってすげーなって思う。
794 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 18:09:20.78 ID:goJJte/u.net] たとえば?
795 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/12(水) 19:09:04 ID:KQxiYwOn.net] >>770-771 if 文の条件式を見てて思い出した。 C だと条件式の評価結果を 0 と比較するというルール C++ だとブールに変換するというルール。 まあ整数をブールに変換する規則は結局のところ 0 と等しいかどうかなんで ちょっと回りくどくなってるだけなんだけど、 そういう違いがあっても互換性が維持されるというのがどこかで検証されてるんだろうと思うと、 手間かかってんなぁという感想が浮かんだ。 他にも列挙定数の型が C と C++ では違うとか……。 私が把握してるのはそんくらいだけど、 探せばもっとあるんじゃないかな。
796 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 20:25:01 ID:ytylQgpT.net] >>766 >if(TRUE == !!b) のことか さすがにこんな意味のない書き方が人の目につくほど蔓延りはしないだろう。おそらく>>743の妄想。 !!b は、bool型(と、しばしばオーバーロード)を備えた言語で非bool型の値bをbool型に変換するテクニックだろ。
797 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 20:38:11 ID:rfok9Tr/.net] b!=0 で良い
798 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:12:18 ID:
] [ここ壊れてます]
799 名前:h1wCYtKx.net mailto: そういうゴミみたいな自己満テクニック()が積もり積もって誰も触れないスパゲティモンスターになっちまうんだよ b!=0でも(bool)bでもいいからやるべきことを直接表現しろ [] [ここ壊れてます]
800 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:26:37 ID:rfok9Tr/.net] (bool)b はCへの移植の可能性があるならやっちゃダメ
801 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:31:03 ID:DU9qWhLl.net] >>776 何で? ISO/IEC 9899:2011 (E) 7.18 Boolean type and values <stdbool.h> 1 The header <stdbool.h> defines four macros. 2 The macro bool expands to _Bool.
802 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:34:37.96 ID:rfok9Tr/.net] typedef char bool; の可能性があるから
803 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:35:17.48 ID:ytylQgpT.net] Cに移植する可能性があるならC++の機能を使っちゃダメなのは当たり前だよなぁ C++スレで言うことではないと思うが
804 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:36:55.01 ID:rfok9Tr/.net] >>779 問題点はそこじゃない 移植時にコンパイラが問題点を見つけられないのが問題
805 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:38:26.52 ID:rfok9Tr/.net] コンパイラが問題点を見つけられない例は他に山ほどあるが だからといってわざわざ増やさなくても良い
806 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:39:05.32 ID:ytylQgpT.net] いや、問題があるなら移植する人が見つけろよ
807 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:40:47.83 ID:rfok9Tr/.net] 移植は完璧な人がする なんて妄想は捨てた方が良い
808 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:42:13.60 ID:rfok9Tr/.net] Cに移植する可能性が無いならどうでも良い ちなみにキャストで警告が出る環境もある
809 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:42:36.95 ID:ytylQgpT.net] だからそれは移植する側の問題だろ。勝手にやれよ
810 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:52:54.99 ID:DU9qWhLl.net] >>778 マクロとtypedefが被った場合どうなるか解ってる?
811 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 22:12:26.79 ID:ecElmrkB.net] もちろん
812 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 00:16:13.58 ID:X++L6urQ.net] >>733 Rustを少し見てみたけど、書き方が全くC/C++とは違っていて、 全く異なる文化圏の言語になれた人が設計した臭がした。 これがC/C++の代替になるとは考えにくい。 はっきり行って、これを使えといわれると辛い。
813 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 00:26:27.60 ID:YbJF2Pjt.net] テスト機能が標準で用意されてるのはいい
814 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/13(Thu) 00:45:52 ID:XX4mj9DD.net] 個人的には Rust は好感触。 型システムは ML 系言語で実績があるものを基礎にしてることもあって、C++ のグダグダな歴史を背負ったものよりはまとも。 ML 系はやっぱり高級路線の言語だし、インデントでブロックを表す系統なのがしんどいけど、 Rust は上手く低レイヤ用 (としても使えるよう) に着地させてるし、 C 風の外観を踏襲してもいる。 C++ が Rust から取り入れられるものはそんなに多くないと思う。 C++ は良くも悪くも互換性についてかなり強い要求があるので、 Rust 的な、カッチリと保護された仕組みを後付けするのはどう考えても無理。 C++ が Rust を参考にすることは間違いなくあるとは思うが、 全体の思想がまるで違うので限定的な範囲でしか取り入れられない。 もし取り入れらたらそれは C++ の新機能として新しく学ぶので十分でしょ。 Rust を学ぶのは間違いなく有用ではあるけども、 Rust の知見が C++ に取り入れられる可能性がありそうだからという理由ならそんなに意味ない。
815 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 01:02:46 ID:b1nbpqgi.net] C++の配列は長さの情報を持ってないってことになってるけど 長さを与えなくてもdelete[]できるんだから、メモリのどこかにその情報はあるよね? なんでその情報をプログラマが利用できないようになってるの?
816 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 01:06:29 ID:qzSQSiwu.net] rustがかっちり保護してくれるとか低レイヤー向けとか馬鹿ほど信じてるよね。 ありゃ帯に短し襷に長しの典型言語だわ。
817 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 01:44:34.08 ID:X++L6urQ.net] >>792 実際、Rustは、Cを簡単にするのではなく、Cを難しくしてしまっていて、Cのポインタが理解できない or 難しく感じる人には、Rustの特徴の核心たる所有権、借用などの部分はちんぷんかんぷんだと思う。
818 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 01:48:50.73 ID:X++L6urQ.net] >>793 Cの問題点を取り除いたと言うより、ほとんど全てのプログラミング言語が暗黙のうちに用いている代入の概念をなるべく使わないようにして変数束縛などの全く異なる独自概念を用いようとしている。 しかし、これは、手続き型言語と関数言語の違いに匹敵するくらいのプログラミングの概念の変更になってしまうため、手続き型言語の中で改良された次世代言語と言うものではなくなってしまっているとも言える。
819 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 05:24:36 ID:AWnkBPoe.net] 変数束縛って右辺値参照でしょ
820 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 06:24:47.58 ID:fMXzK7Sc.net] RustはC++なら簡単にできることをものすごく回りくどく書かないとコンパイル通らない感じだからとてもつらい
821 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 09:13:38.23 ID:6FSFTWhE.net] >>790 RustがC++に取って代わることがあるか、というニュアンスの質問でした 今C++でやってる仕事がRustに置き換わる可能性が高いなら今から勉強しとこうか、と
822 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 12:35:22.33 ID:z5cRWLgY.net] >>797 断言してもいいが、RustはC++に取って代わることは無い。 なぜなら、普通の手続き型言語での枠組みにすら入ってない書き方を強要されるから。 手短に言えば、単にC/C++と書き方が大幅に違っているだけではなく、書き方が他のどんな減の範疇にも属していない。
823 名前:はちみつ餃子 mailto:sage [2020/02/13(木) 13:30:24.18 ID:XX4mj9DD.net] >>796 C/C++ でのオブジェクトの寿命の管理の難しさってのは 理屈が理解しづらいというよりはわかってても間違うという難しさなんだよね。 そして間違っていてもコンパイラは黙って通すことも多い。 C/C++ を長く使っていればそれを感じることって結構あるでしょ。 そういう部分のプログラムが正しいことはプログラマが保証しなくてはならんわけだ。 でも Rust では言語処理系の側でやってくれる。 C/C++ で面倒な部分を Rust では自動でやってくれる。 まわりくどいのは確かだけど、それで楽できるのも確かなので、 どっちを取るかって話だな。 オブジェクトをどこで後始末するか。 管理の主導権はどのモジュールに持たせるか。 そういうのって C/C++ でも考えてるよね。 C/C++ ではプログラムに書いてないだけで本来はあるはずのものなんだよ。 (C++ だとスマートポインタの導入で少し楽にはなったけど。) 自分が何を考えていたのか、そして何を考えられていなかったのが 明らかになるのはそれはそれで楽しいと思う。 まあ、それは俺が趣味でやってるからかもしれんな。
824 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 13:34:58.25 ID:3lSBa444.net] おまえの設計がヘタクソなだけだろ
825 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/13(Thu) 13:45:30 ID:XX4mj9DD.net] >>800 そうだよ。 そんでもって大抵の人間は設計がヘタクソだし、 ヘタなところが検出されるなら検出されないより良い。
826 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 14:01:13 ID:z5cRWLgY.net] >>799 変数束縛やら所有権や借用の概念が複雑すぎて、そっちの方が C/C++の メモリ管理よりミスし易い。
827 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/13(Thu) 14:13:53 ID:XX4mj9DD.net] >>802 間違いなくミスし易いけどミスした箇所が検出できないということはあまりない。
828 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 14:20:14 ID:3lSBa444.net] 設計がヘタクソなヤツが書いたソースのメンテやらされるのは最悪だけど自分で組み上げるならC++以外有り得ない 各々の力量が顕著に表れやすい最高の言語には違いない バカも容易に炙り出せるしな
829 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 14:20:33 ID:z5cRWLgY.net] >>803 仮にあなたはちゃんと理解できても、一般のプログラマは変数束縛やら所有権や借用の概念を理解することが難しすぎるので、C/C++を置き換える言語にはならない。 それらの概念は学習コストが高すぎるどころか、一生理解できないプログラマが多いだろう。
830 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/13(Thu) 15:53:13 ID:XX4mj9DD.net] >>805 誤解のないように補足しておくけど、俺は Rust が C++ を置き換えるという主張はしてないからね。 C++ の重大な欠点を (実行コストをあまり払わない形で) 改善しているのは確かってだけ。 そんでもってそれが必要な場面は間違いなくあるってことも。
831 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 19:21:34 ID:b1nbpqgi.net] >>791 わかる人いませんか?
832 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 19:29:34 ID:z5cRWLgY.net] >>807 new TYPE[] のようにしてヒープから配列として確保されたメモリは確かに 要素数の情報を持っている。 しかし、new TYPEのように配列ではない場合は、高速化のために情報を 持ってない処理系もある。そのために 前者では delete[] を、後者では deleteを使うことになっており、間違った組み合わせを使った場合には 不具合を生じる。 また、ポインタは、ヒープから確保された配列ばかりをポイントしているとは 限らず、例えばスタック上のローカルオート変数や、グローバル変数をポイント していることもあり、その場合には、要素数の情報は全く持っていない。 さらに、Cの場合、関数の引数に TYPE buf[] のように配列を書いても、 TYPE *buf に自動修正される仕様となっている。 そのため、配列を受け取るのは、必ずポインタということになる。 しかし、ポインタで受け取るということは、そこには、&a のように、 ローカルオート変数も実引数として指定して呼び出すことも出来る。 その場合には要素数が無いので、あなたの望みをかなえる高速な 一般的方法が存在しない。 望みをかなえるためには、言語の拡張が必要となる。
833 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 19:33:05 ID:bRhYdbIA.net] Rustっていろいろ清々しいよね 関数型言語に必須じゃねえのと思うリスト関係がぽっかり抜けてるのは不満だけど
834 名前:デフォルトの名無しさん [2020/02/13(Thu) 19:57:05 ID:WjLTLikp.net] >>807 https://ideone.com/DfYRYS
835 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 20:01:17 ID:b1nbpqgi.net] >>808 ヒープに確保した配列の要素数はやはりメモリ上にあるんですね 手段がないのは文法として一貫性をもたせられないからということでしょうか なるほど、回答ありがとうございます
836 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 20:08:49 ID:J94ypinO.net] delete [] pと同じように sizeof [] pを用意すりゃいいのにね pがnew []されてなかったら誤動作するって挙動ならdeleteと同じだろうに
837 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 20:15:32 ID:iivZofrB.net] 言いたいことは分かるが構文がきもい
838 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 20:17:34 ID:Y6SS1xK+.net] 欲しいなら作れば? それができるのがc++じゃん
839 名前: mailto:sage [2020/02/13(木) 20:36:41.73 ID:ImKshd8q.net] >>791 >C++の配列は長さの情報を持ってないってことになってるけど >長さを与えなくてもdelete[]できるんだから、メモリのどこかにその情報はあるよね? new したときは、その領域サイズが実行時にユーザーのみえないところに保存される、というだけなのでは? C/C++ の配列は長さ情報を(自分でそう書かないかぎり)持たないとおもいますよ
840 名前:デフォルトの名無しさん [2020/02/13(木) 20:38:39.62 ID:WjLTLikp.net] ちゃうねん。
841 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 20:50:05.52 ID:qzSQSiwu.net] 設計がダメな場合コンパイラにいくら指摘されようと根本的には治らんのだが、 (たいていそういう馬鹿はコンパイラ通すためにmut,RefCell,unsafeを使いまくる) そういうのを少しもわかってないバカがrust推しなんだよなぁ。 構造体を1から作り直さなきゃならんかったり根本的に間違ってる。
842 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 21:00:18 ID:sl9OX6cI.net] >>808 new TYPE[]するとき内部的にサイズ情報を持つ保証ってあったっけ? 例えば自前でoperator new []を実装するとき、予め2^nバイトのブロックを所定の数用意しておいて、要求サイズに応じて必要十分な大きさのブロックを返すなら、割り当て時に要求されたバイト数または要素数の情報を保持しないという実装も可能かと思う。
843 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:18:32.64 ID:9NIgZq2/.net] >>811 いえいえ
844 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:37:18.24 ID:Y6SS1xK+.net] >>818 デストラクタ呼ぶ必要ある
845 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:39:24.09 ID:J94ypinO.net] デストラクタ呼ぶ必要ない型だと、size情報持ってないと言うことなんだろうね
846 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:40:36.17 ID:sl9OX6cI.net] >>820 デストラクタの実装も、返ってきたアドレスの値でどのサイズの領域か(割り当て要求されたサイズではなく、自分で区切ったブロックのサイズ)が分かるようにしておけば大丈夫でないかな?
847 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 21:41:24.98 ID:sl9OX6cI.net] >>822 すまん、勘違いでした。全部忘れてください
848 名前:デフォルトの名無しさん [2020/02/13(木) 22:02:22.87 ID:WjLTLikp.net] はい忘れました。
849 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 22:06:16.93 ID:Bk3UL691.net] アドレスだけじゃなくて長さも受け渡しするインターフェースにしましょうとしか。
850 名前:デフォルトの名無しさん [2020/02/13(木) 22:36:33.13 ID:WjLTLikp.net] シリアル化の王道ってありますか?
851 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 22:45:19.55 ID:iq5JxXln.net] オブジェクトならCORBA、データ構造だけでいいならASN.1とか。
852 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 22:54:55 ID:tx2lxPGZ.net] >>822 TYPEがデストラクタを持つclassの場合に、ptr = new TYPE[n] で確保されたメモリ を delete[] ptr とすると、 正確に n 回デストラクタを呼び出す必要がある。 new が n * sizeof(TYPE) より大きめのブロックを確保した場合でも、 delete[] ptr 時に正確な n の値を割り出す方法が必要となる。 なので、n の値は ptr の値さえあれば知ることが出来ることが必要条件となる。 つまり、少なくともデストラクタを持つ TYPE の場合に TYPE の配列をヒープから 確保した場合には、配列の要素数を必ず配列の先頭のポインタの値から「知る」事が出来る。
853 名前:デフォルトの名無しさん [2020/02/13(Thu) 23:01:33 ID:WjLTLikp.net] >>827 もうちょっと簡単なのないですかね。 型情報要らないんで。
854 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 23:09:58 ID:iq5JxXln.net] 型情報が無けりゃデシリアライズしても使いようがあるまい。
855 名前:デフォルトの名無しさん [2020/02/13(Thu) 23:12:32 ID:WjLTLikp.net] それがあるんですよ兄さん。
856 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 23:12:57 ID:ktN45haN.net] 双方向mapって何使うのがいいですか?boostのbimap? それともこのくらいは自作してる人のほうが多いですか?
857 名前:デフォルトの名無しさん [2020/02/14(金) 00:05:24 ID:CPLKNT1n.net] 双方向Mapって何に使えるんですか?
858 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 01:54:24 ID:0WgbwkuV.net] 型情報ないならそもそもデシリアライズできないし 型情報なしで成り立つ、つまり型情報を事前に知っている前提なら バイナリでそのまま送ればいいだろ
859 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 02:05:36 ID:raWqkpxU.net] 型がわかっててもコンテナはそのままではバイナリで送れない
860 名前:デフォルトの名無しさん [2020/02/14(金) 02:11:15 ID:CPLKNT1n.net] >>834 そのやり方教えて。 あめさんあげるから。
861 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 07:52:45.40 ID:RsXMnrpQ.net] ちゃんとやるならPODに詰め替えてからchar配列へreinterpret_cast
862 名前:はちみつ餃子 mailto:sage [2020/02/14(金) 09:19:01.22 ID:nLeEzkye.net] >>826 シリアル化ってのにどういう要件を置くかだな。 同じ環境でデシリアライズ出来ればよいのであれば >>837 で十分だろうし、 データ形式が決まってて (あるいはデータ形式の側を中心に策定したくて) それのシリアライズとデシリアライズを (それぞれ別の環境で (ときには言語も違うかも)) やりたいということなら protobuf などのツールを使うのはよい案だと思う。
863 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 13:35:07 ID:vZZ7SPTm.net] boostにあるじゃないですか googleのなんか使うんじゃありません
864 名前:デフォルトの名無しさん [2020/02/14(金) 13:41:23 ID:a5iC3cHy.net] >>791 >>807 実装
865 名前:ヒ存だと思うけど hoge[-1] あたりに格納されてた [] [ここ壊れてます]
866 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 13:49:57 ID:rQdJoGM9.net] >>840 VC++の場合、ptr = new TYPE[n] で確保された場合は、確かに ptr[0] == n になっていた気がする。 「確かに」というのは言葉のあやで、厳密には覚えてないが、 VC++の new で使われる組み込み関数のライブラリのソースコードを見ると分かる。
867 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 13:50:28 ID:rQdJoGM9.net] >>841 すまん、 ptr[-1] == n の間違い。
868 名前:デフォルトの名無しさん [2020/02/14(金) 14:03:39 ID:a5iC3cHy.net] >>807 >>841 OSやコンパイラで違うんでしょ https://ideone.com/DuTmC5
869 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 15:26:11.39 ID:rQdJoGM9.net] >>842 あ、すまん、正しくは、大体、 ((DWORD *)ptr)[-1] == n だ。 ptr[-1] だと、sizeof(TYPE)分、アドレスが戻ってしまうし、 結果の型も DWORD とかではなく、TYPE 型になってしまう。
870 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 15:28:19.59 ID:rQdJoGM9.net] >>843 言っておくが、new char[n] とかでは、駄目な可能性は有るよ。 話は、「TYPEがデストラクタを持つとき」のnew TYPE[n]に限定。
871 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 17:17:51.62 ID:jFoBh/u0.net] 一時オブジェクトの寿命について、ご教示ください。 例えば、以下のようなコードがあった時、 void foo(const char* c); // 外部ライブラリの関数につき変更不可とする void main() { const std::string s = "aaa"; foo((s + "bbb").c_str()); } 一時オブジェクトstring(s + "bbb")の破棄が行われるのは、 関数foo()を呼ぶ前でしょうか、呼んだ後でしょうか。 調べた範囲では、「完全式の終わり」という話が出てきたのですが、 どこまでが完全式なのか判断できませんでした。
872 名前:はちみつ餃子 mailto:sage [2020/02/14(金) 17:22:07.67 ID:nLeEzkye.net] >>846 この場合はその行の終わり。 セミコロンのところだと思っていい。
873 名前:はちみつ餃子 mailto:sage [2020/02/14(金) 17:34:07.49 ID:nLeEzkye.net] すごくどうでもいい話なんだけど、 JIS では完結式という用語を使ってるのに完全式って言葉の方がよく使われているよね……。
874 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/14(金) 17:59:01 ID:nLeEzkye.net] >>846-847 式の一部であるような式が部分式で、 そうでないような式が完結式って言う。
875 名前:デフォルトの名無しさん [2020/02/14(金) 19:29:16.13 ID:CPLKNT1n.net] >>837-838 ありがとん。
876 名前:846 mailto:sage [2020/02/14(金) 19:44:55.13 ID:jFoBh/u0.net] >>847-849 ご回答ありがとうございます。 大変勉強になりました。
877 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 20:52:54 ID:x/oqiD9H.net] おいCぺろぺろ
878 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 20:58:59 ID:V/oEZCXU.net] >>851 いえいえ
879 名前:デフォルトの名無しさん [2020/02/15(土) 10:34:21 ID:BMoFghq4.net] newって意外と速いんだな。 アクセスは不利かもしれないけど。
880 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 12:11:39.70 ID:DzNKB5Jj.net] >>854 速いよ。 高速なゲームでも普通に使える。
881 名前:デフォルトの名無しさん [2020/02/15(土) 12:12:59.04 ID:BMoFghq4.net] でもスタックは常にキャッシュに乗ってるから、そこらへんでどう変わるのかな。
882 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 13:19:54 ID:J1bovO5o.net] キャッシュに乗るくらいの量だったらそもそもクリティカルな重さにはならんだろ。 newで問題になるのは10万とかそのくらいのオーダーをがっつりfor文で呼ぶとかそれくらいのことする場合。
883 名前:デフォルトの名無しさん [2020/02/15(土) 13:21:27 ID:BMoFghq4.net] スタックは常にキャッシュに乗ってる。
884 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 13:23:13 ID:lTU5fwx1.net] >>857 風邪が騙りかけます
885 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 14:11:39.55 ID:DzNKB5Jj.net] >>857 VC++の場合、コンストラクタが無い場合、new が必要とする時間は 170クロック。 3.0GHz の CPUの場合、1.7 * 10^7 回(1,700万回)くらい new してやっと一秒 位。 だから、問題になるのは、1万回ループではなく、100〜1000万回くらいのループ。
886 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 14:15:19.79 ID:DzNKB5Jj.net] もちろん、スタック変数で済むならスタック変数の方がい
887 名前:い。 ただ、スタックは容量に限りがあるので全部スタックという訳にもいかない。 ヒープにも限りはあるにはあるが、それは OSやマシンの限界。 [] [ここ壊れてます]
888 名前:デフォルトの名無しさん [2020/02/15(土) 14:25:57.86 ID:BMoFghq4.net] そこでgotoなんですよ。
889 名前:デフォルトの名無しさん [2020/02/15(土) 14:43:25.87 ID:BMoFghq4.net] コレクションがソートの有無でだいぶ変わる。 trie_base_benchmark__sorted_words_1 trie assign. 409ms size : 466551 words : 466551 trie insert. 762ms size : 466551 words : 466551 std::set insert. 69ms std::unordered_set insert. 149ms (assigned) trie find. 24ms (inserted) trie find. 25ms std::set find. 194ms std::unordered_set find. 63ms
890 名前:デフォルトの名無しさん [2020/02/15(土) 14:44:57.19 ID:BMoFghq4.net] trie_base_benchmark__random_words_1 trie assign. 2034ms size : 466551 words : 466551 trie insert. 2026ms size : 466551 words : 466551 std::set insert. 490ms std::unordered_set insert. 146ms (assigned) trie find. 158ms (inserted) trie find. 169ms std::set find. 477ms std::unordered_set find. 62ms
891 名前:デフォルトの名無しさん [2020/02/15(土) 14:46:37.02 ID:BMoFghq4.net] 挿入速度が変わるのは仕方ないとしても、検索速度が変わるのは、キャッシュじゃないかと思うんだけど。
892 名前:デフォルトの名無しさん [2020/02/15(土) 14:49:41.43 ID:BMoFghq4.net] std::sort: 306ms, (466551count). 先にソートしてから挿入したほうが速度的にお得っぽい。
893 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 16:03:09.29 ID:0hgUDlXi.net] >>854 速いといっても 単純な演算と比べれば劇遅
894 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 16:18:40.81 ID:qSK05WKV.net] >>867 とにかく、足し算/引き算が1クロック程度、new が170クロック程度だからね。 使い方を間違えなければ劇遅とはいえまい。
895 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 16:32:01.46 ID:4O8uAQVX.net] auto hentai = SM(std::move(羞恥心));
896 名前:デフォルトの名無しさん [2020/02/15(土) 17:12:18.08 ID:BMoFghq4.net] newより+のほうが速いってことか。
897 名前:デフォルトの名無しさん [2020/02/15(土) 17:25:57.34 ID:BMoFghq4.net] +と-ならどっちが速いんだろう。
898 名前:はちみつ餃子 mailto:sage [2020/02/15(土) 17:49:06.00 ID:cwLPNCdO.net] >>871 回路はほぼ共有してるんじゃないの? 2の補数を使うのもそれが理由なんだろうし。 少なくとも Pentium 時代まではクロックは同じだったはず。 近頃の事情は知らんけど GCC あたりで強い最適化をかけてみても引き算か足し算を特に避ける様子もないので、 まあだいたい同じなんでしょ。
899 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 18:01:50.38 ID:zARYy4pH.net] >>870 C++の場合、+ひとつだけでも裏でどんなコードが動くか油断ならない。
900 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 18:13:26.25 ID:2RWOAy2H.net] >>871 + と - で速度が違うCPUは見たことがない - は順番が関係あるので 処理によっては遅い事がある b = 1 + b b = 1 - b
901 名前:はちみつ餃子 mailto:sage [2020/02/15(土) 18:14:19.52 ID:cwLPNCdO.net] 整数だけの話じゃなくてってことか。 ある程度の常識的判断が出来る場合もあるけど、 基本的には実装次第だわな。
902 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 18:19:46.61 ID:2RWOAy2H.net] 組み込み型じゃなけりゃそりゃね + でミサイル発射とか
903 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 19:02:33.35 ID:qSK05WKV.net] >>870 new より + の方が 170 倍速いと言うことだ。
904 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 19:04:43.75 ID:cVttwiPD.net] >>874 一度bをnegateしてから足す処理系があるかもな
905 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 19:30:46 ID:qSK05WKV.net] >>874 確かに引き算には順序があるので、足し算より最適化に不利になることがある。
906 名前:デフォルトの名無しさん mailto:sage [2020/02/15(土) 19:48:11.00 ID:x3vECiAE.net] if(bReaZyuu){
907 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 00:34:55 ID:pXV6w9YM.net] if (false != bReaZyuu) {
908 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 00:35:58 ID:pXV6w9YM.net] newが常に数百クロックで済むと思ったら 間違いかもしれん…
909 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 01:50:35.50 ID:1DEBeg9G.net] 経験的にはnewが遅いと思ったことは無い。 なお、コンストラクタの処理時間以外はnewはmallocと同じ速度。 ゲームメーカーでも必要な場合に malloc を使うことは問題
910 名前:ネいとされている。 [] [ここ壊れてます]
911 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 02:03:13.40 ID:MPWqg8uW.net] new からしてmallocを呼んでる実装が多い気がする。
912 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 02:34:52 ID:yR2k1LO6.net] そりゃnew用とmalloc用でヒープ別けたら無駄だし
913 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/16(日) 02:36:27 ID:VK9AAsv4.net] ヒープからの割り付けをする機会を減らすことで実行速度を上げる工夫はよく聞く話ではあるよな。 ただ、そこまでギリギリのチューニングが必要ってことがあまりないだけで。
914 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 07:37:50.08 ID:Rlzwkt+8.net] newは最悪値が読めないからなぁ 組込とかシビアなゲームでは使い辛い
915 名前:デフォルトの名無しさん [2020/02/16(日) 08:25:44.50 ID:Yy7z+EdH.net] 具体的な数字が出てるとイメージが湧く。
916 名前:デフォルトの名無しさん [2020/02/16(日) 08:45:53 ID:Yy7z+EdH.net] 170クロックならあんまり気にする必要ないな。
917 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 10:26:07.87 ID:w0IbR+6u.net] 組み込みでc++がそもそもおかしい
918 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:00:34.43 ID:1DEBeg9G.net] >>887 よっぽどでない限り、AAAゲームでも使われてるよ。
919 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:01:02.59 ID:B02+i8yM.net] 最近では小規模組み込みでもC++を使う事はあります new / deleteやヒープを無効にしたり newのみでdelete出来ないようにしたり なんてこともあります
920 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:03:58.49 ID:+vprjU7s.net] >>890 視野狭すぎ
921 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:12:03 ID:w0IbR+6u.net] また馬鹿が無駄に一般化してできるワイ言ってんのか。。相変わらずだな。
922 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:20:41 ID:+vprjU7s.net] 日本語でおk
923 名前:デフォルトの名無しさん [2020/02/16(日) 11:23:16 ID:Yy7z+EdH.net] ストリームってなんで遅いんだろね。
924 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 11:39:47 ID:Rlzwkt+8.net] >>891 そりゃそういう例もあるわな だから何?w
925 名前:デフォルトの名無しさん [2020/02/16(日) 11:42:38 ID:Yy7z+EdH.net] スレで、do{}while()はダメっぽいこと書いてあったけど、なんでダメなの?
926 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 12:30:30 ID:q7JzY0gs.net] >>887 でもお前は組み込みにもゲーム開発にも携わってないじゃん
927 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 12:42:15 ID:Rlzwkt+8.net] >>899 ごめんねー、俺はプリンタ屋さんなのw ゲームは知り合いの話ね
928 名前:デフォルトの名無しさん [2020/02/16(日) 12:54:36 ID:Yy7z+EdH.net] プリンタ屋さんってどんな仕事ですか?
929 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 12:58:53 ID:Rlzwkt+8.net] >>901 俺は制御周り、上位インターフェースからのデータを描画ルーチンにに渡したり、下位インターフェースにデータ渡したり、パネルとかの制御をやってる 描画部分はまた別の人がやってる
930 名前:デフォルトの名無しさん [2020/02/16(日) 12:59:56.11 ID:Yy7z+EdH.net] なんか難しそうですね。
931 名前:デフォルトの名無しさん [2020/02/16(日) 13:01:18.53 ID:Yy7z+EdH.net] プリンタってプロセッサはどんな感じのを使うんですか? newってあるんですか?
932 名前:デフォルトの名無しさん [2020/02/16(日) 13:02:40.97 ID:Yy7z+EdH.net] プリンタのヘッドについてる穴の数は決まっているんだから、あまりヒープが必要無さそうな気もする。
933 名前:デフォルトの名無しさん [2020/02/16(日) 13:03:59.79 ID:Yy7z+EdH.net] std::vectorの上にヒープを作っても速度的に大丈夫なことは確認した。
934 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:07:31.29 ID:Rlzwkt+8.net] 昔はSHシリーズとかR2000とか 今はARMもそれなりに使ってる 制御だとnewは基本使わない あと俺がやってるのは業務用のLBP
935 名前:デフォルトの名無しさん [2020/02/16(日) 13:08:47.09 ID:Yy7z+EdH.net] ってことはキャノンですか。
936 名前:デフォルトの名無しさん [2020/02/16(日) 13:10:53.15 ID:Yy7z+EdH.net] メモ問題は結局ホワイトボード買ってきた。 ホワイトボードをワンノートに撮影するという昔っぽいことに。
937 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 13:11:07.93 ID:Rlzwkt+8.net] 流石に社名までは出せんわw
938 名前:デフォルトの名無しさん [2020/02/16(日) 13:12:13.52 ID:Yy7z+EdH.net] ワンノートのアンドロイド版はカメラにホワイトボードのモードがあるんだけど、テカリ消してくれないし、ホワイトバランスも調整してくれない。
939 名前:はちみつ餃子 mailto:sage [2020/02/16(日) 13:12:31.37 ID:VK9AAsv4.net] PostScript くらいならプリンタの側で処理することもあるし、 世間で想像されているよりは高級なことをやっているんじゃないかなぁという気もする。
940 名前:デフォルトの名無しさん [2020/02/16(日) 13:16:21 ID:Yy7z+EdH.net] ってことは、別の人がnew使いまくり
941 名前:なのでは。 [] [ここ壊れてます]
942 名前:デフォルトの名無しさん [2020/02/16(日) 13:17:17 ID:Yy7z+EdH.net] テカテカしないホワイトボードないのかな。
943 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/16(日) 13:20:18 ID:VK9AAsv4.net] >>914 https://www.google.com/search?q=%E3%83%9B%E3%83%AF%E3%82%A4%E3%83%88%E3%83%9C%E3%83%BC%E3%83%89+%E3%83%9E%E3%83%83%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97
944 名前:デフォルトの名無しさん [2020/02/16(日) 13:20:51 ID:Yy7z+EdH.net] ありがとん。
945 名前:デフォルトの名無しさん [2020/02/16(日) 13:27:19 ID:Yy7z+EdH.net] モーター動かしたりするのはnew使ったらダメなんだろな。
946 名前:デフォルトの名無しさん [2020/02/16(日) 13:52:37.96 ID:Yy7z+EdH.net] リアルタイムOSはヒープあるんだろか。
947 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:03:56.47 ID:1DEBeg9G.net] >>900 ゲームに関しては、かなりちゃんとした現場で昔から malloc は使われていたし、全社的に使っても問題ないとされていた。
948 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:33:04.16 ID:Rlzwkt+8.net] >>919 で? 使われてる例も使われない例もあるよ タイミングにシビアなゲームだと使い辛いと言うだけ
949 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:34:24.22 ID:Rlzwkt+8.net] >>918 最大実行時間が読める専用のヒープを持ってたりするよ
950 名前:デフォルトの名無しさん [2020/02/16(日) 14:44:07.47 ID:Yy7z+EdH.net] あるんだ。
951 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:49:10.64 ID:B02+i8yM.net] >>918 ヒープを使うかどうか選べるものが多い
952 名前:デフォルトの名無しさん [2020/02/16(日) 14:53:55.58 ID:Yy7z+EdH.net] 選べるってことは、用途によって使い分けが必要って事なんだろな。
953 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 14:59:29.04 ID:D2RmZx9z.net] ループ内で可変長のvector使っているようなのは、外に出してループ始めにclearする方がいい ループごとにvector出力しなきゃいけない場合も、moveしないでcopyした方がいい
954 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:03:54.38 ID:k775l7KG.net] >>920 意見されたら喧嘩売りたくなる病気なの?
955 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:10:11 ID:D2RmZx9z.net] mallocは使い方が余程ひどく無ければ、性能上問題になることはない 問題になっている場合もプロファイラでその部分だけ対策すればどうにでもなる 断片化やmalloc自体の管理領域容量が気になるほどの環境では使わない方がいいが
956 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:11:53 ID:+ZTPu1gL.net] >>926 それお前じゃね?
957 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:13:28.86 ID:+ZTPu1gL.net] >>927 リアルタイム系の仕事したことないならそう言う考え方でもいいと思うよ
958 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:17:30.49 ID:D2RmZx9z.net] そもそもリアルタイム系の処理で、実処理部分でmallocするってのは普通しないよね 初期化時に必要なバッファはあらかじめ確保しておくものでしょ そこはmallocだろうが静的確保だろうが変わらないし
959 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:23:06.64 ID:8bxeBykO.net] >>929 はループの中で毎回malloc freeしてるからそりゃ性能が気になるよね
960 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:24:31.11 ID:1DEBeg9G.net] >>925 std::vector<TYPE> は、リンクリストではなく、「可変長配列」なので、std::list<TYPE> に比べて、TYPE のコンストラクタがデコボコした頻度で 多めに呼び出されてしまう傾向がある。TYPEのコンストラクタの中で何かをnew していると、new が呼び出される回数をグラフにした場合、 デコボコになるため、速度的に滑らかさがなくなってしまう可能性が考えられる。 それは、newの速度がデコボコなのではなく、std::vector が持つ悪い性質の一つ。 速度的に「滑らか」にしたいならば、std::list の方が適している。 そもそも、C言語がポインタを用意したのは、リンクリストを使いたかったからで、Cはデータ集合用のデータ構造として動的リストではなくリンクリストを用いるのが伝統。 Cの高速性とはリンクリストによるものと言っても過言ではない。 newも、mallocもコンストラクタも、リンクリストと最も相性が良い傾向がある。 cppreferenceなどでも、std::vectorが出てくることが多いが、Cの新かを発揮するにはstd::listの方が良い。
961 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:25:54.32 ID:1DEBeg9G.net] >>932 誤:Cはデータ集合用のデータ構造として動的リストではなくリンクリストを用いるのが伝統。 正:Cはデータ集合用のデータ構造として動的配列ではなくリンクリストを用いるのが伝統。
962 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:27:49.69 ID:D2RmZx9z.net] いやいや、速度がシビアならreserveしとけと cとの親和性考えなきゃdequeも良いが、cのAPI呼び出し考慮すると結局vectorをうまく使うのが一番良い
963 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:28:20.99 ID:1DEBeg9G.net] >>929 std::vector<TYPE>を使っていて、TYPEのコンストラクタの中でnewするのはリアルタイム処理には向きません。 その場合、std::list<TYPE>に変えれば劇的に速度が安定するはずです。
964 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:30:12.10 ID:1DEBeg9G.net] >>934 CのAPI呼び出しで集合を渡す場合、通常、集合の要素はコンストラクタを持ちません。 その場合は、std::vectorは適すでしょう。 ところが、要素がコンストラクタを持つ場合は、std::listが適します。
965 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:32:54 ID:D2RmZx9z.net] vectorで再配置する際にmoveされない前提なのね
966 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:33:13 ID:1DEBeg9G.net] >>936 補足すれば、APIは、リング0のシステムランドで実装されていることが多いため、 リンクリストの様な複雑な構造が用いられることが少ないのです。 しかし、それはAPIに限った話で、Cは誕生したときから、要素数が変化する 集合には、動的配列よりもリンクリストを用いるのが伝統でした。 伝統と言うよりも、リンクリストこそがCの核心・本質といっても過言では有りません。
967 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:35:27 ID:1DEBeg9G.net] >>937 C言語とはリンクリストのことです。 動的配列は、Cの文化ではありません。
968 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:36:04 ID:MPWqg8uW.net] アドレスで直にアクセスできる言語の強みはリンクリストで活きるからごもっとも
969 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:40:23 ID:+ZTPu1gL.net] >>930 そう言う事 平均的には間に合っても確保や解放にかかる時間が読めなくなる 100万回に1回でもダメならダメっていう世界だしね >>931とかはそう言うことがわかってないので頓珍漢なレスになってるw
970 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:40:27 ID:pXV6w9YM.net] >>934 reserveしただけだとOSによっては実メモリ確保しなさそう… で初回アクセスでおもむろにページが用意されれる ヨカン
971 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:42:34 ID:D2RmZx9z.net] それだとmalloc使うこと自体不味いだろ 確率でmmapしちゃうのだから
972 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:44:00.56 ID:pXV6w9YM.net] 別に >>925 の前半でおk
973 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 15:46:21.91 ID:D2RmZx9z.net] もちろん初期化時以外でね
974 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 16:01:46.00 ID:1DEBeg9G.net] >>937 moveを使いたい場合、要素の TYPE クラスに move 用の記述が必要となるため、手間がかかります。
975 名前:デフォルトの名無しさん [2020/02/16(日) 16:01:54.10 ID:Yy7z+EdH.net] is_pod_vで事前条件を確認してるけど、PODはなくなるんだってね。
976 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 16:02:29.34 ID:Rlzwkt+8.net] >>935 まあお前がそう思うならそうなんだろうな お前ん中ではな…
977 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 16:07:00.64 ID:D2RmZx9z.net] listで美味しいのはsplice使いたい時くらいだろ multi threadのログ統合したい時とかに、lockに必要な時間を最小化出来る
978 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 16:26:27.54 ID:c8Po0Swg.net] >>947 POD = trivialかつstandard_layout だから後者を使うようにすればいい
979 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:05:35.53 ID:+vprjU7s.net] 子スレッドを休眠状態で作る方法ない? 起動直後にcondition_variable::waitとかじゃなく 初期状態として
980 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 17:13:29.37 ID:YrNuZAe7.net] 何のために?それによる
981 名前:デフォルトの名無しさん [2020/02/16(日) 18:53:05 ID:Yy7z+EdH.net] >>950 ありがとん。
982 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 21:26:26 ID:D0JJuQrX.net] >>953 いえいえ
983 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 23:16:48.80 ID:B02+i8yM.net] >>924 まあそりゃね 使えるようにしてもPCやスマホのように自由には使えないぞ こまめに確保解放なんてことはしない 基本最初に確保して終わり 解放はしない だから確保しか出来ないヒープも選べる
984 名前:デフォルトの名無しさん mailto:sage [2020/02/16(日) 23:20:30.34 ID:B02+i8yM.net] >>927 それはPCやスマホなどリッチな環境の場合 >>931 一見軽そうで重い関数があったりするから 同じ人が同じ時に作ってたらそんな処理にはしないだろうけど
985 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 00:08:48 ID:U44ZlMgK.net] 白物家電のマイコンやら、pfcのマイコンやらもやったが、そんなのはそもそもmalloc使うような環境じゃなかったしなぁ RAMもkB単位で少ないし、自由に関数呼べるほどスタックも無いし 割り込み部分はアセンブリで書いてた
986 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 00:14:53 ID:/jKzm6f9.net] 今は冷蔵庫や電子レンジもAI積んでネットワークに繋がるIoT時代だけど それでも組み込みって未だにそんな感じなの?
987 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 00:16:48 ID:U44ZlMgK.net] まあそれは特に東南アジア向けだったし 日本よりさらにチープだったのかも
988 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 00:19:59 ID:uafn9Eqq.net] >>958 そんなのごく一部
989 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 00:20:59 ID:uafn9Eqq.net] いまだにチープな8bit CPUもたくさん使われている
990 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 00:23:25 ID:U44ZlMgK.net] cortex-m0とか載ってたらもう小躍りしちゃうくらいのリッチさだよね
991 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 00:34:16.83 ID:H8nvOahp.net] リッチなCPUを使うって事は それだけ求められる事が大きいわけで
992 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 07:41:59.44 ID:xyBTOgD8.net] でもCPU節約するために人件費かけて結局商品高いじゃん
993 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 09:22:40.01 ID:usLteeFN.net] 趣味じゃないんだから 当然トータルで考えるよ 開発工数、単価、機能性能、信頼性、供給、大人の事情、...
994 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 10:36:24 ID:sgjaAMaL.net] ゲーム業界の人だけど new使っても問題ないってのはおれの常識とは異なる まず問題が広すぎる 言いたいことはデフォルトのグローバルヒープを無邪気に使っていいか ということだと仮定すると AAAクラスでそんな杜撰なことしてるところはないと思う 組み込みもそうだがリアルタイム性が必要とされるところでは、メモリ予算というものがある グラフィック、オーディオ、ネットワークなどのモジュールごとにメモリいくらと決められる モジュールの責任者はその中でやりくりする ここで大事なのはメモリの最大使用量を保証しなければならないってこと 必要ならローカルのヒープは作ったりするが、この時点で担当者が気ままにnewってのは認められない 基本的にすべてコントロールされる 現実的に最大量が正確に見積もれないものもあるがそれでも最大量は決める
995 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 10:57:08.38 ID:sgjaAMaL.net] といってもグローバルヒープを使わないわけじゃない オープンソースのもので無邪気にmallocするものは多数あるが、それほど荒ぶらなければそのまま使う (リアルタイム性が不要なら仮想メモリに任せる) あとmalloc遅くないという論調の人がいるけどそれはベストケースの話でしょう ヒープメモリが不足したり一度に巨大なメモリを確保する場合はシステムコールになるからずっと遅くなる ワーストが見積もれないものはリアルタイムで使いづらい まぁ昨今は仮想マシン上で動くゲームが多数あるわけで気にしなくていいレベルという意見はある ただesports系で一瞬カつくとか商品性に関わるわけで また後から直すのも地獄なので 最初から計画的に作るべきだろう
996 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 11:06:49.04 ID:tDJaHp5K.net] ここC++スレだよね、つかぬことだけど 記憶管理はいつでも如何様にもカスタマイズできるようにtypename Allocatorになってるわけじゃん なんでいきなり組み込みには向かないとかキリッてんの?
997 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 12:20:34.06 ID:ipOy1V1j.net] >>968 typename Allocatorとかすげぇ初心者っぽい キリってるのはお前だ
998 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 12:22:54.84 ID:tDJaHp5K.net] >>969 kwsk
999 名前:デフォルトの名無しさん mailto:
[] [ここ壊れてます]
1000 名前:sage mailto:2020/02/17(月) 12:39:53 ID:sgjaAMaL.net [ >>968 標準ライブラリでもallocatorが指定できないものもあるんだよ もはや今のc++で標準ライブラリを全面的に使いつつ、ヒープを個別に差し替えるのはかなり非現実的だ allocatorを差し替えられてもnewするタイミングや量はリバースエンジニアリングしないとわからない それが問題になることもある ] [ここ壊れてます]
1001 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 12:48:18 ID:2c+OKT/4.net] てか、静的確保したメモリブロック使うアロケータ書いてそれで標準コンテナ使うのが基本じゃね まあeastlでも良いが
1002 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 12:51:50 ID:tDJaHp5K.net] >>971 > 標準ライブラリでもallocatorが指定できないもの 例えば? newだってoperator newですぐカスタマイズできるし placementで環境依存の細かい設定もできる ライブラリはISO/IEC14882に固執する必要はなく サードパーティでも内製でもより都合のよいほうを使えばいい というだけの話
1003 名前:969 mailto:sage [2020/02/17(月) 12:56:55 ID:nfQInp9b.net] カスタマイズの話なら真っ先にnewの話をすべきなんだが順番おかしくね? ていうか今時はallocatorより先にpolymorphic resourceだと思うが というかそもそもmallocの速度の話からであって、いきなりallocatorの話したり C++全体を否定されたかのように過剰反応するとか・・
1004 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 13:12:34.13 ID:y136Nw0W.net] 仕様通りに書けばいい感じにうごいてくれて、責任は俺にはないとか 思い込んでんじゃってるキッズなんだろう。 デバッグするなんてことはもちろん頭にない。
1005 名前:865 mailto:sage [2020/02/17(月) 13:34:28 ID:FC0zZXW0.net] >>890からの流れでは直後からnewが出てきてたろ C++が組み込みに向かないという主張の 理由がmallocじゃおかしいだろ それしか使えんわけでもなし
1006 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 13:44:11 ID:nfQInp9b.net] >>968に突っ込むと>>890に同意したことになるのか
1007 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 14:00:21 ID:sgjaAMaL.net] >>973 > > 標準ライブラリでもallocatorが指定できないもの > 例えば? でしょ? お前さんは人並み以上にc++知ってると思うけどこの事実知らない どこで使われてるか知らなきゃ置き換えができないよね 答えはあえて教えない 標準ライブラリのヘッダーをnewでgrepすればallocatorを通さないものが見つかるさ 自分で確認してこりゃ置き換え無理だわと悟って欲しいw もし見つからないなら後で書くよ ちなみにグローバルにnewを置き換えるぐらいならmallocのバイナリを差し替えた方が早いし確実
1008 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/17(月) 14:31:40 ID:qpTD/rYC.net] おっ。 野党みたいなことを言い始めたぞ。
1009 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 14:37:47 ID:nfQInp9b.net] >>979 横からだが、具体的に誰のどこを指してそう思ったのかよろしく
1010 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 14:59:36 ID:QYRwM+i2.net] >>966 もちろん、むやみやたらと使って全く問題ないわけではない。 が、本当に必要な箇所で使う程度なら(多くの場合)余り問題ないという程度。 大体ゲームの場合のnewやmallocは、敵や弾やイフェクト、3Dオブジェクトなど を1つずつ収めるために使うことが多いが、ゲームの1シーン内に登場する個数が newやmallocが問題ない程度に元々なっている事がわりと多いと言うだけ。 3Dの雑草の葉っぱ一枚単位で new したりすると問題になってくるかもしれない。
1011 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 15:51:15.09 ID:sgjaAMaL.net] >>981 なんとも感覚的な話だね だいたい動けばOK!って感じ? おれは仕事でそういうもの作りはしない
1012 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 16:08:54 ID:HCTe1ZqE.net] コンシューマかPCかでも違うだろうし (自分はさほど詳しくないが、基本コンシューマは標準ヒープ使わないはず) ジャンルによっても違うんじゃね PCのMMORPGなんかだとシーン中のメモリ確保は必須だろうし あと草は普通同じメッシュやテクスチャ使うだろうし、揺れを入れるにしても一つ一つにデータ持たせるなんてアホなことしないだろ
1013 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 16:15:08 ID:tDJaHp5K.net] >>978 「後で」かw もう1000間近だし期限切らないでおけば時効だろってか?
1014 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 16:32:36.59 ID:y136Nw0W.net] いやそれくらい調べろって話だろ。。馬鹿が。
1015 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 16:44:43.28 ID:tDJaHp5K.net] >>985 sgjaAMaLが、自分の話に傾聴してきた人の質問に答えなかった つまり自分の考えを伝える努力を中止したということでしかない 何人も自らの意見を他人に伝えるには その意見を説明するしかなく 説明をやめることは沈黙に等しい
1016 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 16:55:56.23 ID:9WiS2n1W.net] 黙って調べてくれば? 調べて無いと結論づけられればまた偉そうに出来るだろw
1017 名前:デフォルトの名無しさん [2020/02/17(月) 17:15:39.87 ID:9Dh9neDd.net] ちゃうねん。 僕が組み込みいうたのはArduinoのことな。 RAM2KBやし。
1018 名前:デフォルトの名無しさん [2020/02/17(月) 17:31:33 ID:9Dh9neDd.net] Arduino面白いよ。
1019 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 18:25:59 ID:sgjaAMaL.net] >>984 条件は明示してるんだからおれが書くかはお前に委ねられている 1000が迫っているぞw
1020 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 18:30:32 ID:T3Z0MUY2.net] この手の人最後まで答えないか 答えても的外れなのしか見たことないわ
1021 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 18:32:18 ID:wtNXL+i7.net] だね 消えて良いよ
1022 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 19:27:27 ID:XybgTXf7.net] >>978 std::arrayとか言わないよね
1023 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 19:33:45 ID:nfQInp9b.net] arrayのどこに動的メモリ確保が出てくるんだよ アホか
1024 名前:デフォルトの名無しさん [2020/02/17(月) 19:46:45 ID:9Dh9neDd.net] なぞなぞですか。
1025 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 23:00:17 ID:HZSaiYXA.net] 漏れはnewのときたまの遅さの可能性に警鐘を鳴らしたからセフセフ、
1026 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 23:06:03 ID:HZSaiYXA.net] やっぱnew/deleteのレイテンシーを設計に乗せるには非ページプールメモリにアロケートするべきですよねー
1027 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 23:19:17 ID:sgjaAMaL.net] なんかスレ止めてたら悪いから書いておくよ ひとつは17からallocatorがdeprecatedになったstd::functionね これは結構知られてるばずだ 定期的にこれ濫用する人が現れるんだけど中身理解してから使うか判断しろと職場では言っている代物 もうひとつあげるなら、 処理系によってかなり違うかもだけどstd::threadも中でこっそり内部クラスをnewしてるはず ただスレッド間で引数を引き渡すためのものでサイズは小さいしスレッド作るコストの方が遥かにでかいから問題にはなりにくい 他にもあるけどとりあえずこんなもんで
1028 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 23:46:06.60 ID:HZSaiYXA.net] std::functionを使わないと1 bitもプログラムが書けなくなった漏れガイル、 クロージャをいちいちクラス定義から手で書く日々に戻るのはいやじゃー
1029 名前:デフォルトの名無しさん mailto:sage [2020/02/17(月) 23:54:13.03 ID:HCTe1ZqE.net] 1000なら>>986 , >>991-992 が土下座
1030 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 17日 3時間 0分 7秒
1031 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています