1 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 13:51:53.57 ID:DKQ0QQLH0.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part142 https://mevius.5ch.net/test/read.cgi/tech/1554124625/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 https://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/ (日本語) ----- テンプレ ここまで ----- VIPQ2_EXTDAT: default:vvv:1000:512:----: EXT was configured
75 名前:デフォルトの名無しさん [2019/06/21(金) 16:04:18.10 ID:Vcgrp8ZVp.net] 再帰を用いずに、 a0=0 an=( an-1×an-1 )+1 の1〜6を出せ ってやつが全然できないので教えてください。
76 名前:デフォルトの名無しさん mailto:sage [2019/06/21(金) 16:41:53.38 ID:rC321OP20.net] 意味わからん
77 名前:デフォルトの名無しさん mailto:sage [2019/06/21(金) 16:49:46.98 ID:vf8hmAK4M.net] 0からループ使えばいいだけじゃないの
78 名前:蟻人間 mailto:sage [2019/06/21(金) 16:52:32.29 ID:uFs7CW+50.net] >>75 #include <stdio.h> int f(int n) { int i, a = 0; for (i = 1; i <= n; ++i) a = a * a + 1; return a; } int main(void) { int i; for (i = 1; i <= 6; ++i) printf("a_%d: %d\n", i, f(i)); return 0; }
79 名前:デフォルトの名無しさん mailto:sage [2019/06/21(金) 20:41:29.94 ID:9XN8XoXIM.net] >>75 > 再帰を用いずに、 その意図は? 単にスタック使いたくないだけなら最近のコンパイラにまかせりゃ末尾呼出最適化ぐらいはするから気にすんな
80 名前:デフォルトの名無しさん mailto:sage [2019/06/21(金) 21:07:41.81 ID:G412ZpUw0.net] なんかの課題だろ
81 名前:デフォルトの名無しさん mailto:sage [2019/06/21(金) 21:12:24.28 ID:o/bRPi0pa.net] 平均値も出せないMath.hはクソだと思う理由 1.エクセル関数で簡単にできちゃう 2.電卓でもできることがプログラムになると煩雑になる 3.平均値を出すのにコードを書き換える手間など
82 名前:デフォルトの名無しさん mailto:sage [2019/06/21(金) 21:19:00.28 ID:dWgEej/X0.net] 平均値の計算は実は簡単ではない
83 名前:デフォルトの名無しさん mailto:sage [2019/06/21(金) 21:21:02.30 ID:rC321OP20.net] そもそもmath.hはC言語のライブラリ
84 名前:デフォルトの名無しさん mailto:sage [2019/06/21(金) 21:29:06.50 ID:5xL7WT2l0.net] そのエクセルの関数の機能や電卓ツールはmath.hを使って作られている
85 名前:デフォルトの名無しさん mailto:sage [2019/06/21(金) 21:48:48.65 ID:0JVOBbqs0.net] 浮動小数甘く見過ぎ
86 名前:デフォルトの名無しさん [2019/06/22(土) 15:16:07.71 ID:ecTKxvDL0.net] C++コードをC++コンパイラでコンパイルするのと CにトランスパイルしてCコンパイラでコンパイルするのと どっちが性能良いんだろう? トランスパイラの優秀さにもよりそうだが
87 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 15:35:26.46 ID:XJUTErWD0.net] CがC++よりハイパフォーマンスという前提がありそうだが、そんなことはない
88 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 16:04:32.30 ID:LOXx/aGE0.net] 今時c言語のみのコンパイラなんて見かけないな
89 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 16:12:52.94 ID:9zxAgsAB0.net] >>86 いったんトランスパイルを挟むと、C++の元のコードをCで表現できる範囲内のコードに置き換えなきゃならないから、その時点で元のコードのままならなできた最適化のうちの一部はできなくなるだろうし、わざわざ効率の悪いコードに置き換えなきゃならないこともあるだろう。 トランスパイルの方が効率が上がる理由はないと思うよ。
90 名前: mailto:sage [2019/06/22(土) 16:38:05.67 ID:ICCmixle0.net] 現時点で利用可能な C++→C トランスパイラは何ですか?
91 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 16:53:56.35 ID:3PgdpjOh0.net] llvm
92 名前:デフォルトの名無しさん [2019/06/22(土) 17:03:11.19 ID:ecTKxvDL0.net] https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/cpp.html C++がCに勝ってる項目があるんだけど信じがたい
93 名前:デフォルトの名無しさん [2019/06/22(土) 17:16:00.48 ID:ecTKxvDL0.net] https://gist.github.com/simonhf/de808e0f8240ef27dac655505c8bf30f#file-result-summary-txt こっちだとJavaにすら負けてる なんなんだろうねベンチマークって
94 名前:デフォルトの名無しさん [2019/06/22(土) 17:19:10.62 ID:ecTKxvDL0.net] blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ どうやらC++はメモリの確保と解放にコストがかかるから Javaはまとめて大量にヒープをもってプールして使ってくから そこでJavaが勝利する場合があるらしい。 C++もメモリをプールしていちいち確保しないようにすればJavaより速くなる。 しかしいちいちそんな事やってられるか?
95 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 17:20:50.35 ID:VTgUFffK0.net] >>89 c++のままでないとできない最適化って何がある?
96 名前: mailto:sage [2019/06/22(土) 17:40:41.59 ID:ICCmixle0.net] >>91 LLVM は C++->C はできないのでは?LLVM のこと、わかってますか?
97 名前: mailto:sage [2019/06/22(土) 17:41:56.82 ID:ICCmixle0.net] >>92 C++ の template は #define の親玉のようなものですから、qsort() とかの間接ポインタ渡しでなんとかするしかない C が不利な場合はあるとおもいますよ
98 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 17:55:09.83 ID:VTgUFffK0.net] あとconstexprで事前計算してるのもあるね
99 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 18:03:29.07 ID:kVNYu7LP0.net] >>94 allocatorってまさにそのための仕組みなんだけど
100 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 18:48:22.39 ID:MmmgKpwaa.net] >>95 具体的にはあげられないけど、現在の文脈においてある前提が成り立つことが分かることによりできる最適化が、 (最適化を除いて)同じ動作となる別のコードに置き換えられることにより、元の文脈での前提条件が成り立つことを断定できなくなり適用できないという状況があるのではないかと思う。
101 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 18:58:11.17 ID:3PgdpjOh0.net] >>96 そちらこそllvmをまるで理解していないみたいですね
102 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 19:04:53.83 ID:cW7wMvLUM.net] >>100 具体的なのが聞きたい gccもllvmも中間言語でやる最適化が中心でしょ そういうc++の特別なフェーズがあるなら興味ある けど知らずに言ってるなら聞いても無駄だね
103 名前: mailto:sage [2019/06/22(土) 19:27:19.94 ID:ICCmixle0.net] >>101 llvm が変換した IR を C コードに戻すことができるのですか?
104 名前:デフォルトの名無しさん mailto:sage [2019/06/22(土) 20:26:09.97 ID:/7bwQJ5j0.net] (1) コンストラクタの呼び出し回数削減最適化 (2) クラスが絡むmemory ariasing (1)はC++かその意味を保った中間言語上で行う必要があり、C言語に逐語訳してからでは手遅れ (2)も同じくで、クラスの意味を失うような低レベルへの変換を一揆にかけると クラスFooのthisポインタとかクラス固有のアドレスが他のクラスにもグローバルな関数にも渡っていないことの保証がC言語に逐語訳してからでは手遅れ な印象 想像なので詳しくは知らん
105 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 01:02:56.59 ID:PTFzQo+G0.net] 初歩的な質問で申し訳ないんですけどcinってどういうもんなんでしょうか cpprefjp見ると標準入力に対する入力ストリームオブジェクトなんて書いてありますけど iostream.hで定義されてる「なにか」だとは思うんですがどういう型のものなのかとかそういえば全然知らずに使ってたなって よろしくおねがいします
106 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 01:04:06.42 ID:tL1CwC/m0.net] console input
107 名前:蟻人間 mailto:sage [2019/06/23(日) 01:50:58.01 ID:DI9+Pcki0.net] マニュアルみれ https://cpprefjp.github.io/reference/iostream/cin.html std::istream character input
108 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 02:02:56.98 ID:7pjzMc7c0.net] const inputかと思って親近感がわいていたのに…
109 名前:デフォルトの名無しさん [2019/06/23(日) 06:15:35.61 ID:6LMXkq2m0.net] じゃあCトランスパイラのNimはC++より遅いのかな? https://github.com/kostya/benchmarks ぐぐったらマジでそうだった 高水準言語から直接コンパイルした方が速いんだな
110 名前:デフォルトの名無しさん [2019/06/23(日) 06:35:12.06 ID:6LMXkq2m0.net] C++でクロスプラットフォームなコードを書くのはどれくらい難しい? Nimはクロスプラットフォームを主張してるんだけどどっちがいいんだろう?
111 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 06:38:35.47 ID:xbroTRmV0.net] Qtで書くだけ
112 名前:デフォルトの名無しさん [2019/06/23(日) 07:05:57.27 ID:6LMXkq2m0.net] WindowsもLinuxもMacもカーネルがCで書かれてるらしいけど何でC++じゃないんだろう?
113 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 09:01:51.47 ID:Xq17DW5L0.net] C++がそこまで整備されていなかったから OSといえばC言語で書くのが当たり前だから そもそもC言語で十分だから Linus「C++はレベルの低い奴が使うものだから」
114 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 09:11:04.02 ID:p0iHiqR80.net] >WindowsもLinuxもMacもカーネルがCで書かれてるらしいけど何でC++じゃないんだろう? 何回質問されたことだろうか。
115 名前:デフォルトの名無しさん [2019/06/23(日) 10:55:33.78 ID:6LMXkq2m0.net] OSじゃなくて組み込みでも大部分Cでしょ? なんで?
116 名前:デフォルトの名無しさん [2019/06/23(日) 10:57:16.59 ID:6LMXkq2m0.net] https://news.mynavi.jp/article/20170126-a093/ >組み込みシステム向けプログラミング言語の中で「一番好きな言語」としても「C」(29.1%)を選んだ人が最も多く、これに「Microsoft Visual Basic」(16.8%)、「C++」(15.3%)が続いた。
117 名前:デフォルトの名無しさん [2019/06/23(日) 11:17:45.87 ID:6LMXkq2m0.net] Linus TorvaldsのC++批判は正しかったのか https://developers.srad.jp/story/15/03/13/2328200/ C++の最大の問題は学習が難しい事か。 たぶんC++を学ぶ時間でCとJava両方学べるね。
118 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 11:20:59.77 ID:JKCTeXCU0.net] 超堅牢に作らないといけないから、 見えないところでコピコン大量に走ったりするような言語は避けられるんじゃないか ヘッダーに実装書き散らしてるのよくないね OSはバイナリ境界意識しないといけないし まあどのみち標準ライブラリは使えないけど
119 名前:デフォルトの名無しさん [2019/06/23(日) 11:28:01.94 ID:6GXr3JQp0.net] 最近BS/CSが映らなくなった人はここを見ると良い 【B-CAS改造】Bカスカード2038化書き換えツール配布所 205 https://mevius.5ch.net/test/read.cgi/avi/1560914909/1-100
120 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 11:39:08.67 ID:4lSN7b3Y0.net] https://nlab.itmedia.co.jp/nl/articles/1902/19/news078.html 人の顔を生成するaiはどうやって作れますか?
121 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 11:39:50.16 ID:Xq17DW5L0.net] >>115 各ベンダーがサポートするにはC言語がちょうどいい規模だから
122 名前: mailto:sage [2019/06/23(日) 12:03:58.80 ID:DC/NnmXU0.net] >>112 C++ のデフォでのマングリングが外部結合(リンク)を阻害するから、に一票
123 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 12:09:47.82 ID:LchWS7uN0.net] ちがう ちがうなぁ ポインタがあって適度に奥が深いから、だ
124 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 12:22:24.97 ID:BQwXISYN0.net] メモリの制御が難しいからじゃね 最近やっと標準でまともなメモリ管理の仕組みを作り込めるができるようになったくらいだし
125 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 14:34:24.36 ID:hhhlIxdX0.net] 昔からメモリ制御なんてCと同じことはできるだろ
126 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 14:56:33.46 ID:WUJS/EaT0.net] 今のC++なら十分使えるよね 継承やSTL、shared_ptrみたいなことをCで実装してるわけで それを考えたらC++で良い
127 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 16:01:29.78 ID:EoSayXaXa.net] プログラムの一部にでもRTTIを使用した部分があるとプログラム全体のパフォーマンスが低下する?
128 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 16:37:25.79 ID:p0iHiqR80.net] まあc++でちゃんとしたもの組もうと思ったらデストラクタをしっかり用意するってのが 大事なわけだが、かなりいろんな状況に対応したものにしないとまともに使い物にならん。 これはメタプロバカが思ってるほど難易度は低くない。
129 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 16:59:21.61 ID:7M38Ae5l0.net] >>127 コンパイラオプションでRTTIを無効化するとデータ量が減るのでパフォーマンスが上がる →つまり一部でも使ってると低下する まぁ今時は気にする必要無いと思うけど 速度は実測が基本
130 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 17:38:56.55 ID:hhhlIxdX0.net] 自前でデストラクタ書くなよ
131 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 18:20:15.96 ID:xbroTRmV0.net] えっ
132 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 18:29:28.72 ID:BQwXISYN0.net] ちゃんと例外を投げないデストラクタを書くんだぞ fcloseの失敗はもみ消せ どうせ回復などできない
133 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 21:01:47.41 ID:EoSayXaXa.net] >>129 やはりそうですか、ありがとうございます 速度は今試せないのでまたこんどやってみます
134 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 21:13:15.69 ID:PTFzQo+G0.net] >>107 えーっとcinってのはistream型のオブジェクトってことでいいんですかね externをいまいちよく分かってないですがヘッダ内で定義されてるから他のファイルでも使えるとという認識で大丈夫ですかね
135 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 07:55:10.22 ID:6Zff8TGS0.net] 1.思考停止してそのまま使う 2.外界から齎される無限長の情報列がストリームである、と理解する 好きな方を選べ
136 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 15:40:31.96 ID:DnOtpTuq0.net] 何でC++使ってる職場少ないのにプログラム板で上位なの?
137 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 15:56:59.67 ID:OO73LhBR0.net] すく・・・ない・・・?
138 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 16:10:16.23 ID:vRXjoyqNM.net] Web業界の人とかなんだろ
139 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 17:32:13.27 ID:i4YKAGQ3r.net] 「C++実践プログラミング」って良い本?
140 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 18:02:59.78 ID:HUc+KEird.net] 実は多いだろ? 社内に囲われているだけで
141 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 22:05:46.06 ID:qyAEE2sQ0.net] C++プライマーとaccelerated C++一通りやってeffective C++始めたんだけどすんごくめんどくさーい acceleratedの後半あたりから思ってたんだけど純粋なロジックやテクニック以外のところで考えなきゃいけないこと無限にあってできるようになる気がしない 実際に開発になってクラスやインターフェイスの設計ってみんなこんな色々考えてやってんの?って 競プロっぽい問題だったりちょっとしたもの作るのは割と面白いけどなんかもう萎えてきた 世の中のプロってやっぱ(modern) effective C++とかmodern C++ designとかその辺りは基礎教養レベルまでもっていってるもんなの? 2年目のペーペーだけどとてもC++のプロになれる気がせんわ
142 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 22:08:08.69 ID:tWJeInAS0.net] そのへんはさらっと何が書いてあるか見ておいて、実際書くときに関係ある部分を参照する本では?
143 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 23:54:52.99 ID:4vQIe5sT0.net] >>141 それは思うわ 結局その辺の不満を改善したのがJava以降のオブジェクト指向言語だから 今C++を勉強すると面倒すぎると感じるはず
144 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 00:51:00.92 ID:rXRUIvly0.net] 必要だと思うもんだけ使えばええがな
145 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 01:40:27.96 ID:rF6w0adX0.net] 11 名前:(´・ω・`)(`ハ´ )さん[] 投稿日:2019/06/24(月) 17:55:34.54 ID:PqEssjoP 世界三大英雄は野茂と村田と、あと1人は誰? 142 名前:(´・ω・`)(`ハ´ )さん[sage] 投稿日:2019/06/24(月) 21:21:51.77 ID:osRVwCku >>11 中野英雄
146 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 07:42:37.27 ID:p22LimGY0.net] >>132 回復できないエラーでもユーザーに通知する余地はあるでしょう。最悪abort()でも、もみ消すよりはマシ。
147 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 12:36:52.78 ID:U+wxsv9j0.net] JavaもC++も大して変わらないと思うけど
148 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 12:59:41.31 ID:gYxx7iw3p.net] >>141 modern C++ designはメタプログラミングに片足突っ込んでるからだいぶ後回しでいいと思う 考えること無限にある、は同意だけど優先順位低いものは忘れた方がいいんじゃないかね(特に、ループ回しもしない箇所の速度効率とか
149 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 17:37:46.05 ID:kxXa+TrUd.net] むしろjavaの方がいろいろ面倒くさくね
150 名前:デフォルトの名無しさん [2019/06/25(火) 17:56:57.79 ID:Cc6pu6kp0.net] 使用する概念としてはJavaとCを足してさらに多重継承とか演算子オーバーロードとかを足した のがC++という印象だった。
151 名前:デフォルトの名無しさん [2019/06/25(火) 18:01:11.39 ID:Cc6pu6kp0.net] プログラミング言語 収入 ランキング とかでぐぐると 難しい上に重要なはずのC++が年収ランキングで10位以内に無いんだが
152 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 18:15:31.86 ID:U1S86Wri0.net] 統計の取り方が不明
153 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 18:20:11.68 ID:4vpt+Hzy0.net] >>140 多いってのはどこで集計されて発表されてるの?
154 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 18:30:38.49 ID:U+wxsv9j0.net] 一発当てて稼げてるのがwebサービスやってる人たちだから
155 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:12:58.12 ID:p4xx1Je/a.net] C/C++まともに書ける人は貴重になってきてるのに何故か低いよねえ 特定の会社に行くしかない気がする
156 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:18:47.91 ID:S67hXFxm0.net] >>151 経済の世界でよくあること: ・高度な能力を持つ人は給与ではない部分にやりがいを感じるので給与に 関係なく集まってしまう。アニメーターは絵がものすごくうまいのに、 マクドナルド店員よりも自給が低い。「やりがい搾取」。 ・高度な分野は、人材も高度な人が集まってくるので需要よりも大き過ぎる過剰な 成果を出してしまうので給与が下がるらしい。プログラマや数学者、 コンピュータ業界なんかは大体、そんな感じのところがある。
157 名前:デフォルトの名無しさん [2019/06/25(火) 19:21:25.34 ID:Xe7ucSUW0.net] 高度な分野においては、とても僅かな一握りの人が、過大な成果を出してしまう。 すると、大体の場合、給与が下がるらしい。世界のわずか数人が異常なほど大きな成果を 出しているとか。
158 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:28:18.56 ID:U+wxsv9j0.net] みんな勘違いしてるが儲かる商売してるかどうかだけが稼ぎに関係している 儲からない商売に超絶技巧を投入しても意味ない サービスで一発当てる方が100倍稼げる
159 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:43:08.34 ID:0zPp4OkO0.net] というか自分のビジネス思いつくタイプでもないプログラマーが稼ごうと思ったらなるべくニッチな言語を探していくべきなんだと思う C/C++なんてメジャーどころは一番だめなんじゃないか。まだまだ人が少ないか、書ける人がどんどん減っていきそうなところを
160 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:50:04.75 ID:U1S86Wri0.net] COBOLは意外と稼げるらしい
161 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:09:29.07 ID:U+wxsv9j0.net] >>159 違うぞ稼げる商売やってる人に乗っかるのが正解 現在儲かってしょうがない会社に入るか今後そうなる会社に入っておくしかない 専門分野は関係ないが一発当てようがない業界というのはあるからそういうところは目指さない方がいい
162 名前: mailto:sage [2019/06/25(火) 21:00:35.29 ID:eaNcyZwN0.net] 言語は表現手段にすぎないので、言語で分野が決まってしまう現状には疑問を持ちます 少なくともライブラリーは統一されるべきだと昔から夢想してきています
163 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:02:24.65 ID:i1Zv6l/dM.net] 現実にあったんじゃよCOMというものがな
164 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:03:41.95 ID:zDe7yE4Q0.net] ライブラリはCインターフェースさえあれば全てのまともな言語から呼べるから問題ない
165 名前: mailto:sage [2019/06/25(火) 21:07:14.96 ID:eaNcyZwN0.net] >>163 OLE は重過ぎるんじゃないでしょうか?単に名前と仕様が「ある程度」統一できればいいかと考えています でも OLE はもう一度調べなおしてみます、キーワード提供ありがとうございます
166 名前: mailto:sage [2019/06/25(火) 21:07:47.47 ID:eaNcyZwN0.net] >>164 OO であるべきでは?
167 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:10:43.33 ID:6yREXBxQ0.net] 素朴な疑問なんだけど オブジェクトをshared_ptrで管理するとき そのオブジェクトから他のオブジェクトにポインタを渡したいときってどうするの? コンストラクタ以外のメソッドからならenable_shared_from_thisで 生なthisポインタからshared_ptrを生成して渡せばよいけど コンストラクタだとそれも無理だよね(shared_ptrが作られるのはnewの後だから) どうするの?
168 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:11:27.40 ID:paQRKRTX0.net] ポインタ指向プログラミングとオブジェクト指向プログラミングは根本的に相性が悪い これがC++高難易度化の一要因
169 名前:蟻人間 mailto:sage [2019/06/25(火) 21:13:45.53 ID:ayyd1Kg3d.net] >>167 make_sharedじゃね?
170 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:15:54.14 ID:6yREXBxQ0.net] てかさ 自分自身のスマポを 外部から渡してもらわないと、自分では知れないってのは 設計ミスなんじゃね? 当たり前、JavaやC#だとそんな制約ないからなぁ
171 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:18:19.51 ID:p4xx1Je/a.net] 代入がメンバのコピーという仕様が全ての複雑さの元凶 互換性のために仕方なかったとはいえ おかげで完全に動くクラスをつくるのが凄まじくしんどい それを改善しようとしたJavaは全てポインタのコピーというふうに割り切ったが Optinalを導入しなかったせいかヌルポの山を築いた それを改善しようと Rustは全てがムーブという世界を作ったがまだ受け入れられるには早かった
172 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:24:24.92 ID:6yREXBxQ0.net] >>171 これまた不思議なもんで Cからして配列は参照渡しなのに構造体は値渡しだからねぇ Cの構造体が配列みたいにアクセスするとポインタに成り下がる仕様だったのなら C++もまた違ってただろうねぇ どちらがいいかは分からないが
173 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:26:08.00 ID:i1Zv6l/dM.net] えっ 普通は呼吸をするように const T& var て書く様に訓練されてるだろ?
174 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:29:04.07 ID:U+wxsv9j0.net] 任意にコピーとポインタとムーブを使い分けることになんの苦労も無いと思うけど
175 名前: mailto:sage [2019/06/25(火) 21:29:56.71 ID:eaNcyZwN0.net] >>172 私は逆を考えていました、すなわち、配列ですら値渡しであるべきかと 参照渡しにしたいのなら、そのすべてに * をつけて明示するべき
176 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:32:48.81 ID:6yREXBxQ0.net] そうではなくて 構造体において何も考えずに代入した場合 実体のコピーになるって話では その点、配列では実体のコピーにならないので JavaやC#のオブジェクトに近い仕様で なかなか先鋭的
177 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:44:51.24 ID:6yREXBxQ0.net] そんなことより コンストラクタで自分自身のshared_ptrが欲しい時 どうするの? 欲しい理由としては、どっかシステム的なところにattachしたり 自分のコンポジションした子供たち?に渡したり そういうことをコンストラクタですっかりしたい場合どうすんの enable_shared_from_thisを継承して二段階初期化ってのもかっこ悪いし (↑生成する側がshared_ptrを使ってくれなかった場合 クラッシュするってのは置いておいてさ) そもそも実行時型情報なんて反則が許されるなら 仮想関数付きのオブジェクトは実行時型情報のどこかに参照カウンタを隠し持っている って仕様でもよかっただろ? スマポ側が参照カウンタを持っているってのは一見賢そうだけど… 上手くいかないパターンもあるよね
178 名前:デフォルトの名無しさん [2019/06/25(火) 21:48:45.68 ID:6yREXBxQ0.net] >仮想関数付きのオブジェクトは実行時型情報のどこかに参照カウンタを隠し持っている ↑これはちょっと不正確だな vtableと一緒に参照カウンタ〜 が正解かな
179 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:52:05.85 ID:zDe7yE4Q0.net] ファクトリでやれ
180 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:54:23.16 ID:jeBecXDk0.net] >>177 create関数でshare作ってから後の構築処理して返すしかないんじゃね
181 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 00:01:25.34 ID:7raG/MY10.net] 有害でしかない美意識は投げ捨ててshared_form_this使えって話になるだろ
182 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 00:07:57.67 ID:HPTAJdxK0.net] それでもコンストラクタでは使えないから二段階初期化になるな
183 名前:デフォルトの名無しさん [2019/06/26(水) 00:27:47.77 ID:3ywCP3+N0.net] ちょっと質問なんですが、どういうときに必要になるんですか?
184 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 01:38:39.12 ID:kcNPbTTh0.net] Intel、新プログラミング言語「Data Parallel C++」を開発中 2019/06/25 11:08 後藤大地 https://news.mynavi.jp/article/20190625-848112/ ossbytesは2019年6月24日(米国時間)、「Intel Is Working On A New 'Data Parallel C++’ Programming Language」において、Intelが「Data Parallel C++」と呼ばれるプログラ ミング言語の開発を進めていると伝えた。 Data Parallel C++に関しては、先日Intelが発表した「Intel’s ‘One API’ Project Delivers Unified Programming Model Across Diverse Architectures」程度しか情報が なく、具体的にどのようなプログラミング言語なのか、わからない状況にある。 記事では、これまでに公開されている情報から、Data Parallel C++の特徴として以下を まとめている。 ・Data Parallel C++ (DPC++)はIntelが以前から取り組んでいるOneAPIプロジェクトの 成果物の1つ ・OneAPIプロジェクトはさまざまなコンピューティングアーキテクチャにおいて統合された プログラミングモデルを提供するための取り組み ・Data Parallel C++はC++をベースに開発されている ・Data Parallel C++はKhronos GroupのSYCLシングルソースC++プログラミングスタン ダードがベースになっている ・CPU、GPU、FPGAといった異なるアーキテクチャに対して使用できる ・Data Parallel C++の詳細は2019年第4四半期の発表される見通し GPUの活用はスーパーコンピュータにおいても重要度が増している。Intelは異なるアーキ テクチャに対して利用できるプログラミングモデルを構築することで、さまざまなコン ピューティングアーキテクチャに対して同じコードベースで開発を進められる仕組みを 実現することを目指していると見られる。
185 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 04:17:13.86 ID:0Jy9MjGr0.net] 結論 使えない
186 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 06:38:56.80 ID:LU29nklf0.net] >>177 相互参照自体がクソ汚い設計なんだからツールがいくら綺麗になってもダメ。 諦めてthis渡せや。
187 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 07:32:00.47 ID:ICIJHbsn0.net] >>184 OpenCLとの違いは何
188 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 07:40:21.71 ID:0Jy9MjGr0.net] 異なるアーキテクチャに対応 高額 インテルサポートあり
189 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 08:12:04.77 ID:x0x3rSL40.net] OpenCLがずっと停滞気味なのに業を煮やしたんじゃね
190 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 12:31:58.13 ID:ghoq0O6D0.net] Intelは、CPU内臓のGPUを自前で作ってるから、そのための開発環境は 重要で、実行時のパイプライン関連のさまざまな高速化においても、 共通の技術が使えるので開発するメリットは大きいのだろうと思う。 レジスタ割付、ループ関連の最適化などは、CPUを実行する段階でも 似たことが行われる。
191 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 12:39:28.47 ID:Lh4/MgoYa.net] そんなくだらんライブラリ作ってる暇あったらCUDA互換のランタイムだせーい
192 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 12:57:05.45 ID:ghoq0O6D0.net] 言語ではなくて、テンプレートライブラリなの?
193 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 17:24:56.62 ID:hivlE/XW0.net] 海外のニュースサイト見ても言語と書いてある