C++相談室 part143at TECH
C++相談室 part143 - 暇つぶし2ch2:デフォルトの名無しさん
19/06/15 16:03:43.75 yU4M2XeV0.net
すっぱい葡萄
URLリンク(ja.wikipedia.org)
 自分のものにしたくてたまらないにもかかわらず、努力しても到底かなわない対象である場合、
 人はその対象を「価値の無いもの」「自分にふさわしくないもの」と見なそうとし、
 それをあきらめの理由として納得し、心の平安を得ようとするものである。
 フロイトの心理学では、これを防衛機制および合理化の例とする。また、社会心理学においては、認知的不協和の例とされる。
 英語には、この寓話を元に生まれた熟語として "sour grapes" があるが、これは「負け惜しみ」を意味する。

3:デフォルトの名無しさん
19/06/16 12:29:06.82 yEr4r4hL0.net
URLリンク(qiita.com)
>Paul曰く:
>人は、その人のアイデンティティの一部となっている事について、実りある議論はできない。
>これすなわち、自分のホームに近い話題ほど論理よりも感情が優先されてしまうということ。
>Kathy曰く:
>他の人が夢中になるほど、そのプロダクトやブランドへの憎しみは強くなる
>これはつまり、彼らはクールエイドを飲んでしまってるということだ。

4:デフォルトの名無しさん
19/06/16 16:55:32.05 NJ2skO190.net
質問です。
URLリンク(dotup.org)
ここまで作ってデバッグしようとしたらシェアードポインタが継承扱ってくれない感じになった。
2017ではできていた気がしたけど、なぜですか?

5:デフォルトの名無しさん
19/06/16 17:32:43.45 /ZY8dphZ0.net
thinkFirst
ThinkFirst
オーバーライドするときはoverrideつけたら?

6:デフォルトの名無しさん
19/06/16 17:36:44.99 NJ2skO190.net
>>5
サンクス。こんなことか・・・。
そういえばそういう習慣持ってないなぁ。余裕があったらやってみる。
コンパイル通ったので再開。
助かりましたありがとう。

7:
19/06/16 19:27:55.97 gDHKfsB60.net
test

8:デフォルトの名無しさん
19/06/17 00:12:48.76 oaY4OAXG0.net
>>1
前スレ>>1000の人は関数型プログラミング的プログラミングを自らに課している人なのであろう
つまり全てのオブジェクトは属性がコンストラクタで設定され、immutable、、、

9:デフォルトの名無しさん
19/06/17 00:55:04.38 qMa7jD650.net
getterは読み取り専用のメンバを作りたいときに必要
setterはpimpl化したときに必要

10:デフォルトの名無しさん
19/06/17 01:18:11.69 a5RA1dZMa.net
const publicがあればいいのか

11:デフォルトの名無しさん
19/06/17 09:36:57.72 FBMbqlks0.net
getterならread only修飾子を導入して
コンパイル時に書きこまれないことを保証すればいい
かんたんだろ

12:デフォルトの名無しさん
19/06/17 09:43:06.17 NDzOpmZcM.net
mutable なオブジェクトだとしても、setter を付けるメンバー変数は少ないな。
3つのうち1つぐらいの感じ。

13:デフォルトの名無しさん
19/06/17 14:59:51.76 otIzoLhyd.net
セマンティクス上で重要なメンバ関数の区別は、オブジェクトの内部状態を変更するものか(非constメンバ関数)と、変更せずに内容を見るためのものか(constメンバ関数)の違いであって
その具体的な処理内容が特定のprivateデータメンバのgetterかsetterかなんて観点は大して重要じゃないし、そんなものに固執して設計を考えるのは馬鹿馬鹿しいし危険だと思う

14:デフォルトの名無しさん
19/06/17 15:13:59.52 NDzOpmZcM.net
>>13
「状態を変更」の方はまあいいけど「内容を見る」という表現は狭すぎないか。

15:デフォルトの名無しさん
19/06/17 15:20:09.82 otIzoLhyd.net
そうね引数を加工するとか他のオブジェクトへのプロキシになるとか色々あるね
getterのイメージに引きずられすぎちゃった

16:デフォルトの名無しさん
19/06/17 15:54:46.05 cgazGIue0.net
コンテナのset, map, multi_mapはconst_iteratorじゃないと正しくforループを回せないって制限あった気がする。どうだっけ?

17:デフォルトの名無しさん
19/06/17 16:13:33.58 ikLTlFyV0.net
ペアのインデックサがわを弄ったら、ソートぶっこまれて順番が狂う感じの奴かい?

18:デフォルトの名無しさん
19/06/17 17:06:03.61 xa2u5Y3Ua.net
構造体のメンバ変数をまとめて以下のように文字列でアクセスできるようにしたいのですが、
構造体のポインタを以下のpointerに一括で割り当てる方法はないでしょうか?
Params {
int param1, param2;
} params;
std::map<std::string, void*> pointer;
// 同じ操作
params.param1 = 1;
*static_cast<int*>(pointer["param1"]) = 1;

19:デフォルトの名無しさん
19/06/17 17:11:32.29 xa2u5Y3Ua.net
Paramsは複数の型のメンバ変数を持ちますがpointerにtypeidを合わせて持たせることで使用時の問題は解決できます

20:デフォルトの名無しさん
19/06/17 17:11:48.82 cgazGIue0.net
>>18
日本語でok

21:デフォルトの名無しさん
19/06/17 17:15:04.87 xa2u5Y3Ua.net
以下のように一つずつ割り当てるのではなく、構造体に含まれるメンバの名前とポインタをイテレートして割り当てたいのです
pointer["param1"] = &params.param1;
pointer["param2"] = &params.param2;

22:デフォルトの名無しさん
19/06/17 17:26:50.49 FBMbqlks0.net
リフレクションすれば早い
そうでしょう?

23:デフォルトの名無しさん
19/06/17 18:55:58.16 8WZxEIm50.net
そこでプロパティ型ですよ。

24:デフォルトの名無しさん
19/06/17 21:01:33.96 kTiNst+JM.net
中身が長ったらしい(と言っても200行程度)ラムダ式ってやめたほうがいいですか?
一般的には普通の関数にするんでしょうがヘッダーに書きたくないんです

25:デフォルトの名無しさん
19/06/17 21:09:43.46 Xk2fRyfla.net
その関数に名前がつけれないならいいんじゃない

26:デフォルトの名無しさん
19/06/17 21:20:42.23 qMa7jD650.net
ヘッダーに書きたくないって…、cpp内で関数を宣言/定義してもいいんだぞ

27:デフォルトの名無しさん
19/06/17 22:03:41.11 cgazGIue0.net
ラムダ式の存在意義は、コンパイラではなく人間にとっての可読性の改善にある。
どうも可読性が低いなぁと思ったら、ラムダ式をやめるべきだね。

28:デフォルトの名無しさん
19/06/17 23:09:14.61 W17QvXl10.net
>その関数に名前がつけれないならいいんじゃない
完全にダメなパターンだろ。。

29:デフォルトの名無しさん
19/06/17 23:37:37.03 ZwasbMRy0.net
カッコよくラムダで比較関数を書いたものの、あちこちで同じ比較関数が必要になって結局関数オブジェクトを作る不毛な作業

30:デフォルトの名無しさん
19/06/17 23:40:11.50 D3j4bHhT0.net
>>21
c++使わないのが正解

31:デフォルトの名無しさん
19/06/17 23:44:17.67 DTomrwq60.net
>>29
別にいいじゃない

32:デフォルトの名無しさん
19/06/17 23:44:34.66 DMQyXySba.net
>>29 わざわざ関数オブジェクト作成するくらいならラムダをauto変数にいれるのはどうですか?

33:デフォルトの名無しさん
19/06/17 23:45:22.46 W17QvXl10.net
クロージャの利点っていうのは
クラスとメソッドに比べたらアクセスするデータのスコープがわかりやすく渡せるってことだが
c++だと同時にデータが処分されるタイミングを考えなきゃならなくて逆にむずい。

34:デフォルトの名無しさん
19/06/17 23:49:52.62 x+yzwFNm0.net
大抵の言語でループ変数をキャプチャするlambdaを配列に入れるとかするとはまるよね
c++の場合コピーキャプチャ使えばすむけど、キャプチャ方式指定できない言語だと結構面倒なことになる

35:デフォルトの名無しさん
19/06/17 23:56:31.71 kTiNst+JM.net
>>26
そういえばそうでした…そうします
>>27
ですよね
初歩的な質問ですいませんでした

36:デフォルトの名無しさん
19/06/18 03:06:02.01 0f68xvDd0.net
>>22
リフレクションっていうんですね
このサイトのリフレクションの実装を超簡易的に真似してみました
結局一つずつ追加することになりますが扱いやすさは悪くないはず…
URLリンク(motchy-usk.blogspot.com)
URLリンク(ideone.com)

37:デフォルトの名無しさん
19/06/18 06:13:56.61 3nOE2mBA0.net
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
スレリンク(tech板)
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。

38:デフォルトの名無しさん
19/06/18 08:12:45.67 Y0myl0p20.net
BoostのSerializationはいつ標準ライブラリに入るの?
もしかしてあまり使われてないの?

39:デフォルトの名無しさん
19/06/18 19:32:46.11 lBFdU5Sd0.net
現場で困った早引きできるいい本ってないですかねぇ。今度の現場が初のC++でして

40:デフォルトの名無しさん
19/06/18 20:34:17.73 DSQg2zLR0.net
>>39
URLリンク(github.com)

41:デフォルトの名無しさん
19/06/19 02:12:33.91 /zwjJHhK0.net
そこでマクロですよ。

42:デフォルトの名無しさん
19/06/19 02:37:43.11 0yjsH3hg0.net
>>39
cpprefjp

43:デフォルトの名無しさん
19/06/19 02:46:18.73 8qBvJS/J0.net
URLリンク(postd.cc)
>最近のC++のアップデートにより、コンパイラ開発にかかる時間が大いに短縮されました。
これって具体的には何ですか?

44:デフォルトの名無しさん
19/06/19 02:46:53.30 G/RPQnNp0.net
言語仕様系なら「C++11/14 コア言語」??

45:デフォルトの名無しさん
19/06/19 02:49:21.59 G/RPQnNp0.net
オートとレジスタが死んだこと?

46:デフォルトの名無しさん
19/06/19 03:19:29.65 0DgdOBcz0.net
>>43
GCCのバージョンアップでカスタマイズしやすくなった、とかじゃないの?

47:デフォルトの名無しさん
19/06/19 07:16:37.76 h4x/aIUc0.net
>>43
原文は "The pace of compiler development has increased with the recent updates to C++, ..." で、
C++03時代はバグ修正や最適化の向上がメインだったコンパイラ開発が、C++11以降は
大きな機能追加も伴う規格の改定に追いつくためにペースアップした、という感じかと。
改めて訳すとしたら「最近のC++のアップデートに伴ってコンパイラ開発のペースは増しており、~」ぐらいかな。

48:デフォルトの名無しさん
19/06/19 12:07:30.39 52Ph4xCha.net
>>39
ポケットリファレンス
ただ次の現場がレガシーC++ならあまり参考にならないだろうけど

49:デフォルトの名無しさん
19/06/19 13:56:12.54 20CU6qie0.net
原文なんて読む必要あるの?

50:デフォルトの名無しさん
19/06/19 14:50:44.89 mPuTh16gM.net
実務で原文読んでたら、一生原文読むだけで終わりそう

51:デフォルトの名無しさん
19/06/19 15:09:23.72 hDOeQD4v0.net
大部分の軍人は銃や刀剣の作り方について深く知る必要はない。

52:デフォルトの名無しさん
19/06/19 16:36:38.81 yMqJGQdwM.net
バカな日本語訳や要約を読んで首ひねる暇があれば原文読んだほうが早い

53:デフォルトの名無しさん
19/06/19 17:36:22.46 0yjsH3hg0.net
日本語と同じく速度で英語を読めるようになりたい

54:デフォルトの名無しさん
19/06/19 19:14:55.87 hDOeQD4v0.net
>>53
結局のところ、たくさんの単語を覚えるしかない。数は力だよ。

55:デフォルトの名無しさん
19/06/19 20:55:08.64 DQACirUv0.net
昔に比べれば英文なんてそこら中にあるんだから読めばいい。

56:デフォルトの名無しさん
19/06/19 21:04:53.64 0Op2NPvz0.net
引き籠りが毎日ひたすら英語版のwikipediaを読んでいたらいつのまにかとんでもない英語力が

57:デフォルトの名無しさん
19/06/19 23:14:25.37 hDOeQD4v0.net
昔は民主主義はどうのこうのとか洗脳じみたreaderしかなかったよな?

58:デフォルトの名無しさん
19/06/19 23:58:30.86 pr4rVpx+0.net
C++のスレッドや並行処理でこれ読んどけっていう資料や本などありますか?
pthreadはもう使いたくない

59:デフォルトの名無しさん
19/06/20 00:00:20.59 nbok5ERN0.net
今時はstd::thread使えば済むんじゃね

60:デフォルトの名無しさん
19/06/20 00:11:04.17 lLho4HyI0.net
えーっと、終わりが明確なものは、std::asyncでスレッド投げればいいと思うよ。

61:デフォルトの名無しさん
19/06/20 00:35:57.46 984l1qct0.net
>>58
他の本はしらないが、「Effective Modern C++」には必要なことは書いてある、と思う。

62:デフォルトの名無しさん
19/06/20 04:18:30.46 fuxDfWBK0.net
std::asyncって生まれた瞬間にdeprecated送りになってなかったっけ?

63:デフォルトの名無しさん
19/06/20 11:45:49.37 M/WWMkF90.net
std::asyncはダメなの?

64:デフォルトの名無しさん
19/06/20 12:24:14.76 j9Uc7TedM.net
>>62
なんか別のものと間違えてない?

65:デフォルトの名無しさん
19/06/20 14:54:38.04 bgVEzQPq0.net
11でのasyncの自動でjoinする仕様について
『致命的な問題でありasyncは実用にならない欠陥品。
破壊的変更になっても次の規格で修正すべき』
って声が(一部で)あったんよ(※表現は誇張しております)

66:デフォルトの名無しさん
19/06/20 15:21:36.40 M/WWMkF90.net
std::async使ってみましたがstd::launch::async指定すると自動でjoinしますね
デストラクタで待ってるんですかね
std::launch::defferredを指定するとすぐ返ります
確かに微妙に使いにくいw

67:デフォルトの名無しさん
19/06/20 15:52:17.95 lDaMx0VnM.net
実装依存だから環境によってはスレッド作成すらしてないかも知れない

68:デフォルトの名無しさん
19/06/20 16:18:06.15 lLho4HyI0.net
お約束ですね。

69:デフォルトの名無しさん
19/06/20 17:57:10.96 BT0cBtynM.net
rust使ったほうが楽

70:デフォルトの名無しさん
19/06/20 18:03:13.72 lLho4HyI0.net
コンセプトですよコンセプト。来年に期待しましょう。
unifide call syntaxもその後入ることに期待です。
関数チェインしたいんです!
と、唐突に宣伝を始めるなど。

71:デフォルトの名無しさん
19/06/20 19:15:02.26 EITLfG5y0.net
>>56
不思議なことに、読めるようになると、聞き取れるようにもなるんだよね。
どうしてだろね。
不思議不思議。

72:デフォルトの名無しさん
19/06/20 23:00:29.85 H2FAKrDC0.net
読み書き話すはできるが聞き取れねーんだけど・・・

73:デフォルトの名無しさん
19/06/21 00:28:19.29 5xL7WT2l0.net
読み書きは下手くそでも時間かかってもなんとか通じるからいいけど音声はGoogle翻訳に頼れないのがつら

74:デフォルトの名無しさん
19/06/21 00:32:02.14 5mFcIDLA0.net
Youtubeに音声自動翻訳字幕機能ほしいよねw

75:デフォルトの名無しさん
19/06/21 16:04:18.10 Vcgrp8ZVp.net
再帰を用いずに、
a0=0
an=( an-1×an-1 )+1
の1~6を出せ
ってやつが全然できないので教えてください。

76:デフォルトの名無しさん
19/06/21 16:41:53.38 rC321OP20.net
意味わからん

77:デフォルトの名無しさん
19/06/21 16:49:46.98 vf8hmAK4M.net
0からループ使えばいいだけじゃないの

78:蟻人間
19/06/21 16:52:32.29 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:デフォルトの名無しさん
19/06/21 20:41:29.94 9XN8XoXIM.net
>>75
> 再帰を用いずに、
その意図は?
単にスタック使いたくないだけなら最近のコンパイラにまかせりゃ末尾呼出最適化ぐらいはするから気にすんな

80:デフォルトの名無しさん
19/06/21 21:07:41.81 G412ZpUw0.net
なんかの課題だろ

81:デフォルトの名無しさん
19/06/21 21:12:24.28 o/bRPi0pa.net
平均値も出せないMath.hはクソだと思う理由
1.エクセル関数で簡単にできちゃう
2.電卓でもできることがプログラムになると煩雑になる
3.平均値を出すのにコードを書き換える手間など

82:デフォルトの名無しさん
19/06/21 21:19:00.28 dWgEej/X0.net
平均値の計算は実は簡単ではない

83:デフォルトの名無しさん
19/06/21 21:21:02.30 rC321OP20.net
そもそもmath.hはC言語のライブラリ

84:デフォルトの名無しさん
19/06/21 21:29:06.50 5xL7WT2l0.net
そのエクセルの関数の機能や電卓ツールはmath.hを使って作られている

85:デフォルトの名無しさん
19/06/21 21:48:48.65 0JVOBbqs0.net
浮動小数甘く見過ぎ

86:デフォルトの名無しさん
19/06/22 15:16:07.71 ecTKxvDL0.net
C++コードをC++コンパイラでコンパイルするのと
CにトランスパイルしてCコンパイラでコンパイルするのと
どっちが性能良いんだろう?
トランスパイラの優秀さにもよりそうだが

87:デフォルトの名無しさん
19/06/22 15:35:26.46 XJUTErWD0.net
CがC++よりハイパフォーマンスという前提がありそうだが、そんなことはない

88:デフォルトの名無しさん
19/06/22 16:04:32.30 LOXx/aGE0.net
今時c言語のみのコンパイラなんて見かけないな

89:デフォルトの名無しさん
19/06/22 16:12:52.94 9zxAgsAB0.net
>>86
いったんトランスパイルを挟むと、C++の元のコードをCで表現できる範囲内のコードに置き換えなきゃならないから、その時点で元のコードのままならなできた最適化のうちの一部はできなくなるだろうし、わざわざ効率の悪いコードに置き換えなきゃならないこともあるだろう。
トランスパイルの方が効率が上がる理由はないと思うよ。

90:
19/06/22 16:38:05.67 ICCmixle0.net
現時点で利用可能な C++→C トランスパイラは何ですか?

91:デフォルトの名無しさん
19/06/22 16:53:56.35 3PgdpjOh0.net
llvm

92:デフォルトの名無しさん
19/06/22 17:03:11.19 ecTKxvDL0.net
URLリンク(benchmarksgame-team.pages.debian.net)
C++がCに勝ってる項目があるんだけど信じがたい

93:デフォルトの名無しさん
19/06/22 17:16:00.48 ecTKxvDL0.net
URLリンク(gist.github.com)
こっちだとJavaにすら負けてる
なんなんだろうねベンチマークって

94:デフォルトの名無しさん
19/06/22 17:19:10.62 ecTKxvDL0.net
URLリンク(blog.dhananjaynene.com)
どうやらC++はメモリの確保と解放にコストがかかるから
Javaはまとめて大量にヒープをもってプールして使ってくから
そこでJavaが勝利する場合があるらしい。
C++もメモリをプールしていちいち確保しないようにすればJavaより速くなる。
しかしいちいちそんな事やってられるか?

95:デフォルトの名無しさん
19/06/22 17:20:50.35 VTgUFffK0.net
>>89
c++のままでないとできない最適化って何がある?

96:
19/06/22 17:40:41.59 ICCmixle0.net
>>91
LLVM は C++->C はできないのでは?LLVM のこと、わかってますか?

97:
19/06/22 17:41:56.82 ICCmixle0.net
>>92
C++ の template は #define の親玉のようなものですから、qsort() とかの間接ポインタ渡しでなんとかするしかない C が不利な場合はあるとおもいますよ

98:デフォルトの名無しさん
19/06/22 17:55:09.83 VTgUFffK0.net
あとconstexprで事前計算してるのもあるね

99:デフォルトの名無しさん
19/06/22 18:03:29.07 kVNYu7LP0.net
>>94
allocatorってまさにそのための仕組みなんだけど

100:デフォルトの名無しさん
19/06/22 18:48:22.39 MmmgKpwaa.net
>>95
具体的にはあげられないけど、現在の文脈においてある前提が成り立つことが分かることによりできる最適化が、
(最適化を除いて)同じ動作となる別のコードに置き換えられることにより、元の文脈での前提条件が成り立つことを断定できなくなり適用できないという状況があるのではないかと思う。

101:デフォルトの名無しさん
19/06/22 18:58:11.17 3PgdpjOh0.net
>>96
そちらこそllvmをまるで理解していないみたいですね

102:デフォルトの名無しさん
19/06/22 19:04:53.83 cW7wMvLUM.net
>>100
具体的なのが聞きたい
gccもllvmも中間言語でやる最適化が中心でしょ
そういうc++の特別なフェーズがあるなら興味ある
けど知らずに言ってるなら聞いても無駄だね

103:
19/06/22 19:27:19.94 ICCmixle0.net
>>101
llvm が変換した IR を C コードに戻すことができるのですか?

104:デフォルトの名無しさん
19/06/22 20:26:09.97 /7bwQJ5j0.net
(1) コンストラクタの呼び出し回数削減最適化
(2) クラスが絡むmemory ariasing
(1)はC++かその意味を保った中間言語上で行う必要があり、C言語に逐語訳してからでは手遅れ
(2)も同じくで、クラスの意味を失うような低レベルへの変換を一揆にかけると
クラスFooのthisポインタとかクラス固有のアドレスが他のクラスにもグローバルな関数にも渡っていないことの保証がC言語に逐語訳してからでは手遅れ
な印象
想像なので詳しくは知らん

105:デフォルトの名無しさん
19/06/23 01:02:56.59 PTFzQo+G0.net
初歩的な質問で申し訳ないんですけどcinってどういうもんなんでしょうか
cpprefjp見ると標準入力に対する入力ストリームオブジェクトなんて書いてありますけど
iostream.hで定義されてる「なにか」だとは思うんですがどういう型のものなのかとかそういえば全然知らずに使ってたなって
よろしくおねがいします

106:デフォルトの名無しさん
19/06/23 01:04:06.42 tL1CwC/m0.net
console input

107:蟻人間
19/06/23 01:50:58.01 DI9+Pcki0.net
マニュアルみれ
URLリンク(cpprefjp.github.io)
std::istream
character input

108:デフォルトの名無しさん
19/06/23 02:02:56.98 7pjzMc7c0.net
const inputかと思って親近感がわいていたのに…

109:デフォルトの名無しさん
19/06/23 06:15:35.61 6LMXkq2m0.net
じゃあCトランスパイラのNimはC++より遅いのかな?
URLリンク(github.com)
ぐぐったらマジでそうだった
高水準言語から直接コンパイルした方が速いんだな

110:デフォルトの名無しさん
19/06/23 06:35:12.06 6LMXkq2m0.net
C++でクロスプラットフォームなコードを書くのはどれくらい難しい?
Nimはクロスプラットフォームを主張してるんだけどどっちがいいんだろう?

111:デフォルトの名無しさん
19/06/23 06:38:35.47 xbroTRmV0.net
Qtで書くだけ

112:デフォルトの名無しさん
19/06/23 07:05:57.27 6LMXkq2m0.net
WindowsもLinuxもMacもカーネルがCで書かれてるらしいけど何でC++じゃないんだろう?

113:デフォルトの名無しさん
19/06/23 09:01:51.47 Xq17DW5L0.net
C++がそこまで整備されていなかったから
OSといえばC言語で書くのが当たり前だから
そもそもC言語で十分だから
Linus「C++はレベルの低い奴が使うものだから」

114:デフォルトの名無しさん
19/06/23 09:11:04.02 p0iHiqR80.net
>WindowsもLinuxもMacもカーネルがCで書かれてるらしいけど何でC++じゃないんだろう?
何回質問されたことだろうか。

115:デフォルトの名無しさん
19/06/23 10:55:33.78 6LMXkq2m0.net
OSじゃなくて組み込みでも大部分Cでしょ?
なんで?

116:デフォルトの名無しさん
19/06/23 10:57:16.59 6LMXkq2m0.net
URLリンク(news.mynavi.jp)
>組み込みシステム向けプログラミング言語の中で「一番好きな言語」としても「C」(29.1%)を選んだ人が最も多く、これに「Microsoft Visual Basic」(16.8%)、「C++」(15.3%)が続いた。

117:デフォルトの名無しさん
19/06/23 11:17:45.87 6LMXkq2m0.net
Linus TorvaldsのC++批判は正しかったのか
URLリンク(developers.srad.jp)
C++の最大の問題は学習が難しい事か。
たぶんC++を学ぶ時間でCとJava両方学べるね。

118:デフォルトの名無しさん
19/06/23 11:20:59.77 JKCTeXCU0.net
超堅牢に作らないといけないから、
見えないところでコピコン大量に走ったりするような言語は避けられるんじゃないか
ヘッダーに実装書き散らしてるのよくないね
OSはバイナリ境界意識しないといけないし
まあどのみち標準ライブラリは使えないけど

119:デフォルトの名無しさん
19/06/23 11:28:01.94 6GXr3JQp0.net
最近BS/CSが映らなくなった人はここを見ると良い
【B-CAS改造】Bカスカード2038化書き換えツール配布所 205
スレリンク(avi板:1番)-100

120:デフォルトの名無しさん
19/06/23 11:39:08.67 4lSN7b3Y0.net
URLリンク(nlab.itmedia.co.jp)
人の顔を生成するaiはどうやって作れますか?

121:デフォルトの名無しさん
19/06/23 11:39:50.16 Xq17DW5L0.net
>>115
各ベンダーがサポートするにはC言語がちょうどいい規模だから

122:
19/06/23 12:03:58.80 DC/NnmXU0.net
>>112
C++ のデフォでのマングリングが外部結合(リンク)を阻害するから、に一票

123:デフォルトの名無しさん
19/06/23 12:09:47.82 LchWS7uN0.net
ちがう
ちがうなぁ
ポインタがあって適度に奥が深いから、だ

124:デフォルトの名無しさん
19/06/23 12:22:24.97 BQwXISYN0.net
メモリの制御が難しいからじゃね
最近やっと標準でまともなメモリ管理の仕組みを作り込めるができるようになったくらいだし

125:デフォルトの名無しさん
19/06/23 14:34:24.36 hhhlIxdX0.net
昔からメモリ制御なんてCと同じことはできるだろ

126:デフォルトの名無しさん
19/06/23 14:56:33.46 WUJS/EaT0.net
今のC++なら十分使えるよね
継承やSTL、shared_ptrみたいなことをCで実装してるわけで
それを考えたらC++で良い

127:デフォルトの名無しさん
19/06/23 16:01:29.78 EoSayXaXa.net
プログラムの一部にでもRTTIを使用した部分があるとプログラム全体のパフォーマンスが低下する?

128:デフォルトの名無しさん
19/06/23 16:37:25.79 p0iHiqR80.net
まあc++でちゃんとしたもの組もうと思ったらデストラクタをしっかり用意するってのが
大事なわけだが、かなりいろんな状況に対応したものにしないとまともに使い物にならん。
これはメタプロバカが思ってるほど難易度は低くない。

129:デフォルトの名無しさん
19/06/23 16:59:21.61 7M38Ae5l0.net
>>127
コンパイラオプションでRTTIを無効化するとデータ量が減るのでパフォーマンスが上がる
→つまり一部でも使ってると低下する
まぁ今時は気にする必要無いと思うけど
速度は実測が基本

130:デフォルトの名無しさん
19/06/23 17:38:56.55 hhhlIxdX0.net
自前でデストラクタ書くなよ

131:デフォルトの名無しさん
19/06/23 18:20:15.96 xbroTRmV0.net
えっ

132:デフォルトの名無しさん
19/06/23 18:29:28.72 BQwXISYN0.net
ちゃんと例外を投げないデストラクタを書くんだぞ
fcloseの失敗はもみ消せ
どうせ回復などできない

133:デフォルトの名無しさん
19/06/23 21:01:47.41 EoSayXaXa.net
>>129
やはりそうですか、ありがとうございます
速度は今試せないのでまたこんどやってみます

134:デフォルトの名無しさん
19/06/23 21:13:15.69 PTFzQo+G0.net
>>107
えーっとcinってのはistream型のオブジェクトってことでいいんですかね
externをいまいちよく分かってないですがヘッダ内で定義されてるから他のファイルでも使えるとという認識で大丈夫ですかね

135:デフォルトの名無しさん
19/06/24 07:55:10.22 6Zff8TGS0.net
1.思考停止してそのまま使う
2.外界から齎される無限長の情報列がストリームである、と理解する
好きな方を選べ

136:デフォルトの名無しさん
19/06/24 15:40:31.96 DnOtpTuq0.net
何でC++使ってる職場少ないのにプログラム板で上位なの?

137:デフォルトの名無しさん
19/06/24 15:56:59.67 OO73LhBR0.net
すく・・・ない・・・?

138:デフォルトの名無しさん
19/06/24 16:10:16.23 vRXjoyqNM.net
Web業界の人とかなんだろ

139:デフォルトの名無しさん
19/06/24 17:32:13.27 i4YKAGQ3r.net
「C++実践プログラミング」って良い本?

140:デフォルトの名無しさん
19/06/24 18:02:59.78 HUc+KEird.net
実は多いだろ?
社内に囲われているだけで

141:デフォルトの名無しさん
19/06/24 22:05:46.06 qyAEE2sQ0.net
C++プライマーとaccelerated C++一通りやってeffective C++始めたんだけどすんごくめんどくさーい
acceleratedの後半あたりから思ってたんだけど純粋なロジックやテクニック以外のところで考えなきゃいけないこと無限にあってできるようになる気がしない
実際に開発になってクラスやインターフェイスの設計ってみんなこんな色々考えてやってんの?って
競プロっぽい問題だったりちょっとしたもの作るのは割と面白いけどなんかもう萎えてきた
世の中のプロってやっぱ(modern) effective C++とかmodern C++ designとかその辺りは基礎教養レベルまでもっていってるもんなの?
2年目のペーペーだけどとてもC++のプロになれる気がせんわ

142:デフォルトの名無しさん
19/06/24 22:08:08.69 tWJeInAS0.net
そのへんはさらっと何が書いてあるか見ておいて、実際書くときに関係ある部分を参照する本では?

143:デフォルトの名無しさん
19/06/24 23:54:52.99 4vQIe5sT0.net
>>141
それは思うわ
結局その辺の不満を改善したのがJava以降のオブジェクト指向言語だから
今C++を勉強すると面倒すぎると感じるはず

144:デフォルトの名無しさん
19/06/25 00:51:00.92 rXRUIvly0.net
必要だと思うもんだけ使えばええがな

145:デフォルトの名無しさん
19/06/25 01:40:27.96 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:デフォルトの名無しさん
19/06/25 07:42:37.27 p22LimGY0.net
>>132
回復できないエラーでもユーザーに通知する余地はあるでしょう。最悪abort()でも、もみ消すよりはマシ。

147:デフォルトの名無しさん
19/06/25 12:36:52.78 U+wxsv9j0.net
JavaもC++も大して変わらないと思うけど

148:デフォルトの名無しさん
19/06/25 12:59:41.31 gYxx7iw3p.net
>>141
modern C++ designはメタプログラミングに片足突っ込んでるからだいぶ後回しでいいと思う
考えること無限にある、は同意だけど優先順位低いものは忘れた方がいいんじゃないかね(特に、ループ回しもしない箇所の速度効率とか

149:デフォルトの名無しさん
19/06/25 17:37:46.05 kxXa+TrUd.net
むしろjavaの方がいろいろ面倒くさくね

150:デフォルトの名無しさん
19/06/25 17:56:57.79 Cc6pu6kp0.net
使用する概念としてはJavaとCを足してさらに多重継承とか演算子オーバーロードとかを足した
のがC++という印象だった。

151:デフォルトの名無しさん
19/06/25 18:01:11.39 Cc6pu6kp0.net
プログラミング言語 収入 ランキング
とかでぐぐると
難しい上に重要なはずのC++が年収ランキングで10位以内に無いんだが

152:デフォルトの名無しさん
19/06/25 18:15:31.86 U1S86Wri0.net
統計の取り方が不明

153:デフォルトの名無しさん
19/06/25 18:20:11.68 4vpt+Hzy0.net
>>140
多いってのはどこで集計されて発表されてるの?

154:デフォルトの名無しさん
19/06/25 18:30:38.49 U+wxsv9j0.net
一発当てて稼げてるのがwebサービスやってる人たちだから

155:デフォルトの名無しさん
19/06/25 19:12:58.12 p4xx1Je/a.net
C/C++まともに書ける人は貴重になってきてるのに何故か低いよねえ
特定の会社に行くしかない気がする

156:デフォルトの名無しさん
19/06/25 19:18:47.91 S67hXFxm0.net
>>151
経済の世界でよくあること:
・高度な能力を持つ人は給与ではない部分にやりがいを感じるので給与に
 関係なく集まってしまう。アニメーターは絵がものすごくうまいのに、
 マクドナルド店員よりも自給が低い。「やりがい搾取」。
・高度な分野は、人材も高度な人が集まってくるので需要よりも大き過ぎる過剰な
 成果を出してしまうので給与が下がるらしい。プログラマや数学者、
 コンピュータ業界なんかは大体、そんな感じのところがある。

157:デフォルトの名無しさん
19/06/25 19:21:25.34 Xe7ucSUW0.net
高度な分野においては、とても僅かな一握りの人が、過大な成果を出してしまう。
すると、大体の場合、給与が下がるらしい。世界のわずか数人が異常なほど大きな成果を
出しているとか。

158:デフォルトの名無しさん
19/06/25 19:28:18.56 U+wxsv9j0.net
みんな勘違いしてるが儲かる商売してるかどうかだけが稼ぎに関係している
儲からない商売に超絶技巧を投入しても意味ない
サービスで一発当てる方が100倍稼げる

159:デフォルトの名無しさん
19/06/25 19:43:08.34 0zPp4OkO0.net
というか自分のビジネス思いつくタイプでもないプログラマーが稼ごうと思ったらなるべくニッチな言語を探していくべきなんだと思う
C/C++なんてメジャーどころは一番だめなんじゃないか。まだまだ人が少ないか、書ける人がどんどん減っていきそうなところを

160:デフォルトの名無しさん
19/06/25 19:50:04.75 U1S86Wri0.net
COBOLは意外と稼げるらしい

161:デフォルトの名無しさん
19/06/25 20:09:29.07 U+wxsv9j0.net
>>159
違うぞ稼げる商売やってる人に乗っかるのが正解
現在儲かってしょうがない会社に入るか今後そうなる会社に入っておくしかない
専門分野は関係ないが一発当てようがない業界というのはあるからそういうところは目指さない方がいい

162:
19/06/25 21:00:35.29 eaNcyZwN0.net
言語は表現手段にすぎないので、言語で分野が決まってしまう現状には疑問を持ちます
少なくともライブラリーは統一されるべきだと昔から夢想してきています

163:デフォルトの名無しさん
19/06/25 21:02:24.65 i1Zv6l/dM.net
現実にあったんじゃよCOMというものがな

164:デフォルトの名無しさん
19/06/25 21:03:41.95 zDe7yE4Q0.net
ライブラリはCインターフェースさえあれば全てのまともな言語から呼べるから問題ない

165:
19/06/25 21:07:14.96 eaNcyZwN0.net
>>163
OLE は重過ぎるんじゃないでしょうか?単に名前と仕様が「ある程度」統一できればいいかと考えています
でも OLE はもう一度調べなおしてみます、キーワード提供ありがとうございます

166:
19/06/25 21:07:47.47 eaNcyZwN0.net
>>164
OO であるべきでは?

167:デフォルトの名無しさん
19/06/25 21:10:43.33 6yREXBxQ0.net
素朴な疑問なんだけど
オブジェクトをshared_ptrで管理するとき
そのオブジェクトから他のオブジェクトにポインタを渡したいときってどうするの?
コンストラクタ以外のメソッドからならenable_shared_from_thisで
生なthisポインタからshared_ptrを生成して渡せばよいけど
コンストラクタだとそれも無理だよね(shared_ptrが作られるのはnewの後だから)
どうするの?

168:デフォルトの名無しさん
19/06/25 21:11:27.40 paQRKRTX0.net
ポインタ指向プログラミングとオブジェクト指向プログラミングは根本的に相性が悪い
これがC++高難易度化の一要因

169:蟻人間
19/06/25 21:13:45.53 ayyd1Kg3d.net
>>167
make_sharedじゃね?

170:デフォルトの名無しさん
19/06/25 21:15:54.14 6yREXBxQ0.net
てかさ
自分自身のスマポを
外部から渡してもらわないと、自分では知れないってのは
設計ミスなんじゃね?
当たり前、JavaやC#だとそんな制約ないからなぁ

171:デフォルトの名無しさん
19/06/25 21:18:19.51 p4xx1Je/a.net
代入がメンバのコピーという仕様が全ての複雑さの元凶
互換性のために仕方なかったとはいえ
おかげで完全に動くクラスをつくるのが凄まじくしんどい
それを改善しようとしたJavaは全てポインタのコピーというふうに割り切ったが
Optinalを導入しなかったせいかヌルポの山を築いた
それを改善しようと
Rustは全てがムーブという世界を作ったがまだ受け入れられるには早かった

172:デフォルトの名無しさん
19/06/25 21:24:24.92 6yREXBxQ0.net
>>171
これまた不思議なもんで
Cからして配列は参照渡しなのに構造体は値渡しだからねぇ
Cの構造体が配列みたいにアクセスするとポインタに成り下がる仕様だったのなら
C++もまた違ってただろうねぇ
どちらがいいかは分からないが

173:デフォルトの名無しさん
19/06/25 21:26:08.00 i1Zv6l/dM.net
えっ
普通は呼吸をするように
const T& var
て書く様に訓練されてるだろ?

174:デフォルトの名無しさん
19/06/25 21:29:04.07 U+wxsv9j0.net
任意にコピーとポインタとムーブを使い分けることになんの苦労も無いと思うけど

175:
19/06/25 21:29:56.71 eaNcyZwN0.net
>>172
私は逆を考えていました、すなわち、配列ですら値渡しであるべきかと
参照渡しにしたいのなら、そのすべてに * をつけて明示するべき

176:デフォルトの名無しさん
19/06/25 21:32:48.81 6yREXBxQ0.net
そうではなくて
構造体において何も考えずに代入した場合
実体のコピーになるって話では
その点、配列では実体のコピーにならないので
JavaやC#のオブジェクトに近い仕様で
なかなか先鋭的

177:デフォルトの名無しさん
19/06/25 21:44:51.24 6yREXBxQ0.net
そんなことより
コンストラクタで自分自身のshared_ptrが欲しい時
どうするの?
欲しい理由としては、どっかシステム的なところにattachしたり
自分のコンポジションした子供たち?に渡したり
そういうことをコンストラクタですっかりしたい場合どうすんの
enable_shared_from_thisを継承して二段階初期化ってのもかっこ悪いし
(↑生成する側がshared_ptrを使ってくれなかった場合
 クラッシュするってのは置いておいてさ)
そもそも実行時型情報なんて反則が許されるなら
仮想関数付きのオブジェクトは実行時型情報のどこかに参照カウンタを隠し持っている
って仕様でもよかっただろ?
スマポ側が参照カウンタを持っているってのは一見賢そうだけど…
上手くいかないパターンもあるよね

178:デフォルトの名無しさん
19/06/25 21:48:45.68 6yREXBxQ0.net
>仮想関数付きのオブジェクトは実行時型情報のどこかに参照カウンタを隠し持っている
↑これはちょっと不正確だな
vtableと一緒に参照カウンタ~
が正解かな

179:デフォルトの名無しさん
19/06/25 21:52:05.85 zDe7yE4Q0.net
ファクトリでやれ

180:デフォルトの名無しさん
19/06/25 21:54:23.16 jeBecXDk0.net
>>177
create関数でshare作ってから後の構築処理して返すしかないんじゃね

181:デフォルトの名無しさん
19/06/26 00:01:25.34 7raG/MY10.net
有害でしかない美意識は投げ捨ててshared_form_this使えって話になるだろ

182:デフォルトの名無しさん
19/06/26 00:07:57.67 HPTAJdxK0.net
それでもコンストラクタでは使えないから二段階初期化になるな

183:デフォルトの名無しさん
19/06/26 00:27:47.77 3ywCP3+N0.net
ちょっと質問なんですが、どういうときに必要になるんですか?

184:デフォルトの名無しさん
19/06/26 01:38:39.12 kcNPbTTh0.net
Intel、新プログラミング言語「Data Parallel C++」を開発中
2019/06/25 11:08 後藤大地
URLリンク(news.mynavi.jp)
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:デフォルトの名無しさん
19/06/26 04:17:13.86 0Jy9MjGr0.net
結論
使えない

186:デフォルトの名無しさん
19/06/26 06:38:56.80 LU29nklf0.net
>>177
相互参照自体がクソ汚い設計なんだからツールがいくら綺麗になってもダメ。
諦めてthis渡せや。

187:デフォルトの名無しさん
19/06/26 07:32:00.47 ICIJHbsn0.net
>>184
OpenCLとの違いは何

188:デフォルトの名無しさん
19/06/26 07:40:21.71 0Jy9MjGr0.net
異なるアーキテクチャに対応
高額
インテルサポートあり

189:デフォルトの名無しさん
19/06/26 08:12:04.77 x0x3rSL40.net
OpenCLがずっと停滞気味なのに業を煮やしたんじゃね

190:デフォルトの名無しさん
19/06/26 12:31:58.13 ghoq0O6D0.net
Intelは、CPU内臓のGPUを自前で作ってるから、そのための開発環境は
重要で、実行時のパイプライン関連のさまざまな高速化においても、
共通の技術が使えるので開発するメリットは大きいのだろうと思う。
レジスタ割付、ループ関連の最適化などは、CPUを実行する段階でも
似たことが行われる。

191:デフォルトの名無しさん
19/06/26 12:39:28.47 Lh4/MgoYa.net
そんなくだらんライブラリ作ってる暇あったらCUDA互換のランタイムだせーい

192:デフォルトの名無しさん
19/06/26 12:57:05.45 ghoq0O6D0.net
言語ではなくて、テンプレートライブラリなの?

193:デフォルトの名無しさん
19/06/26 17:24:56.62 hivlE/XW0.net
海外のニュースサイト見ても言語と書いてある


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch