◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C++相談室 part152 ->画像>3枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1594528940/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん
2020/07/12(日) 13:42:20.13ID:TX1mpKr6
http://2chb.net/r/tech/1589424805/
2デフォルトの名無しさん
2020/07/12(日) 13:42:53.37ID:TX1mpKr6
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part151
http://2chb.net/r/tech/1589424805/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://2chb.net/r/tech/1556142878/

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

テンプレここまで
3デフォルトの名無しさん
2020/07/12(日) 13:47:57.74ID:CSJoJ4mx
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
4デフォルトの名無しさん
2020/07/12(日) 14:06:26.23ID:tkU6cDNN
>>3
void君まだ生きてたの?
5デフォルトの名無しさん
2020/07/12(日) 19:59:20.10ID:7bgQZ4MZ
-Wl,--start-groupって-Wl,--end-groupで閉じなくてもいいの?
6デフォルトの名無しさん
2020/07/12(日) 22:51:08.59ID:CSJoJ4mx
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします!
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします!
7デフォルトの名無しさん
2020/07/13(月) 04:14:20.50ID:3a05UOb2
ある整数nが他の整数の4乗数であることも確かめられない奴らが常駐してるC++スレに何の意味があるのだろうか、、、
素直にsqrtなりpowなり使えば良いのに無意味に二分探索とか言い出す奴まで現れる始末
8デフォルトの名無しさん
2020/07/13(月) 10:33:53.39ID:WBkWHxcT
#include <stdafx.h> が入ってると消したくなる
9デフォルトの名無しさん
2020/07/13(月) 10:35:47.94ID:WBkWHxcT
>>7
流れ観てて思ったけど
整数の2乗数じゃないと判った時点で整数の4乗数でないことは明らかで打ち切りっていうレスが無かった気がする
10デフォルトの名無しさん
2020/07/13(月) 12:07:41.92ID:a0LpYw/5
>>8
VS2019だと入らないぞ
11デフォルトの名無しさん
2020/07/13(月) 12:09:59.97ID:WBkWHxcT
それ5ちゃんは2ちゃんじゃない5ちゃんだってのと同じ匂いがする
12デフォルトの名無しさん
2020/07/13(月) 17:47:10.79ID:17o/9bhC
>>9
前スレッドで
http://2chb.net/r/tech/1589424805/998
は、そのつもりで書いたんだけど、上手く伝わらなかったみたいね。
13デフォルトの名無しさん
2020/07/13(月) 18:28:35.47ID:fGz9l1yv
4乗数は例えばmod5で必ず0か1なので234だったら弾ける
他にもいろんなmod使ってアーリーリジェクトするのが速い
まあそれだけで判定はできないから最後は真面目に確かめるんだけど
14デフォルトの名無しさん
2020/07/13(月) 19:32:08.80ID:5XlUrV9a
整数の4乗だろ?
どのレンジの値までサポートする必要があるのか
この辺に意識行かないやつは初級者
15デフォルトの名無しさん
2020/07/13(月) 22:49:46.38ID:vn0aaIQL
>>12
知ってた
16デフォルトの名無しさん
2020/07/13(月) 23:35:03.61ID:hjMalhfu
template <class R>
R hoge(std::function<R(int)> func, int val) {
return func(val);
}

みたいな、std::functionの戻り値の型がテンプレートな関数があったときに、第一引数のfuncに渡す引数を
「std::function<int(int)> f = [](auto a) {return 10 * a; }」
と明示的に「std::function」にすると、Rも型推論が効いて「hoge(f, 10)」と呼べますが
ラムダ式を直接渡すと、Rの型推論が働かず「hoge<int>([](auto a){...}, 10);」と
テンプレートの型を明示しない限り、MSVC2019(std:c++latest)ではコンパイルエラーになります。

こういう場合にラムダ式から型を推論できる関数を作る方法ってないですかね?
ラムダ式がいければ、std::functionは渡せなくなってもいいのですが。
17デフォルトの名無しさん
2020/07/14(火) 00:18:40.13ID:zGM7yt58
aがintであることはどこから推定するの?
18デフォルトの名無しさん
2020/07/14(火) 01:20:42.44ID:BX6Ieja2
難しく考えすぎ

template <class F>
auto hoge(F func, int val) { return func(val); }
19デフォルトの名無しさん
2020/07/14(火) 07:41:56.85ID:XNlphOJb
[](auto a) -> int {return 10 * a; }
[](auto a) -> std::common_type_t<int, decltype(a)> {return 10 * a; }
20デフォルトの名無しさん
2020/07/14(火) 19:51:39.83ID:XydZfji4
>>17-19
ありがとうございます。やりたかったことができました。
ラムダだからって変にstd::functionとか入れずに、関数まるごとテンプレートに委ねればよかったんですね。
どうも関数を特別視してしまっていたようです。
21デフォルトの名無しさん
2020/07/20(月) 23:03:27.73ID:6gjYUAkG
保守
22デフォルトの名無しさん
2020/07/22(水) 21:14:41.10ID:KUJQPOij
std::list<int> l = {0, 1, 2};
auto it = l.begin();
// auto x = move(*it);
l.erase(it);
// この後 x にムーブしてればいいけど it を参照するのは未定義動作?
// pop が削除した要素を返してくれればいいのに
23デフォルトの名無しさん
2020/07/22(水) 21:27:49.98ID:ZfR2rpjD
>>22
まるで正常
24デフォルトの名無しさん
2020/07/22(水) 23:12:53.61ID:tg3nt/Qu
コマンドライン引数でブーリアン渡したいときってどうするん
25デフォルトの名無しさん
2020/07/22(水) 23:46:58.46ID:xb0kAqoI
コマンドライン引数は文字列
boolとかintとか渡せない
「"1000"を1000と解釈してintを渡せる」って言うなら、
同様に"true","false"を解釈すればいい
26デフォルトの名無しさん
2020/07/23(木) 00:41:36.09ID:4rdlbzE6
getopt
27デフォルトの名無しさん
2020/07/23(木) 06:09:28.37ID:fF4wk4d/
オプション文字列を渡す作法のような話なら
-f1, -f0 や --flag, --no-flag の形で渡すかな。
簡易的には -f と指定すれば有効、指定しなければ無効、って感じ。
28デフォルトの名無しさん
2020/07/23(木) 08:45:05.41ID:SrgI206W
結局はORマッパーのような問題に行きつく
29デフォルトの名無しさん
2020/07/25(土) 02:54:53.84ID:hso1irDO
お前らってマゾだよね
30デフォルトの名無しさん
2020/07/27(月) 02:23:48.14ID:kndJPXCH
ある変数に対してプロセスAからは書き込みしかしないで別プロセスBは読み込みしかしない場合
この変数に対してstd::atomic<>する必要ありますか?
31デフォルトの名無しさん
2020/07/27(月) 02:50:40.88ID:OPuipBq/
あります
32デフォルトの名無しさん
2020/07/27(月) 03:16:39.82ID:iDNWe3mh
>>30
プロセスとスレッドの違いは理解している?
33デフォルトの名無しさん
2020/07/27(月) 05:33:26.23ID:EghVn5lV
「プロセス」は「スレッド」と読み替えるとして
自前で排他してもいいし
「ある変数」が例えばintで今のPCのCPUなら元々アトミック
そういう意味では「std::atomic<>する必要」はないよ
34デフォルトの名無しさん
2020/07/27(月) 07:02:13.52ID:QTF0cexn
すstd::atomic<>なら型に応じた特殊化がなされていることが気体できるのでは知らんけど
ていうかTによらずアクセスの度に馬鹿正直にcritical sectionに出入りされる実装だったら嫌すぐる、、、
アーキテクチャーに応じて確実に作動するDouble-Checked LockingとかTripple-Checked Lockingとかになって
最適なパフォーマンスが出るコードにしていただける処理系であってホスイ
35デフォルトの名無しさん
2020/07/27(月) 07:31:29.47ID:9eU73XOZ
>>30
別途排他制御をしていないなら、コンパイル時や実行時に勝手に実行順序並び替えて誤動作する可能性があるから、atomicにしておいたほうがええよ
36デフォルトの名無しさん
2020/07/27(月) 08:17:24.84ID:7+Lkkq8+
読み込む側が壊れた値でも構わないなら要らない
37デフォルトの名無しさん
2020/07/27(月) 08:47:53.90ID:eo3eOCcP
>>36 未定義動作の結果はそれだけでは済まないかもしれない。
38デフォルトの名無しさん
2020/07/27(月) 11:14:28.62ID:vNtx9fDh
DRAMがリフレッシュされなくなるとかか
39デフォルトの名無しさん
2020/07/27(月) 11:45:04.43ID:HTI8upPJ
プロセスならOS提供の共有メモリ使うから、未定義動作の範疇外じゃね
40デフォルトの名無しさん
2020/07/27(月) 12:06:22.37ID:arCdAL0/
>>30
結論は必要がある(もちろん環境依存しないのが前提として)
>>33は間違い
たとえCPUがload/storeのatomic性を保証していたとしても
コンパイラが代入を1 instructionにする保証がない
なのでLinux kernelでは(C言語だけど)WRITE_ONCEみたいな一見意味不明なマクロが用意されていたりする

マルチプロセスでlock-freeを自作するのは勉強になるけど、たぶんミスるから
製品とかでは使わないのをお勧めする
41デフォルトの名無しさん
2020/07/27(月) 20:51:46.94ID:EghVn5lV
>>40
CPUがstoreのatomic性を保証しているのに
コンパイラが代入を2 instructionにできるの??
俺には意味不明だ
42デフォルトの名無しさん
2020/07/27(月) 22:29:41.65ID:SfaUTK+M
>>41
できるできないならできるだろ
例えば32bit整数を16bit毎に書き込むようにすればいいだけだし
そんな意味のないことをするコンパイラがあるかどうかは知らんけど
43デフォルトの名無しさん
2020/07/27(月) 23:14:45.53ID:OPuipBq/
コンパイラが独自仕様で明示的に保証してるなら別にいいよ
特に何も書いてないなら保証されてないと思うべき
44デフォルトの名無しさん
2020/07/27(月) 23:30:43.14ID:arCdAL0/
>>42
x86だと即値の場合16bit x2のコードが吐かれる場合があるらしいよ
45デフォルトの名無しさん
2020/07/28(火) 15:19:44.89ID:XpAjM/1U
https://ja.wikipedia.org/wiki/Intel_8088
https://ja.wikipedia.org/wiki/Intel_8085
46デフォルトの名無しさん
2020/07/28(火) 15:58:37.01ID:2ZofU2zv
forで少しの(255以下)ループ回すときにint i=0;i<10;++iとかするけどなんで
2バイトのintでとって1バイトのunsigned charじゃあまり取らないんだろ?
(typedefで宣言すればタイプ数少なくできるし・・・)
47デフォルトの名無しさん
2020/07/28(火) 16:02:12.30ID:0Pr5T/O4
unsigned char でループしても良いけど
結局 int にされるでしょ
それより int が 2byte っていつの話よ
48デフォルトの名無しさん
2020/07/28(火) 16:05:58.50ID:2ZofU2zv
>>47
すいません
>結局 int にされるでしょ
ってとこ解説お願いします

マイコンでc使うときにメモリ節約しようと思って
そもそも組み込み系のスレで質問しろって話ですが・・・
49デフォルトの名無しさん
2020/07/28(火) 16:12:26.94ID:JnUAmZD/
>>48
charは算術式の中ではintに拡張されるって話だ
char a, b;
printf("%u", sizeof(a)); //1, これは左辺値で算術式ではない
printf("%u", sizeof(a - b)); //2, 減算の算術式
printf("%u", sizeof(+a)); //2, 単項プラスの算術式
50デフォルトの名無しさん
2020/07/28(火) 16:16:35.96ID:2ZofU2zv
>>49
なるほど

ちなみにこれで最後の質問ですが
forループは自分が間違えてましたしint使ったほうがいいと理解しました
それでビット演算でのみ使う場合においては
intにされることはないという認識でいいでしょうか?

(ビット演算で使いたいと思って調べてたらふと>>46みたいな疑問が湧いたので)
51デフォルトの名無しさん
2020/07/28(火) 16:18:26.72ID:JnUAmZD/
>>46
charの拡張はcpu内部のレジスタで行われるだけで
メモリにはその痕跡が残らない
だからintをunsigned charにすればメモリを節約する効果は
期待できる(ただし保証はされない)

俺も実はforの制御変数は[0, 256)の範囲内でもintを使うが
正直に本音を言うと長い長いtypedef unsigned charをタイプせずに
短くintで済むからだ
普段建前ではintは自然なサイズの整数だからとか言い訳してるけどね
52デフォルトの名無しさん
2020/07/28(火) 16:20:24.69ID:2ZofU2zv
>>51
なるほど
丁寧に解説してもらい助かりました
スッキリしました、ありがとうございます
あとメモリの節約には効果ありそうなのは目論見通りなのでよかったです
53デフォルトの名無しさん
2020/07/28(火) 16:23:12.92ID:tckSAZy5
>>52
https://ideone.com/OcVOVt
54デフォルトの名無しさん
2020/07/28(火) 16:23:36.08ID:JnUAmZD/
>>50
されるよ

たとえば、こういう場合
char c = 0;
c = c | 1;

部分式 c | 1 は ((int)c) | 1 で計算され結果はint
c = (char)結果; という具合にcharに戻して書き込む

c は00000000
c | 1 は0000000000000001
=は00000001にしてからを書き込む
一旦intにされたものをcharに戻して書き込んでいるが
普段はこのことを忘れていても正しいコードが書けてしまう
55デフォルトの名無しさん
2020/07/28(火) 16:27:57.80ID:JnUAmZD/
おっと、ここC++スレやん
Cスレのつもりだったw

C++の場合はここ気をつけて
void func(char); //#1
void func(int); //#2
char c = 0;
func(c | 1); //#2
56デフォルトの名無しさん
2020/07/28(火) 16:28:23.54ID:2ZofU2zv
>>53
>>54
ありがとうございます

されるんですね・・・
う〜ん、やっぱ大人しくint使います(メモリ切り詰めるほどでないなら)
57デフォルトの名無しさん
2020/07/28(火) 16:29:57.66ID:2ZofU2zv
>>55
丁寧にどうもです
いや、自分が悪いっす
そもそもここで聞くなよという話なので
(ここが一番はやく回答してくれるので申し訳無さ半分で質問してます・・・)
58デフォルトの名無しさん
2020/07/28(火) 16:36:03.22ID:Vr5x1U6Z
>>51-52
「メモリを節約する効果は期待できる(ただし保証はされない)」っていうより
「メモリを節約する効果は期待できない(ただし可能性はゼロではない)」でしょ。

ほんとうにメモリ節約のためにやるなら実測のうえ結果をコメントで添えてたのむ。
59デフォルトの名無しさん
2020/07/28(火) 16:41:14.06ID:JnUAmZD/
>>58
sizeof(int) == 2な環境を使ってる質問者だぜ?
おまえさんターゲットをエスパーできるのか?
できたとして同じコンパイラ持ってるか?
60デフォルトの名無しさん
2020/07/28(火) 16:43:35.65ID:XpAjM/1U
(ただし可能性はゼロではない)
61デフォルトの名無しさん
2020/07/28(火) 16:51:19.06ID:FdPQCZeu
>>56
char使ってメモリ節約ってのは基本的にクラス・構造体のメンバとか配列、かつそれらが多用される場合ね
単発の一時変数をcharにしたところでそれがスタックに置かれたとしてもアライメントで何も節約できてないどころか
整数拡張のオーバヘッドで逆に非効率になる
引数にchar使うのも性能上は意味がない
組み込みマイコンなら特に逆アセは読めるようになった方がいいよ
62デフォルトの名無しさん
2020/07/28(火) 17:03:52.96ID:2ZofU2zv
ちょっと追加で調べて納得したのはcharを扱うメリットとしては
int ポインタ型に +1 した際、何バイト進むのかは処理系に依存するけど
char ポインタ型なら必ず1バイトだけ進むから
その場合においてメリットがあるからchar使えってことですかね?
63デフォルトの名無しさん
2020/07/28(火) 17:08:44.62ID:XpAjM/1U
>>62
それ最初の質問と何か関係あるか?
64デフォルトの名無しさん
2020/07/28(火) 17:15:03.80ID:JnUAmZD/
>>61
別に逆汗しなくても汗吐かせればええやん
けっこう懇切丁寧にコメント入れてくれたりするぞ
65デフォルトの名無しさん
2020/07/29(水) 00:51:49.61ID:YVVFldw+
デバッガでトレースしながら読むから逆アセだな
アセンブラ吐かせるってそれ用にビルド設定用意するのか?
66デフォルトの名無しさん
2020/07/29(水) 04:47:56.76ID:8sSsdFab
泥縄で設定変えるのイヤだから
端っからアセンブラ経由にしてる
67デフォルトの名無しさん
2020/07/30(木) 06:46:58.19ID:82YOHtIh
C++でUnicodeを扱いたいんですがライブラリを探したほうが良いですか?
なにか定番のライブラリありませんか?
68デフォルトの名無しさん
2020/07/30(木) 07:59:44.22ID:h+N/x6i+
ICU一択でしょ
69デフォルトの名無しさん
2020/07/30(木) 21:53:30.81ID:82YOHtIh
>>68
返信遅くなってすみません
ICU把握しました、ありがとうございます
70デフォルトの名無しさん
2020/07/31(金) 10:43:54.52ID:N0eufbNj
逼迫中
71デフォルトの名無しさん
2020/07/31(金) 13:57:05.58ID:RNPOl6hd
学術の巨大掲示板群 - アルファ・ラボ http://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ

☆ VM + ASM を書いた (C#, DX) * x86 ではない!
http://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
http://up.x0000.net/files/TMallocTest.zip
72デフォルトの名無しさん
2020/08/08(土) 00:45:58.56ID:0OMeneB5
保守
73デフォルトの名無しさん
2020/08/10(月) 15:43:27.57ID:fh5hS3eV
UDPで、メッセージをブロードキャストすると該当するコンピューターがユニキャストで応答するんですが、
このとき、シングルスレッドで、ブロッキングでsendでブロードキャストしてすぐにrecvで受信待ちするのは素敵ではないですよね?
74デフォルトの名無しさん
2020/08/10(月) 15:45:49.73ID:fh5hS3eV
UDP でもともとreliableでないですがsendとrecvの間にネットワークスタックが受信したりすると、recvで受信できない?
75デフォルトの名無しさん
2020/08/10(月) 15:48:15.44ID:fh5hS3eV
UDPはじめてなんですが、受信を先に立ち上げてから、sendすべきでしょうか?
76デフォルトの名無しさん
2020/08/10(月) 16:28:51.88ID:bhDIRnmP
UDPスレで聞け
77デフォルトの名無しさん
2020/08/10(月) 18:44:21.00ID:94dKV070
一文で「で」使いすぎ
78デフォルトの名無しさん
2020/08/10(月) 21:36:29.55ID:DdNEnUy+
○○で××で△△な□□ってオタクが好む文語でしょww
79デフォルトの名無しさん
2020/08/10(月) 22:39:58.88ID:miZfIOtK
それオタクていうか、ラノベ勢やん
80デフォルトの名無しさん
2020/08/12(水) 21:03:47.89ID:CtzJaQ9q
std::unordered_mapのキーをstd::stringにして
findで検索する時にstd::string_viewを使って検索したいんだけど、
error C2664 : 'std::string_view' から 'const _Kty &' へ変換できません。
と出てしまいます。

std::unordered_mapの場合ではどうすればいいでしょうか?(´・ω・`)
以下仮コード
std::unordered_map<std::string, int> a;
a.insert_or_assign("AAA", 10);
std::string_view b = "AAA";
std::unordered_map<std::string, int>::iterator it = a.find(b);
81デフォルトの名無しさん
2020/08/12(水) 21:20:56.14ID:3e1Z4brU
>>80 a.find(std::string(b));
82デフォルトの名無しさん
2020/08/12(水) 21:37:06.56ID:CtzJaQ9q
>>81
あ・・・・・・(´・ω・`)
できました。ありがとうございます。

ついでに聞きたいのですが、
std::stringに変換することなくfind関数を使用するにはどうすればいいんでしょうか?
std::mapであれば、std::less<>を用いることでfind関数を使用した時std::string_viewでも検索できるようになりますが、
std::unordered_mapの場合はどのようにすればいいんでしょうか?
83デフォルトの名無しさん
2020/08/12(水) 21:43:02.63ID:3e1Z4brU
>>82
https://wg21.link/P0919
https://cpprefjp.github.io/lang/cpp20.html
> 順序付き連想コンテナと同様に、非順序連想コンテナの検索処理で、一時オブジェクトが生成されるコストを抑える拡張を追加。...
84デフォルトの名無しさん
2020/08/12(水) 21:49:15.10ID:CtzJaQ9q
>>83
これは・・・・・・
C++20から使えるかも?ってことですかね?(´・ω・`)
85デフォルトの名無しさん
2020/08/13(木) 10:37:08.60ID:m1xh97jB
std::unordered_map<const std::string, int> a;
86デフォルトの名無しさん
2020/08/13(木) 11:17:58.00ID:hnCcHlo3
C++2a
https://cppinsights.io/

https://arnemertz.github.io/online-compilers/
https://riptutorial.com/ja/cplusplus/example/17403/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9

https://wandbox.org/
http://coliru.stacked-crooked.com/
87デフォルトの名無しさん
2020/08/16(日) 03:35:19.99ID:Qk/OMLZN
今年学生でコロナ下でオンラインばかりなので合間を縫って独学に勤しんでます。

優しいc++を読み終えました
現在atcoderのabcやオライリーから出てるmodern c++ チャレンジ等をやっていますが、何をもってプログラミングが出来ると言うのでしょうか?
テトリス等もサイトを参考に書いたりしてみました。

自分はlinux上で動作する音楽プレイヤーソフトを作成したいと思うのですが、文法等はある程度理解していてもいざ自分で一から作れと言われると出来ません。c/c++で書かれているgithubのソースコード等は読めるんです
読めると言うのは、知らない文法やライブラリ等検索出来るためなんとなく実装内容がわかるって意味です
しかし自分で一からとなると何から始めればいいのか…


皆さんはこの壁をどう超えましたか?それとも壁に出会いませんでしたか?もしそれなりの規模の開発をする際止まった経験があるならばアドバイスを欲しいです
長文すみません
88デフォルトの名無しさん
2020/08/16(日) 03:47:01.77ID:Degs0Zl8
初心者は、Ruby on Rails で、web アプリのポートフォリオを作る

むしろ、コーディング・テストよりも、
アプリの設計・構築運用など、Linux の勉強の方が多い

文法・コーディングだけだと、ちょっとしたコマンドぐらいしか作れない

Rails みたいなフレームワークを使わないと、
データベースを含んだ、webアプリなどは作れない
89デフォルトの名無しさん
2020/08/16(日) 05:51:14.48ID:1OSQgfCu
>>87
linuxの統合開発環境がどんなのか知らんけど、とりあえず空のプロジェクトから作るのは出来るんでしょ?
そっから必要なものを一つずつ実装してくだけだよ
千里の道もうんたらで
90デフォルトの名無しさん
2020/08/16(日) 06:33:25.81ID:wVZFHsSL
>>87
> 何をもってプログラミングが出来ると言うのでしょうか?

何かを作るぞ! と頑張って、目標を達成できること

「何か」はゲームでもいいしドローンの自動運転でもいいから
自分の好みで勝手に決めればいい

87は音楽プレイヤーだろ?
いきなり市販のプレイヤーに匹敵しなくてもいい
こんなことできないかな〜とアイディア先行で実験してみて
うまくいったら見栄えも気にして仕上げにかかる
てなことを小刻みに繰り返すとアジャイルっぽくなる
91デフォルトの名無しさん
2020/08/16(日) 07:20:43.69ID:5tP8nVqa
第二不完全性定理の制約を受けず、
停止性問題を解けること、

って無理ゲーじゃん?!?
なんで人間ってプログラミングできるの?!!?!
92デフォルトの名無しさん
2020/08/16(日) 09:23:07.48ID:ng3yYkoc
ユニバーサル文法があるから

その辺りは余り深く考えても意味が無い
出来るから出来る
出来ない奴は出来ない
93デフォルトの名無しさん
2020/08/16(日) 10:39:09.01ID:5tP8nVqa
ユニバーサル文法を操るメンタルオーガンが実在したとしても
そいつがたんなる機械なら解決にならないんじゃ…
94デフォルトの名無しさん
2020/08/16(日) 12:13:35.40ID:INgchOov
>>87
まず作りたいものの機能をもった最も簡単なプログラム作ったら?
例えば音楽プレーヤーがお題なら音声ファイル名を与えると再生するだけのコマンド
あとは機能を付け足してく
95デフォルトの名無しさん
2020/08/16(日) 14:54:00.65ID:43uVw8aV
>>87
強いて言えば
「バグ取りを自分で出来ること」
96デフォルトの名無しさん
2020/08/16(日) 15:36:41.55ID:1Qmt1HH2
>>87
アプリ作り上げるのに言語の詳しい知識って実はあんまり要らないんだよね
c++だとtemplateにはまって一日つぶすとかざらにあるんだけど、
これってただの自己満だよな〜って思う
愚直なコードでとりあえず解決しておいて、その分
アプリとして作り込むのに時間かけた方がよかったんだろなーと

まぁそれはさておき、音楽プレーヤなら
- GUIフレームワーク
- CODECライブラリ
- linuxシステムコール、libc
あたりの知識がないと進められないでしょう
GUIフレームのお作法の理解とか、
CODECもフォーマット特有の制約が上位まで波及したりするから結構知識いるよね
まず何を使うかの選定からでしょう

あと、たぶんお前さんの作りたいものは既に世の中にごまんとあるはず
それを承知で勉強と割り切って作るのはいいんだけど、
あんまり大きいものは最初の目標にしないように
すぐに情熱失ってやめてしまうのがオチ
97デフォルトの名無しさん
2020/08/16(日) 16:32:23.69ID:Qk/OMLZN
87のものです 皆さん有難うございます
再生させる機能やタグの取得等の割りかし簡単そうなものから実装していき
あわよくばイコライザーやスペクトラム等の機能も追加していこうと思います

あと、linuxだとuiや機能が優れた音楽プレイヤーって実は少ないんですよね…GitHub等でも探したのですが…foobar2000とかしかなくて正直ダサくて…
ないから自分で勉強がてら書いてみたいなと思った次第でした
98デフォルトの名無しさん
2020/08/16(日) 17:31:00.86ID:PN3bHl0Q
>>87
〉何をもってプログラミングが出来ると言うのでしょうか?

他の人も似たようなこと言ってるけど、「ソフトを完成させる段取りを知っていること」が一つの目安。
実現機能を明確化して、実装する機能に分解して、必要なリソース・ライブラリを集めて、全部の機能を実装して、誤動作しないようにバグ取りをする。
これができれば言えるんじゃない?

少なくとも「プログラムするためには何が必要か」がわかるようになる。
99デフォルトの名無しさん
2020/08/16(日) 18:12:46.45ID:8WlfPd5U
C++のGUIライブラリとして、こういうものがあるけどね。
お気に召すかわからんけど。

https://ja.uncyclopedia.info/wiki/Progress_display
100デフォルトの名無しさん
2020/08/16(日) 18:35:06.05ID:wVZFHsSL
>>96
ダウト
「こうしたい」と、せっかく閃いたアイディアを
表現力が足りないばかりに諦めたり
誰かさんみたいにtemplateがロクに使えなくて一日つぶすとかってのは
言語の詳しい知識が足りないことに他ならない
それを何やかんやと言い訳考えることこそ自己満以外の何物でもない
言語の基本をしっかり固めるのを軽視するとこうなるという典型だ
101デフォルトの名無しさん
2020/08/16(日) 19:20:29.73ID:x8ZjthFZ
progress_displayいつになったら規格に取り込まれるんだ
102デフォルトの名無しさん
2020/08/17(月) 02:08:49.38ID:u6ES7f8s
>誰かさんみたいにtemplateがロクに使えなくて一日つぶす
そんなこと一言も言ってなかったと思うが(俺96じゃないよ)
いつものアホが沸いたのかな?
103デフォルトの名無しさん
2020/08/17(月) 02:55:30.59ID:vOFQCRbE
というか他人が思ったことに対してダウト〜っていうセンスに痺れるわ
104デフォルトの名無しさん
2020/08/17(月) 05:56:47.89ID:TQifZMS/
>>102
strcmp的なやつとは話にならねえ
105デフォルトの名無しさん
2020/08/17(月) 07:50:57.12ID:p3n8cAbg
strcmp的なやつって笑える表現だな

a="templateにはまって一日つぶす";
b="templateがロクに使えなくて一日つぶす";
ここでstrcmp(a,b)が偽になる以上どういう意図のなのか説明が必要だろ

>言語の基本をしっかり固める
とはまったく逆の事をしてることに気づけ
106デフォルトの名無しさん
2020/08/17(月) 08:11:11.90ID:TQifZMS/
へーえ、おまえさんとこではstrcmp(a, b)がint(0)を返すのか
ユーザーがあまりにも馬鹿過ぎると標準ライブラリまでバグるとは知らんかったわ
107デフォルトの名無しさん
2020/08/17(月) 16:39:05.57ID:p3n8cAbg
strcmpてのは三値を返すんだから0が真で非0が偽
108◆QZaw55cn4c
2020/08/17(月) 19:38:46.36ID:fdEh9bfN
>>107
普通は零が偽、非零であればなんでも真、なんですけど
109デフォルトの名無しさん
2020/08/17(月) 19:41:49.25ID:aDjhg6Zt
>>107
無茶苦茶言わないで、そこは「strcmp(a,b)==0が偽」の書き間違いだと認めるぐらいしようぜ。
110デフォルトの名無しさん
2020/08/17(月) 19:49:37.18ID:I0An2PUB
揚げ足とりこそC++erの本懐よ
111はちみつ餃子 ◆8X2XSCHEME
2020/08/17(月) 20:13:14.96ID:Km1hLS23
strcmp を定義するのは言語仕様なんやから
あえて言語仕様と異なる用語を使うんなら
その適用範囲 (プロジェクト単位?) と共に定義を明文化するのは最低限の要求やろ。
当事者が合意した範囲内でなら一見して変な用語でも使うのは好きにすりゃええ。
たとえばハードウェアに近い部分なら負論理がソースコード上に露骨に現れることだって無いとは言いきれん。

ただそれは特殊な例を総合的に見てあえて奇妙な用語を使った方が良くなる場合にとる選択肢であって、
「三値を返すんだから」というようわからん理屈では正当化でけへんし、
言語のスレとしては許容でけへんわ。
112デフォルトの名無しさん
2020/08/17(月) 20:18:38.27ID:vrG6zXoN
急にバリバリの関西弁でどないしたんや
113デフォルトの名無しさん
2020/08/17(月) 20:25:51.22ID:ltcLkjuo
個人的には整数のサイズにこだわるときは
#include <cstdint>
してint8_tとか使ってるなぁ
114デフォルトの名無しさん
2020/08/17(月) 21:37:15.36ID:S/xJ/Voo
そもそも3値な時点でbooleanの真偽かどうか議論すること自体無意味
115デフォルトの名無しさん
2020/08/17(月) 22:07:28.50ID:cXN7EgSQ
真偽値じゃないものを真偽値扱いしてもエラーとして検出されない、根が深い問題なんだよな。
型が無いB言語に末代まで祟られているとも。
116はちみつ餃子 ◆8X2XSCHEME
2020/08/17(月) 23:56:15.69ID:Km1hLS23
整数の暗黙の型変換はそれなりに上手くいってると思うけど
bool が整数型扱いってのがいきすぎた一般化だったのかもな。
117デフォルトの名無しさん
2020/08/18(火) 00:15:03.69ID:6UORXKST
学術の巨大掲示板群 - アルファ・ラボ http://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

VM + ASM を書いた (C#, DX) * x86 ではない!
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ

VM + ASM のダウンロード
http://up.x0000.net/files/TSimulang.zip
118デフォルトの名無しさん
2020/08/19(水) 03:53:13.32ID:itvjYGVQ
45歳こどおじ高卒無職歴約10年
10年以上前にIT系業界にいたが主にPC保守やユーザサポートをトータルしても10年くらい
コード開発の実務は30代の頃VB約3ヶ月でばっくれ
30代の頃エクセルVBA約3ヶ月でばっくれ
両方超ブラックだった
なんか疲れて実家帰ったらいつの間にか10年経ってた

暇なんで趣味で勉強してみた
2年前くらいに3ヶ月ほどjavaとpythonとc++
各言語のpaizaでC問題全部回答B問題10問くらい解けたからもうやってない
ガチで就職探したけど当然無くて諦めて勉強もやめてた

んでまた競プロサイトで練習始めたんだけど結局アルゴリズム意味不明で詰んだ感じ
暇なんで暇つぶしの惰性で練習してる感じ

こんなレベルで就職あるかな?
無職10年は適当にバイトしてたとかでごまかすコミュ力はあると自負してるつもり
こんな新人来られてもやっぱ迷惑だよね
てか俺が採用担当だったら絶対に採用しない

死んだほうが良いかな?
転生してやりなおしたい
119デフォルトの名無しさん
2020/08/19(水) 06:19:51.21ID:AaZqqXX6
マ板でどうぞ
120デフォルトの名無しさん
2020/08/20(木) 05:04:54.05ID:DqyqYTXG
if (!strcmp(a, b)) goto hell;
121デフォルトの名無しさん
2020/08/20(木) 11:16:03.05ID:RX/3qqm6
hell終わるど
122デフォルトの名無しさん
2020/08/23(日) 16:03:07.43ID:SVuEjc7r
例えば、
x<1 || y>3
と書いた場合、人間なら、この < や > は、大小比較をする比較演算子だと
思うでしょうが、コンパイラにとっては、1 || y を実引数とするところの
template展開だと勘違いする可能性があります。
どうやってこれを区別しているのでしょうか?
123デフォルトの名無しさん
2020/08/23(日) 16:05:12.45ID:Exm+Pt+Z
どちらかというと
< <>, <> >
みたいなときに
<<>, <>>
って書くと期待通りに動かないのが面倒だと思う
124デフォルトの名無しさん
2020/08/23(日) 16:08:14.77ID:SVuEjc7r
x がtemplate名であるかどうかを検査するのでしょうか?
125デフォルトの名無しさん
2020/08/23(日) 16:18:37.58ID:SVuEjc7r
pure C で、構文ツリーを作りたいとき、出現してきた名前トークンがどう宣言されて
いるかを知らなくても、構文ツリーを作れてしまいます。
ところが、もし、xがtemplateの名前として宣言されているかどうかを知らなければ、
< が、比較演算なのが、template引き数の始まりを示す括弧なのかの区別が
付かないのであれば、そうはいかなくなります。

pure C の場合:
 構文ツリーを作る ---> ツリーの中にある中の名前の宣言を調べ、種類を見る。
で済んだところが、C++の場合、下手すれば、
 構文ツリーを作る際に、出現した名前の宣言も逐次、調べる。
ということになります。
126デフォルトの名無しさん
2020/08/23(日) 16:40:37.67ID:VT3zweO2
その場合、トークンとしての'<'が比較演算子なのかテンプレートの括弧なのかは区別しないで
構文解釈の結果として文脈によって決定するのが常套手段だろうね。
https://github.com/antlr/grammars-v4/blob/master/cpp/CPP14.g4

>ところが、もし、xがtemplateの名前として宣言されているかどうかを知らなければ、
>< が、比較演算なのが、template引き数の始まりを示す括弧なのかの区別が
>付かないのであれば、そうはいかなくなります。

そうならない仕様にはしているはず。
どうしても区別がつかない部分は前にtemplateキーワードを置く必要があるとか。
127デフォルトの名無しさん
2020/08/23(日) 17:11:53.76ID:SVuEjc7r
>>126
>その場合、トークンとしての'<'が比較演算子なのかテンプレートの括弧なのかは区別しないで
>構文解釈の結果として文脈によって決定するのが常套手段だろうね。
ここは、x<・・・> の x がtemplate名かどうかを区別できるところの
意味解析の段階ではなく、本当に構文解析の段階ですか?
128デフォルトの名無しさん
2020/08/23(日) 17:21:37.10ID:PNDTq65a
xがtemplate名かどうかは識別子の辞書を見たらワカル
辞書の中身はその時点までのソースコードの内容と
言語規格上の定義(形式言語ではなく、自然言語で書かれた仕様)に依存するから
言語の「意味」に依存するところがあるからこれを意味解析に含めるかどうかは議論の余地があるが、
普通のコンパイラ屋のマインドとしては
識別子の辞書を見てxが(例えば)template名であると判明したら
xがtemplate名xという「字句」であるという前提の下に字句解析した結果を文法パーサに入力するので
構文解析の範疇だと思われ
129デフォルトの名無しさん
2020/08/23(日) 17:23:59.45ID:SVuEjc7r
>>128
昔読んだコンパイラの本には、これまでに行われた宣言の情報を参照するのは、
意味解析だ、とあったと記憶しています。
逆に、それが意味解析でないのなら、何が意味解析になるのでしょうか。
「解析」ですから、コード生成では有りませんし。
130デフォルトの名無しさん
2020/08/23(日) 17:26:01.74ID:PNDTq65a
それよか
std::vector<std::string>> x("Hello");
と書いたら
std::vector<std::string> > x("Hello");
とコンパイラに解釈させるという方がよっぽど凶悪
これこそ構文の意味を知らねば「>>」という単一の字句なのか、「>」という字句2個なのか
定まらないという意味で字句解析→文法解析の流れをぶち壊しにしてくれる
131デフォルトの名無しさん
2020/08/23(日) 17:28:17.74ID:PNDTq65a
>>129
構文解析、でええやん?
>>130みたいな凶悪なケースと違って
辞書の参照、というただ1点のチートだけやれば、
BNFで形式的に完全に表せる世界に持ち込める
132デフォルトの名無しさん
2020/08/23(日) 17:29:06.23ID:PNDTq65a
訂正orz
誤: >>130みたいな凶悪なケース
正: >>129みたいな凶悪なケース
133デフォルトの名無しさん
2020/08/23(日) 17:31:18.68ID:PNDTq65a
訂正2、。n_
>>130 正:
std::vector<std::vector<std::string>> x("Hello");
と書いたら
std::vector<std::vector<std::string> > x("Hello");
とコンパイラに解釈させる方がよっぽど凶悪
134デフォルトの名無しさん
2020/08/23(日) 17:39:05.76ID:SVuEjc7r
>>131
C++の場合、辞書の参照も簡単では有りません。
namespaceや、クラススコープの名前などが複雑に絡み、
スコープ演算子を使った、修飾名などがあり、
Q1::Q2::Q3::name<xxx>
のような場合がありますが、
ややこしいのは、実際に template を展開してみないことには、nameがどういう識別子
なのかも分からない事があることです。例えば、
aaa<xxx>::bbb<yyyy>::name < 5, 5 > y

と有った場合、name が変数名なのか、template 名なのかによって、
< が template 引き数の始まりなのか、比較演算子なのかが決まる可能性があります。

ただ、この場合、> の後に名前トークン y が来ていますが、template展開だと
すると、この並びは恐らく、必ず間違いであるはずで、比較演算子でしか
合法にはならないと思います。
135デフォルトの名無しさん
2020/08/23(日) 17:40:50.98ID:08jUbd/H
いつもの人か
136デフォルトの名無しさん
2020/08/23(日) 17:49:20.95ID:VT3zweO2
>>127
どのテンプレートが使われるかの判断は意味解析だろうけど、テンプレートの使用か
比較式かの区別は構文解析段階で確定するはずだがね。
で、両方に解釈できるケースは基本的に非templateとみなすことになっていて、そこで
テンプレートを使用したいならばtenplateキーワードを追加する。
137デフォルトの名無しさん
2020/08/23(日) 18:14:03.07ID:PNDTq65a
>>136
>両方に解釈できるケースは基本的に非templateとみなすことになっていて、
それだと構文解析時のBNFの当てはめ時点でバックトラックしているように読めてしまうま、
そのような方式は、テンプレート定義が入れ子になったときバックトラック回数が指数関数的になりかねないから近畿

実際はそんなことはせずに、「name」というテンプレートの定義が辞書にあれば、「name」とかかれたソースコードの部分が
<テンプレート名>という字句として文法パーサに入力される、という方式で実現しており、
字句解析→文法解析、の一本道が保たれているはず(つまりは>>128のやり方

>>134
辞書の参照が難しい、と仰せなのですが
識別子のスコープを辞書の階層化で表現するのは常套手段であってコンパイラの教科書にも書いてある
(と思う)のでそんなに難しい話とはみなすことはできない(希ガス
138デフォルトの名無しさん
2020/08/23(日) 18:17:01.07ID:PNDTq65a
※ 個人の感想です
139デフォルトの名無しさん
2020/08/23(日) 19:31:26.00ID:OrwVzT4b
<=>演算子はどうなん
140デフォルトの名無しさん
2020/08/23(日) 20:00:57.91ID:L0YhmUmF
面白そうな議論だけど忙しくて参加できない(泣
141デフォルトの名無しさん
2020/08/23(日) 21:32:54.31ID:MKE8ZoLo
C++の文法は複雑すぎて構文解析と意味解析を分離できないのは有名な話
例によってBoostさんがそれを最大限に悪用してるのも有名な話
https://dechimal.hatenadiary.com/entry/20090216/1234793122
142デフォルトの名無しさん
2020/08/24(月) 09:07:54.59ID:2j0RwZQH
構造体へのファイル読み込みについて、悩んでいます。

今まで#pragma pack(x)を使用して、構造体にパディングが入らないようにしていたのですが、これ以外にパディングが入らないようにする方法はあるのでしょうか?

移植性の面からpragma禁止、かつ暗黙アラインメント禁止(自分でパディングを入れる)という指示がありました。
143デフォルトの名無しさん
2020/08/24(月) 09:12:28.05ID:hO98kfNk
メンバ1つずつ個別に入出力
C++はそれがしやすい
144デフォルトの名無しさん
2020/08/24(月) 09:14:54.89ID:hO98kfNk
エンディアン問題は1バイトずつ入出力することで解決できる
145デフォルトの名無しさん
2020/08/24(月) 10:43:50.34ID:seWRIuQk
自分でパディングを入れる方が、明確。
解釈の余地がなくなるから

構造体へのファイル読み込みって、
構造体には、文字列のポインターがあるだけだろ

可変サイズの文字列の実メモリは、構造体内には確保しないだろ
146デフォルトの名無しさん
2020/08/24(月) 10:50:48.29ID:3u4r+xiS
そもそもの話の流れの趣旨とは無関係
struct hoge {
char mojiretsu[0];
} hage;

で malloc するときに
struct hoge *p = (struct hoge *)malloc(sizeof(struct hoge) + length + 1);
147デフォルトの名無しさん
2020/08/24(月) 11:20:42.08ID:RW1y5ZfB
>>142
バイト単位で読み込んで自分でメンバーに格納
てか移植性云々なら入出力部分を切り出しとけよと思うが…
148デフォルトの名無しさん
2020/08/24(月) 11:25:15.19ID:hO98kfNk
C++的には構造体の中の物理的な配置に依存しない設計をするのが本筋
ostream& operator << (ostream&, your_struct const&);
istream& operator >> (istream&, your_struct&);
149デフォルトの名無しさん
2020/08/24(月) 11:51:04.72ID:2j0RwZQH
ありがとうございます。とても参考になります。
パッと見て理解できないこともありますが、一つ一つ勉強します。

「入出力部分を切り出し」については、知識不足でイメージもできない状態なのですが、入社したらそうなっているのかも?と心構えというか、理解しておきたいと思います。
150デフォルトの名無しさん
2020/08/24(月) 12:08:08.35ID:5d5vIMqX
>>142
自分でパディングいれろ、という指示なんだから自分パディング入れればいいんでしょ?
方法は明確じゃん
まぁお前の質問の仕方が悪いってことね

まずやることはコンパイラのパディングのルールを確認してどういう条件で暗黙パディングが入るか理解すること
理解できたら自分でダミーのメンバ追加して暗黙パディングが入らないようにする
gcc/clangだったら-wpaddedで暗黙パディングが検出できるはず
念のためstatic_assertとoffsetofを使ってすべてのメンバーで期待通りのオフセットであること保証しておくといい
おまけでstatic_assertとsizeofで期待通りの構造体のサイズであることも

こういうのが多数あるんだったら、別途ツール使って構造体のソースは自動生成するようにすべき
あとpragma packは(レイアウトによって)実行時にオーバーヘッドが生じるってことも勉強しとくといい
151デフォルトの名無しさん
2020/08/24(月) 12:32:35.65ID:2j0RwZQH
すみません。質問を正しく説明できるように気をつけます。

私が質問したかったのは、「パディングの入れ方」ではなく、「そもそもパディングが入らないようにする方法はないだろうか」ということでした。
パディングの入れ方については既に理解しているのですが、入るとやや都合が悪い状況です。
「暗黙アラインメント禁止(自分でパディングを入れる)」と書いてしまったことで質問内容がブレてしまい、良くなかったと反省しております。

また、詳しくアドバイスをしていただきありがとうございます。
152デフォルトの名無しさん
2020/08/24(月) 13:32:36.10ID:3u4r+xiS
#pragma pack(1)
も禁止?
153デフォルトの名無しさん
2020/08/24(月) 14:16:40.36ID:5d5vIMqX
>>151
「そもそもパディングが入らない方法」がpragma packであって、それが禁止されてんでしょ?
言われた通りに明示的にパディング入れな
何か方法があったとしてもチーム開発しているときに、妙な小細工は嫌われる
154デフォルトの名無しさん
2020/08/24(月) 14:23:21.21ID:2j0RwZQH
「#pragmaは禁止」とあったので、そうだと判断しています。

もしこれが必ずしも#pragma pack(1)も禁止というわけではないなら、一度担当者に確認してみようと思います。
155デフォルトの名無しさん
2020/08/24(月) 14:33:52.11ID:2j0RwZQH
>>153
ありがとうございます。
そのようにしようと思います。

様々なアドバイスをいただき、私の考え方や疑問に思う部分が誤っていたと感じました。
これからはもっと広い視野で考えられるように頑張ります。
156蟻人間 ◆T6xkBnTXz7B0
2020/08/24(月) 14:38:21.49ID:lUUB+Gis
#include <pshpack1.h>
157デフォルトの名無しさん
2020/08/24(月) 20:32:07.30ID:0b6x/pxR
環境依存しない方法なんてないよ
int, short, longのバイト数すら環境依存なんだから
環境依存が嫌ならC++使うこと自体が間違い
158デフォルトの名無しさん
2020/08/24(月) 20:39:16.80ID:hO98kfNk
#include <cstdint>知らなさそうだね
159デフォルトの名無しさん
2020/08/25(火) 00:20:38.83ID:GVKOVEUV
明示的にパディング入れる方がかえって小細工になったりして…
パディング前:
struct Foo {
 int16_t m_someWord;
 // ここに明示的にパディングを入れる
 int32_t m_someDoubleWord;
 int16_t GetSomeWord() const { return m_someWord; }
};

明示的パディング後(1):
struct Foo {
 int32_t m_someWordInDWord; // 32 bit境界に隙間無くパディング入ったやたー!
 int32_t m_someDoubleWord;
 int16_t GetSomeWord() const { return (m_someWordInDoubleWord >> 16); } // OOPS! 欲しい16 bitの位置がホストのエンディアン次第で変わるorz
};

明示的パディング後(2):
struct Foo {
 uint8_t m_someWordInBytes[4]; // 32 bit境界に隙間無くパディング入ったやたー!今度はしくじらないのですよ
 int32_t m_someDoubleWord;
 int16_t GetSomeWord() const { return ((uint16_t)m_someWordInBytes[1] << 16) | (uint16_t)m_someWordInBytes[0]; } // |||OTL
};
160デフォルトの名無しさん
2020/08/25(火) 07:35:37.57ID:IvfDNlgu
int16_tが欲しいのに他の型使ったらそりゃ。
161デフォルトの名無しさん
2020/08/25(火) 09:32:18.95ID:ILy/WoQ4
逆だな。
C言語を使うといくらでも環境依存のものを作れそうな気持ちにさせる
162デフォルトの名無しさん
2020/08/25(火) 09:50:55.63ID:DOmxfygr
環境非依存て聞こえはいいけど色んな機種の機能の積集合でできることだかんな
163デフォルトの名無しさん
2020/08/25(火) 10:21:10.89ID:z55E+4lG
Unix文化とWindows文化の違いがあって、
Unixでは、OSよりもC言語によって、ハードウェアの違いを吸収する思想だった。
この思想では、バイナリ互換ではなく、ソース互換を目指し、
異なるOSやCPUに対しても、Cのソースを再コンパイルして対応しようとした。

一方、Windows文化では、最初から互換性のあるCPUを使うことが前提であり、
OSがCPU以外のハードウェアの違いを吸収することで、バイナリレベルで互換性を
維持する思想であった。
この思想では、異なるOSやCPUをターゲットにすることは想定されていない変わりに、
ハードウェアの違いは、互換性のある(単一の)OSをハードウェアに乗せることに
よって吸収しようとした。

なので、GNUやgccなど、Unix文化からきたプログラムでは、徹底的に#ifなどで
場合分けして互換性を維持しようとしているのに対し、Windowsから来たプログラム
ではそのような場合分けはしていない。

また、Unix文化でも、#if によってソースを場合分けすることで対応していることが
ほとんどで、何の場合分けも無いソースで対応できている訳ではない。
164デフォルトの名無しさん
2020/08/25(火) 11:00:39.10ID:8PaZBEwq
[要出典]
165デフォルトの名無しさん
2020/08/25(火) 11:11:45.82ID:Zt9gBA2M
htons とか ntohl とか最強
166デフォルトの名無しさん
2020/08/25(火) 12:41:01.28ID:72rzjRbk
C++を検索するときの技で上手い方法ありますか?
ググる、アマゾン、図書館での検索など
勉強しようとしても検索できないです
167デフォルトの名無しさん
2020/08/25(火) 12:45:40.95ID:KRGfI1UY
コンパイラーのエラー文で投げたら大抵その言語で釣れると思うけどなぁ
168デフォルトの名無しさん
2020/08/25(火) 12:56:51.05ID:qQcORjN3
ぐぐるときは
hoge -ruby -java -javascript -php -sejuku -techacademy -teratail
169デフォルトの名無しさん
2020/08/25(火) 13:08:39.95ID:3B5pz6IO
−ヤフーゴミ袋
170デフォルトの名無しさん
2020/08/25(火) 13:10:33.24ID:V6jdFuMQ
>>166
検索して出てきた情報を理解するための基礎的な力が無いんじゃね?
ググれば何でも即解決できるわけではないよ
愚直にC++の入門書を買って順を追って系統立てて、C++の基本的な概念や用語を理解していく必要がありそう
もしかすると、C++より前に他の言語でそれをやってプログラミングの基本的なところから土台を踏み固めておかないとダメかも
171デフォルトの名無しさん
2020/08/25(火) 13:25:38.78ID:YCpmFLs5
「勉強」がどのレベルなのか分からないとなんとも言えない
直感で言うとC++の入門書なんでもいいから一冊買ってやりなさい
172はちみつ餃子 ◆8X2XSCHEME
2020/08/25(火) 13:56:10.27ID:xuORV4zd
>>166
俺も >>170 に同意だわ。
基礎的な考え方が身に付いてないと個別の説明を見ても意味わからん。
検索するにしたって検索に適当な語句を選択するだけの知識は要るしな。

用語は大事。
概念を分割して定義を積み重ねるのが体系化だし、
定義は用語の定義として現れることが多い。
用語がわかると色々わかる。
173デフォルトの名無しさん
2020/08/25(火) 14:26:43.50ID:72rzjRbk
「C++」で検索ができないんだが
PCの設定がダメなのかな
これから情報を得るために検索くらいしたいんだけど
本買いたくても出てこない
図書館へは行ったけどC++は貸出中で予約も数件入ってるらしい
+のフォントが変なのか?
174デフォルトの名無しさん
2020/08/25(火) 14:29:17.40ID:y+wyfPxz
>>168
-qiitaが抜けてる
175はちみつ餃子 ◆8X2XSCHEME
2020/08/25(火) 14:32:45.54ID:xuORV4zd
>>173
俺の手元だと、グーグルでもアマゾンでも C++ で検索できてるがなぁ……。
ダブルクォートで囲って "C++" にしたらより確実に C++ が含まれるページが検索される。
176デフォルトの名無しさん
2020/08/25(火) 14:43:38.93ID:z55E+4lG
twitter は、C++ や C# を検索できない。"C++" や "C#" としても駄目。
なので、cpp OR cplusplus とすると良いと言われているが、
個人的には、これは、twitter を作った人の C++ や C# を弱まらせるための策略
だと思っている。
177デフォルトの名無しさん
2020/08/25(火) 14:49:20.21ID:8QbTjnzx
なんか流れにしれっとキチガイ混じっとるな
178デフォルトの名無しさん
2020/08/25(火) 14:50:58.98ID:H1PjAHfj
アメリカはそういう国で、
彼らは、自分のためなら何をやっても文句は言わせない的な心持でいる。
179デフォルトの名無しさん
2020/08/25(火) 14:57:06.54ID:72rzjRbk
>>176
ありがと
cplusplusで検索できました
180デフォルトの名無しさん
2020/08/25(火) 15:16:32.29ID:YCpmFLs5
勘違いで御高説垂れてた奴wwww
181デフォルトの名無しさん
2020/08/25(火) 20:28:52.64ID:Ascep3nh
何故かyahooでリアルタイム検索ではC++で検索できる
182デフォルトの名無しさん
2020/08/25(火) 23:48:37.58ID:zCjig7ks
シープラプラとか
チンチンブラブラみたいな名前付けやがって
たぬき砲でいいよなもう
183デフォルトの名無しさん
2020/08/25(火) 23:56:18.23ID:zCjig7ks
Cよりもちょっと背伸びした意識高い系狙ってみましたみたいなキモいネーミングセンス
184デフォルトの名無しさん
2020/08/26(水) 00:15:37.56ID:DrItK79l
>>183
ちょっとどころじゃねーよ馬鹿
お前みたいな低能にはC++は無理
185デフォルトの名無しさん
2020/08/26(水) 00:16:50.63ID:1Tu0I/K+
あーキモい(゚〇゚)キモい
186はちみつ餃子 ◆8X2XSCHEME
2020/08/26(水) 01:00:49.72ID:Yn/rXsvn
キーッ! もういい! (駄洒落)
187デフォルトの名無しさん
2020/08/26(水) 01:32:11.23ID:NYX2/iU2
CRTP(奇妙に再帰したテンプレートパターン)ってどんなときに使うの?
template <class Derived>
struct Base {
static void interface() {
...
Derived::static_interface();
...
}
};
struct Hoge : Base<Hoge> {
static void static_interface() { ... }
};
通常の継承とは依存関係が逆になってるというのはわかるけど
具体的にどんなケースで便利なのかいまいちピンとこない...
188デフォルトの名無しさん
2020/08/26(水) 02:37:52.45ID:oEB3gdtA
速度重視のときじゃないかな。
ATL/WTLがCRTP使ってると思ったけど。
メリットとデメリットを比べるとデメリットが上回ってるような気がするな。
ぼくは構文解析器の合成にCRTPを使いましたが、合成の頻度が非常に少ないので、使った感じです。
189デフォルトの名無しさん
2020/08/26(水) 02:49:00.89ID:oEB3gdtA
仮想関数の代わりにCRTPを使うと呼び出しコストが無くなる・・・的な使い方で、便利にはならないと思う。

というより、めんどくさくなるだけ。
190デフォルトの名無しさん
2020/08/26(水) 07:05:25.59ID:NYX2/iU2
なるほどどうしてもパフォーマンスが気になるときに使うものって感じですかね
191デフォルトの名無しさん
2020/08/26(水) 10:20:21.13ID:2Yv7E1bU
というより、動的な多態は不要だが静的な多態が必要で、
かつ派生クラスの型情報がどうしても必要なときに使うもんだと思う
クラステンプレートであれこれやってるうちに必要な場面が出てくるかと
192デフォルトの名無しさん
2020/08/26(水) 11:43:55.11ID:KrF5vX4s
学術の巨大掲示板群 - アルファ・ラボ http://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

VM + ASM を書いた (C#, DX) * x86 ではない!
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ

VM + ASM のダウンロード
http://up.x0000.net/files/TSimulang.zip
193デフォルトの名無しさん
2020/08/26(水) 13:51:37.26ID:CU/Sbvp9
派生クラスの型情報を静的に使うというのはstatic_castでのダウンキャストだな
194デフォルトの名無しさん
2020/08/26(水) 18:43:05.84ID:UQhlb7Hi
Derivedを引数にとる比較演算子を生成するみたいなことは継承だと無理そう。
195デフォルトの名無しさん
2020/08/26(水) 19:52:17.80ID:IvFDW58Y
基底と言いつつテンプレートでガッツリ派生型の名前が入ってるわけで
他の派生型を持つ基底を一括してコンテナに入れるとかできないしあまり意味を感じないな
196デフォルトの名無しさん
2020/08/26(水) 23:36:52.30ID:BTqRZu5v
そもそもポリモ目的でやるもんじゃないでしょ
基底クラスは結局全部別モンになるわけだし
ボイラープレートコードをまとめたクラスをミックスインするときに使うもの
197デフォルトの名無しさん
2020/08/27(木) 06:37:57.11ID:7Sruawh3
>>195
basic_iosとios_baseみたいにテンプレート化する必要のある部分と不要な部分に分けるとか
198デフォルトの名無しさん
2020/08/28(金) 17:02:52.88ID:BFWbiW8H
関数へのポインタが、メンバ変数に有る場合、例えば、
class CXxx {
public:
  void (*pfn)(int a);
  void (*pfn)(float b);
};
の様な場合、
pXxx->pfn(5);
pXxx->pfn(10.0f);
とした場合に、関数呼び出しに使われる関数ポインタが自動的に選択されるでしょうか?
つまり、関数ポインタについても、関数と同様な「オーバーロード解決」が行われますか?
そもそも、上の様なクラスは、定義時にエラーになるでしょうか?
199デフォルトの名無しさん
2020/08/28(金) 17:09:28.47ID:47MLab1u
自分で動かしてから質問しろよ
200デフォルトの名無しさん
2020/08/28(金) 17:09:34.31ID:namGYget
同じ名前のデータメンバーをふたつ定義してるからアウト
201デフォルトの名無しさん
2020/08/28(金) 17:26:26.84ID:bCpDWR5V
>>198
それコンパイル通るかやってみ
202デフォルトの名無しさん
2020/08/28(金) 17:41:13.83ID:AJ/VhFe8
ここに質問するより少ない手数で試せるだろうに何やってんだろうね
203デフォルトの名無しさん
2020/08/28(金) 17:44:35.89ID:TvC7lNeF
>>198
関数は多重定義できるが
関数へのポインタは多重定義できない
204デフォルトの名無しさん
2020/08/28(金) 17:48:03.23ID:TvC7lNeF
ちかっとエスパーすると
class CXxx_base {
public:
  virtual void fn(int) = 0;
 virtual void fn(float) = 0;
};
class CXxx : public CXxx_base {
public:
  void fn(int) override { }
 void fn(float) override { }
};
pXxx->fn(5);
pXxx->fn(1.0.f);
これでおまえさんの考えてることはできるんじゃないか?
205デフォルトの名無しさん
2020/08/28(金) 19:11:25.34ID:KPVk+Ml/
>>198
机上の空論持ってくるな
きちんと検証してから持ってこい
206デフォルトの名無しさん
2020/08/29(土) 11:57:26.58ID:HmjSn9P9
関数へのポインタって関数じゃなくてただのメンバ変数だからな
207デフォルトの名無しさん
2020/08/29(土) 14:38:37.69ID:EjjA84a9
>>196
>ボイラープレートコードをまとめたクラスをミックスインするときに使うもの
ちょっとかっこいい(型情報ある)マクロみたいな感じか
208デフォルトの名無しさん
2020/08/30(日) 13:47:11.43ID:6dVOYYO/
構造体を使った配列の記憶にて
配列に順に入力しても出力が上手くいきません助けて偉い人
209デフォルトの名無しさん
2020/08/30(日) 13:49:26.97ID:KF/F+MKa
スルーで
210デフォルトの名無しさん
2020/08/30(日) 13:51:20.52ID:GgAZZaQa
100歩譲っておま環
211デフォルトの名無しさん
2020/08/30(日) 14:21:16.52ID:6dVOYYO/
void dataInput(Student& st){
string ans;
for(int i=1, i<=n;i++){
cin>>st.id;
pN[i]=st.id;
cin>>st.ans;
pA[i]=st.ans;
}
};
void showData(Student& st);
int main(){
cin>>n;

pN = new int[n];
pA = new int[n];

Student st;
dataInput(st);
showData(st);

return 0;
}
void showData(Student& st){
for(int j=0; j<=n; j++){
cout << pN[j] << pA[j] << "\n";
}
}
定義はファイル別にしてある
正直すまんかった
212デフォルトの名無しさん
2020/08/30(日) 14:23:30.40ID:KF/F+MKa
デバッガで自分でトレースしろ
213デフォルトの名無しさん
2020/08/30(日) 14:28:47.09ID:GgAZZaQa
死ね
214デフォルトの名無しさん
2020/08/30(日) 14:54:19.28ID:6dVOYYO/
hファイルの方
struct Student{
int id;
char ans;
};

int n;
int* pN;
char* pA;

cppファイル冒頭
#include <iostream>
#include <string>
#include "funk.h"
using namespace std;
215デフォルトの名無しさん
2020/08/30(日) 15:13:34.04ID:6dVOYYO/
デバッグしたけど問題は見つかりませんでしたと出た。出力に問題があるっぽい
216デフォルトの名無しさん
2020/08/30(日) 15:22:13.56ID:6dVOYYO/
自己解決しました!iとjの初期値を1から0にしたら解決できました。
217デフォルトの名無しさん
2020/08/30(日) 15:22:13.70ID:6dVOYYO/
自己解決しました!iとjの初期値を1から0にしたら解決できました。
218デフォルトの名無しさん
2020/08/30(日) 15:57:12.85ID:HKGZh04b
きちんと検証しろ
ソレができないなら初心者スレか日記帳にでも書いとけ
219デフォルトの名無しさん
2020/08/30(日) 17:44:09.91ID:oWP9MzfY
これはひどい
220デフォルトの名無しさん
2020/09/04(金) 17:01:57.31ID:8b49PodW
hage
221デフォルトの名無しさん
2020/09/04(金) 17:03:42.03ID:LCYaN/vD
どっちのだよ
222デフォルトの名無しさん
2020/09/04(金) 17:11:42.93ID:ML6iv+hM
C++相談室 part152 ->画像>3枚
223デフォルトの名無しさん
2020/09/07(月) 16:37:42.90ID:AmzB5PF6
githubなりに落ちてるc++で書かれたアプリなりを読んで勉強しているんだけど、
include無限ループに陥って萎えてしまうのですが、どうしてますか?

mainのinclude沢山→その指定先にもinclude沢山→stlなりのライブラリ(ここは読まずネットでドキュメント読む)
で相当時間食ってしまうまのですけど、コツとかありますか?
224デフォルトの名無しさん
2020/09/07(月) 16:42:08.11ID:bjXgxZkO
includeガードしろ
225デフォルトの名無しさん
2020/09/07(月) 16:54:18.66ID:4QMtZq9v
ていうかなぜ初学者なのにいきなりそんな重厚長大なアプリからチャレンジしようとするのか
自分の力量を過大評価しているのではないか
まずヘローワールドとかそういう簡単なとこからはじめなさい
226デフォルトの名無しさん
2020/09/07(月) 16:57:38.12ID:x8yvSFtj
コンパイル時にg++とかなら-Eオプションつければ
実際のプリプロセッサの処理の結果が確認できる
227デフォルトの名無しさん
2020/09/07(月) 16:58:04.33ID:3Ozv9Uf+
読まなきゃいいじゃん
何のために全部読もうとしているのか自問自答したら?
228デフォルトの名無しさん
2020/09/07(月) 17:02:08.59ID:qk/9c7gK
>>223
身の丈に合わない巨大なプロジェクトを読もうとしてるか、または愚直に頭から全部読もうとしてないか?
お前さん自身がコンパイラじゃないんだから、頭からすべて把握して読んでいく必要はないぞ。
まともなソースならオブジェクト指向で書かれてるのだから、上位層で大筋を把握しながら必要に応じて深いところに入っていって、有用そうな所や興味があるところだけ詳しく読めば?
ヘッダファイルは使ってるライブラリとかの当たりをつける程度でざっと読み飛ばして、定義を調べたくなったときにIDEの機能で見に行けばいいだろう。
229デフォルトの名無しさん
2020/09/07(月) 17:05:02.17ID:Egt+Qwmp
吊りかも知れないが勉強中とのことなので
マジレスすると

#include の行を一つづつ消してみて(mainに近い方だけ)
消したらどんなコンパイルエラー出るかを観察する
230デフォルトの名無しさん
2020/09/07(月) 17:07:22.95ID:6+huFxV7
>>228
sshのソース読んでも全くオブジェクト指向じゃないぞ。
231デフォルトの名無しさん
2020/09/07(月) 17:13:56.93ID:x8yvSFtj
あらゆるところで参照したいヘッダファイル↓があるとして
./include/common/hoge.hpp

詳細な実装(深い階層にいるやつ)
./include/hage/chibi/debu/unko.hpp
からそれを読み込むときって

#include "../../../../common/hoge.hpp"
みたいにしてしまっているのですが、もっとまともなやり方はありますか?
232デフォルトの名無しさん
2020/09/07(月) 17:18:55.68ID:x8yvSFtj
ちなみにCMakeを使っています
233デフォルトの名無しさん
2020/09/07(月) 17:21:09.32ID:ualItUCM
なぜSTLは
#include <vector>
などで読み込めるのでしょうか
不思議ですねぇ
234デフォルトの名無しさん
2020/09/07(月) 17:27:17.02ID:x8yvSFtj
./include/common
をインクルードパスに含めるのは思いついた上で微妙な気がしたから
聞いてます
235デフォルトの名無しさん
2020/09/07(月) 17:43:09.75ID:3Ozv9Uf+
まとも〜とか微妙〜とか
そういう表現どう思う?
236デフォルトの名無しさん
2020/09/07(月) 17:44:59.68ID:x8yvSFtj
./include/hage/chibi/
配下ではどこからでも見れるようにするとかしたいときはそこの
CMakeLists.txtにインクルードパス指定する
とかしかないんですかね
237デフォルトの名無しさん
2020/09/07(月) 19:33:13.69ID:u0REhpNo
インクルードガード標準搭載の言語多いのに
ほんと無駄な時間使わせてる言語なんだなって再確認できて辛い
238◆QZaw55cn4c
2020/09/07(月) 20:11:18.48ID:bJcKHVeO
>>237
マクロによるインクルードガードなんて決まりきった定型文だし、正直 #pragma に載せる必要もないかと…
239デフォルトの名無しさん
2020/09/07(月) 20:19:27.09ID:h3kjQIhT
まあね、GUIDなら衝突の確率340澗分の1だかんな
それすらも衝突したらどうすんだと・・・ほとんど病気だねw
240デフォルトの名無しさん
2020/09/07(月) 20:40:39.15ID:x8yvSFtj
>まとも〜とか微妙〜とか
なんとも思わねえよばあか
241デフォルトの名無しさん
2020/09/07(月) 21:32:21.88ID:kH2Fy/8z
そっか君プログラマ向いてないね
知らなくて驚くかもしれないけどコンピュータには感覚じゃなくて理屈しか通じないんだよ
242はちみつ餃子 ◆8X2XSCHEME
2020/09/07(月) 21:58:09.22ID:PI/34Ato
>>237
C++20 にはモジュールが入ったから……。
243デフォルトの名無しさん
2020/09/08(火) 00:30:42.07ID:h4K4tlm9
誰がプログラマって言ったよ?
理屈しか通じないんだろ?
頭悪そう
244デフォルトの名無しさん
2020/09/08(火) 00:32:32.14ID:h4K4tlm9
自分で言ってることに矛盾してる時点で才能ないよ君
245デフォルトの名無しさん
2020/09/08(火) 16:47:11.08ID:FxZYRSTV
is_integralみたいな型判定をメタ関数に渡すとこを書いてて思ったんだが
変数テンプレートをテンプレート・テンプレートパラメータとして渡せるようにはなってないんだよなぁ
ということは、と思ってコンセプトの予定されてる内容調べたら、コンセプトも同様なんだな・・残念
246デフォルトの名無しさん
2020/09/10(木) 08:49:56.48ID:ke8OXyHN
C++でもNPMみたいなパッケージマネージャ使いたい
ヘッダと実装別で書かなきゃいけないのも無駄
このへん解決したAlterC++みたいなの作って
247デフォルトの名無しさん
2020/09/10(木) 09:32:44.42ID:xgcscVfX
>>246
>>242
248はちみつ餃子 ◆8X2XSCHEME
2020/09/10(木) 09:34:27.99ID:LwYTdpan
>>246
ヘッダファイルを実装とは別に用意する仕組みは効率よく差分ビルドするための仕組みとして機能していたんだけど、
テンプレートが登場してからは足を引っ張るようになってるとは思う。
まあ単純に面倒くさいってのもわかる。

パッケージマネージャはディストリビューションに乗ってるものを使いたまえよ。
実行環境の管理と開発環境の管理は要求されるものが本来は違うのだけど、
C/C++ は特権階級的な立場だから実行環境を開発環境として使えるようになってることが多い。

あえて分離したいなら CONAN が有名かなぁ……。 使ったことないけど。
https://conan.io/
249デフォルトの名無しさん
2020/09/10(木) 13:27:37.52ID:ke8OXyHN
>実行環境を開発環境として使えるようになってることが多い
これは古い慣習でそうなってるだけで実は分けたほうが便利な気がする
システム汚さないし、依存関係の解決も楽
そもそも実行環境に不要なはずのものがいることがおかしい

ConanもC++20のModuleも良さそうだけど結局バベルの塔だからなぁ
250デフォルトの名無しさん
2020/09/10(木) 13:37:57.10ID:wdhKSMlq
>>249
俺も同意見
開発環境、それとテスト環境もVMwareのゲストにしてる
おっかない実験もするし
251デフォルトの名無しさん
2020/09/10(木) 13:58:43.59ID:h1ZKqHov
>>246
VCPKGがあるじゃないか。
252はちみつ餃子 ◆8X2XSCHEME
2020/09/10(木) 15:13:20.95ID:LwYTdpan
>>249-250
それは重々承知なんだけど C/C++ では分ける体制になってないから
無理して分けるとそれはそれで変になるって話。
253デフォルトの名無しさん
2020/09/10(木) 16:03:33.34ID:wdhKSMlq
変になるって、具体的に何?
254デフォルトの名無しさん
2020/09/10(木) 18:50:19.73ID:6Z343NeL
>>252
>それは重々承知なんだけど C/C++ では分ける体制になってないから
そうか?
はちみつはそういう経験無いだけだろ
VCでだってクロスプラットフォームは可能だぞ
255デフォルトの名無しさん
2020/09/10(木) 18:55:15.35ID:h1ZKqHov
VSがクロス一番楽。
256デフォルトの名無しさん
2020/09/10(木) 18:56:59.66ID:h1ZKqHov
C/C++はコンパイラメーカーがローダーを用意していない。
これに尽きる。
257デフォルトの名無しさん
2020/09/10(木) 19:04:13.58ID:wOYL1pS0
最近は何でもdockerに突っ込んでいる。
vscode + remote containerで開発環境の構築も楽になったし。
258デフォルトの名無しさん
2020/09/10(木) 19:05:01.58ID:ke8OXyHN
C++ moduleってテンプレート使ったクラスをモジュール化したとき
プリコンパイルヘッダと原理的に同じで機械語じゃなくて中間表現に
変換されるらしいんだけど、これってコンパイル速度が大幅に改善することはない
ってことだよね?
259デフォルトの名無しさん
2020/09/10(木) 19:13:48.12ID:6Z343NeL
よく考えたインクルードでpch併用してるプロジェクトなら、普段のビルド大して変わらんかもだけど
pchが依存するヘッダを書き換えた場合のフルビルドみたいなのは避けやすくなるぽい??
260デフォルトの名無しさん
2020/09/10(木) 19:13:59.29ID:ke8OXyHN
プリコンパイルヘッダを試しに生成するのと
普通にコンパイルするのと試したら2割程度しか時間短縮できなかった
261はちみつ餃子 ◆8X2XSCHEME
2020/09/10(木) 21:58:54.33ID:LwYTdpan
>>260
二割はでかいやろ。

>>258
従来からもたとえば gcc で LTO を有効にしたときは中間表現で持っておいて
リンク時に最適化とコード生成をやったりはする。
それと同程度のコンパイル速度だろうと考えると
モジュールの導入は速度にはそれほど寄与しないと思う。
262デフォルトの名無しさん
2020/09/10(木) 22:37:36.67ID:ke8OXyHN
うーん まぁチリツモと考えるとでかいか
夢見過ぎだったか
263はちみつ餃子 ◆8X2XSCHEME
2020/09/10(木) 23:28:14.82ID:LwYTdpan
>>262
ジョジョ、それは高速化しようとするからだよ。
逆に考えるんだ、『もう十分に速い』と考えるんだ。
264デフォルトの名無しさん
2020/09/10(木) 23:45:25.82ID:EIogAYj0
質問ですが
 double x = 0.3333;
 printf("x=%f\n", x); // 期待する表示: x=0.3333
みたいなBCD風表記→IEEE 754→再びBCD風表記
としたときに、元の表記と結果の表記が一致することは
保証されてますん?
265はちみつ餃子 ◆8X2XSCHEME
2020/09/11(金) 00:13:13.30ID:iGbGHAE2
>>264
保証されない。
0.3333 は浮動小数点で正確に表現することは出来ないので誤差は生じる。
誤差があるところから再び十進数の表現にするんだから
元と同じ表現になることは期待できない。
266デフォルトの名無しさん
2020/09/11(金) 00:15:27.86ID:ajBE7peV
されてない
267デフォルトの名無しさん
2020/09/11(金) 00:22:49.83ID:WOjxtKnw
不可逆変換
268デフォルトの名無しさん
2020/09/11(金) 00:27:13.22ID:1mBomO61
何がしたいんだろな。
269デフォルトの名無しさん
2020/09/11(金) 00:31:20.53ID:hb2JlHSF
ちょっソ───スコ───ドに0.3333と書いたのに
0.33331とかに解釈になったらスゲーまずくね??
270デフォルトの名無しさん
2020/09/11(金) 00:38:43.10ID:ajBE7peV
初心者スレは別にあるだろ
271デフォルトの名無しさん
2020/09/11(金) 00:40:37.59ID:OVJtRCSC
さすがにもう少し精度が高くて、doubleなら
0.3333000000000001 くらいの誤差じゃない?(適当)
272デフォルトの名無しさん
2020/09/11(金) 00:41:20.87ID:hb2JlHSF
何がしたいのかというと実行時計算ができる有理数クラスを書いたんじゃが
ソース値がソースコードに浮動小数点で書かれていた場合は当たり障りのない有理数にしたいわけで、
たとえば
 Rational x = 0.11;
と書けば済むところはそのまんま
 x.m_num == 11LL // 分子
 x.m_den == 100LL // 分母
とかになってホスイ
(必ずいちいちRational x = Rational(11, 100);と書かなければならないことはユーザー(≒漏れ自身)に強制したくない
273デフォルトの名無しさん
2020/09/11(金) 00:43:42.19ID:hb2JlHSF
つかソースコードに書かれた浮動小数点数を文字列化して元に戻せることの重要性を
書いたコンパイラの教科書はマイナーかもしれんが実在したで(記憶モード

そのやり方こそ今思い出すべきなのだが手元に無いから質問すた、
274デフォルトの名無しさん
2020/09/11(金) 00:44:51.33ID:ajBE7peV
>>272
ユーザ定義リテラルでも作れば?
275デフォルトの名無しさん
2020/09/11(金) 00:45:17.34ID:OVJtRCSC
固定小数点?
276デフォルトの名無しさん
2020/09/11(金) 00:50:39.51ID:hb2JlHSF
>>274
やだ

数値的にやるとしたらここ↓のalmost_equal<T>()でも使ってゴニョれば良いんかのう…
https://en.cppreference.com/w/cpp/types/numeric_limits/epsilon

しかし件の本にはこれと似たような演算を書いてあったような気がしないOTL
277デフォルトの名無しさん
2020/09/11(金) 00:54:13.41ID:ajBE7peV
>>273
浮動小数ならやり方ははっきりしてんだよ
お前の場合BCDなんだろ?
278デフォルトの名無しさん
2020/09/11(金) 00:59:52.73ID:ajBE7peV
>>276
そのRationalクラスが多倍長とかだったら無理だね
64bit/64bitでも無理だろ、たぶん
279デフォルトの名無しさん
2020/09/11(金) 01:08:43.17ID:hb2JlHSF
>>278
しらそん
桁の十分不十分は応用にもよるし
足りないとわかったらRationalの方を多数桁対応させるは

とにかくRationalは見かけをdouble型と同様に扱えるように仕上げ鯛、
なぜなら真に走らせたいアルゴリズムはdoubleをtypedefして作ってあって、
それをRationalに差し替えるだけ!と思ってたら
単体テストが10億行ぐらい浮動小数点で書いてあったので…
280デフォルトの名無しさん
2020/09/11(金) 01:27:41.74ID:ajBE7peV
それはわかったけど
>>264 は必要?
別にいらんと思うけど
281デフォルトの名無しさん
2020/09/11(金) 01:52:30.29ID:tAPrmVM5
文字列受け取るコンストラクタ書くだけだろ
282デフォルトの名無しさん
2020/09/11(金) 03:35:25.76ID:iBiKDQ69
char配列に変換して8バイト読み書きするだけのこと
文字列に変換することは忘れろ
283デフォルトの名無しさん
2020/09/11(金) 12:52:59.43ID:WJYUzgW7
そもそも0と0.0を区別する方法がないのにどこまで意味のある事なのか
284デフォルトの名無しさん
2020/09/11(金) 15:59:42.05ID:Cxw4gZ+X
> (必ずいちいちRational x = Rational(11, 100);と書かなければならないことはユーザー(≒漏れ自身)に強制したくない

無理だろ
Rational x = 0.1;
こんなの、どうすんだよ?
double型の0.1は1/10じゃねえぞ
285デフォルトの名無しさん
2020/09/11(金) 16:00:39.94ID:Cxw4gZ+X
denが必ず10のべき、みたいなことにして
誤差が最小になるように頑張るならともかく
286デフォルトの名無しさん
2020/09/11(金) 16:17:57.96ID:FpD9K4HS
>>272
Rational x = "0.11"; を許せばいい
287デフォルトの名無しさん
2020/09/11(金) 16:29:19.36ID:6r5prnWG
>>279
仮にテストコードに 0.333333333333333 って書いてあったとしても
それは 0.3333333333333329818 のことだから、
0.333333333333333として受け取ってしまうと逆にテストに失敗するのでは?
288デフォルトの名無しさん
2020/09/11(金) 16:36:45.19ID:G2VX17rJ
10億行ぐらい既存テストコードがあるとのことなので文字列とか全面書き換えになる案はNGなんでしょう
でもいい案はなさげ
一旦浮動小数になったら元のリテラルの復元はできないだろうな
289デフォルトの名無しさん
2020/09/11(金) 16:39:43.52ID:su+TWEMf
>文字列とか全面書き換え

Rational にする書き換えはOKなんだろ
290デフォルトの名無しさん
2020/09/11(金) 16:43:40.92ID:G2VX17rJ
そりゃクラスの差し替えは局所的な置き換えで済むんじゃないの
浮動小数のリテラルを全部文字列に置き換えることに比べたら楽でしょ
まぁ本人が答えるべきだが状況はなんとなく推測できる
291デフォルトの名無しさん
2020/09/11(金) 20:04:14.01ID:ua52u3Jr
そのくらい正規表現で置換すればいいだろ。
だいたい10億行のテストコードが仮に本当なら100%手書きじゃないから一つずつ確認しながら置換するなんてアホなことはしない。
有理数クラスなんて普通は枯れたライブラリ拾って来るけどな
292デフォルトの名無しさん
2020/09/11(金) 20:18:44.50ID:G2VX17rJ
だからさ、そこは本人の希望なんだからあれこれ言ってもしかたないじゃん
正規表現で機械的に置き換えたらまずいものもあるかもしれないし
浮動小数と有理数で切り替えたいって言ってるからそのメンテコストもあるだろ
293デフォルトの名無しさん
2020/09/11(金) 21:28:10.16ID:opulvzCM
ユーザー定義リテラルとか使ってboost::rationalでも生成したら?

やったことないからできるか知らんが。
294デフォルトの名無しさん
2020/09/11(金) 21:35:23.73ID:em6XQ5sn
何にせよdoubleになった時点でリテラル表記の情報は失われるんだから、何がしかの書き換えをするしかない
それがイヤだ絶対やらんと言うなら、じゃあ不可能だよという答えにしかならない
295デフォルトの名無しさん
2020/09/11(金) 21:51:53.86ID:aT3N5bZo
プリプロセッサを書けばどうだろう
296デフォルトの名無しさん
2020/09/11(金) 22:53:08.79ID:3mrNom4D
Rational に double の数値が直代入されてるところだけ文字列代入にするための
プリプロセッサ描けば良い話
297デフォルトの名無しさん
2020/09/12(土) 05:53:05.89ID:2ljmp3qW
結論から言うと、

IEEE 754の値x → 10進数文字列 s→ IEEE 754の値x'
という変換を行った場合、x == x'となるかどうかはx次第であって一般に保証されないが、

10進数文字列s → IEEE 754の値x → 10進数文字列s'
という変換は、sが非正規化数だったりIEEE 754の仮数部で表現可能な桁数を超えない限り -- (1)
s == s'を保証可能

なぜなら、(1)の条件を満たすsとそのIEEE 754への変換結果xの食い違う条件は
sを2進数に変換したとき循環小数になる場合に限られるが(もとの10進数のsはもちろん循環小数ではない
この食い違いは±DBL_MINを超えないから以下略
(結局x→s'変換はalmost_equal<T>()的な処理が必要にはなるが、適切にやれば
 sの整数部の文字列化 ==> x -= (xの整数部) ==> x *= 10、
 の反復を何時やめればよいか確定する
298デフォルトの名無しさん
2020/09/12(土) 05:55:29.22ID:2ljmp3qW
>>294
やだという理由は>>279の後半部で言い尽くされとる
299デフォルトの名無しさん
2020/09/12(土) 08:39:01.67ID:U5yMllJ4
sagemathで
a=0.11
QQ(a)
とすると
11/100
が得られる
aの実体はMPFRのオブジェクト
まーsagemathのソースでも見とけば
300デフォルトの名無しさん
2020/09/12(土) 15:38:22.68ID:cDX1Q2rT
>>297
的外れ
301デフォルトの名無しさん
2020/09/12(土) 15:47:40.14ID:JdE/Bv85
>>297
その前にリテラル表現→double値(お前が言うところのIEEE754の値)
という変換が入って、それが不可逆だから書き換えなしじゃ無理だっつってんだよ
Hoge(0.0)とHoge(0.00)に表現に応じた別の処理させるのはC++の範囲では不可能だ
302デフォルトの名無しさん
2020/09/12(土) 15:50:40.29ID:cDX1Q2rT
プリプロセッサなら可能
Cの仕様
303デフォルトの名無しさん
2020/09/12(土) 15:54:45.19ID:JdE/Bv85
ああ、#で文字列化できるからこの場合はできるのか忘れてた
まあ対象の浮動小数を全部マクロで括らないといけないからどっちみち書き換えは発生するけどな
304デフォルトの名無しさん
2020/09/12(土) 15:56:41.81ID:cDX1Q2rT
おまえプリプロセッサが何か判ってないだろ
305デフォルトの名無しさん
2020/09/12(土) 15:59:56.68ID:JdE/Bv85
ん?シンボルを文字列化する#演算子はプリプロセッサディレクティブの一つだぞ
何か間違ってるか?
306デフォルトの名無しさん
2020/09/12(土) 16:08:00.10ID:idwadC/M
問題はそこじゃない
307デフォルトの名無しさん
2020/09/12(土) 16:17:43.12ID:JdE/Bv85
絡んでくるだけで具体的な問題を指摘できないカスは置いといて
プリプロセッサフェーズの後で0.0と0.00を区別する方法はないから279君の望みは叶わないでFA
プリプロでもdouble x = 0.00;とかを自動で書き換えるの無理でしょ
308デフォルトの名無しさん
2020/09/12(土) 16:19:33.34ID:idwadC/M
プリプロセッサを書けと言っている
309デフォルトの名無しさん
2020/09/12(土) 16:28:52.93ID:erdZI+Jx
>>299
有理数の分母が10の冪という前提ならある程度の精度で出来そうだな。
310デフォルトの名無しさん
2020/09/12(土) 17:27:31.95ID:JdE/Bv85
分母仮定せずに普通にディオファントス近似した方が誤差小さくなると思うんだけど
311デフォルトの名無しさん
2020/09/12(土) 17:57:13.06ID:erdZI+Jx
10進リテラルで渡す前提なら分母が10の冪になってしまったら逆に誤差が大きいことになると思うが。
#約分とかは別として。
まぁ、1.0/3.0みたいなものも渡せるようにということなら確かにそうかも。
312デフォルトの名無しさん
2020/09/12(土) 20:28:37.72ID:2ljmp3qW
とりあえずここまではできた;;
x=0.1: rt=1/10
x=0.11: rt=11/100
x=0.111: rt=111/1000
x=0.1111: rt=1111/10000
x=0.9: rt=9/10
x=0.99: rt=99/100
x=0.999: rt=999/1000
x=0.9999: rt=9999/10000
x=0.33333: rt=33333/100000
x=123.34567: rt=1233456699999999/10000000000000 // NG
x=123.345678: rt=123345678/1000000
x=123.3456789: rt=1233456788999999/10000000000000 // NG
x=12.34567: rt=1234567/100000
x=12: rt=12/1
x=123E-5: rt=123/100000
313デフォルトの名無しさん
2020/09/12(土) 20:35:15.16ID:2ljmp3qW
わかったことは、
10進数文字列s → IEEE 754の値x → 10進数文字列s'
において、s→xのところで仮数部最小桁で丸めがおきたのかどうかの情報が無いと
xからsの復元が難しいケースがあるというこっちゃorz

コンパイラならs→xをやるのは自分自身なので、x→s'を行うライブラリと手を握ってうまいことやれる可能性があるが
xを与えられるだけのユーザープログラムではこれは対処が難しい
Ad-hocに.999999 = 1とみなす系のAd-hocな処置が必要かも試練、
314デフォルトの名無しさん
2020/09/12(土) 20:45:44.57ID:JdE/Bv85
だからさ
例えばそれでrt=1233456699999999/10000000000000になったとして
どうやって元の表現が123.34567だったって判断するのさ
本当に123.345699999999って書かれてた場合と区別できるわけないんだけどどうするの?
123.34567を123.345699999999に間違えるのはダメだけど逆は許されるの?どうして?どういう仮定置いてるの?

その辺を何一つハッキリさせないまま勝手にやられても
何がしたいのか全くわからない
315デフォルトの名無しさん
2020/09/12(土) 20:52:26.12ID:EJqlmNG1
まぁそんな追い込まんでも
自分で手を動かしてダメっぽいことい気づいたのは立派だよ
316デフォルトの名無しさん
2020/09/12(土) 20:53:34.39ID:U5yMllJ4
>>314
そのことを言ってるんだろ、
>>313の丸め情報が必要ってのは
317デフォルトの名無しさん
2020/09/12(土) 20:54:09.24ID:2ljmp3qW
>>314
>本当に123.345699999999って書かれてた場合と区別できるわけない
思い込みが激しいお人じゃ…
123.345699999999はギリ仮数部で表現可能な桁数に収まっているから
これは123.34569とは明確に区別可能

ていうか実際のところできたわ;;
x=0.1: rt=1/10
x=0.11: rt=11/100
x=0.111: rt=111/1000
x=0.1111: rt=1111/10000
x=0.9: rt=9/10
x=0.99: rt=99/100
x=0.999: rt=999/1000
x=0.9999: rt=9999/10000
x=0.33333: rt=33333/100000
x=123.34567: rt=12334567/100000
x=123.345678: rt=123345678/1000000
x=123.3456789: rt=1233456789/10000000
x=123.345699999999: rt=123345699999999/1000000000000
x=12.34567: rt=1234567/100000
x=12: rt=12/1
x=123E-5: rt=123/100000
318デフォルトの名無しさん
2020/09/12(土) 20:59:43.51ID:JdE/Bv85
そりゃ0.00002も差があれば区別できるに決まってるわな
いやまあ自分が書き間違えたのが悪いんだけど結局何が問題だか全く理解してないのね
319デフォルトの名無しさん
2020/09/12(土) 21:00:56.75ID:2ljmp3qW
>>318
何が問題なのかではkwsk
wwwwwwwwwww
320デフォルトの名無しさん
2020/09/12(土) 21:08:30.19ID:EJqlmNG1
0.500000000000000166533453693773481063544750213623046875

これできる?
321デフォルトの名無しさん
2020/09/12(土) 21:09:20.40ID:JdE/Bv85
別のリテラル表現が同じdouble値(IEEE754の値)を示す時に何をもって正しいとするかという
お前の勝手な俺様基準を何も説明しないまま公衆の面前でガチャガチャやってることが問題なんだよ
わかれ
322デフォルトの名無しさん
2020/09/12(土) 21:18:05.26ID:2ljmp3qW
>>321
>>272を嫁、
気体動作は明確はなず
これを読んでもわからず妥当な反論ができもしないというのであれば
読み手のセンスの問題と判断せざるおえない

>>320
>>297を嫁、
提示されたテストケースは(1)を満たしていないから範囲外
323デフォルトの名無しさん
2020/09/12(土) 21:22:42.84ID:EJqlmNG1
いやいやそれでどやられてもw

> 10進数文字列s → IEEE 754の値x → 10進数文字列s'
> という変換は、sが非正規化数だったりIEEE 754の仮数部で表現可能な桁数を超えない限り -- (1)
> s == s'を保証可能

仮数部で表現可能かどうかってどうやって判定するわけ?
324デフォルトの名無しさん
2020/09/12(土) 21:30:02.39ID:2ljmp3qW
うれしげにコード貼る、
https://ideone.com/EKHKWG
実行結果は>>317と同じ

>>313の問題があるから
0.999999(9の循環小数)を1.0と見なす処置を入れた結果、考えていたテストケースは全部通った。
結局、
 10進数文字列s → IEEE 754の値x → 10進数文字列s'
でs'が厳密なsの復元にならないケースがあるはずだがまだ見つかっていない。
ま、あったとしても有理数として解釈する上では数値としての大差は無いので問題ないはず、、、
325デフォルトの名無しさん
2020/09/12(土) 21:33:35.13ID:2ljmp3qW
>>323
入力となる浮動小数点数を文字列として書いた時点でワカル
52 bitでまったく表現しきれない桁数なら(1)を満たさない
そうでなく、かつ(xE+s表記で与えたとして)指数sが極端に小さくなければ(xの桁数+sが-1022以上なら)(1)を満たす
326デフォルトの名無しさん
2020/09/12(土) 21:40:34.66ID:JdE/Bv85
>>325
なんだ、仮数部で表現可能かのチェックのために結局20億行テストコードを文字列として解析する必要があるわけね
じゃあその時に文字列として扱うようにコード直せよ
どうせそういうスクリプトが必要なんだからついでにやればいいね、よかったこれで解決だ

あほくさ
327デフォルトの名無しさん
2020/09/12(土) 21:43:09.42ID:EJqlmNG1
>>325
は?書く?
10億行のテストコードあんだろ?
それが(1)を満たすかどうか確認する必要があるんだろ?

だいたい仮数におさまってたら大丈夫ってそりゃそうだろよ
誤差が問題なのにそれを考えなくていいケースなんだもの
328デフォルトの名無しさん
2020/09/12(土) 21:47:15.04ID:2ljmp3qW
>>326
>なんだ、仮数部で表現可能かのチェックのために結局20億行テストコードを文字列として解析する必要があるわけね
なんでそうなる必要があるのかkwsk、
10億行のテストコードは手入力なので52 bitで表現できないような桁数の数値は無いし、

とまれそこまで認識が進んだのであれば、あと何か言いたければ>>324のバグ探しでもしてちょんまげ
看板に偽りありを示すテストケースを指摘してくれたら大金星と言える
329デフォルトの名無しさん
2020/09/12(土) 21:52:28.75ID:GweMiOHC
>ま、あったとしても有理数として解釈する上では数値としての大差は無いので問題ないはず、、、
ならRationalなんていらないね(´・ω・`)
330デフォルトの名無しさん
2020/09/12(土) 21:58:02.93ID:JdE/Bv85
>>328
はあ?なんだそれ?
全部お前に都合がいいリテラルしか書いてない前提なんだったら、お前がさっきから書き散らかしてる落書きなんも必要ねえじゃん
話にならんわ下らねえ
331デフォルトの名無しさん
2020/09/12(土) 22:03:02.47ID:2ljmp3qW
>>330
単体テストというのは真に走らせたいアルゴリズム(>>279)の単体テストのことであって、
別段IEEE 754から有理数への変換のエッジケースを書く必要は無いんである。
問題の所在自体を(よく読みもせずに)つついても無駄じゃよ

それよか何か言いたいのであれば>>324をデバッグ汁、
332デフォルトの名無しさん
2020/09/12(土) 22:04:39.19ID:JdE/Bv85
あっはいどうでもいいです
(仮数部)/2^52に一番近い10^nを分母とする分数を探す簡単なさんすうの問題を解くだけの話だったんですね
がんばって
333デフォルトの名無しさん
2020/09/12(土) 22:17:12.69ID:EJqlmNG1
手入力だから大丈夫ってのはお前しか判断できないよね?
成り立たない数字あげてもそれは手入力しないと言われるわけでしょ?
おれもあほくさくなった
334デフォルトの名無しさん
2020/09/12(土) 22:28:23.42ID:MEMmSzVD
俺ぐらいの達人になると、もう初期段階で
「あ、これさわったらアカン人や・・」って雰囲気でわかるようになる
335デフォルトの名無しさん
2020/09/12(土) 22:31:11.00ID:GweMiOHC
10億行手入力したとか言い放つキチガイ相手にするの馬鹿らしくない?
1行/秒でも1700人月よ
336デフォルトの名無しさん
2020/09/12(土) 22:45:00.53ID:SzTm78BI
浮動小数点型としてメモリに載せた時点でアウト
文字列とかでやるしかなくね
337285
2020/09/13(日) 06:06:47.90ID:2wZmRDXk
俺の予言当たってやんのw
338デフォルトの名無しさん
2020/09/13(日) 08:25:17.62ID:Xp7zp8nz
単に誤差最小のものを選ぶだけだと>>314みたいになるから、1ULPか2ULPの誤差範囲内で
冪数が最小になるものを選ぶのがいいかな。
339デフォルトの名無しさん
2020/09/13(日) 12:55:10.97ID:P44KoBmR
連分数展開でディオファントス近似する方法なんてその辺にいくらでも転がってるのに
340デフォルトの名無しさん
2020/09/13(日) 18:33:50.24ID:LIu3OWuw
./hello  > hello.txt
ってやったときhelloのprintfが無限ループだったら無限にhello.txtを上書きし続けますか?
341デフォルトの名無しさん
2020/09/13(日) 19:12:18.99ID:eePcELKn
>>340
上書きしません、追記し続けます。
342デフォルトの名無しさん
2020/09/13(日) 19:39:02.91ID:cE5a2Csh
>>340
上書きなんてしないよ
どんどんprintfの出力内容を追加していくだけ
343デフォルトの名無しさん
2020/09/13(日) 23:14:53.91ID:n2e2K14L
./hello < hello.txt > hello.txt
344デフォルトの名無しさん
2020/09/14(月) 03:25:56.23ID:13FXnr3U
Pythonで書いたGUIアプリをC++で書き直す日々が始まるお(*´ω`*)
345デフォルトの名無しさん
2020/09/14(月) 03:28:48.08ID:p1+vn7b/
イテレータを i 個分進める (戻す) のって i 回インクリメント (デクリメント) するしかないの?

一気に進める方法があったら教えて下さい
346デフォルトの名無しさん
2020/09/14(月) 03:32:02.02ID:p1+vn7b/
ああvectorならできてsetなら無理ってことか
ググったらわかりました
すみませんでした
347デフォルトの名無しさん
2020/09/14(月) 08:44:25.84ID:NtiDKVVf
>>340
わざとやってみたことあるけど
途中で飽きてきてCtrl+C
うすらでかいファイルができていた

ずーっと放置するとHDDの空き容量がなくなって
stdoutへの書き込みが失敗するようになるはず
それがOSのファイルにも使うドライブだとシステムダウンして
親ガメこけたら皆こけただね
348デフォルトの名無しさん
2020/09/14(月) 09:06:31.69ID:dr1ZmQsx
>>346
つstd::next
自分で増分するのに比べて早くはならないと思う
349デフォルトの名無しさん
2020/09/14(月) 09:54:42.26ID:gMM3Z1ji
>>334
350デフォルトの名無しさん
2020/09/14(月) 10:42:29.67ID:/vUb6N4m
>>346
advance
351デフォルトの名無しさん
2020/09/15(火) 15:20:33.02ID:WaVlZlwn
typedef struct HOGE
{
 int x;
 int y;

 HOGE(int x, int y)
 {
  this->x = x;
  this->y = y;
 }
} hoge_t;

class TEST {
 hoge_t h(1, 2); // expected identifier before numeric constant
}

で、// のとおりエラーが出てしまいます。
typedef struct と class の違いが理解できていないのが悪いのですが
メンバ変数として利用するとき初期化は出来ないのでしょうか。
352デフォルトの名無しさん
2020/09/15(火) 15:26:43.04ID:YjwP830M
>>351
丸括弧じゃなくブレースだよ
それとTESTの最後にセミコロンがない
353デフォルトの名無しさん
2020/09/15(火) 15:40:39.25ID:rFxeOmKr
>>351
初歩の初歩でつまづいとるな
クラスの直下にプロセスを書けるとでも思っているところとか初心者スレ逝けばやさしいひとたちが教えてくれるぞこわっぱ
354デフォルトの名無しさん
2020/09/15(火) 15:42:47.32ID:YjwP830M
ブーメラン投げてんなよ
C++11からokになったの知らねえとか
勉強不足にも程があるだろうが
355デフォルトの名無しさん
2020/09/15(火) 15:53:03.02ID:rFxeOmKr
あっそっか
コレ、メンバの初期化してんのか
てっきり文かいてんのかとおもたわ
スマンスマン
356デフォルトの名無しさん
2020/09/15(火) 15:53:08.92ID:8CWM1WbO
そもそもプロセスなんてどこから出てきたんだ?
357デフォルトの名無しさん
2020/09/15(火) 16:58:31.38ID:3HBrgqD1
>>351
それは、恐らく昔のC++では動かなかったような非常にきわどい書き方をしている。
1. まず、クラス名をtypedef宣言しても、それをどの場所でもクラス名の変わりに
 使えるかどうかは、微妙。余り行われていないことで、よく調べてみないと分からない。
 特に、この例の様なコンストラクタによる初期化を伴う変数の宣言の場合には、
 当たり前のように出来るように見えて、コンパイラ作者目線では解析に負担がかかること。
2. static以外のメンバ変数(インスタンス変数)を、クラス宣言の中で直接初期化する
 書き方は、あるバージョン以降のC++でのみできるようになってきたはずで、
 その書き方に対応していないコンパイラだとエラーになる。
358デフォルトの名無しさん
2020/09/15(火) 17:03:32.49ID:3HBrgqD1
>>357
1に関して。
まず、typedef宣言自体が、ポインタや配列や関数型などが複雑に絡んだ
「組み立て型」を簡単に表すためと、
C言語では、構造体型をそのまま型名として使うことができず、typedefを
使わなければ、「struct タグ名」とstructを省略できなかったので、
typedefが好んで使われた。

ところが、C++では、structやclassキーワードを書かなくても、いきなり
タグ名を書いても型名として扱われる。だから、class名/struct名を敢えて
typedef宣言する人は非常に少なくなった。なので、そのような書き方に
滅多に遭遇しないので、テスト不十分でコンパイラにバグが残っている可能性がある。
359はちみつ餃子 ◆8X2XSCHEME
2020/09/15(火) 17:21:18.89ID:Gxy/396Z
>>358
メンバ関数を含まない struct (つまりは POD) なら、
C のヘッダファイルとしても使えるように書く場合は珍しくもないと思うよ。

コンパイラのバグを心配し始めたらなんもできなくない?
主要なコンパイラでよほど長く改善できてないバグだったり、
(特殊な開発環境などで) 実際に使わざるを得ない特定のバージョンにバグがある
ことが分かっているときなら配慮もするけど、
普段の習慣として気にするほどのことじゃないでしょ。
360デフォルトの名無しさん
2020/09/15(火) 17:22:04.43ID:GPrkorqi
hoge_t h = {1, 2};

で普通にコンパイル通るんだが
class TEST のインスタンスが造られる度に実行されるのか
それともあるインスタンスで変更されたら
次に造られるインスタンスは後者の値になるのか
361はちみつ餃子 ◆8X2XSCHEME
2020/09/15(火) 17:33:54.20ID:Gxy/396Z
>>360
TEST 型のオブジェクトが生成されるたびに h も生成されるよ。
TEST のコンストラクタで初期化するのと機能はなんも変わらん。
362デフォルトの名無しさん
2020/09/15(火) 17:49:15.00ID:3HBrgqD1
実は、
z x(a,b);
の形式は、コンパイラが関数xのプロトタイプ宣言と、引数付きのコンストラクタ
呼び出しによる変数xの初期化の区別を付けるのが難しい例として知られている。
その区別は、基本的にはaの部分が型名なのか、型名でないのかで区別される。
それに加えて、zの部分にtypedef名を書くと、コンパイラはいろいろなことを配慮
しなくてはならなくなる。
関数のプロトタイプ宣言と、メンバ変数の定義では、コンパイルの流れが大きく変わるので、
なるべく早い段階でそれらを区別しなければならない。
余り深く解析しすぎてはコンパイル時間が増大してしまう。
だから、適度にヒューリスティックな方法で判別していることがある。
ヒューリスティックな方法なので、滅多に書かない特殊な書き方をした場合、間違えてしまう可能性があるかもしれない。
363デフォルトの名無しさん
2020/09/15(火) 19:13:25.13ID:glwHIVnw
なんでここってそんな殺伐と喧嘩腰みたいなやつ多いの?
もっと柔らかくさ切磋琢磨してこうよ
364デフォルトの名無しさん
2020/09/15(火) 19:25:55.43ID:cZkGG5+C
class TEST {
hoge_t h;
TEST() : h{1, 2} {}
};
のほうがわかりやすくね
365デフォルトの名無しさん
2020/09/15(火) 19:25:55.43ID:cZkGG5+C
class TEST {
hoge_t h;
TEST() : h{1, 2} {}
};
のほうがわかりやすくね
366デフォルトの名無しさん
2020/09/15(火) 19:26:49.33ID:cZkGG5+C
うおダブルクリックしちゃった
てかJavaScriptで防止しとけよw
367デフォルトの名無しさん
2020/09/15(火) 19:28:11.48ID:cZkGG5+C
コンストラクタにpublicつけ忘れた
368デフォルトの名無しさん
2020/09/15(火) 20:39:52.74ID:Zw0qp59Z
コードを書くとききは、最低限簡単なテストコードで
コンパイルが通るかどうか確認してから書きなさい
技術系ブログですらそのルール守ってない事があり
そういうブログはたいてい読むに値しない
369デフォルトの名無しさん
2020/09/15(火) 20:59:22.26ID:eg5KpnfE
>>351

#include <iostream>
using namespace std;

struct Hoge{
int x;
int y;

Hoge(int x, int y){
this->x = x;
this->y = y;
}
};

int main() {
Hoge h(1, 2);
cout << h.x << endl;
return 0;
}


GVkKul - Online C++0x Compiler & Debugging Tool - Ideone.com
https://ideone.com/GVkKul

余り深く考えないならこんなんでいいんじゃなかろうか
370デフォルトの名無しさん
2020/09/15(火) 21:01:17.48ID:cZkGG5+C
explicit Hoge(int x, int y)
にしろと言う派もいそう
371デフォルトの名無しさん
2020/09/15(火) 21:07:56.21ID:YjwP830M
アホ人口が過密すぎ
372デフォルトの名無しさん
2020/09/15(火) 21:43:29.84ID:sNNyLA9G
こうですか?
わかりません><;

■ 小数を含む10進数の表記の再現に関する定理
有限桁の10進数で表記された非負の数x0をIEEE 754形式(2進数版)に変換して
xを得たとして、x0の最小の桁が10^mの位、xの仮数部のLSBが2^pの位ならば、
  m > p * log10(2)
を満たす限り、xからx0の最小の桁まで正確に再現できる。

■ 証明
x0の最小の桁が10^mの位(10^mより小さい位が無い)ということは、
x0は周期10^mの格子点上にある。(kを適当な整数として、x0=k*10^mと表すことができる。)

一方、x0をxに変換する際、仮数部のLSBが丸めで繰り上がらなかったとすると、
  x ≦ x0 ≦ x + 2^(p-1)
が成り立ち、仮数部のLSBが丸めで繰り上がった場合は
  x - 2^(p-1) ≦ x0 ≦ x
が成り立つ。(全ての不等号が等号付きなのは、偶数丸めの可能性を考慮している。)
合わせると、どっちにせよ以下の式が成り立つ:
  x - 2^(p-1) ≦ x0 ≦ x + 2^(p-1) -- (1)

x0が周期10^mの格子点上であることから、式(1)より
  (2^(p-1) - (- 2^(p-1))) < 10^m  ∴ m > 2 * log10(2)
であれば、xから式(1)を満たすx0が一意に定まり、
周期10^mの格子点上に位置する他の数と区別できる。
373はちみつ餃子 ◆8X2XSCHEME
2020/09/15(火) 22:07:33.21ID:Gxy/396Z
>>364
それはどうだろう。 慣れという面は大きいと思うよ。

普通のローカル変数は変数の宣言と初期化は一体なわけだし、
その記法と一致させた方がよくない? ってのは有るでしょ。

でも初期化のタイミングが (ある程度は) 見かけ通りになって欲しいという感覚からは
コンストラクタの方で初期化した方が自然だよなってのも有る。
374デフォルトの名無しさん
2020/09/15(火) 22:07:55.51ID:y4mQo5lg
それもういいから
375はちみつ餃子 ◆8X2XSCHEME
2020/09/15(火) 22:08:53.69ID:Gxy/396Z
そういう感覚的な部分は置いてちょっと便利な使い方としては、
コンストラクタが複数あってそれぞれが初期化したい対象が違う場合に
共通する部分は宣言と同時に初期化するように書くという方法。

こんな感じね。

struct foo {
int mem_i = 1;
double mem_d = 2;
char mem_c = 3;

foo(int i) : mem_i(i) {}
foo(double d) : mem_d(d) {}
foo(char c) : mem_c(c) {}
};

以下のように書くよりはマシでしょ。

struct foo {
int mem_i;
double mem_d;
char mem_c;

foo(int i) : mem_i(i), mem_d(2), mem_c(3) {}
foo(double d) : mem_i(1), mem_d(d), mem_c(3) {}
foo(char c) : mem_i(1), mem_d(2), mem_c(c) {}
};

宣言と同時の初期化が書かれていてコンストラクタでも初期化が書かれているときは
コンストラクタでの初期化のみが有効になる。
376デフォルトの名無しさん
2020/09/15(火) 22:17:19.74ID:cZkGG5+C
今まで全部下の方法で書いてたわ
そしてやめる気もない
377はちみつ餃子 ◆8X2XSCHEME
2020/09/15(火) 22:33:53.09ID:Gxy/396Z
ただ、 >>375 にも良くない面はあって、
ヘッダファイルでクラス定義をして
コンストラクタの実装は .c に書いた場合、

// foo.h
struct foo {
int mem_i = 1;
double mem_d = 2;
char mem_c = 3;

foo(int i);
foo(double d);
foo(char c);
};

// foo.c
foo::foo(int i) : mem_i(i) {}
foo::foo(double d) : mem_d(d) {}
foo::foo(char c) : mem_c(c) {}

ヘッダファイルからは 1, 2, 3 で初期化するかのように見えて実際にはそう初期化しないことがある
ってのは混乱の元になるかもしれないと思う。

ワイとしてはどう運用 (使い分け) すればいいのかはっきりした見解を確立できてない。
どうすればいいんやろね?
378デフォルトの名無しさん
2020/09/15(火) 22:40:25.54ID:cZkGG5+C
struct foo {
int mem_i = 1;
double mem_d = 2;
char mem_c = 3;

foo(int i);
foo(double d);
foo(char c);
};
こういうことするとfooは文脈依存で意味が違う紛らわしい存在になる
このfoo自体存在しないでほしい
379デフォルトの名無しさん
2020/09/15(火) 22:49:45.29ID:h5acecX0
class foo {
foo(int i);
foo(double d);
foo(char c);

private:
int mem_i = 1;
double mem_d = 2;
char mem_c = 3;
};

これなら別にいいでしょ
全データメンバー丸出しの単純structに中途半端なコンストラクタ付けてるのが問題の本質に見える
380デフォルトの名無しさん
2020/09/15(火) 23:18:01.40ID:cZkGG5+C
>>363
予想だけど実社会で蔑まれてる弱者で
こういうとこで憂さ晴らしをしてるんだろう
381デフォルトの名無しさん
2020/09/16(水) 01:22:34.43ID:g8ss57Sd
>>363
誰に対していってるのか知らないけど、>>362は普通に書いただけだよ。
382デフォルトの名無しさん
2020/09/16(水) 06:20:12.78ID:y7ydVkjJ
カリー化して畳み込む。
383デフォルトの名無しさん
2020/09/16(水) 07:41:27.27ID:h+KbCdxN
>>364
C++03にしがみついてるだけじゃん

>>377
初期化子にデフォルトがあるってだけだろ
関数引数のデフォルトで混乱するやついないのと同じ
384デフォルトの名無しさん
2020/09/16(水) 11:12:27.74ID:wZC9/K7G
>>375 >>377 みたいな初期化してるとき
どんな getter が定義されるのか興味ある
385デフォルトの名無しさん
2020/09/16(水) 20:55:15.73ID:hkK/AQSl
>>341,342,347
へえありがとう
386デフォルトの名無しさん
2020/09/17(木) 00:12:18.70ID:yBGxmNW2
というわけで自己解決しますた!
https://ideone.com/Zz21oH

仕様としては15桁以内の10進数で、IEEE 754で表せる範囲で、
なおかつ最小桁の位が10^0以下だったら何でもおk
(原理上は最小桁の位は10^0より上でも逝けるやつは作れるが今回はパス
387デフォルトの名無しさん
2020/09/17(木) 16:47:32.96ID:9/9M+ZB2
いまいち、つまらんかった
388デフォルトの名無しさん
2020/09/17(木) 17:47:56.72ID:cSYZrhyC
まぁ証明自体はいいと思うよ
あってるか知らんけど

あとはがんばって
>>279 の10億行の手入力のテストデータが確実に
15桁以内の10進数であるか確認しないとな
そこをスクリプトにするぐらいなら最初から書き換え案でよかったよな
389デフォルトの名無しさん
2020/09/17(木) 22:51:21.16ID:vYrubRbh
彼の手入力は完璧だから確認とか必要ないらしいぞ
390デフォルトの名無しさん
2020/09/17(木) 23:19:34.76ID:NGdGxMy6
それはbionicだな
391351
2020/09/20(日) 10:14:33.56ID:YAin65a3
色々とありがとうございました。

class TEST {
 hoge_t h(1, 2); // expected identifier before numeric constant
};

の部分を

class TEST {
  HOGE h(1, 2);
};

にしたら大丈夫になりました。(hoge_t を使わないで HOGE のほうを)
ここで疑問が出ました。

typedef struct HOGE
{
  ...
} hoge_t;

の HOGE と hoge_t の違いはなんでしょうか。
片方がなくても動くようですが、先ほどの話のように HOGE を使ったほうが間違いがないような気がします。

そこで、

typedef struct HOGE
{
  ...
};

という風にしてしまいつつあるのですが、どういう副作用があるのでしょうか。
392デフォルトの名無しさん
2020/09/20(日) 10:24:48.86ID:gADwnK29
>>391
そこに書かれた範囲だと HOGE と hoge_t とは同じものを指すことになるから、
そこを置き換えて大丈夫になるなんてことは無いはず。
たぶん書いてないところに問題があったんだろうと思う。

それはそれとして、その typedef には意味がないので単に struct HOGE で済ませておけばいい
という結論は問題ないと思うよ。
C で struct 省略のための typedef を変に覚えただけでしょ。
393デフォルトの名無しさん
2020/09/20(日) 11:36:33.24ID:YAin65a3
HOGE が型名で、hoge_t が変数名、という認識は合ってますか?
394デフォルトの名無しさん
2020/09/20(日) 11:43:51.29ID:gADwnK29
>>393 合ってませんね。
395デフォルトの名無しさん
2020/09/20(日) 11:53:42.36ID:YAin65a3
「struct HOGE ・・・」 を hoge_t 型 と定義する、みたいなやつですか。
C++ 使ってる限り、忘れていい過去の遺物と思っていいんですね。
396デフォルトの名無しさん
2020/09/20(日) 12:05:47.95ID:dGmNK3yI
struct Hoge{...};とtypedef stuct Hoge hoge_t;をまとめて書いてるだけ
古のCマスター様のイキリ構文だから忘れなさい
397はちみつ餃子 ◆8X2XSCHEME
2020/09/20(日) 12:39:45.45ID:7quNJlhN
>>395
C++ のことだけを考えるなら typedef を使う理由はもう無くなった。
少なくとも C++11 以降は型の別名を付けるにしても using で全ての状況をまかなえる。

C では構造体タグと型名は別物として管理されていたけど
C++ ではそうではないのでわざわざふたつの名前付ける必要もあまりない。
398デフォルトの名無しさん
2020/09/20(日) 14:03:58.31ID:rXNNPQAl
>>397
なんか誤解招く説明じゃね?
ミスリード狙ってんの?
399デフォルトの名無しさん
2020/09/20(日) 15:44:00.22ID:0QrwQpRm
#define も使用禁止ですね判ります
400はちみつ餃子 ◆8X2XSCHEME
2020/09/20(日) 15:51:48.80ID:7quNJlhN
>>398
そうか?
どのあたりが?
401デフォルトの名無しさん
2020/09/20(日) 15:52:26.96ID:ujAaBpzc
気に入らなければお前が説明しなおせばいいんじゃない?
402デフォルトの名無しさん
2020/09/20(日) 15:53:19.29ID:ujAaBpzc
あ、本人がレス返してた
余計だったなすまん
403デフォルトの名無しさん
2020/09/20(日) 18:56:35.09ID:HMivgeXQ
_から始まって次の文字が大文字はCでも禁止?
404デフォルトの名無しさん
2020/09/20(日) 19:00:51.76ID:dGmNK3yI
C89の頃から禁止だったはず
405蟻人間 ◆T6xkBnTXz7B0
2020/09/20(日) 19:07:53.10ID:JknVjK4K
#defineを使わないと、こういうソースは書けないのだよ。

https://github.com/reactos/reactos/pull/3215/files
406デフォルトの名無しさん
2020/09/20(日) 19:24:22.31ID:PidwIaps
Cでもタグ名とtypedef識別子は衝突しないんだから
typedef hoge_t HOGE;なんてしなくていい
C++14みたいに_tと_vにするなら意味あるけどね
407デフォルトの名無しさん
2020/09/21(月) 01:11:32.44ID:YHO9o1ct
>>400
まるでC++11で初めてタグが不要になったかのように思わせかねない
C++11以降の利点を推したいんだろうがごっちゃにしたらいかんと思うよ
408はちみつ餃子 ◆8X2XSCHEME
2020/09/21(月) 08:40:38.86ID:sulqQktu
>>407
using の説明のつもりだったが、
その部分も C++11 の話に見える?
まあ見えるかもしれんな。
409デフォルトの名無しさん
2020/09/21(月) 09:07:56.01ID:apXLM6YN
さすがにそれは国語力を疑う
410デフォルトの名無しさん
2020/09/21(月) 09:08:40.94ID:apXLM6YN
>>407
411デフォルトの名無しさん
2020/09/21(月) 09:29:06.87ID:uGOMtfu/
>>408
そもそもusingの話(前半2行)いるか?ってことな

>>409
お前文章問題苦手だろ
412はちみつ餃子 ◆8X2XSCHEME
2020/09/21(月) 09:54:25.81ID:sulqQktu
>>411
むしろ using を使えという方が俺の言いたかったことなんだ。

しいて言えば typedef は「構造体の宣言と同時に」別名の定義もできるという点が
using ではできないけどそうする意味が失われている (ので特に優位性ではない) という意味で後半の補足を入れた。
413デフォルトの名無しさん
2020/09/21(月) 10:26:30.49ID:YHO9o1ct
あー、まぁ実質typedefは忘れた方がいい、というのは同意するけどね(初心者に教えるという意味では
414デフォルトの名無しさん
2020/09/21(月) 17:14:51.54ID:zhVYtERB
C++ではstructをtypedefする必要は無くなった

ただ、typedef(やusing)は
typedef vector<Coord> Path;
typedef vector<Path> Pathes;
みたいな時に使っている
415デフォルトの名無しさん
2020/09/21(月) 17:16:28.09ID:Y5gLvI08
>>414
using使おうぜ
416デフォルトの名無しさん
2020/09/21(月) 17:28:58.81ID:5fzDdes6
しかし、typedefに不満が無い人に対して、書き方が違っているだけのusingを
推進しようとするC++勢の姿勢は嫌い。
Cが好きで延長線上で使っていたのに、いつのまにかCとはまるっきり別言語に
強制されていっている。
417デフォルトの名無しさん
2020/09/21(月) 17:54:21.89ID:PNFNM3Vd
>>416
typedefは文法的に非合理的なところがあるんだけど気付いてる?

typedef std::basic_string<char, std::type_traits<char>, std::allocator<char>> string;
typedef std::mersenne_twister_engine<std::uint_fast32_t, 32, 624, 397, 31, 0x9908b0df, 11, 0xffffffff, 7, 0x9d2c5680, 15, 0xefc60000, 18, 1812433253> mt19937;

using string = std::basic_string<char, std::type_traits<char>, std::allocator<char>>;
using mt19937 = std::mersenne_twister_engine<std::uint_fast32_t, 32, 624, 397, 31, 0x9908b0df, 11, 0xffffffff, 7, 0x9d2c5680, 15, 0xefc60000, 18, 1812433253>;
418デフォルトの名無しさん
2020/09/21(月) 19:06:32.78ID:IzAwgxqY
using使うとtemplateも使える

template <class T>
using vec = std::vector<T>;

vec<int> vi;
419デフォルトの名無しさん
2020/09/21(月) 19:11:20.08ID:BKUa/6+Z
usingはこういうのが嬉しいと思う。

// C++11
using func = void(*)(int);

// C++03 equivalent:
// typedef void (*func)(int);

>>417
文法的に非合理的?
420デフォルトの名無しさん
2020/09/21(月) 19:15:17.99ID:IzAwgxqY
C/C++みたいな低レイヤーの言語を触る時代はいつまで続くのかね
421デフォルトの名無しさん
2020/09/21(月) 19:15:52.15ID:J2iLBa+b
typedefだと本体がわかりにくいのだ
422デフォルトの名無しさん
2020/09/21(月) 19:33:47.96ID:zhVYtERB
10年後でも100年後でも一番下のところは必ず存在する
アーキテクチャが変わってもC言語のような低水準言語は必ず出てくる

つまり世の中から『一番下』が無くなるとは思えない
423デフォルトの名無しさん
2020/09/21(月) 19:40:50.05ID:IzAwgxqY
AIによる最適化技術がコンパイラに積まれたら
C/C++みたいなのは不要になる気がする
アーキテクチャの一番下のアセンブラとかは残るとしてもね
424デフォルトの名無しさん
2020/09/21(月) 19:49:44.87ID:NkrhQtlS
>>423
AIによる最適化技術って具体的になぁに?
425デフォルトの名無しさん
2020/09/21(月) 19:58:28.08ID:IzAwgxqY
コンパイラの最適化もしらないの???
426デフォルトの名無しさん
2020/09/21(月) 20:04:55.13ID:NkrhQtlS
>>425
現行のLLVMとかによる最適化なら知ってるけど、まだ実現されてないAIによる最適化ってなにかなぁと思って。
427デフォルトの名無しさん
2020/09/21(月) 20:11:19.83ID:I28tUppa
typedefがわかりにくいのではなくてC言語以来のポインタ定義構文がおかしいんである
これは聖典『プログラミング言語C』でも「批判を浴びることがある」みたいに書かれている

これはどうせCベースの言語なら乗り越えねばならない関門なのでノーカンとして、
単に型のエイリアスが欲しいときはtypedefで十分やし、
定義型をテンプレートにしたいとか別の型にしたいときはクラスにしたら宜しい
かと
428デフォルトの名無しさん
2020/09/21(月) 20:12:23.44ID:IzAwgxqY
普通に考えて
機械語を入力としてそれと等価で高速に動作する機械語を出力する
作業をAIに任せるってことなんじゃないの(たぶん)
429デフォルトの名無しさん
2020/09/21(月) 20:13:49.74ID:I28tUppa
同じことをするのにいくつも書き方があるようだと
C++はますますプログラミング言語界のPerlになってしまうま、
430デフォルトの名無しさん
2020/09/21(月) 20:19:15.08ID:I28tUppa
AIによる最適化はそもそも最適な最適化が何なのかは計算不能(コルモゴロフ複雑性
というのはどうすんじゃ………
431デフォルトの名無しさん
2020/09/21(月) 20:20:24.50ID:NkrhQtlS
>>428
ごめんね、喧嘩売ってるつもりじゃないんだ。
コンパイル最適化技術は興味あるんだけど俺の知識が数年前で止まってるので新しい知識として取り入れたかっただけ。

>機械語を入力としてそれと等価で高速に動作する機械語を出力する
それってAIと関係なく何十年も前からあるなんの変哲もない最適化だと思うの。
432デフォルトの名無しさん
2020/09/21(月) 20:27:18.34ID:WONfy98d
>>423
最適化の為だけにC/C++使ってるわけじゃない
ハードを直接触る必要があるから使うというのもあるし
まあAdaとかでもいいんだけどさすがに使える人が少なすぎる
433デフォルトの名無しさん
2020/09/21(月) 20:29:32.74ID:WONfy98d
>>428
AIなら何でも解決するとか思ってそうw
434デフォルトの名無しさん
2020/09/21(月) 20:32:17.31ID:IzAwgxqY
>AIによる最適化はそもそも最適な最適化が何なのかは計算不能
AIって解析的に解くわけじゃないから計算不能でもいい感じに動いてくれるんじゃないの

>それってAIと関係なく何十年も前からあるなんの変哲もない最適化だと思うの。
最適化技術は素人だから知らないけど現状が割と決まった最適化ルールに当てはめてる
だけだとしたら改善の余地はあるんじゃないのかな
想像だけど
435デフォルトの名無しさん
2020/09/21(月) 20:33:13.25ID:IzAwgxqY
>>433
わりとまじでそう思ってるけど
436デフォルトの名無しさん
2020/09/21(月) 20:39:34.82ID:NkrhQtlS
もちろん、LLVMのようにJITの結果をAOTしてくれるような俺の脳味噌で考えられる最大限の最適化より、もっと進んだ技術が将来的に出てくるとは思うんだよ。
最近そういう技術から離れてたので、俺の知らないうちに新しいブレークスルーがあったのかと思って純粋な興味で質問しました。
437デフォルトの名無しさん
2020/09/21(月) 21:20:09.92ID:PNFNM3Vd
>>419
それを言うならこっちでしょ
template <typename T>
auto func(T&&) -> enable_if_t<is_integral_v<T>, void> {}

これとどっちが合理的だと思う?
template <typename T>
enable_if_t<is_integral_v<T>, void> func(T&&) {}

typedefとusingの話ではないけど
合理性という論点では同じことだよ
438デフォルトの名無しさん
2020/09/21(月) 21:21:22.91ID:PNFNM3Vd
>>418
そう、だからtypedefはもういじるのやめてtemplate化はできないまま放置されてるんだよな
439デフォルトの名無しさん
2020/09/21(月) 21:22:17.03ID:WONfy98d
>>435
ああなるほど、納得したわ
君の思うように進めばイイねw
440デフォルトの名無しさん
2020/09/21(月) 21:25:30.85ID:I4V/hlGb
深層学習、機械学習のことをざっくりAIと呼ぶ人は
まぁおおよそ技術わかってない人だろうね
441デフォルトの名無しさん
2020/09/21(月) 21:36:38.22ID:REl65Gaj
プログラミングを知らない人が「こんぴゅーたって何でも出来るんでしょ」って言ってるのと似てる
442デフォルトの名無しさん
2020/09/21(月) 21:39:42.46ID:PNFNM3Vd
>>441
そう聞こえちまう発言を見かける頻度が高すぎてやだよな
443デフォルトの名無しさん
2020/09/21(月) 21:40:29.70ID:BKUa/6+Z
>>437
「それを言うならこっちでしょ」の意味も
「合理性という論点では同じ」の意味も
「文法的に非合理的」の意味も全て分かりませんでした
444デフォルトの名無しさん
2020/09/21(月) 21:55:50.30ID:PNFNM3Vd
>>443
では言い方を変えようか
関数識別子でも型識別子でもそれを一覧しやすいところに集めやすいことを合理性と言っている
概要と詳細はどっちを先に書くべきかってことだよ

typedefは右端に宣言対象の識別子
usingは左端から7文字目という決まった位置に宣言対象の識別子
trailing-return-typeも5文字目という決まった位置に宣言対象の識別子がある
可読性という観点からどう思う?
445デフォルトの名無しさん
2020/09/21(月) 22:03:23.74ID:REl65Gaj
typedefは変数宣言を流用した手抜きだからこんな糞みたいなのも書けてしまう

typedef int are, kore, sore, dore, *hare, **yore, (*more)(float, long), (*ore)[42];
446デフォルトの名無しさん
2020/09/21(月) 22:18:42.28ID:PNFNM3Vd
typedef int (*more)(float, long); //この書き方に抵抗は全くないが
using more = int (*)(float, long); //それでも俺はこっちが好き
447デフォルトの名無しさん
2020/09/21(月) 22:19:03.41ID:BKUa/6+Z
>>445
その点については統一感あってむしろ美しいと思うけどw
typedef int are, kore, sore, dore, *hare, **yore, (*more)(float, long), (*ore)[42];
sore g(float, long) {}
int main() {
are a = (int)0;
kore b = a;
hare c = &b;
yore d = &c;
dore e[42];
more f = g;
ore h = &e;
return 0;
}
448デフォルトの名無しさん
2020/09/21(月) 22:21:35.15ID:PNFNM3Vd
int are, kore;
変数のareとkoreが本質的に同じ型であることが重要なときに統一できるのはいいけどね
intの同義語をそんなに量産してどうするんだと
449デフォルトの名無しさん
2020/09/21(月) 22:22:41.71ID:I4V/hlGb
usingとtypedefでいうと関数ポインタ、配列の扱い違うよね
あのあたりよくわかってない
誰か解説して
450デフォルトの名無しさん
2020/09/21(月) 22:34:38.79ID:IzAwgxqY
>>440
まるでさも自分がわかってるみたいな言い方
451はちみつ餃子 ◆8X2XSCHEME
2020/09/21(月) 22:58:02.34ID:VM5g8L/y
別のスレでちょっと書いたことがあるが……。
人工知能 (AI) ってのは人間の知能を代行するものという意味合いで私は考えてる。

昔はコンパイラそのものが人工知能の枠内で扱われていたこともある。
それ以前にルールベース、つまり if 文の羅列のようなものまで人工知能の一種だった。

でもそれらが分野として確立されたら人工知能とは呼ばれなくなっていた。
機械でやるのが当たり前のものになったから。
普通の道具になったから「知能」ではなくなったんだ。

人工知能を実用化するってのは人工知能を人工知能でなくすること。
逆に言えば人工知能と呼ばれている間は曖昧模糊としてよくわからんのが当たり前なんだと思う。

これはいろんな使い方をされる「人工知能」という言葉について私なりの解釈であって
正しさを主張するつもりはないが、それなりに実態に合った解釈ではあると思う。
452デフォルトの名無しさん
2020/09/21(月) 23:08:20.77ID:PNFNM3Vd
かなり酔ってるな
ビール? 今日何本目?
453デフォルトの名無しさん
2020/09/21(月) 23:08:24.99ID:I4V/hlGb
そんなこねくり回した理解いる?
たんなる学術分野を指すだけの言葉じゃん
意味が広いだけ
454はちみつ餃子 ◆8X2XSCHEME
2020/09/21(月) 23:13:49.84ID:VM5g8L/y
>>452
ワイン。 一杯目の終わりの方。

でもまあ前に別スレでも書いた内容だから酔って考えてるというわけでもない。
と思ったけど前に考えてたときも酔ってたかもしれん。
455デフォルトの名無しさん
2020/09/21(月) 23:33:11.93ID:I28tUppa
最適化方面へのAIの適用というと、
高度なルールベース(80年代のAI)までいったん後退したものに
収束が必ずしも保障されない最適化処理(有限ステップで終わる保証がないからもはやアルゴリズムと呼ぶのは抵抗があるがGAとか
を組み合わせたものになりそうなヨカン

FPGAの論理合成エンジンみたいなやつを考えたら宜しいかと、
もはや冪等性は気体できない
ビルドをやるたびに結果が変わるorz
456デフォルトの名無しさん
2020/09/21(月) 23:38:03.83ID:I28tUppa
この場合LPはAIに含めて良いものかどうか、
457デフォルトの名無しさん
2020/09/22(火) 01:59:39.72ID:ZtayyY2i
>>418 >>438
それを知らずに議論するやつが居ると思ってるのか・・・
458デフォルトの名無しさん
2020/09/22(火) 02:02:23.48ID:xLdkMK4R
>>447
やめてくり〜
459デフォルトの名無しさん
2020/09/22(火) 03:43:14.70ID:sfaT76Ga
文字列の内容を1行毎に配列に入れたいのですが
以下のプログラムだと一部の文字しか抽出できていませんでした
完全が必要な点を教えてください
for (unsigned int i = 0; ; i++) {
for (unsigned int j = 0; ; j++) {
if (*str == '\0')
return;
if (*str == '\n')
break;
datalist[j][i] = *str;
str++;
}
str++;
}
460デフォルトの名無しさん
2020/09/22(火) 03:58:17.38ID:ZtayyY2i
datalistに行ごとに抽出するならiとj逆のような気もするけど
とりあえずdatalistの方にも、各行の終わりに\0(文字列の終端)が必要じゃね?
ゼロ終端文字列として扱わないとか、最初にmemsetしてるなら別だけど
461デフォルトの名無しさん
2020/09/22(火) 04:01:42.12ID:WeU5fM2j
>>459
こんなプログラム書いてるようじゃ無理
462デフォルトの名無しさん
2020/09/22(火) 04:05:50.78ID:EwzeVKsQ
>>449
違わない
463デフォルトの名無しさん
2020/09/22(火) 04:30:48.29ID:5FJrAAJE
>>457
逆にいなかったと思ってるなら日本語の
勉強からやり直してくださいw
464デフォルトの名無しさん
2020/09/22(火) 07:14:47.66ID:iby+25bn
>>443
で、意味通じたのかな?
君の見解が聞きたいんだが
465デフォルトの名無しさん
2020/09/22(火) 08:00:49.11ID:xLdkMK4R
>>459
このレベルで人に聞いてるようでは使い物にならんな
466デフォルトの名無しさん
2020/09/22(火) 09:27:17.92ID:5FJrAAJE
>>459
https://ideone.com/CwLwnB
467デフォルトの名無しさん
2020/09/22(火) 10:13:21.77ID:Zd6n0i5+
>>417
それのどこが非合理なのか全く分からない。
ちなみに、俺は数学が好きで、学生時代、ほぼ満点だった。
468デフォルトの名無しさん
2020/09/22(火) 10:52:41.92ID:GaogVwml
>>467
>444 を読むと、言いたかったことはわかる。
> 関数識別子でも型識別子でもそれを一覧しやすいところに集めやすいことを合理性と言っている

言葉のチョイスはおかしいと思うけどね。単に「読みやすさ」「読みにくさ」とか言えばよかったところ。
469デフォルトの名無しさん
2020/09/22(火) 10:52:56.79ID:iby+25bn
>>459
vector<string_view> dim;

string_view sv = str;
string_view::size_type f;
while ((f = sv.find('\n')) != string_view::npos)
{
dim.emplace_back(sv.begin(), f);
sv = sv.substr(f + 1);
}
dim.push_back(sv);
470デフォルトの名無しさん
2020/09/22(火) 15:44:58.47ID:Zd6n0i5+
>>468
個人的に数学記号のようなもの解読する値から強い方だからかも知れないが、
usingがtypedfよりも特に読みやすいとさえ思わない。
ただし、
#define 名前 定義内容

using 名前 = 定義内容;
で順序に対応関係が有ることはある。
しかしながら、C/C++では、
型名 変数名; // (100)
の順序な分けで、LL言語に多い、
var 変数名 : 型名;
の順序ではないので、統一と言う点では、typdefは(100)と美しく統一されている。
471デフォルトの名無しさん
2020/09/22(火) 15:58:07.27ID:fNKq19I/
ほぼ満点だったってネタじゃなかったのかよwww
472デフォルトの名無しさん
2020/09/22(火) 16:00:22.94ID:iCejn/78
typedef int (*funcA)(float, long), (*funcB)(float, long), (*funcC)(float, long);

の代わりに
typedef int (*(funcA, funcB, funcC))(float, long);
とか描けないよな
473デフォルトの名無しさん
2020/09/22(火) 16:17:29.92ID:EdpAH8NO
>>464
通じませんでした
しかしこれ以上興味も維持できませんので
この話はここで閉じさせてください
レスしてもらったのに申し訳ないです

見解は元の>>416さんにでも尋ねてみてください
474443
2020/09/22(火) 16:18:39.11ID:EdpAH8NO
メール欄と名前欄間違えた
475はちみつ餃子 ◆8X2XSCHEME
2020/09/22(火) 16:34:37.47ID:Q5rCUsEX
>>470
> しかしながら、C/C++では、
> 型名 変数名; // (100)
> の順序な分けで

「型名 変数名;」ではなく「型指定子 宣言子;」な。
(実際には宣言子は複数書けるがそれはわきに置く。)
順序はある程度は好みだろうとは思うが、
変数を宣言するにあたって「型名を与えているわけではない」んだ。

たとえばポインタ型の変数だと

int* a;

みたいに宣言できるが、
このとき int という型指定子と *a という宣言子から成る。
a の型名は int* であるが、
宣言のときには int は型指定子の側について * は宣言子の側についてるわけ。

typedef は変数宣言の文法と一致させているという意味では一貫していることに合意するが、
そもそも型名を途中で分断するかのような変数宣言の文法がイケてないので、
そっちで統一するのが本当にうれしいのかね? という点で疑問を提示する。

いや、それでうれしいというのならそれでもいいんだが、
前提がそれほど一貫してないのに一貫性をもちだしても仕方なくね?
476デフォルトの名無しさん
2020/09/22(火) 16:38:32.20ID:Zd6n0i5+
>>475
すまんが、個人的には、
int *ptr;

int* ptr;
と書く人は頭が悪いのかな、と思っていつも見ている。
477デフォルトの名無しさん
2020/09/22(火) 16:43:05.81ID:EdpAH8NO
int* a;
int* b;
int c;
//int[42] d;
↑こう書きたいという勢力と…

int *a, *b, c, d[42];
↑こう書きたいという勢力があるんやろね

好みというかその人のバックグラウンドというか
478はちみつ餃子 ◆8X2XSCHEME
2020/09/22(火) 16:48:28.25ID:Q5rCUsEX
>>476
* は (文法的には) 宣言子の側についてるからそちらにくっつくもんなんだろうが、
型名としては int* だから int* と書く方が好ましいと考えている。
文法的な解釈はともかく「型名 変数名;」に近い書き方の方がわかりやすいという考え方だ。

あと、 C++ の設計者自身が * を左に寄せる書き方をしてるから私はそれに巻かれている。
C として書くときは * は変数名の側にくっつけて書くようにしてる。 (K&R ではそういう書き方になってるので。)
* の両側に空白を入れる流儀も存在するようだ。
479デフォルトの名無しさん
2020/09/22(火) 17:23:35.93ID:Zd6n0i5+
>>478
>あと、 C++ の設計者自身が * を左に寄せる書き方をしてるから私はそれに巻かれている。
>C として書くときは * は変数名の側にくっつけて書くようにしてる。 (K&R ではそういう書き方になってるので。)

Cの設計者は数学的、C++の設計者は凡才的。
480デフォルトの名無しさん
2020/09/22(火) 18:25:41.01ID:iCejn/78
>>476
+1
ほんそれ
stroustrupは頭が●照る
481デフォルトの名無しさん
2020/09/22(火) 18:27:35.58ID:iCejn/78
>>478
int* a, *b, *c;
あほやろ
482デフォルトの名無しさん
2020/09/22(火) 18:44:14.87ID:PYPDpGOY
わしは自身がハゲてきてビヨヨーン先生を師と仰ぐようになったから左寄せ派
483デフォルトの名無しさん
2020/09/22(火) 19:04:01.34ID:fNKq19I/
俺も左寄せ派だわ。
*は明らかに型の一部なのに変数宣言のときだけ型でないふりしてるのがいただけない
484デフォルトの名無しさん
2020/09/22(火) 19:05:41.48ID:EdpAH8NO
int *aを
int* aと書きたい人は
int (*f)()を
int(* f)()と書けば満足するのだろうかという不思議はある
そういうときこそtypedefですよ、ってことなんだろうか
485デフォルトの名無しさん
2020/09/22(火) 19:07:53.44ID:7BIH7/M6
古典ネタはもうええっちゅうねん
486デフォルトの名無しさん
2020/09/22(火) 19:09:48.55ID:EwzeVKsQ
>>484
int*を返す関数じゃないんだから不思議はないと思うが
487デフォルトの名無しさん
2020/09/22(火) 19:13:34.90ID:lX2VmDiW
時代はauto
488デフォルトの名無しさん
2020/09/22(火) 19:14:45.07ID:6pKbcXJi
どうでもいいわ
489デフォルトの名無しさん
2020/09/22(火) 19:32:53.07ID:EdpAH8NO
>>486
なるほど
int*p // 左に*寄せる
int (*f)() // 寄せない
int (*a)[42] // 寄せない
int* (*f)() // 戻り値側だけ左に寄せる
こういう感じでやっていくのかな
490デフォルトの名無しさん
2020/09/22(火) 20:39:49.00ID:iby+25bn
いつも老害呼ばわりされてる俺が
今日ほどこいつら老害と思ったことはない
491デフォルトの名無しさん
2020/09/22(火) 22:46:59.09ID:GaogVwml
Is int* p; right or is int *p; right?
https://isocpp.org/wiki/faq/style-and-techniques#whitespace
> The choice between int* p; and int *p; is not about right and wrong,
> but about style and emphasis. C emphasized expressions; declarations
> were often considered little more than a necessary evil.
> C++, on the other hand, has a heavy emphasis on types.
492◆QZaw55cn4c
2020/09/22(火) 23:08:52.68ID:r1FoxJcx
boost::format() が標準にとりこまれるのって、c++20 からでしたっけ?
493はちみつ餃子 ◆8X2XSCHEME
2020/09/22(火) 23:30:22.08ID:Q5rCUsEX
>>484
元からイケてない変数宣言の文法を部分的にどうにかすっきり見せる
って程度の話なんで、複雑な事例を更に複雑にするような変なルール
にしたいわけではない。

C++ 的な方向に振るなら int (*f)(); は
std::add_pointer_t<int()> f;

std::decay_t<int()> f;
かなぁ……。

冗長だけど変に入り組んだ感じがなくなるので type_traits はそれなりに取り入れてもいいと思うよ。
494デフォルトの名無しさん
2020/09/22(火) 23:33:23.38ID:7BIH7/M6
boost?libfmtじゃねーの?
495はちみつ餃子 ◆8X2XSCHEME
2020/09/22(火) 23:37:01.31ID:Q5rCUsEX
>>492
std::format は boost::format とはだいぶん違うように見えるが。
でもまあ std::format が出来たのは C++20 からではあるよ。
496◆QZaw55cn4c
2020/09/23(水) 00:15:55.98ID:J9lXF67O
>>495
ありがとうございます
今回は sprintf() で妥協します…
497デフォルトの名無しさん
2020/09/23(水) 01:33:58.69ID:JzGrrpxj
sprintf_s()と_countof()をセットで標準にしてホスイ
498はちみつ餃子 ◆8X2XSCHEME
2020/09/23(水) 01:40:34.94ID:2N0Iktsg
>>497
C だと _countof に相当するものは欲しいなと思うが、
C++ 的には std::size か std::extent を使いたまえ。
499デフォルトの名無しさん
2020/09/23(水) 01:44:08.47ID:wtMA3RXJ
>>493
>元からイケてない変数宣言の文法を部分的にどうにかすっきり見せる
一般的なポインタを表現するためには、どうしても、宣言子の中にも型の一部を
書くべきだったので、文法がそのように選択され、
int* a;
ではなく、
int *a;
と書く方がその記法と統一感がある。
数学者や物理学者は一般性や統一性がある方が美しいと感じる人が多いと
言われており、通常、数物の世界で「美しい」というのは、統一性のある
書き方。
なので、C/C++の型でも、後者の方が美しく感じるのが数物系の才能がある
人の感覚。
500デフォルトの名無しさん
2020/09/23(水) 01:47:03.11ID:SSau2msF
>>496
どんな判断だよ
libfmt使えばいいじゃん
501デフォルトの名無しさん
2020/09/23(水) 01:50:27.78ID:wtMA3RXJ
>>499
ポインタだけでなく、配列も、
int a[3];
の様に書く。これも、人気言語であったBASIC言語の
DIM a(3)
と似た感覚となっている。
配列はもちろん型の一部ではあるが、これを
int[3] a;
と書いて分かり易いとは限らない。というのは、
配列を使う場合には、BASICの場合ではa(i)、Cの場合では、a[i]のように書くので、
これも、宣言に置いても、BASICやCの書き方の方が分かり易いと思うのも自然。
それに
int *ptr_s[3];  // (100)
のような場合に、分かり易く型を全て左に書くのは難しい。
書くとすれば、
int*[3] ptr_s;
となるが、これが果たして分かり易いかと言えばNoだろう。
使う場合には、ptr_s[i] が int へのポインタになるのだから、
(100)の記法は至って分かり易い。
502はちみつ餃子 ◆8X2XSCHEME
2020/09/23(水) 01:55:10.68ID:2N0Iktsg
>>499
> どうしても、宣言子の中にも型の一部を書くべき

それを前提とするならそれと一貫させることを俺は否定してない。
でも前提とできないよねという話をしてるんだから
なんで「べき」なのかを説明しないとなんの主張にもなってないよ。
503デフォルトの名無しさん
2020/09/23(水) 01:55:45.37ID:wtMA3RXJ
>>501
さらにいえば二次元配列の場合、宣言は、
int a[3][2]; //C。使う場合は a[i][j]
DIM a(3,2); //BASIC。使う場合は、a(i,j)
となるが、もしCで型を全て左に書くとすれば、
int[3][2] a;
となると思うかもしれないが、これは、数学的な統一性からすれば
間違いで、正しくは、
int[2][3] a;
となり、前後を逆に書くのが「正しい」。
これが即座に理解できる人が数学的才能が有る人で、
教えてもらわないと分からない人才能が無い。
504デフォルトの名無しさん
2020/09/23(水) 02:05:33.12ID:wtMA3RXJ
>>502
Cの記法は、物理学で言うところの「組立単位」に相当する「組み立て型」を
一般的に表現するためには、かなり美しく正しい選択をしている。
int *a[10]; // (1)
int (*a)[10]; // (2)

は、物理学のように言えば、int-ptr-array-aとint-array-ptr-aの違いを
表しているが、Cの表現はとても理にかなっており非常に分かり易い。
これらの型を全てまとめて左に書こうとすれば、書くことは出来て、
int*[10] a; // int-ptr-array-a, (10)
int[10]* a; // int-array-ptr-a, (11)
となるが、果たしてこれが分かり易いかどうかと言う問題となる。
それぞれを使う際の a[i] や、*a の表記と(1), (2)に上手く対応しているので、
(10),(11)よりも統一が取れており、数学的には「美しい」状態となっている。
505デフォルトの名無しさん
2020/09/23(水) 02:18:13.45ID:wtMA3RXJ
>>502
それは、>>503>>504 のようなことがあるから。
506デフォルトの名無しさん
2020/09/23(水) 02:24:26.38ID:wtMA3RXJ
>>502
C言語のように「書くべき」ことが分かる一番分かり易い例は、Cで
int a[1][2][3][4];
と書くものが、全部左に型を書く記法だと
int[4][3][2][1] a;
と書かないと、組み立て型(物理学における「組立単位」に相当)における
一般性を失うが、それだと、使う際の a[i1][i2][i3][i4]と要素数の指定とが
直感的に逆さまになってしまう問題が起きる。

もし、
int[1][2][3][4] a;
のように書くと、一般性を失い、組み立て型としては破綻しまい、その場しのぎの
記法となってしまう。
もしこれが理解できないのなら、悪いけど、数学的才能や、コンパイラを設計する才能が無い。
507デフォルトの名無しさん
2020/09/23(水) 02:24:53.28ID:VKAwJeUe
どうでもよい
508デフォルトの名無しさん
2020/09/23(水) 02:27:39.29ID:SSau2msF
じじいはこういう語りつくされた古い話題しか話せないからな
509デフォルトの名無しさん
2020/09/23(水) 02:55:43.29ID:VKAwJeUe
大工が金槌はこうでなくてはならない(家を作ったことない)
510デフォルトの名無しさん
2020/09/23(水) 02:56:47.86ID:VKAwJeUe
この手の輩はいないほうがいい
邪魔
511デフォルトの名無しさん
2020/09/23(水) 02:58:20.51ID:VKAwJeUe
クソみたいなマウント合戦を繰り広げる老害であることを自覚しろ
512はちみつ餃子 ◆8X2XSCHEME
2020/09/23(水) 02:59:44.49ID:2N0Iktsg
>>504
数学的・物理的な美しさを (仮に (あくまでも仮に) その主張が妥当だとしても) C++ スレで根拠にするのが不思議。
そんな美しさなんてどうでもいいもの。

こちらの主張は

宣言の文法が型名とは別にある
→ その時点で一貫性なんてないよ
→ どちらを軸にすることもありうる
→ でもまあ C++ の発展の様子からすると型名を軸にしたさが見えるね

って話で、現時点で無い文法を導入したいとか思っているわけでもないし、
存在する文法を絶対に駄目だというわけでもない。

とはいえ (話の大元に戻るが) 現在の C++ が typedef を冷遇しているので、
なるべく using を使ったほうがいいよねってだけ。
513デフォルトの名無しさん
2020/09/23(水) 04:12:53.08ID:VKAwJeUe
わしのFormatterは
int* a;
int *a, *b, c;
のように整形しよる。これが落とし所として妥当であろう
514◆QZaw55cn4c
2020/09/23(水) 05:07:59.09ID:J9lXF67O
>>500
https://github.com/fmtlib/fmt
でしょうか?github になれてなくて、これを使う方法もよくわからないし…
20年使っている sprintf() でもういいや…って妥協してしまいました
手元のコンパイラは g++17, 職場のは g++11 だけれども、セキュリティが堅くて「無断で」cygwin をアップデートさせてもらえない…
必要に迫られて徹夜して間に合わせたけれども、プログラミングへの集中力はずいぶんと落ちてしまいました…

コメントありがとうございました
515デフォルトの名無しさん
2020/09/23(水) 07:58:28.38ID:fDvsnE+M
>>506
auto signal(int, void(*fp)(int)) -> decltype(fp); //こう書かれたら「破綻」で読めなくなるのか? おまえさんは
それこそC++11のグラマーが読めない、つまり数学的才能に乏しいことになるぞ
516デフォルトの名無しさん
2020/09/23(水) 08:04:19.35ID:fDvsnE+M
>>512
あいつ結局Cの文法と設計思想を説明してるだけだよな
それをC++11の文法と設計思想を否定する根拠にしようとしているようだが
筋違いというか脈絡がない

ぼくはusing使いたくないんだーtypedef使うのを邪魔すんなー
僕はものすごく数学と物理に詳しいんだーセンスないやつうるせー
517デフォルトの名無しさん
2020/09/23(水) 09:08:00.93ID:wtMA3RXJ
数学や物理学は、2000年以上も続く巨大なエコシステムを持っており、
それ以上簡潔にならないくらいな表現方法を発明済み。
それとは別の表現をしてもそれらを超えることはまず不可能で、文系の人達の
自己満足に過ぎない。
518デフォルトの名無しさん
2020/09/23(水) 09:23:45.36ID:fDvsnE+M
思っクソ関係ない
話せば面白そうな気がしたがそっちへ行くのね
あーあ残念
519デフォルトの名無しさん
2020/09/23(水) 09:33:29.79ID:wtMA3RXJ
最近の「モダン」言語は、既存のものを知らずに新しいものを作ろうとする傾向が目立つ。
彼らは、今までの理論などそのメリットが理解出来ておらず、効率の悪い、
分かりにくい、整合性の無い、その場しのぎで、一般性が無い記法を導入する。
520デフォルトの名無しさん
2020/09/23(水) 09:58:47.10ID:fDvsnE+M
つまんね
521デフォルトの名無しさん
2020/09/23(水) 10:19:32.59ID:hJkRvCZv
>>503
えっ?
そもそも
int a[2][3]; //C。使う場合は a[j][i]
DIM a(3,2); //BASIC。使う場合は、a(i,j)
じゃないのかな

>>499 は支持する
522デフォルトの名無しさん
2020/09/23(水) 10:22:59.31ID:hJkRvCZv
>>506
ここもおかしい

元々
int a[4][3][2][1];
と書くべき
523デフォルトの名無しさん
2020/09/23(水) 11:04:51.52ID:tBUnvPYy
分かりにくい文法で自爆ってダサすぎるなw
そもそもC++なのに素の多重配列使うって
センスなさすぎだし
524デフォルトの名無しさん
2020/09/23(水) 12:28:26.75ID:OXXcv7E7
>俺は数学が好きで、学生時代、ほぼ満点だった。

数物系が得意な人が、こんな馬鹿っぽくて曖昧な書き方するのかね?
この情報でどうやってお前の能力を推し量れと
525デフォルトの名無しさん
2020/09/23(水) 12:31:30.53ID:YfY3TQQ4
正直マジレスするアホが居るとは思いもよらなんだ
526デフォルトの名無しさん
2020/09/23(水) 14:09:17.34ID:Ywvud/Qy
>>493
なんでもテンプレートに書き直せばいいってもんでもない
527デフォルトの名無しさん
2020/09/23(水) 17:58:15.39ID:fDvsnE+M
CでもそうだけどC++を使うからにはC++らしく使いたいね
C訛りのたどたどしいC++からは早く脱したい
528デフォルトの名無しさん
2020/09/23(水) 17:59:58.72ID:fDvsnE+M
Cで憶えたことがとりあえず使えるのがC++に用意された入りやすい門ではあるけどね
そこは振り出しでしかないんだよ
529デフォルトの名無しさん
2020/09/23(水) 19:14:29.97ID:qJkmihKT
>>493みたいなのをC++らしい、と思ってるならだいぶアレだけどな
530デフォルトの名無しさん
2020/09/23(水) 19:48:39.67ID:S15h3SjP
仕事で使うならBetter Cで留めるのが正しいC++の使い方。
531484
2020/09/23(水) 20:09:34.36ID:7wSVczyT
>>493
> std::add_pointer_t<int()> f;
> std::decay_t<int()> f;

(´・∀・`)ヘー
そんなんあるんですね
勉強になりました

>>529
凄くC++らしいと思うけどw
意地でもテンプレートで何とかしようというのは
532◆QZaw55cn4c
2020/09/23(水) 20:16:22.00ID:J9lXF67O
>>524
確かに、数物系に「特異」な人のコメントにしては貧弱だなあと、私も思いました
たとえばガロア理論、とか、相対性理論、超弦理論、とか、を熱っぽく語って欲しいです

個人的にはエルゴート理論について薀蓄を知りたいですね
533◆QZaw55cn4c
2020/09/23(水) 20:16:56.39ID:J9lXF67O
>>527
でも iostream は失敗作という気がふつふつと…(略)
534デフォルトの名無しさん
2020/09/23(水) 20:38:06.09ID:wsuhqGJa
c++らしいって言っても時代によってかなり変わるし無意味な言い回しだわ。
535デフォルトの名無しさん
2020/09/23(水) 21:11:40.16ID:7wSVczyT
時代によってかなり変わるの?
C++98以降しか知らないけど
C++らしさ=テンプレート
と断言していいほどの一点張りだと思うけど(個人の感想です)
536デフォルトの名無しさん
2020/09/23(水) 21:58:09.41ID:wsuhqGJa
もうどこから突っ込んでいいかわからんくらい馬鹿
537デフォルトの名無しさん
2020/09/23(水) 23:12:26.96ID:fzdYgRfo
ここまで喧喧諤諤の多くの意見が飛びかっておるが
iostream は要らん子、というのは一致しておるな
とくに operator << >> 系のやつ
538デフォルトの名無しさん
2020/09/23(水) 23:42:00.61ID:0XTX+Fu9
coutで出力するよりstd::stringに一旦文字列化してからprintf()で出した方が速いという時点で以下略
539はちみつ餃子 ◆8X2XSCHEME
2020/09/23(水) 23:55:04.80ID:2N0Iktsg
個人的には iostream をそこそこ好きなんだが、
今だったらこんな設計はしないだろうなというのはとてもよくわかる。
540はちみつ餃子 ◆8X2XSCHEME
2020/09/24(木) 00:04:29.70ID:f1TxZ5Sj
>>535
互換性を捨てられない以上は汚い部分も捨てられないんだよね。
だからどうやって抽象化層をかぶせるか、もっと直接に言えば
汚い部分をどう隠すかというのが C++ らしさじゃないかな。

そして型 (または型の表記) に関して汚い部分を隠す道具としては
テンプレートは特に有用なもののひとつだとは思う。

ただ、一点張りは言い過ぎで、取れる手段、手数の多さも C++ らしさだというのが私の感想。
組み合わせよう。
541デフォルトの名無しさん
2020/09/24(木) 03:03:21.13ID:yc5bnmE2
printfで%dとか%zとか指定するのめんどいやん
542デフォルトの名無しさん
2020/09/24(木) 03:09:46.41ID:sKL6gd3p
printfはバッファオーバーフローの脆弱性を産みやすい
543デフォルトの名無しさん
2020/09/24(木) 03:10:26.11ID:sKL6gd3p
早いとか以前の問題
544デフォルトの名無しさん
2020/09/24(木) 05:20:27.18ID:bfjF2pM4
>>531
>意地でもテンプレートで何とかしよう
"自分でテンプレート書いて"色々どうにかしてる人が言うならまだ説得力もあるけどね
add_pointer_tとかdecayは基本的に標準ライブラリの実装(のためのメタプログラミング)の上での副産物だろ
テンプレートの文脈(=受け取った型に、場合により変換を施す必要がある)でもないとこでそんなん使って
「C++らしい」とか、だいぶ痛々しい

まぁ別に使用を禁止されてるわけでもないから使いたきゃ好きにすればいいけどね・・・
545デフォルトの名無しさん
2020/09/24(木) 06:18:07.32ID:sKL6gd3p
>>544
同意
546デフォルトの名無しさん
2020/09/24(木) 06:37:36.81ID:n05mXSO9
>>533
まあね、俺も禿1からの付き合いだけど
未だによくわからんところはある

iostreamに限ったことじゃなく古株のクラスライブラリって
だいたい今作るならこうはしないってところが何かあるね
大きな実害なければ我慢するし
困る場合はそれこそ腕が鳴るチャンス
547デフォルトの名無しさん
2020/09/24(木) 06:40:25.74ID:n05mXSO9
>>535
たとえばだけど、二次元配列がいるならクラス化するとかね
人によるだろうけどvector<vector<int>>は俺あんまりやりたくない
548デフォルトの名無しさん
2020/09/24(木) 06:48:44.27ID:n05mXSO9
用意されているものを使っただけだろ
意地でもとかバイアスが入るのはコンプレックスの顕れだからこそ
ギャンギャン強弁してくるわけだ
549デフォルトの名無しさん
2020/09/24(木) 07:02:36.59ID:4EukrBNz
>>542
printfでバッファオーバーフロー?
お前器用なやつだな
550デフォルトの名無しさん
2020/09/24(木) 07:04:12.32ID:bfjF2pM4
decayに_t付けるの忘れてた
>>548
それ誰に向けて言ってるの?
551デフォルトの名無しさん
2020/09/24(木) 07:09:28.96ID:n05mXSO9
返事をするのは心当たりがあるという自己申告かな?
552デフォルトの名無しさん
2020/09/24(木) 07:14:45.36ID:bfjF2pM4
なんか口調でわかるわ、いつものアホか・・・
「>」これが付いてるのは引用箇所だからな、覚えとくといいよw
553デフォルトの名無しさん
2020/09/24(木) 07:33:47.41ID:n05mXSO9
俺はまだ誰にとも言ってないんだがw
554デフォルトの名無しさん
2020/09/24(木) 07:40:21.81ID:bfjF2pM4
はいはいわろすわろす
555デフォルトの名無しさん
2020/09/24(木) 08:57:55.68ID:55R+R5Lh
printf, scanf系はtypedef型の正体を知っておかねばならないとかクラス型を基本型と同等に扱えないとかモロモロあるのに
いつまでもマンセーしててもしゃーないで
556デフォルトの名無しさん
2020/09/24(木) 09:00:20.65ID:sKL6gd3p
>>549
いや普通にありえるからググってわかる程度のこと聞くなよ
557デフォルトの名無しさん
2020/09/24(木) 09:01:54.41ID:n05mXSO9
>>555
typedefの正体を意識してprintf/scanfを使うのは
privateでデータメンバを隠す話と真っ向逆だね
558デフォルトの名無しさん
2020/09/24(木) 09:12:36.08ID:afeC5pu7
最終出力がわかりにくいとかロケール対応しにくいとかあるわけだけど
引数順にしか出力できない時点でprintfもロケール対応のやりにくさは変わらん
559デフォルトの名無しさん
2020/09/24(木) 09:31:03.57ID:+pWNIbO4
>>556
ググっても出てこないぞ
560デフォルトの名無しさん
2020/09/24(木) 09:40:43.54ID:sKL6gd3p
ググりかたから教えなきゃならんの?
相手にしてられんわ
561デフォルトの名無しさん
2020/09/24(木) 09:44:41.22ID:n05mXSO9
>>558
そんなあなたにput_money, put_time
562デフォルトの名無しさん
2020/09/24(木) 10:57:49.94ID:afeC5pu7
>>561
ロケールと書いたのが悪かったな
多言語化だな
語順を変えるとかやりにくい
Pythonのようにフォーマット文に引数の順番をかければ
言語による語順の違いもフォーマット文の差し替えだけで済む
563デフォルトの名無しさん
2020/09/24(木) 11:05:22.76ID:7yQWIIk2
>>562
安易に考えすぎ
実際にやってから言え
564デフォルトの名無しさん
2020/09/24(木) 12:32:18.71ID:QU112yU2
>>556
ググれー
で逃げる気マンマンでワロタ
おとなしくsprintfでした、ごめんなさい
って言ってりゃいいのにw
565デフォルトの名無しさん
2020/09/24(木) 12:43:09.70ID:G65zjecI
>>547
boost::numeric::ublasとか使えばいい。
566デフォルトの名無しさん
2020/09/24(木) 12:47:12.82ID:n05mXSO9
>>562
ああ確かに語順の変え方はprintfと変わらんな
auto time_v = time(nullptr);
cout << put_time(localtime(&time_v), "%m/%d/%y %H.%M'%S");
567デフォルトの名無しさん
2020/09/24(木) 13:45:56.89ID:sKL6gd3p
>>564
お前も本当にゴミだな
wikipediaのリンク貼っといてやるよ
ほら
https://ja.wikipedia.org/wiki/%E6%9B%B8%E5%BC%8F%E6%96%87%E5%AD%97%E5%88%97%E6%94%BB%E6%92%83
568デフォルトの名無しさん
2020/09/24(木) 13:47:01.22ID:sKL6gd3p
まじでバカはしね
569デフォルトの名無しさん
2020/09/24(木) 14:13:22.68ID:n05mXSO9
その話のどこがバッファオーバーフローなんだ?
570デフォルトの名無しさん
2020/09/24(木) 14:23:05.33ID:sKL6gd3p
>コールスタック上のリターンアドレスを書き換えて不正なコードを実行させる
571デフォルトの名無しさん
2020/09/24(木) 14:24:13.29ID:sKL6gd3p
自分の過ちを認めろと言う割に自分は謝らず図々しく更に無駄な質問を重ねるとは
572デフォルトの名無しさん
2020/09/24(木) 14:30:21.28ID:EUYXPM4X
>>565
boostは標準規格外なので却下
573デフォルトの名無しさん
2020/09/24(木) 14:38:20.48ID:n05mXSO9
>>570
バッファオーバーフローさせるだけではコールスタック上のリターンアドレスは狙えないぜ
同じ記憶域期間を持つ他のオブジェクトを破壊する可能性があるというだけだ
コールスタック上のリターンアドレスを狙うなら配列でないオブジェクトのアドレスにオフセットかけるだけでもできるしな
逆に自動変数のアドレスを確実に得る技術が必要になる

printf/scanfといえばバッファオーバーフローという固定観念に囚われているから
そういう読みになっちまうんだよ
574デフォルトの名無しさん
2020/09/24(木) 14:46:00.53ID:sKL6gd3p
まともに日本語の文章も読めないようじゃプログラムは君には難しいよ
575デフォルトの名無しさん
2020/09/24(木) 14:49:15.10ID:sKL6gd3p
メモリ位置にあるデータを確認できると書いてあることすら読めてない
576デフォルトの名無しさん
2020/09/24(木) 14:54:12.15ID:0BhvwOmc
おまわりさんこのひとです
577デフォルトの名無しさん
2020/09/24(木) 14:55:32.81ID:sKL6gd3p
おとなしく、日本語もググるのも難しくてひとつずつ教えてもらわなきゃできません
ごめんなさいって言ってりゃいいのにw
578デフォルトの名無しさん
2020/09/24(木) 14:59:43.90ID:n05mXSO9
>>575
俺、自動変数のアドレスを確実に得る技術って言ったけど
おまえさんは、これが何のことかわかってる?

printf/scanf関係ないんだがw
579デフォルトの名無しさん
2020/09/24(木) 15:11:43.38ID:sKL6gd3p
Wikipediaまで引用してあげたのにまだごねるのか
本当にわがままだな
580デフォルトの名無しさん
2020/09/24(木) 15:12:12.34ID:sKL6gd3p
ばかはしね
581デフォルトの名無しさん
2020/09/24(木) 15:48:16.32ID:n05mXSO9
> printfはバッファオーバーフローの脆弱性を産みやすい

重箱の隅な記事では、最後の「やすい」という主張の裏付けにはならないってことだ
粗暴な罵倒語も裏付けになるわけがないな
582デフォルトの名無しさん
2020/09/24(木) 15:53:47.24ID:sKL6gd3p
そんなにprintf好きなら勝手に使えばいいんじゃない?
583デフォルトの名無しさん
2020/09/24(木) 16:06:33.08ID:0BhvwOmc
おまいら printf の戻り値は毎回チェックしろよ
584デフォルトの名無しさん
2020/09/24(木) 16:26:18.33ID:VqYlbH9U
printfの書式にユーザ入力を使うことなんてあるか?
SQLインジェクションとはワケが違うぞ
585デフォルトの名無しさん
2020/09/24(木) 17:02:36.61ID:EUYXPM4X
バッファ使ってるsprintfと
バッファ使ってないprintfの
違いもわからんのか
586デフォルトの名無しさん
2020/09/24(木) 17:26:51.00ID:5Fx1JvjP
確かにprintfの書式文字列に関するメモリ破壊の脆弱性が示されてるが、これを「バッファオーバーフロー」と呼ぶのは違和感があるな
587デフォルトの名無しさん
2020/09/24(木) 17:33:32.86ID:sKL6gd3p
わかってないくせに危険な関数使うなよ
588デフォルトの名無しさん
2020/09/24(木) 17:34:56.21ID:sKL6gd3p
パフォーマンスとか以前の問題だろうが
589デフォルトの名無しさん
2020/09/24(木) 17:36:15.17ID:sKL6gd3p
>バッファ使ってるsprintfと
それ勝手に持ち出したのお前だからなw
590デフォルトの名無しさん
2020/09/24(木) 18:19:48.23ID:7yQWIIk2
こっからどう乗り切る気?
591デフォルトの名無しさん
2020/09/24(木) 18:21:49.52ID:9cj79wpF
結局のところ、>>542が恥ずかしい奴だったという結論でok?
592デフォルトの名無しさん
2020/09/24(木) 18:26:33.04ID:sKL6gd3p
>>591
お前みたいな頭悪いやつが多くて
何も有益な話にならないから解散
という結論
593デフォルトの名無しさん
2020/09/24(木) 18:37:51.09ID:sKL6gd3p
cout << ...
がダサいだのprintfが早いだの
程度が低いんだよ
594デフォルトの名無しさん
2020/09/24(木) 18:48:48.99ID:TdIgAD6o
>>592
ん?
バッファーオーバーフローとメモリー破壊の区別もつかないアホがドヤって撃沈だろ?
ダサすぎるw
595デフォルトの名無しさん
2020/09/24(木) 18:53:55.27ID:sKL6gd3p
適当に脳内で読み替えとけや無能
こっちはprintfなんてそもそも使わんから詳しいことに興味はない
だからググれって最初に伝えたんだわ
596デフォルトの名無しさん
2020/09/24(木) 19:02:40.95ID:sKL6gd3p
>>594
じゃあメモリ破壊とバッファオーバーフロー
でリターンアドレスの書き換え方が
どう違うのか説明してみ
597デフォルトの名無しさん
2020/09/24(木) 19:10:17.44ID:EUYXPM4X
ID真っ赤で必死ダナw
598デフォルトの名無しさん
2020/09/24(木) 19:11:45.79ID:sKL6gd3p
逃げるのか?w
599デフォルトの名無しさん
2020/09/24(木) 19:13:39.45ID:sKL6gd3p
ご自慢の知識を披露してみろよばかが
600デフォルトの名無しさん
2020/09/24(木) 19:44:29.22ID:sKL6gd3p
はい結局にげたー雑魚〜
601デフォルトの名無しさん
2020/09/24(木) 19:56:55.65ID:55R+R5Lh
>>595
詳しいこと知らんのに
>>542で参戦してくるの?
振られたネタならともかく自分で振っといてwwww
602デフォルトの名無しさん
2020/09/24(木) 20:09:35.67ID:sKL6gd3p
printfに脆弱性ある
というのが重要な点なのにあくまでも上げ足取りをするのか
本当にごみしかいないな
603デフォルトの名無しさん
2020/09/24(木) 20:10:35.38ID:EUYXPM4X
ID真っ赤で恥ずかしい奴w
604デフォルトの名無しさん
2020/09/24(木) 20:12:58.68ID:sKL6gd3p
なにが恥ずかしいの?IDすぐリセットされるし
605デフォルトの名無しさん
2020/09/24(木) 20:25:09.79ID:7yQWIIk2
ほれぼれする雑魚っぷり
606デフォルトの名無しさん
2020/09/24(木) 20:27:17.41ID:sKL6gd3p
お前ほどではないよw
607デフォルトの名無しさん
2020/09/24(木) 20:32:02.13ID:sKL6gd3p
こういうのに反応してくるのは雑魚と相場が決まってるからなw
608デフォルトの名無しさん
2020/09/24(木) 20:39:06.34ID:OqVmXa/U
>>596
それがprintfのバッファーオーバーフローと何か関係あるのか?
ごまかすならもう少しうまくやれよw
609デフォルトの名無しさん
2020/09/24(木) 20:42:06.80ID:sKL6gd3p
いや関係ないけど
どうせこいつもわかってないくせに人のこと煽ってるんだろうから
聞いてみたらやっぱ逃げた
610デフォルトの名無しさん
2020/09/24(木) 20:56:41.05ID:n05mXSO9
printfはバッファオーバーフローの脆弱性を産みやすい
printfはバッファオーバーフローの脆弱性を産みやすい
printfはバッファオーバーフローの脆弱性を産みやすい

煽りモードに入るならボコボコにしてやんよ
611デフォルトの名無しさん
2020/09/24(木) 20:59:32.71ID:sKL6gd3p
>>610
どうぞご自由に
せいぜい頑張れよ無能なりに
612デフォルトの名無しさん
2020/09/24(木) 21:00:05.83ID:NCTacveT
ここまで具体例を示した証拠も反論もなし。
613デフォルトの名無しさん
2020/09/24(木) 22:12:13.40ID:jspEV3AF
>>542
今日日のIDEなら書式文字列とパラメータの型の不一致を指摘してくれる
Visual Studioなら2015からそうなっているので安心、
614デフォルトの名無しさん
2020/09/24(木) 22:18:55.93ID:OqVmXa/U
>>611
で、どこのバッファーがオーバーフローするのかな?w
黙ってりゃいいのにバカは無駄に吠えるしか能がないから無理だろうな
615デフォルトの名無しさん
2020/09/24(木) 22:50:51.72ID:jspEV3AF
sprintf()なら有り得る、
希ガス

個人的にはsprintf_s()しか使わないから無用の心配だが
616デフォルトの名無しさん
2020/09/24(木) 22:53:03.50ID:55R+R5Lh
自分でバッファオーバーフロー言い出しといてなんやねん
617デフォルトの名無しさん
2020/09/24(木) 22:54:48.84ID:jspEV3AF
std::ostringstreamは未来
そんなふうに考えていた時期が漏れにもありました、
618デフォルトの名無しさん
2020/09/24(木) 23:04:17.15ID:lJ1l9qyF
https://code.woboq.org/userspace/glibc/stdio-common/vfprintf-internal.c.html#__vfprintf_internal
これかな。まぁ頑張って読んでくれ。
619デフォルトの名無しさん
2020/09/24(木) 23:05:16.99ID:jspEV3AF
しかしなんでスタックって高位側から低位側に伸びる実装なんだろうな
逆にしたらそれだけで外部入力依存のバッファオーバーフローでexploitされる危険性を半減できるはず…
620デフォルトの名無しさん
2020/09/24(木) 23:16:12.65ID:lJ1l9qyF
バイナリエディタ見てみろよ。アドレス高いほうが下だろ。
スタックはちゃんと下から積んでるんだよ。
621デフォルトの名無しさん
2020/09/24(木) 23:45:08.26ID:jspEV3AF
ホンマにprintf()でもやれるんや、
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c906.html

しかし%nはC++11で廃止されたとあるからモダンなC++ではprintf()は安心、
622デフォルトの名無しさん
2020/09/24(木) 23:46:33.93ID:lJ1l9qyF
安全なライブラリ=チェックが多く遅いライブラリ

C使う意味なくね?
623デフォルトの名無しさん
2020/09/24(木) 23:48:09.41ID:jspEV3AF
訂正orz、
誤: C++11
正: C11
624デフォルトの名無しさん
2020/09/25(金) 00:19:45.11ID:nCkagqzh
>>619
それは昔々、CPUが今よりずっと低能力で、malloc()などをする余力もない時代、
メモリー領域を、普通の変数のワークエリアと、call命令での戻り値アドレスの
記憶のためと、レジスタの保存、復帰(push,pop)用のためのエリアを逆方向
から使うことは、画期的なアイデアだったから。
データ領域は、アドレスの小さい方から、大きいほうへ伸ばして使っていくが、
そうやってるさいにも、call,push,pop命令は使いたいから、そのようにする
以外には当時の非力なCPUには非効率すぎて選択肢が無かった。
今なら、リンクリストや高速なmalloc()などを駆使すれば、別の方法も取れるかも
知れない。
625デフォルトの名無しさん
2020/09/25(金) 00:26:39.90ID:nCkagqzh
>>624
[捕捉]
今は、マルチスレッドプログラミングをする際、各スレッドに、それぞれ
別のスタック領域を割り当てるが、その領域の容量は固定サイズ。
固定サイズでも何とかなるのは、メインメモリーが非常に大きくなったためで、
大部分は無駄になっていても、なんとかなってしまうから。
たとえば、関数呼び出しの回数と、ローカルスタック変数の容量を
掛け算したような値を見積もってみれば、とても無駄なスタック領域の
割り当てをしているだろうが、メモリーがふんだんに余る位になっているので
それでも特に問題がなくなってしまった。
ところが、かつてはメモリーが足りなくてどうしようもなかった。
しかも、当然当時はシングルスレッドだった。
なので、データ領域は上から、スタック領域は下から伸ばしていけば、
お互いが衝突するまで使える。これは、ギリギリ限界まで無駄なく
メモリーが使えることを意味する。
626デフォルトの名無しさん
2020/09/25(金) 00:29:23.03ID:iQJ3d1Xe
なんかデタラメがいろいろ混じってるぞ。
627デフォルトの名無しさん
2020/09/25(金) 00:30:59.73ID:7nm9kuAr
>>624
どこらへんが画期的で効率的なのかkwsk、
普通の変数のワークエリアと逆方向からスタックを伸ばしたところで
使えるメモリが増えるわけでなし…
(スレッドが2本以上あればスタック領域は結局スレッド毎に固定サイズで割り当てるしかない

百歩譲って一つながりのメモリを上と下の両方から使っていったらすばらしいと思えたとしても、
なんでスタックを0番地から上に伸ばしてsbrkが最大アドレスから下に伸びる設計にしなかったのかの
説明にならない
628デフォルトの名無しさん
2020/09/25(金) 00:34:29.83ID:nCkagqzh
>>625
[もっと捕捉]
今は、MMUを使っており、実際に使ってない仮想メモリー空間には、物理メモリー
を割り当てない。だから、使うまでは物理メモリーは無駄にはならない。
もう一つは、(仮想)アドレス空間自体が飛躍的に大きく取れるようになったことで、
搭載している物理メモリー以上に大きなアドレス空間が使えて、各スレッド
のスタック用に大きめにアドレス空間を確保(commit)しておけるように
なった。
32BIT時代ですら、4GBの仮想アドレス空間が使えたから、アドレス空間自体の
不足は余りおきなくなった。積んでいる物理メモリーよりも大きな空の領域を
各スレッドのスタックに割り当てても、特に問題が無い。
今や64BIT時代。同時に実行するスレッドの個数も増えつつあるが、各スタック
領域の仮想アドレス空間上のサイズを大きくとってもどうってことは無い時代になった。
しかし、かつてはそうではなく、スタックは下から上に伸ばして行き、データ領域
と衝突するまで使うのが良い方法だった。
629デフォルトの名無しさん
2020/09/25(金) 00:47:42.60ID:iQJ3d1Xe
>>627
picの変態仕様見れば分かる。汎用機もそうだけどスタック制限あるアーキテクチャが普通だった時代。
しかも0番地から伸ばすとかCPUの仕組みすら知らんレベルだな。割り込みベクタがあったり、プログラムのROMがあったり、
0番地にフリーのRAMなどたいていない。つまり空いてるRAMの下限は開発が終了するまで確定しないこともしばしば。
じゃあいつSP設定値いつ決まるのって話。決まらないんだから一番うしろにして前に進めるのが頭使わずに済む。
ちなみに8086はスタックセグメントあるから。便利だろw
630はちみつ餃子 ◆8X2XSCHEME
2020/09/25(金) 03:12:37.08ID:5q2rxyfR
>>622
ものによるんだろうが、たとえば配列へのアクセスがバッファーオーバーフローに
ならないかのチェック程度ならほどんど実行時のペナルティはないというデータはどこかで見たことがあるな。
正しいプログラムなら分岐予測がほぼ成功するから。

まあ結局のところは程度問題というか、許容可能な程度ならチェックしたっていいだろうし、
実際問題として全く異常系がないプログラムというものもそれはそれでありえないわけで。
631デフォルトの名無しさん
2020/09/25(金) 05:15:46.56ID:Y7UfbpFk
>>629
よく8086のセグメントレジスタを糞呼ばわりするやついるけど
あれはあれで意外と合理性あったんだよな・・
632デフォルトの名無しさん
2020/09/25(金) 06:14:47.70ID:cdg8K9Zm
>>622
ライブラリによってはデバッグ版とリリース版を持ってたりする
チェックを端折ることができるって言うのが売り
633デフォルトの名無しさん
2020/09/25(金) 06:35:56.95ID:cdg8K9Zm
>>629
> なんかデタラメがいろいろ混じってるぞ。
お前が言うなよ…

> 0番地にフリーのRAMなどたいていない。
6800はダイレクトアドレッシングモード持ってるから0x0000〜0x00ffはRAM前提
6502も0x0000〜0x00ffがRAMでないと使い物にならないしスタック領域がハード的に決まってるにも関わらず後ろから使う設計だったりする
> じゃあいつSP設定値いつ決まるのって話
開発中にRAMの下限が変わったらSPの初期値の設定変えるだけだろ
634デフォルトの名無しさん
2020/09/25(金) 06:40:05.92ID:cdg8K9Zm
>>631
想定している範囲内で使う分には効率いいし優れたアーキテクチャだと思う
想定している範囲がすぐに時代遅れになってしまったけど…
635デフォルトの名無しさん
2020/09/25(金) 07:16:04.04ID:+l2B7ows
>>627
スタックポインタというものができた、8008から8080に進化した時の話なのよ

>一つながりのメモリを上と下の両方から使っていったらすばらしい
うん、それだけの話
若い番地にはプログラムを置くのよ、後ろからスタック、そんだけ
636デフォルトの名無しさん
2020/09/25(金) 07:46:42.31ID:xGsH9qpm
mallocまで行かなくてもRAMが少ないからこそヒープからの固定長メモリブロックを使って省メモリしてたし、ヒープとスタックは別方向に取ったほうが最大限利用できた。
運が悪いとオーバーラップして誤動作するけど。
637デフォルトの名無しさん
2020/09/25(金) 07:51:02.31ID:UNwnFJoF
キャッシュ効率を上げるためにコーディング上でなにかできることある?
638デフォルトの名無しさん
2020/09/25(金) 08:15:54.26ID:xSHyo3nF
あるよ
まずキャッシュ効率というのをどうやって計測しようとしているか書いてみ
639デフォルトの名無しさん
2020/09/25(金) 08:32:54.15ID:UNwnFJoF
プロファイラー
640デフォルトの名無しさん
2020/09/25(金) 08:33:00.07ID:WvFHSXSD
>>629
ふふふ 皆その程度のことなどわかった上で
たわむれておるのだがn(ry

>>635
>若い番地にはプログラムを置くのよ、後ろからスタック、
プログラムがROM上なら別段RAMの先頭からスタック、で良いのでは…
プログラムをRAM上に転送してから実行するとしても、プログラムの末尾からスタック、で良いのでは…
ハンドアセンブルするときにプログラム末尾のアドレスが最後まで確定しないというのは却下
(ワークメモリをプログラムの末尾に配置するほうが数が
 プログラムの末尾アドレス確定後に決めなければならない定数が増えて大変なはず…
641デフォルトの名無しさん
2020/09/25(金) 09:01:31.03ID:xSHyo3nF
>>639
じゃあ最適化ガイドのドキュメントあるでしょ?
がんばれ
642デフォルトの名無しさん
2020/09/25(金) 09:08:54.15ID:UNwnFJoF
>>641
わからないなら期待もたせるな
643デフォルトの名無しさん
2020/09/25(金) 09:09:20.44ID:3+LaQyVV
メモリアクセスが狭い範囲に集中するように工夫する
可能な限りスレッド数を少なくタイムスライスを長くする
644デフォルトの名無しさん
2020/09/25(金) 09:30:26.29ID:VqVKl+Zt
>>637
対象CPUのキャッシュアーキテクチャは何?
645デフォルトの名無しさん
2020/09/25(金) 09:36:13.59ID:cdg8K9Zm
>>635
> スタックポインタというものができた、8008から8080に進化した時の話なのよ
知ったか乙
PDP-11にすでにスタックポインタはあるぞ
646デフォルトの名無しさん
2020/09/25(金) 09:41:32.68ID:3+LaQyVV
80系に採用されたって話だろ
647デフォルトの名無しさん
2020/09/25(金) 09:44:46.31ID:3+LaQyVV
てす
648デフォルトの名無しさん
2020/09/25(金) 10:19:41.79ID:xSHyo3nF
>>642
ざっくりした内容で1行書き込めば
懇切丁寧に教えてもらえると思った?
649デフォルトの名無しさん
2020/09/25(金) 10:35:33.35ID:cdg8K9Zm
>>646
PDP-11の時代からスタックは高位番地から使うようになってる
8080は(他のプロセッサも含めて)それに倣っただけ
650デフォルトの名無しさん
2020/09/25(金) 12:11:23.00ID:3+LaQyVV
>>649
何で俺がそんな説明されるのかよくわからん
651デフォルトの名無しさん
2020/09/25(金) 12:17:58.23ID:cdg8K9Zm
>>650
>>635の話じゃないと言うならいちいち横から絡んでこないでね、ウザいだけだし
652デフォルトの名無しさん
2020/09/25(金) 12:28:12.75ID:4ovx1Tzj
CSとSSが物理的に分けられるようになって意味が無くなった
653デフォルトの名無しさん
2020/09/25(金) 12:32:13.75ID:iQJ3d1Xe
>>633
6502のアーキテクチャぐらい知ってるがな。だからたいていと言ってるだろ。
> SPの初期値の設定変えるだけだろ
当時の開発環境は紙の上とかが普通。ハンドアセンブル上等でみんなOPコード暗記してた。
ROM位置ズレました〜なんて言われたらちゃぶ台返しレベルの仕様変更。
8086のような相対値アドレスで比較的リロケータブルな環境は後になってから。
設定値を変えるだけだろとか簡単に言われても困る。

> PDP-11の時代からスタックは高位番地から使うようになってる
だったら当時はなぜそうなったか説明してくれないとな。
654デフォルトの名無しさん
2020/09/25(金) 13:08:52.30ID:3+LaQyVV
>>651
646が絡んだことになってるのか
被害妄想の強い人だな
655デフォルトの名無しさん
2020/09/25(金) 13:31:16.91ID:cdg8K9Zm
>>653
> 設定値を変えるだけだろとか簡単に言われても困る。
スタックへのアクセスってよほどトリッキーなことをしない限りSP相対だぞ
スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
> だったら当時はなぜそうなったか説明してくれないとな。
それはPDP-11のアーキテクトに聞いてくれ
俺の指摘は8080ガーと言うのが的外れって言う話だから

>>654
いちいち絡んでくるなよ、気持ち悪いわ
656デフォルトの名無しさん
2020/09/25(金) 13:43:22.03ID:3+LaQyVV
被害妄想というよりボキャ貧かw

なるほどな、今さらなことをドヤってるのも頭の更新が止まっている症状か
納得
657デフォルトの名無しさん
2020/09/25(金) 14:00:06.69ID:4ovx1Tzj
>頭の更新

ほんそれ
658デフォルトの名無しさん
2020/09/25(金) 14:09:34.94ID:u87G89iw
>>652
でも、アセンブラならcall,push,pop,[ebp+xxx],[esp+xxx]はss:をしていなくても
勝手に stack segment相対になるから良いが、Cの引数にバッファのアドレスを
渡すような場合、ds:なのか、ss:なのかが分からないから、farアドレスにする
しかなくなってしまう。なので、ss=dsの状態にした方がCだと効率が良かった。
659デフォルトの名無しさん
2020/09/25(金) 14:14:37.28ID:cdg8K9Zm
具体的に反論できないなら黙ってりゃいいのに…
660デフォルトの名無しさん
2020/09/25(金) 14:20:55.55ID:MA61Hr7D
64ビットになったらセグメントなんてどうでもよくなったな
661デフォルトの名無しさん
2020/09/25(金) 14:32:23.95ID:3+LaQyVV
対立してないのにどうやって反論するんだよ
それと何がどうだったという証言は論じゃないからな
662デフォルトの名無しさん
2020/09/25(金) 14:42:12.89ID:cdg8K9Zm
>>661
お前はどうでもいいから無駄に絡んでくるな

>> 設定値を変えるだけだろとか簡単に言われても困る。
> スタックへのアクセスってよほどトリッキーなことをしない限りSP相対だぞ
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
に対する答えが欲しいだけ
663デフォルトの名無しさん
2020/09/25(金) 14:50:04.04ID:3+LaQyVV
>>662
おまえさんこそ俺が言ったことに反駁できてないな

喧嘩腰で来たのそっちだぜ
許して欲しいならちゃんとそう言えよ
まあ逃げても追わねえでやるけど
664デフォルトの名無しさん
2020/09/25(金) 15:17:28.57ID:cdg8K9Zm
それこそ論点がないのにどう反駁しろと?
バカが横から絡んできて勝手にスッ転びました、どうしましょうか?
⇒ 放置しかないわなw
665デフォルトの名無しさん
2020/09/25(金) 15:39:37.04ID:3+LaQyVV
>>664
じゃ被害妄想認めるんだな? ニヤニヤ
666デフォルトの名無しさん
2020/09/25(金) 15:46:21.30ID:iQJ3d1Xe
>>655
>SP相対
なんだよこれ。非力なチップでスタックフレームの実装でも始める気か?
8086のようなスタックフレーム考慮した楽ちんアドレッシングとかおまえの指摘は時代錯誤が多い。
当時のデバイスもROMやテープが当たり前だし設定値変えるだけとかほんと簡単に言ってくれる。
だいたい先頭にスタック置いて、今度はどうやってワークエリアの位置を確定する気だよ。
結局確定しないから後ろからってなるだけだ。
667デフォルトの名無しさん
2020/09/25(金) 16:41:04.34ID:cdg8K9Zm
>>665
また意味不明なことを言い出した
まあ低能にありがちな行動だけどw

>>666
push/popってSP相対だろ
> 当時のデバイスもROMやテープが当たり前だし設定値変えるだけとかほんと簡単に言ってくれる。
どうせ変更するのにSPの初期値を変えるのが面倒とか意味わからん
ちなみに俺は8bit時代からの組込み屋でテープもEP-ROMも使ってたから当時の話とかでごまかそうとしても無駄だよ
> だいたい先頭にスタック置いて、今度はどうやってワークエリアの位置を確定する気だよ。
後ろから取ればいいだけだろ
ただなんとなく気持ち悪いから前からワークエリア、後ろからスタックってなっただけだと思うよ
668デフォルトの名無しさん
2020/09/25(金) 16:53:17.35ID:3+LaQyVV
否定しないなあw

スタックへのアクセスはpush/popだけとか
自動変数にポインタ経由でアクセスするのがトリッキーとか
何だろこの人w
669デフォルトの名無しさん
2020/09/25(金) 16:54:42.59ID:3+LaQyVV
> EP-ROMも使って【た】

過去形だね
C++でファームウエア書いてないってことか
670デフォルトの名無しさん
2020/09/25(金) 16:58:24.91ID:iQJ3d1Xe
>>667
なぜSPは後ろからという議論なんだから結論を先に言えよ。先に言ってりゃおまえとは議論しないんだよ。

> ただなんとなく気持ち悪いから
671デフォルトの名無しさん
2020/09/25(金) 17:11:48.04ID:cdg8K9Zm
>>668
> 自動変数にポインタ経由でアクセスするのがトリッキーとか
それSP相対になるだろ
とりあえず
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
の答えを考えてからレスしろよ…

>>669
えっ、まだEP-ROM使ってるの?
紫外線イレーザーが現役とかすげーなw
672デフォルトの名無しさん
2020/09/25(金) 17:13:00.93ID:cdg8K9Zm
>>670
結論じゃねーよ、俺の勝手な想像だ
日本語も理解できてないアホはこれだから…
673デフォルトの名無しさん
2020/09/25(金) 17:20:52.32ID:3+LaQyVV
>>671
ならねえよ
void func(int* p)
{
*p = 1; //代入先が自動変数か否かはわからんだろ
}
おまえさん、左辺値pから右辺値をpopで取り出すとか思ってそうだな
674デフォルトの名無しさん
2020/09/25(金) 17:22:59.82ID:3+LaQyVV
EEPROM知らねえらしいな
マジ頭の更新止まってやんのw
675デフォルトの名無しさん
2020/09/25(金) 17:33:26.68ID:cdg8K9Zm
>>673
呼ばれた側は自動変数かどうかなんて意識する必要ないだろ…
それ自動変数へのポインタを引数にして呼ぶ側のコード考えたらわかると思うけど

>>674
ん?
EEPROM知らないとかどこから出てきたんだ?
EP-ROMでバカにされて発狂の図?w
676デフォルトの名無しさん
2020/09/25(金) 17:36:29.46ID:3+LaQyVV
>>675
自動変数かどうかわからんものへのアクセスをSP相対にできるのかって話だよ
重箱の隅ではないごく一般的なケースだぞ

ここC++スレだぜ? this->すげー多用するんだが
UV-EPROMのまま更新が止まった頭じゃ思い至らんかったか
677デフォルトの名無しさん
2020/09/25(金) 17:48:59.95ID:cdg8K9Zm
>>676
> 自動変数かどうかわからんものへのアクセスをSP相対にできるのかって話だよ
だから自動変数へのポインタを求めるのは呼び出し側でSP相対で計算してるだろ
呼ばれた側は単なるアドレスになってるから関係ない
C/C++の基礎だぞ、まじでわかってないのか?
EP-ROMとか言う前にちょっとは考えろよw
678デフォルトの名無しさん
2020/09/25(金) 18:47:54.21ID:ZULCp3JG
>>667
> 8bit時代からの組込み屋でテープもEP-ROMも使ってた

このスレ凄い人おるんやな
素直に感心したわ
679デフォルトの名無しさん
2020/09/25(金) 18:52:40.54ID:3+LaQyVV
>>678
ごめんなホレリスカード使ってたわ
それと2500feetのオープンリールとかね
680デフォルトの名無しさん
2020/09/25(金) 18:53:47.19ID:cdg8K9Zm
>>678
別に凄くはないよ
そういう時代に仕事してたってだけの話
もうすぐ定年だけど正直仕事としては当時の方が面白かったな
まあ時代が上り坂だったせいもあるけど
681デフォルトの名無しさん
2020/09/25(金) 18:56:12.18ID:3+LaQyVV
>>677
this->がどう翻訳されているのか覗いてみたことがないから
スタックへのアクセスはほとんどがSP相対だなんて大きく出たんだろ

おまえマジC++でROM焼きしてねえだろ
682デフォルトの名無しさん
2020/09/25(金) 19:13:00.04ID:cdg8K9Zm
>>681
> this->がどう翻訳されているのか覗いてみたことがないから
C++はスタティックとかヒープとかにインスタンス置けるから一概には言えんけど自動変数としてインスタンスを生成したらthisポインタはSP相対になるだろ
ならない例があるとでも言うのか?

> おまえマジC++でROM焼きしてねえだろ
まあC++のROM焼は確かにあまりないな
ROM焼きするのは8bitはほぼアセンブラだし、16bitでもC言語だったし
ただC言語でもスタック上に生成した構造体へのポインタはC++のthisポインタと同じだしな
アセンブルリスト見たらすぐわかる話
683デフォルトの名無しさん
2020/09/25(金) 19:15:18.02ID:ZULCp3JG
>>679
褒めて欲しいん?

>>680
謙遜しなさんな(`・ω・´)ゞ
684デフォルトの名無しさん
2020/09/25(金) 19:54:32.95ID:xGsH9qpm
俺も含めてオッサンしかいないスレw
オッサン同士仲良くしようぜ。
685デフォルトの名無しさん
2020/09/25(金) 20:41:49.58ID:3+LaQyVV
>>682
C++でROM焼きしてねえんだな?
このスレではゴミだぜ、クズだぜ
そこ弁えろな、ゴミクズ

thisがSPとか寝言ぬかしてんじゃねえ
686デフォルトの名無しさん
2020/09/25(金) 20:53:09.26ID:uaSa3tOr
スタックに必要なサイズを求めるのはとても面倒だった。
だから、予め決まった領域を割り当てるのは不可能に近かったので、
データ領域とは逆さまに、データ領域が最後まで使わない部分をスタック
領域とし、暴走しない限りはスタックが足りていると判断する(笑)と言う
当時としては合理的な方法が採用された。
この方式だと、スタックサイズが見積もれなくても、問題が無い。
本等はスタックが足りているかどうかは、暴走したかどうかではなく、
機械語モニタなどで、スタック付近をダンプしてみて、00h以外の値が
ある部分がスタックが使用されている領域とみなすことが出来た。
687デフォルトの名無しさん
2020/09/25(金) 20:55:19.51ID:mkPsEV2L
体はオッサン、心は子供
688デフォルトの名無しさん
2020/09/25(金) 20:57:43.58ID:uaSa3tOr
>>682
もちろん、その関数の中ではsp相対になる。
しかし、C言語では、ローカル変数のアドレスを他の関数に渡す。
一方、グローバル変数のアドレスも同じ方式で他の関数に渡す。
で、どちらからきたアドレス化を区別する方法が基本的には無い。
区別するためには、far pointer といって、普通のアドレス以外にセグメントアドレス
を合わせた長いポインタを渡す必要があった。
しかし、それは何かと効率が悪かった。
そこで、Windowsは32BIT化したときに、far pointerを使わずに済ますため、
(大体で言えば)セグメントを全て共通のベースアドレスとサイズを持つようにし、
「Full Flat」方式を採用した。
これで、ポインタ渡したり記録したりするための領域が短くて済み、
効率が上がった。
689デフォルトの名無しさん
2020/09/25(金) 20:58:24.32ID:cdg8K9Zm
>>685
で、SP相対にならない例はあるんか?
>>679見る限り汎用機のオペレーターさんみたいだからあまり無理すんなw
690デフォルトの名無しさん
2020/09/25(金) 21:01:47.89ID:3+LaQyVV
>>689
だからthisな
どっから値もらってきたかは関係ねえの
わかったか? ゴミクズ
691◆QZaw55cn4c
2020/09/25(金) 21:14:22.02ID:DCkHs+Bt
>>688
sp 相対アドレッシングって 6809 以外にはなにがあるのですか?
692デフォルトの名無しさん
2020/09/25(金) 21:21:28.43ID:uaSa3tOr
>>691
x86系は、[esp+xxx]が使える。
[ebp+xxx]も、ebpを関数の先頭でespを記録するから、同じこと。
693デフォルトの名無しさん
2020/09/25(金) 21:43:27.60ID:cdg8K9Zm
>>688
申し訳ないけどfarポインタの話は頓珍漢だしややこしくなるだけだよ
セグメントレジスタはSSとDSだけじゃなくてCSやESもあるし、そもそもローカル変数とグローバル変数を区別するためのもんじゃないし

>>690
>>663w
694デフォルトの名無しさん
2020/09/25(金) 21:49:46.68ID:+l2B7ows
けんかをやめて 二人をとめて私のために 争わないで もうこれ以上
695デフォルトの名無しさん
2020/09/25(金) 22:03:03.73ID:5mEzuFCz
>>694
お前がスタックポインタか
696デフォルトの名無しさん
2020/09/25(金) 22:07:42.71ID:OvccyAEi
排他制御の話じゃないかな
697デフォルトの名無しさん
2020/09/25(金) 22:11:37.83ID:GDRWkdI/
>>695
俺がスタックポインタだ
698デフォルトの名無しさん
2020/09/25(金) 22:17:10.28ID:iQJ3d1Xe
thisの話は何をモメてるかよくわからないが、単順にブート時のSP初期化値の変更で
後ろのスタックをアクセスするコードを修正する必要があるかないかという話。
彼はSP相対(←この表現がおかしい?)だから変更する必要がないと言ってる。
まぁ、基本手はにはそうだが、処理系によってはバンク切り替えでスタックエリアが裏に回る可能性も否定できない。
そして今時のカーネル開発のようにコンテキスト保持のために同期てんこ盛りになるわけだ。
699デフォルトの名無しさん
2020/09/25(金) 22:22:47.78ID:cdg8K9Zm
>>691
6800とかでもTSX命令でSPをインデックスレジスタにコピーして相対アクセスできる
8080ならSPHLでSPをHLレジスタにコピーできる、オフセットの処理は自前でやるしかないけど
まあ6809や8086に比べたらかなり効率悪いコードになるけどね
700蟻人間 ◆T6xkBnTXz7B0
2020/09/25(金) 22:23:24.07ID:ogXn8IQh
x86のC言語では、スタックに積み込まれた自動変数のデータは、SPが変更されてもスタックフレームを復元すれば、変更前と変わらずアクセスできる。SPの値もプッシュ・ポップできる訳であって。
701デフォルトの名無しさん
2020/09/25(金) 22:25:44.11ID:cdg8K9Zm
>>698
> 処理系によってはバンク切り替えでスタックエリアが裏に回る可能性も否定できない。
そんな特殊な例を出されても…
702デフォルトの名無しさん
2020/09/25(金) 22:33:13.14ID:iQJ3d1Xe
一般的な日本の8bitPCで64KB空間しかないのにROMだけでもあれこれと数百キロバイト積んでるし、
VRAMもでかい。基本、z80も6502もフラットを要求するCとの相性はよくない。
703デフォルトの名無しさん
2020/09/25(金) 22:48:54.96ID:ZULCp3JG
6800てw
ワイが学生時代演習で使ったのが68000だったなぁ
今となっては何一つ覚えてないけど
704デフォルトの名無しさん
2020/09/26(土) 01:53:27.55ID:JrFBwqTU
もはやC++全く関係ない話だな
705デフォルトの名無しさん
2020/09/26(土) 06:33:34.63ID:JvTrRG8q
>>693
おまえさんが使う空疎な罵倒語とは違うぞ
なぜゴミクズなのかきちんと説明したうえで言っているからな
706デフォルトの名無しさん
2020/09/26(土) 06:40:46.95ID:U+G6yEte
>>705
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
の答えはまだかな?

> 許して欲しいならちゃんとそう言えよ
> まあ逃げても追わねえでやるけど
そのまま返してやるからさw
707デフォルトの名無しさん
2020/09/26(土) 06:47:39.19ID:JvTrRG8q
>>706
答えはまだかなって、そもそも俺は聞かれてないんだが?
レスの流れをもっぺん追ってみな
708デフォルトの名無しさん
2020/09/26(土) 06:49:33.64ID:U+G6yEte
>>707
お前が誰か知らんがなw
関係ないならいちいち絡んでくるなよ、気持ち悪いわ
709デフォルトの名無しさん
2020/09/26(土) 06:51:36.58ID:JvTrRG8q
>>708
では「答えはまだかな」は引っ込めるんだな?
しがみついてた梯子を外されて可哀想にw
710デフォルトの名無しさん
2020/09/26(土) 06:57:40.31ID:U+G6yEte
>>709
馬鹿なの?
お前に対しては聞かないというだけの話
>>653が早く答えればいいだけ
まあ無理だからゴミクズとか言い出してるんろうけどw
711デフォルトの名無しさん
2020/09/26(土) 07:13:53.77ID:JvTrRG8q
>>710
おまえさんがゴミクズなのはC++でROM焼きしてないからだ
それをすり替えようったってそうはさせねえよ
わかったか? ゴミクズ
712デフォルトの名無しさん
2020/09/26(土) 07:27:56.00ID:U+G6yEte
何だこいつ?
いきなり絡んできて意味不明なこと言い出すとか通り魔かよw
713デフォルトの名無しさん
2020/09/26(土) 07:37:41.03ID:JvTrRG8q
ここはC++スレだ
ゆえにC++でコード書いてないやつは価値ゼロだ

もう一度言う
おまえさんがゴミクズなのはC++でROM焼きしてないからだ
8080であろうが6809であろうが関係ない
C++でコード書いて得た知見を言え
それ以外の戯れ言はいらん
714デフォルトの名無しさん
2020/09/26(土) 08:42:15.83ID:U+G6yEte
>>713
ROM焼きしてないだけでC++はガンガン使ってるけど?
thisポインタなんてstructへのポインタを自動生成してるだけ
初期のC++処理系でC言語に変換したコードとか見たことないのか?
715デフォルトの名無しさん
2020/09/26(土) 08:47:39.20ID:JvTrRG8q
>>714
おまえさん6800だの8080だの持ち出してドヤってたろ
6800でC++書いてんのかよ? え、おい
716デフォルトの名無しさん
2020/09/26(土) 09:07:00.22ID:U+G6yEte
>>715
6800とか8080の話は>>691からの流れな
話の流れも読めないバカは黙ってなよw
717デフォルトの名無しさん
2020/09/26(土) 12:45:09.58ID:uIJkShC0
スタック上にある構造体を指すポインタはスタック領域を指すっていう
それだけの話で100レス以上も盛り上がれるなんて楽しそうで羨ましい
718デフォルトの名無しさん
2020/09/26(土) 12:57:51.80ID:U+G6yEte
上から目線で頓珍漢な結論を開陳してる君の方が幸せそうだがw
719デフォルトの名無しさん
2020/09/26(土) 13:01:37.96ID:JvTrRG8q
>>718
エテ公の自己紹介乙
720デフォルトの名無しさん
2020/09/26(土) 13:10:27.66ID:U+G6yEte
話の流れも読めないバカがなんか言ってるなw
惨めにならないんだろうか?
721デフォルトの名無しさん
2020/09/26(土) 13:18:24.22ID:JvTrRG8q
上から目線で頓珍漢な結論を開陳
上から目線で頓珍漢な結論を開陳
上から目線で頓珍漢な結論を開陳
722デフォルトの名無しさん
2020/09/26(土) 13:25:59.50ID:JvTrRG8q
>>716
633とかの黒歴史はなかったことにしたいんだろw
C++使ったことない環境の話でドヤるなと牽制されて

なあID:cdg8K9Zmよ
723デフォルトの名無しさん
2020/09/26(土) 15:07:52.90ID:U+G6yEte
>>722
ん?
633のどこがおかしいの?
結局、
>> 設定値を変えるだけだろとか簡単に言われても困る。
> スタックへのアクセスってよほどトリッキーなことをしない限りSP相対だぞ
> スタック領域変わったからと言ってSPの初期値以外に一体何を書き換えるんだよw
の回答もないんだけど、君が答えてくれるのかな?w
724デフォルトの名無しさん
2020/09/26(土) 15:21:46.24ID:RuVJsWZT
当初は技術論をぶつけあってるようで興味深く読ませてもらってた
難しくて理解できないことも多かったけど

いまはもうただの罵倒合戦になっちゃったね残念です
725デフォルトの名無しさん
2020/09/26(土) 15:47:25.99ID:ZTwAa6WW
>>723
説明したとおり、昔の処理系は移動した先のスタックエリアがそこに常にあるとは保証されないからその対応は必要。
今はユーザーモードならOSがスレッドコンテキストを保証してるから頭使わないだけ。
726デフォルトの名無しさん
2020/09/26(土) 15:57:43.88ID:U+G6yEte
>>725
> 説明したとおり、昔の処理系は移動した先のスタックエリアがそこに常にあるとは保証されないからその対応は必要。
申し訳ないけど全然状況が想像できん、具体例で説明してくれ
727デフォルトの名無しさん
2020/09/26(土) 16:18:49.58ID:ZTwAa6WW
スレッドセーフだったAPIがスレッドセーフじゃなくなりました!!
って言われて、はぁ?と言いながらソースを修正する、みたいな。こんな具体例でいいですか?
728はちみつ餃子 ◆8X2XSCHEME
2020/09/26(土) 16:40:11.75ID:d+bfMgei
ワイはそこまで昔のことは知らんし、組み込み系の話もわからんけど、
MS-DOS (16bit) 時代のプログラミングの知識だと
データの位置はスタックポインタからの相対というだけではなく
セグメントレジスタの内容も加算される。

スタックセグメントレジスタとデータセグメントレジスタが一致するときは
単純なのだが、そうでないときはセグメントの値とセグメント内のオフセットを組にして
ポインタとして扱わなければならない。
(いわゆる far pointer のこと。
Windows SDK のヘッダファイルの中に near と far がマクロ定義されているのはたぶんそのなごり。)

C のプログラムとして書く分にはメモリモデル (セグメントの扱い) を決め打ちして、
コンパイラはそれに従って整合性を取ってくれるから素直な C プログラムなら問題にならないが、
凝ったメモリ管理をしようとするとそう単純にはいかないことはあったかもしれん。
729デフォルトの名無しさん
2020/09/26(土) 17:22:32.99ID:U+G6yEte
>>727
ごめん、全然わからん
そもそもスレッドとかがある時代の話なの?

>>728
あなたも書いてる通りfarポインタでも
> コンパイラはそれに従って整合性を取ってくれるから素直な C プログラムなら問題にならない
のが普通
よほどトリッキーなことをすれば駄目なケースがあるのかも知れんが俺には思いつかん
730デフォルトの名無しさん
2020/09/26(土) 17:29:29.79ID:JvTrRG8q
こいつメモリコンパクション知らんの?
731デフォルトの名無しさん
2020/09/26(土) 17:35:47.60ID:U+G6yEte
>>730
スタック領域にメモリーコンパクション?
昔の処理系の割にスレッドとかメモリーコンパクションとかなかなか凝ったシステムやねw
732デフォルトの名無しさん
2020/09/26(土) 17:36:30.11ID:JvTrRG8q
メモリーコンパクションて昔の処理系でしょ
今の処理系でやるやつあんの?w
733デフォルトの名無しさん
2020/09/26(土) 17:54:42.30ID:ZTwAa6WW
あーコンパックショックね。昔あったあった。
734デフォルトの名無しさん
2020/09/26(土) 17:55:50.69ID:U+G6yEte
昔といえば昔かな、>>725はもっと昔の話かと思ってたけど
で、メモリーコンパクションがどう関係するって?
735デフォルトの名無しさん
2020/09/26(土) 18:03:51.62ID:ZTwAa6WW
これだけ説明して何も分からないならそれまででしょう。
OSに感謝してC++富豪プログラミングを謳歌してください。
736デフォルトの名無しさん
2020/09/26(土) 18:41:14.25ID:U+G6yEte
説明できずに遁走
と言うことでいいかなw
まあそうだろうとは思ってたけど
737デフォルトの名無しさん
2020/09/26(土) 18:44:55.61ID:ZTwAa6WW
もちろんだ。それでキミの自尊心が傷つかないで済むならそれでいい。
738デフォルトの名無しさん
2020/09/26(土) 19:34:56.51ID:U+G6yEte
了解
739はちみつ餃子 ◆8X2XSCHEME
2020/09/26(土) 23:28:50.69ID:d+bfMgei
>>729
ひとつのプログラムの中では整合性は維持されるけど、
別のタスクとやりとりするときにメモリモデルが違うと
near pointer と far pointer を明示的に使い分けないといけないことがある。

わかってればとりたてて難しいことではないのだけど、
言語仕様に沿ってれば後はコンパイラにお任せというわけにはいかない。
知ってる必要はあった。

話題の発端 (よりは少し後?) でスタックポインタとの相対番地は
呼出し側で計算するんだから……という話が出ていたので、
他の要素 (セグメント) が絡むアーキテクチャのことを思い出したなぁという余談。
740デフォルトの名無しさん
2020/09/26(土) 23:47:45.08ID:Hf1Mq2xd
>>739
理解しているだけでなく、far というキーワードを
char far *ptr;
のように書いたりしなくてはいけなくて、面倒だった。
741デフォルトの名無しさん
2020/09/27(日) 02:34:34.90ID:S4au1vJD
far ポインタ、今ここで見なければたぶん一生わすれたままだったのに
ちなみにMS-DOS時代は全部のセグメントをひとつにまとめた .COM っていう実行形式あったな
いまでも動くのかしらんけど
742デフォルトの名無しさん
2020/09/27(日) 05:20:36.19ID:PnF6Ozyr

743はちみつ餃子 ◆8X2XSCHEME
2020/09/27(日) 08:55:07.39ID:WOc0AJ0G
>>741
Windows では今でも com 形式を実行できるよ。
環境変数 PATHEXT の Windows でのデフォルト設定を見ればわかるが、先頭に com が入ってる。
(同じ名前であれば exe より com が優先されるということ。)

C:\Windows\System32 の下にはいくつか com 形式の実行ファイルはあるし。

ただ (com 形式に限らず) 昔のプログラムは直接にデバイスを叩いていたりして、
さすがにサポートしきれていない場合もあるから、昔のプログラムが何もかもそのまま
動くというほどではない。
744デフォルトの名無しさん
2020/09/27(日) 08:59:30.78ID:p6y4XMAK
>>739
別に一つのプログラムの中でもnearとfarを混在できる
メモリーモデルはディフォルトのnear/farを決めてるだけだから異なるメモリーモデルのプログラムを混在させたなら相互に使用するデータやコードには個々にnear/farの指定をする必要があるのは当たり前
それを含めて言語仕様だし

>>740
char near * far f();
とか書き方がややこしいのは認める
745デフォルトの名無しさん
2020/09/27(日) 09:33:39.25ID:QntRtEDW
>>743
たとえばC:\Windows\System32\format.comなんかあるけど
dumpbin /headers format.comとやると中身はexeだと出てくるぞ
masmに付いてたexe2binで出力した本当のtinyモデルのやつは
x86までで、x64のwindowsでは実行できんぞ
746はちみつ餃子 ◆8X2XSCHEME
2020/09/27(日) 11:05:00.24ID:WOc0AJ0G
>>745
えっ、そうなんや!? それは知らんかった。
じゃあ拡張子が com なのはなんかの互換性とかの都合なのかな。
747デフォルトの名無しさん
2020/09/27(日) 11:34:08.96ID:QntRtEDW
format.comはdosの時代からずっと拡張子.comのままだね
int 21h, ah=4bhで指定するファイル名が変わると困るから
748デフォルトの名無しさん
2020/09/27(日) 11:41:49.52ID:QntRtEDW
ちなx64で16bitプログラムが実行できないのはm$の恣意的な制限で
ホストx64、ゲストx86のvmアンダーなら.com形式のプログラムも実行できる
749デフォルトの名無しさん
2020/09/27(日) 12:07:35.19ID:s60mNpHS
Windows 95 の command.com ですら exe 形式
ライブラリ含むと64KB制限は結構きつい
750デフォルトの名無しさん
2020/09/27(日) 12:21:08.36ID:B8/m6o5T
確か、int 21hのDOS Function Callは、今のWindowsではサポートされなく
なったと聞いた様な。
751デフォルトの名無しさん
2020/09/27(日) 12:41:38.04ID:HRFRA9zs
kakaku.com
752デフォルトの名無しさん
2020/09/27(日) 15:19:28.84ID:PnF6Ozyr
今に生きろよw
753デフォルトの名無しさん
2020/09/27(日) 15:49:06.00ID:tl/HXTc2
じじいは昔話しだすと止まらなくなる
ボケてないんだったら自覚して自重しろ
754デフォルトの名無しさん
2020/09/27(日) 16:17:04.29ID:kqCKlQkp
.comはCPMの名残だけど
全セグメントを一つにまとめたってのは
ちょっと違くないか?
別に違うセグメントにアクセスしても問題無く動いてたろ?
755はちみつ餃子 ◆8X2XSCHEME
2020/09/27(日) 16:28:23.36ID:WOc0AJ0G
>>754
今でいうセクションみたいなことを言おうとしたんでしょ。
実行環境の話ではなくあくまでもファイルフォーマット。
756◆QZaw55cn4c
2020/09/27(日) 16:35:25.79ID:LVdhYtmI
>>754
たぶん *.com と *.exe の違いはMS-DOS のイメージローダの都合、というものじゃないでしょうか?
*.exe はテキストの前に、セグメントアロケーション情報を持っていて、実行ファイルをロードする歳に、関係するセグメントオフセットを実セグメントに変更します
*.com にはそれがなく、生のテキストがメモリ上に配置されるだけ

*.com であってもプログラマが自分でオフセット・セグメントを把握したり、スタックポインタ・スタックセグメントを設定しているのだったら、それはそれで問題なく動くでしょう
757デフォルトの名無しさん
2020/09/27(日) 17:06:17.30ID:QntRtEDW
簡単な実験

echo テ>test.com
test.com
758デフォルトの名無しさん
2020/09/27(日) 19:47:03.79ID:SosvOXW5
PC9801の頃に、漢字 2字? のファイルを comで保存して、IPLん走らせるみたいのあったな
たしかその 4バイトは 0番地に分岐する命令だったような
759デフォルトの名無しさん
2020/09/27(日) 20:35:56.16ID:QntRtEDW
ぴぽ
760デフォルトの名無しさん
2020/09/28(月) 11:44:17.88ID:PXJ7xAyj
美乳
761デフォルトの名無しさん
2020/09/30(水) 00:23:01.22ID:Sia2lU3A
>>759
いまでも鮮やかに蘇る
762デフォルトの名無しさん
2020/09/30(水) 12:14:30.74ID:k+HGkMpo
How many files (0-15) ?
NEC N88-BASIC Version 2.1
Copyright (C) 1981 by Microsoft
56548 bytes free
Ok
763デフォルトの名無しさん
2020/09/30(水) 20:39:25.56ID:48ryTnta
_DEBUG で区切っているコードがあり、
releaseモードで実行したのに
_DEBUGで切っているコードを実行されてしまいます。
プロジェクトプロパティにて宣言していないのは確認しています。
なにか解決になるヒントだけでもいただけないでしょうか?
764デフォルトの名無しさん
2020/09/30(水) 20:51:05.98ID:/J4p2JyL
>>763
大ヒント:
それはC++の機能じゃない。Visual Studioのスレで聞け。
あとビルド構成
765デフォルトの名無しさん
2020/09/30(水) 22:08:07.49ID:48ryTnta
>>764
スレチすみませんでした。
766デフォルトの名無しさん
2020/10/01(木) 09:15:47.76ID:oZeTafce
Releaseモードにしたとき自動で入るのはNDEBUGだろ
その昔、ソースコードの中で#undefしてる大タコなやつがいた
767デフォルトの名無しさん
2020/10/01(木) 12:08:12.26ID:OaA9a4hN
間接話法による自己紹介とはなんと慎み深いお方なんだ
768デフォルトの名無しさん
2020/10/01(木) 13:35:09.79ID:27/Dd+rP
ここ見てるとC++使いは性格悪いのが多いって感じがする
769デフォルトの名無しさん
2020/10/01(木) 14:16:23.58ID:QPXIh54Z
昔はこのスレももっとまともな人が多かったと思うけど、いつの間にか一部のガラの悪い奴らの下らない罵り合いばかり見せられて人が去っていったのかなと思う。
770デフォルトの名無しさん
2020/10/01(木) 14:19:30.67ID:WQPTDVBo
ここで聞くより調べたほうが大抵早いし
なんでこんなところに来るのかわかんない
771はちみつ餃子 ◆8X2XSCHEME
2020/10/01(木) 14:31:52.80ID:i8Yvf3kp
入り組んだ仕様の組み合わせで起こることならともかく、
簡単に調べられることだと回答も仕様 (またはどっかの解説)
をコピペするか URL を貼るだけになるからつまらんのだよなー。
そのワンステップ必要? という気持ちにはなる。

本物の初心者がそれすらできないことがあるのも知ってるから、
あまり無碍にはしないようにしてるけど、
つまらんなーという気持ちは残る。
772デフォルトの名無しさん
2020/10/01(木) 14:45:07.87ID:27/Dd+rP
>>770
見事な自己矛盾
773デフォルトの名無しさん
2020/10/01(木) 14:58:05.69ID:WQPTDVBo
別に質問しに来てるわけじゃないからな
質問する人がどういう経路で来るのか気になる
774デフォルトの名無しさん
2020/10/01(木) 15:04:41.08ID:15Icpaxe
>>769
2|5ちゃん全体がそれ
775デフォルトの名無しさん
2020/10/01(木) 16:59:28.58ID:ECwAm/rR
まじでc++ユーザー煽り合いしか出来ねーな
普通に教えられないのか?
そのくせTwitterでは、新人への対応がーとか云々社内のこと愚痴る癖に人の振り見て我が振り直せって感じ
776デフォルトの名無しさん
2020/10/01(木) 17:01:21.71ID:C7xRzI9k
コード書かないC++委員会の言語オタクどもが仕様拡張病を患ってるから
仕様を知ってる知らないレベルでマウンティング合戦になるんだよな。
777デフォルトの名無しさん
2020/10/01(木) 17:03:19.37ID:15Icpaxe
>>776
>C++委員会の言語オタクどもが仕様拡張病

ああ判るわ
コード描くか描かないかに関わらず目的が可笑しい
778はちみつ餃子 ◆8X2XSCHEME
2020/10/01(木) 17:08:35.75ID:i8Yvf3kp
>>769
昔からこんなもんだったよ。
779デフォルトの名無しさん
2020/10/01(木) 17:11:12.79ID:oZeTafce
知らなかった情報が拾えるのはいいことだし
質問する者にとって回答してくれる者がいるのもいいことだ

問題はしょーもないクイズで人を小馬鹿にするやつと
無知を正当化しようとする弁舌だけ達者なボーガスだ
780デフォルトの名無しさん
2020/10/01(木) 17:17:50.23ID:C7xRzI9k
質問して答えられなかったら自分の勝ちというのは昔から馬鹿左翼の論法。
国会でカップラーメンの値段聞いたりほんと馬鹿である。答えを知ってるなら説明するだけでいい。
781デフォルトの名無しさん
2020/10/01(木) 17:20:08.60ID:Qv735ygl
C++書くと短気になるのか?
782デフォルトの名無しさん
2020/10/01(木) 17:25:14.05ID:oZeTafce
いや気が短い人には、テンプレート絡みのエラーメッセージなんか読めるはずがない
783デフォルトの名無しさん🐙
2020/10/01(木) 17:27:09.99ID:C7xRzI9k
組織で開発してるのにおれおれテンプレートなんか使われたらもはや他人が読めるものではない。

キレて当然。
784デフォルトの名無しさん🐙
2020/10/01(木) 17:28:30.32ID:oZeTafce
出たな
無知を正当化しようとする弁舌だけ達者なボーガス
785デフォルトの名無しさん🐙
2020/10/01(木) 17:28:43.35ID:Njtwj5ZN
>>770 >>771
でも検索するより、知ってる人に聞いたほうが早いことが多い。
それに複雑な事柄を検索しても、回答を見つけるのは難しいことが多い。
786デフォルトの名無しさん🐙
2020/10/01(木) 17:29:21.00ID:oZeTafce
問題はしょーもないクイズで人を小馬鹿にするやつと
無知を正当化しようとする弁舌だけ達者なボーガス

ゴミクズ同士、共食いで滅びて欲しい
787蟻人間 ◆T6xkBnTXz7B0 🐙
2020/10/01(木) 17:31:05.75ID:f58nw38n
デフォルトの名無しさん🐙←タコがついて内科医?
788デフォルトの名無しさん🐙
2020/10/01(木) 17:31:24.98ID:C7xRzI9k
ID:oZeTafce  ←こういうのが一人でもいると他人が読めないコードを大量生産してデスマーチになるからちゃんと監視しなきゃならない。みんな無知過ぎ、他人の読めないコード書くおれーすげー、みたいな。
789デフォルトの名無しさん🐙
2020/10/01(木) 17:32:57.38ID:HM8/0niY
>>776
最近日本人の有名なC++ライターが
「グラフィクスとかオーディオのライブラリ標準化にはゲーム業界も参加しないとやばいよ、という目的もあった」
とかtwitterで言ってたんだが(なんかの講演に関して)
この上から目線は最近?昔から?

ゲーム業界はC++標準に興味など無いことに、いつになったら気付くのか・・・(特にグラフィックスはC++標準に新機能が採用されるのを、何年も待つはずが無い)
790デフォルトの名無しさん🐙
2020/10/01(木) 17:39:16.66ID:HM8/0niY
ゲーム業界というかプロ全般(標準に興味ない
791蟻人間 ◆T6xkBnTXz7B0 🐙
2020/10/01(木) 17:49:49.29ID:f58nw38n
たこ焼き祭りですか?
792蟻人間 ◆T6xkBnTXz7B0 🐙
2020/10/01(木) 17:51:57.40ID:f58nw38n
おまいら運営に馬鹿にされてるぞ。
793蟻人間 ◆T6xkBnTXz7B0
2020/10/01(木) 18:03:10.97ID:f58nw38n
タコも高級品になったもんだ。
794デフォルトの名無しさん
2020/10/01(木) 19:56:29.24ID:oZeTafce
>>788
全然、凄くない
当たり前のことをしているだけだ
法には周知義務があるのを忘れるな
795デフォルトの名無しさん
2020/10/01(木) 23:54:48.33ID:N8frV11f
まあ江添みたいな馬鹿はあと数年も持たず路頭に迷うだろ。
796デフォルトの名無しさん
2020/10/02(金) 00:34:33.37ID:Whvs+WDZ
職質拒否して裁判もボロ負けしたC++イキリおじさんだっけ
797デフォルトの名無しさん
2020/10/02(金) 00:41:43.80ID:N9frkbqQ
丸坊主にリュックで安全靴なら職質されても仕方ない
798デフォルトの名無しさん
2020/10/02(金) 01:57:01.58ID:ooD45Zz3
本当に、職務質問を拒否しただけで逮捕されるのか?

日本は民主国家か?
これ、中国と同じだろw
799デフォルトの名無しさん
2020/10/02(金) 02:05:48.79ID:Zv/IYSQC
いかにも怪しいやつを人権・自由を盾に野放しにする社会とどっちがいい?
800デフォルトの名無しさん
2020/10/02(金) 07:09:19.57ID:h/f4PeOt
自分がその「いかにも怪しいやつ」に仕立て上げられてと構えられることの想像力が働かないんですね
801デフォルトの名無しさん
2020/10/02(金) 07:13:45.38ID:Zv/IYSQC
想像力の問題とちゃうやろ
802デフォルトの名無しさん
2020/10/02(金) 07:51:44.17ID:w3pZXp3m
別にIOCCCみたいにわざと意地悪してるんじゃなく
整合性を大事に書くときに有り難い機能が追加されたら使うってだけ

新しい機能を使うなってやつは何を基準に言ってるんだ?
たとえばcfront 1.0が基準ならテンプレートどころかprotectedすらないんだが
803デフォルトの名無しさん
2020/10/02(金) 08:20:07.69ID:n3ogA7Ho
堀江貴文と一緒でルールハックドヤかましたかっただけだろうがマジで連行されたっていう頭の悪いオチだろ。
804デフォルトの名無しさん
2020/10/02(金) 08:43:35.55ID:ooD45Zz3
他国の有罪率は、50%。
日本だけが、100%

だから、半分は冤罪。
ほとんど証拠がないけど、有罪になってる

酒酔い運転の検問でも、息を吹きかけて、検査機のランプが点かないと、
警官がちょっと待ってと言って、くるっと後ろを向くと、ランプが点く

何のことはない。
警官が酒を飲んでいて、息を吹きかけているw

警官の犯罪率は、異常に高いと思う
805デフォルトの名無しさん
2020/10/02(金) 09:37:02.67ID:JOAyzIPW
>>804
rubyガイジは真正の馬鹿だな。
脳みそ足りなすぎて日常生活に支障が出てるんじゃないか?

日本の起訴率は51.5%
よって有罪率は0.515 * 0.998 = 約51%
806デフォルトの名無しさん
2020/10/02(金) 09:45:23.01ID:w3pZXp3m
スレ違い出てけ
807デフォルトの名無しさん
2020/10/02(金) 12:16:13.18ID:436BsK54
>>804
こんなところでもルール破りかよ。
808デフォルトの名無しさん
2020/10/02(金) 16:45:37.07ID:R9hS5H3t
>>795
本売れてるんじゃないの?
809はちみつ餃子 ◆8X2XSCHEME
2020/10/02(金) 16:49:57.77ID:0aKkMJ10
技術書なんてなんぼ売れてもカスみたいな収入にしかならんよ。
810デフォルトの名無しさん
2020/10/02(金) 17:35:29.74ID:6j4v4nOg
技術書は高めなので1冊の執筆料1000円入ってきたとして、1000部売れても100万円かぁ。
小遣い稼ぎならともかく、事業として考えたらペイはしないわな。
811デフォルトの名無しさん
2020/10/02(金) 17:50:13.26ID:JOAyzIPW
印税なんて5%〜10%程度よ?
しかも最初の1000部は印税なしとか大学生だったときに教授から聞いた
812はちみつ餃子 ◆8X2XSCHEME
2020/10/02(金) 17:53:55.34ID:0aKkMJ10
具体的な部分は契約によるらしいが、
表紙デザインを除いては Github に公開してしもうとるし、
それで儲ける気はないんやろ。

でもまあ C++ 界でそこそこ知名度のある本にはなったし、
実績として十分だわな。
813デフォルトの名無しさん
2020/10/02(金) 18:17:03.49ID:+7NoxmQt
表紙がハゲのオッサンだしな
814デフォルトの名無しさん
2020/10/02(金) 18:57:57.01ID:t7YMXpIh
本と言えば思い切ってプログラミング言語C++を買ってしまいました
これで僕もハッカーになれますか?
815デフォルトの名無しさん
2020/10/02(金) 19:00:16.60ID:OFlYu8W1
校正のプロになれます。
816デフォルトの名無しさん
2020/10/02(金) 20:50:56.39ID:StR3k4DL
ユーチューバーは、100万視聴で1000万近くになるらしいですよ。
817デフォルトの名無しさん
2020/10/02(金) 22:00:08.88ID:N9frkbqQ
1視聴10円かよ!
818デフォルトの名無しさん
2020/10/02(金) 23:42:12.32ID:w1PiXzOX
YouTubeで受けるためには道化師になる必要があると思われる。
芸人と呼ばれる人は、ピエロや道化師のように、下から下から
やっていかなくてはならず、人に馬鹿にされることによって
食っていく立場となる。
それが出川であり、アンガールズ田中だ。
819デフォルトの名無しさん
2020/10/03(土) 09:25:11.62ID:F7oAx4CC
>>815
++
820デフォルトの名無しさん
2020/10/03(土) 17:57:57.06ID:zNAYM1qP
c++が最強たる理由は如何に?
821デフォルトの名無しさん
2020/10/03(土) 17:58:20.13ID:r4k4fPqO
二重質問だな
822デフォルトの名無しさん
2020/10/03(土) 22:59:48.02ID:S8hWGx6H
ランタイム速度最強で、高機能は最新バージョンでなんでも無理やり入れるところかな。
その代わり、一貫性、ビルド速度あたりが犠牲になるが。
823はちみつ餃子 ◆8X2XSCHEME
2020/10/03(土) 23:53:24.58ID:6Be2cGN6
汚かろうがなんだろうが問題解決のために使用可能だということが C++ の強さだと思う。
程度はともかくとりあえず C++ を使えるという人材を確保するのはなんら難しいことではないし、
資料もたくさんある。

言語機能がどれだけよくできていたところで使い手がいないだとか
まともな処理系がないとかだったら話にならんわけで。
特に産業的な分野では。

C++ は教育体制や処理系の充実と足並みを揃えてその大前提を満たし続けてきた。

----

ところでどうでもいい話なんだけど「きたなかろうが」を変換したら「北中朗が」と出てきた。
824デフォルトの名無しさん
2020/10/04(日) 01:08:30.77ID:CYbdqi1J
> C++ は教育体制や処理系の充実と足並みを揃えてその大前提を満たし続けてきた。

釣り針デカすぎだろw
825はちみつ餃子 ◆8X2XSCHEME
2020/10/04(日) 01:26:05.38ID:EAA10WtI
ウェーイwww
826デフォルトの名無しさん
2020/10/04(日) 06:23:23.02ID:kk4eQgu+
XILINXの石で使えるのが大きいだろな。
827デフォルトの名無しさん
2020/10/04(日) 07:14:17.35ID:sgMvq0EF
conceptをC++11では一旦引っ込めたのも
足並みを揃えるってことの1つだな
828デフォルトの名無しさん
2020/10/04(日) 08:30:42.96ID:BZCvNbQp
>>824
教育体制って言うか資料は豊富にあって勉強するには事欠かないし処理系はかなり充実してるとおもうぞ
829デフォルトの名無しさん
2020/10/04(日) 09:24:05.67ID:AsTxQvCr
c++よりrustのほうが良くなーい?と思っていてrustを本格入門している

さようならc++ perlみたくなるんじゃねーぞ
830デフォルトの名無しさん
2020/10/04(日) 10:58:21.76ID:WrglaOe5
python は 10-20年程度で perl を駆逐出来たけど
perl や python は 20年以上経っても C/C++ を駆逐出来ていない
831はちみつ餃子 ◆8X2XSCHEME
2020/10/04(日) 11:13:56.41ID:hQVA1bdd
俺も rust はかなり気に入ってるけど、
だからといって C/C++ から全く離れようという気持ちにはならんな。
832デフォルトの名無しさん
2020/10/04(日) 12:08:59.42ID:YIIMLtoX
プログラミング言語なんて所詮は道具よ
ノコギリとハサミの間に優劣なんてないから
833デフォルトの名無しさん
2020/10/04(日) 13:32:21.33ID:P8Zgc9xR
まあRustがC/C++の代わりになるのは無理だね。
834デフォルトの名無しさん
2020/10/04(日) 13:42:50.50ID:R7l6qcNE
へー、なんで?
最近Rust手つけようかなと思ってた
835デフォルトの名無しさん
2020/10/04(日) 13:47:42.57ID:jSKQ3Llr
やりたければやれば良いだけ
なんで他人に確認求めるんだ?
836デフォルトの名無しさん
2020/10/04(日) 15:44:23.53ID:P8Zgc9xR
>>834
ハード屋からすればアセンブラは基礎だが、その基礎と対応が明確なのはC。
対応関係が明確で闇が少ない。
もともとシステム言語としてはC++よりCが好まれているが、C++はCの延長線上に
あるのでなんとか使える。
しかし、C++もどうコンパイルされるのか分からことがあるという意味で「闇がある」と言われている。
ところが、Rustのsafeモードはアセンブラと対応関係が不明確だし、
仕様も非公開や曖昧なところがあるのでC++以上に「闇がある」ので
アセンブラの代わりに使うのは分かりにくいし危険だし、効率も良く無い可能性
が高い。ベンチマークは、Rustに都合の良いものが選べれていることが多いので
実際とは異なる。
837デフォルトの名無しさん
2020/10/04(日) 16:04:43.05ID:heX2CqX2
linux kernel開発にrustが試験的に導入されつつあるが
c++は依然シカト状態
linusのこの判断が妥当と思うか不当と思うかでエンジニアとしてのタイプが大きく分かれる
838デフォルトの名無しさん
2020/10/04(日) 17:11:41.98ID:MVhzoVv9
カーネルモジュールの話なら、昔からC++で開発できるじゃん。
ところがrustはそうでなかった。APIの一部は直接呼び出せなかったり、呼び出すのが煩雑だったりした。だから対応方法検討してみようかってだけ。
検証結果が取り込まれて初めてc++に追いつくんだよ
839デフォルトの名無しさん
2020/10/04(日) 17:27:22.30ID:w1YmESSn
C++利用者の層がクズだからKernel開発に使わないという理由は割とマジでがちだろうな
840デフォルトの名無しさん
2020/10/04(日) 17:31:15.34ID:heX2CqX2
>>838
linux kernelだよ?
c++で開発されてるモジュールって何?
ランタイムどうしてんの?
841デフォルトの名無しさん
2020/10/04(日) 17:35:37.57ID:BZCvNbQp
>>840
最低限のライブラリのみをスタティックリンクしてるんでしょ
組み込みの開発したことないの?
842デフォルトの名無しさん
2020/10/04(日) 17:35:53.89ID:rzaWC8eE
江添の俺の本スゲーアピール
843デフォルトの名無しさん
2020/10/04(日) 17:45:02.87ID:heX2CqX2
>>841
linux kernelのモジュール開発したことあんの?
ないならすっこんでいてほしい
あるならそのc++で開発した事例を教えてくれ
844デフォルトの名無しさん
2020/10/04(日) 18:21:33.06ID:BZCvNbQp
>>843
できるできないの話だろ
なんでそんなレベルで上から目線で語れるんだ?w
http://www.lunaport.net/blog/2010/12/linuxc.html
845デフォルトの名無しさん
2020/10/04(日) 18:40:15.53ID:heX2CqX2
>>844
そんな個人がなんとかハックしたおもちゃドライバでできると言われてもね
linux kernel のrustサポートと同列じゃないよ
846デフォルトの名無しさん
2020/10/04(日) 18:48:13.93ID:XEwerBlV
どこがハックなんだろう…
まあ具体的に何がまずいのかも書けない時点で顔真っ赤なんだろうなw
847デフォルトの名無しさん
2020/10/04(日) 18:58:16.40ID:heX2CqX2
そのブログにすんなりc++で作れましたよ〜って書いてあるようには全く読めないな
まぁそこを争うつもりはないので以後スルーで
848デフォルトの名無しさん
2020/10/04(日) 19:15:32.16ID:P8Zgc9xR
STLのvectorのソース見てみたけど、解読がとても難しい。
listも難しかった。
849デフォルトの名無しさん
2020/10/04(日) 19:55:46.37ID:27qZxY76
一部のc++機能をcで無理やり実装しましたよ〜っていう馬鹿がよくやる種類の話だね。
850デフォルトの名無しさん
2020/10/04(日) 21:39:53.26ID:w1YmESSn
生産的な話し合いができない種類の馬鹿ばかりだ
851デフォルトの名無しさん
2020/10/04(日) 21:55:21.35ID:BZCvNbQp
>>847
争うつもりがないなら黙ってりゃいいのにw

>>849
お前バカ?
852デフォルトの名無しさん
2020/10/04(日) 22:02:04.98ID:2+QqJimn
怒らせてしまった。やっぱ本当のこと言うのは良くないね。
853デフォルトの名無しさん
2020/10/04(日) 22:06:44.32ID:oRUS9BLt
RustはOSも書ける!
らしい!!
854デフォルトの名無しさん
2020/10/04(日) 22:09:13.89ID:oRUS9BLt
C++でカーネルを書くとして
レイヤー的にSTLとか一切禁止になるんじゃ…
するともはやCに対するアドバンテージはクラスや仮想関数が使えることぐらい
だがそれあってもカーネル書くのに言うほどうれしいかどうか、、、
855デフォルトの名無しさん
2020/10/04(日) 22:18:38.61ID:oRUS9BLt
アプリケーション開発なら問題領域と解決領域をスムーズにつなぐのにクラスや多態性が役に立つが
OSのカーネルとなると信頼性と効率性が追求目標なのでアプリの設計とは様相がだいぶ異なるヨカン
アルゴリズムとデータ構造の世界で今日日のアーキテクチャーの複雑なメモリモデルの
要請を満たしつつメチャ枯れた書き方を要求されるしそれ以外の書き方をしたらリーナスに頃される
ハズ
856デフォルトの名無しさん
2020/10/04(日) 22:23:23.86ID:BZCvNbQp
>>854
テンプレート自体は使える
ただ、new/deleteや例外を使ってるやつも多いから使えるのはかなり限定されるとは思う

>>852
ダッサw
857デフォルトの名無しさん
2020/10/04(日) 22:45:18.08ID:CYbdqi1J
>>854
カーネルで糞重い仮想関数使うな、馬鹿。
858デフォルトの名無しさん
2020/10/04(日) 22:50:31.84ID:heX2CqX2
おいおい
linux kernelの中はいたるところ仮想関数だらけですがな実質的には
vptrは使わないけど
859蟻人間 ◆T6xkBnTXz7B0
2020/10/04(日) 22:52:32.94ID:idByu9RA
ちゃんちゃかちゃんの
くるりんぽん♪
860デフォルトの名無しさん
2020/10/04(日) 22:58:43.88ID:oRUS9BLt
そうだっけvptrって構造体に書かれているvptrでvtblを参照してさらにそのvtblに収容されているポインタを参照するわけだが
そんなことをするぐらいなら構造体メンバとしてポインタを持ったほうがなんぼかマシ

※ 個人の感想です
861デフォルトの名無しさん
2020/10/04(日) 22:58:58.08ID:w1YmESSn
うんこみたいな井戸端会議してないで社会貢献しろ
862デフォルトの名無しさん
2020/10/05(月) 00:59:40.74ID:5Dit9vq+
なんでこんなC++を目の仇にしてるようなオッサンがわざわざスレみにきてるのかが謎だ
その精力を別のことに割り振ればもっと生産的なのに・・
863デフォルトの名無しさん
2020/10/05(月) 08:15:51.56ID:FaJmikLJ
>>858
Cに仮想関数ってあったっけ?
864デフォルトの名無しさん
2020/10/05(月) 08:19:43.37ID:FaJmikLJ
>>860
virtualキーワード導入にあたってvtable方式に対する反対意見としてそういうのがあったらしいね
多態はクラスの特性かオブジェクトの特性かという分かれ道で
Smalltalkerあたりが言い出しそうなことだ
865デフォルトの名無しさん
2020/10/05(月) 08:29:01.18ID:hKB8OZrM
Smalltalker
昔あった東京や大阪の街情報誌みたいだなw
866デフォルトの名無しさん
2020/10/05(月) 15:49:19.03ID:b8gYZTQ3
>>839
++
867デフォルトの名無しさん
2020/10/06(火) 00:17:27.92ID:c3+O5H5/
>>862
ちゅうか、お湯に入れたカエルは飛び出るので死なないが、
水から茹でたカエルはそのまま死んでしまうのと同じで、
昔のC++が好きで使っていたらいつのまにか全然違う言語になってしまって
嫌いになっているから。
868はちみつ餃子 ◆8X2XSCHEME
2020/10/06(火) 00:52:29.20ID:cMEvggOJ
私は C++ が ISO で標準化される前から使っているが今の方がずっと良くなってると思うんだがなぁ……。
まあ私はアマチュアだから業務での事情とかも知らんし、何か思うところがある人もいるのかもしれん。
869デフォルトの名無しさん
2020/10/06(火) 01:07:59.33ID:IqXUZgwy
保守性無視のアホ拡張ばかりでもはや業務では使えん。
多くのOSSのC++プロジェクトが担当してたPGがいなくなれば保守されず放置されるのは至極当然。
昔のObjective-C、C++、Java、Javascript、C#がそうであったように、オナニー拡張するなら改名して別言語にすべし。
870はちみつ餃子 ◆8X2XSCHEME
2020/10/06(火) 01:14:44.33ID:cMEvggOJ
具体的にどこが問題点?
871デフォルトの名無しさん
2020/10/06(火) 01:21:56.51ID:CFpJLx94
テンプレートメタプログラミングのトンチ臭さがなんとも
ライブラリを使うだけの立場なら使いやすくなったと思うけど
テンプレート絡んだライブラリ作る側はしんどすぎる
デバッグつらい
872はちみつ餃子 ◆8X2XSCHEME
2020/10/06(火) 01:33:21.32ID:cMEvggOJ
確かに色々としんどい機能は多いのかもしれんけど、
それらの機能が必要なときに使わずに書くともっとしんどいでしょ。

全面的にメリットがないときなら使わないという選択もできるわけだし。
873デフォルトの名無しさん
2020/10/06(火) 02:15:21.24ID:IqXUZgwy
頓珍漢甚だしい。その拡張された機能が必要だったのは標準化される10年も20年も前だろう。
必要なときに用意しないで今更使ってくれと迷惑極まりない。C++標準化委員会のやってることは時代錯誤甚だしい。

過去のコード資産を全否定するような拡張するなら別言語にしろと言ってんだ。
874デフォルトの名無しさん
2020/10/06(火) 03:33:59.61ID:CFpJLx94
キレ老人
875デフォルトの名無しさん
2020/10/06(火) 04:32:17.12ID:V/Ik48ec
てか、はちみつはマジで煽り抜きで
数万行以上のソフトをモダン(と、C++オタが信じてる)な書き方で作ってみたらいいよ
当然メタプログラミングにも挑戦して、だ
業務どうこうじゃなくて、ソフトを作る道具としての今のC++がどうなのかわかるから
876デフォルトの名無しさん
2020/10/06(火) 05:41:08.44ID:bkxQK63r
c++界隈ってガイジしかいねーのかね…
877デフォルトの名無しさん
2020/10/06(火) 06:34:58.64ID:Q2zsUWrb
こんなスレ見て界隈を語るとかw
878デフォルトの名無しさん
2020/10/06(火) 06:49:52.98ID:2iI+f89O
付いていけない不適任者の恨み節うるせー
879デフォルトの名無しさん
2020/10/06(火) 08:02:53.12ID:/wGSs2GX
>>867
それ、デマらしいぞ。
880はちみつ餃子 ◆8X2XSCHEME
2020/10/06(火) 08:42:39.29ID:zdPPSeez
>>875
新しい機能を (必要だと考えるまで) 使わないでいい自由があるということを
私は言ってるのにその返しはなんかおかしくない?
881デフォルトの名無しさん
2020/10/06(火) 09:36:25.29ID:aU8CxIwJ
>>880
>新しい機能を (必要だと考えるまで) 使わないでいい自由がある
全部publicなのが問題
882デフォルトの名無しさん
2020/10/06(火) 10:08:20.97ID:aU8CxIwJ
んまー低水準開発だと見えてほしくないものが見えてしまっている
レイヤーAとBの初期化が終わらなければレイヤーCの機能を呼んではいけないのに、
という状況は言語によらず普通に発生するから程度なのかもしれんが
C++はその手の罠が大杉問題、
883デフォルトの名無しさん
2020/10/06(火) 10:09:47.48ID:aU8CxIwJ
最新のC++規格について行けている(キリ
と自称されている方々は、
単にOSが起動完了した状態での使い方に習熟しているだけではないのかどうなのか、
884デフォルトの名無しさん
2020/10/06(火) 10:24:36.80ID:2iI+f89O
くだらねえ言いがかりだな
まあそんなことしか言うことねえのはわかるぜ
最大級に軽蔑する
885デフォルトの名無しさん
2020/10/06(火) 10:52:17.76ID:WjG83btQ
このスレ観てたら C#++ とか産まれそう

と思った
886デフォルトの名無しさん
2020/10/06(火) 11:25:21.40ID:/wGSs2GX
>>881
プロジェクトのコーティング規約に従えよ。
887デフォルトの名無しさん
2020/10/06(火) 11:53:18.32ID:aU8CxIwJ
プロジェクトのコーティング規約をしっかり定めさえすれば
空も飛べるはず、
888デフォルトの名無しさん
2020/10/06(火) 11:55:12.28ID:c3+O5H5/
>>870
まあ、配列が TYPE a[N][M]; ではなく、
vector<vector<TYPE>> a; // ???
が推奨された時点でもう、おかしいから。
しかも、このスレにはvectorと略さずに必ずstd::vectorと書け、とまで言う人までいる。
889デフォルトの名無しさん
2020/10/06(火) 11:58:38.89ID:E8GhSeFr
vector< vector <TYPE> > a;
はそもそも
TYPE a[N][M];
じゃなくて
TYPE *a[N];
だからなー
890デフォルトの名無しさん
2020/10/06(火) 11:59:48.46ID:aU8CxIwJ
>>888
プロジェクトのコーディング規約に従えよ;;
891デフォルトの名無しさん
2020/10/06(火) 12:01:19.58ID:c3+O5H5/
iteratorの書き方も煩雑すぎ、長すぎ。
linked listの場合に効率悪すぎ。
ポインタも生ポインタ費推奨で uniqure_ptr, shared_ptrなどが推奨されているのも
既に言語として破綻してる。
ポインタはCの「命」なのに、unique_ptrなどと書くのは長すぎるので。
アメリカの学生は9割がポインタが理解できないので、
多数決で言語仕様を決定していくと、ポインタを徹底的に排除してしまう。
角度の Radian 法が理解できない人が、Degreeを推奨し続けたりしているようなもの。
AndroidのSDKは、それになっている。
馬鹿じゃないかと思う。
892デフォルトの名無しさん
2020/10/06(火) 12:03:14.67ID:aU8CxIwJ
>>891
std::unique_ptr便利やん?
機能を使えるところまで持っていくのが面倒なだけで、
893デフォルトの名無しさん
2020/10/06(火) 12:06:36.75ID:c3+O5H5/
頭が悪い人は、ポインタの表記の優先順位を頭の中で「ほどけない」ので、
優先順位が馬鹿でも分かる
unique_ptr<unique_ptr<T>> p;
という書き方の方が分かり易く感じるのだと思う。
頭の良い人にとっては、ただ書くのが長くなっただけに過ぎないのに。
894デフォルトの名無しさん
2020/10/06(火) 12:08:43.10ID:n1AkD2sr
>>893
あんたの頭が悪いのは良くわかった
895デフォルトの名無しさん
2020/10/06(火) 12:09:23.24ID:c3+O5H5/
>>892
便利でも書くのが長くなった時点で駄目。
頭の悪い人は、長くても考える量が少なくなる方を好むから、
9割がベギナー止まりであるところのプログラミングの世界で多数決で
良し悪しを決めると長くても考える量が少なくなる方が人気を呼ぶことになる。
しかし、頭の良い人は頭のAIがすぐれているので、考えなくても瞬時に分かって
しまうので、読み解いたり自分で書くときに全く時間が掛からないので、
短くかけるほうが好まれる。
896デフォルトの名無しさん
2020/10/06(火) 12:09:50.61ID:c3+O5H5/
>>894
違うな。
実世界では天才と呼ばれているから。
897デフォルトの名無しさん
2020/10/06(火) 12:12:26.93ID:CFpJLx94
>>895
長くなったことの問題はわかるけど
じゃあc++はどうすればよかったか代案だせんの?
898デフォルトの名無しさん
2020/10/06(火) 12:15:41.91ID:c3+O5H5/
>>897
出せるが、スマンがここには書かない。
899デフォルトの名無しさん
2020/10/06(火) 12:17:57.70ID:CFpJLx94
はい雑魚
900デフォルトの名無しさん
2020/10/06(火) 12:18:47.45ID:aU8CxIwJ
余は真に驚くべき代案を思いついたが
匿名掲示板に書くには余白が狭すぎる、
901デフォルトの名無しさん
2020/10/06(火) 12:35:34.59ID:6yK3bagl
>>896
ネットを除いたお前さんの実世界って、話す相手が自分自身かお母さんくらいしかいないんじゃないの?
902デフォルトの名無しさん
2020/10/06(火) 12:38:51.95ID:6yK3bagl
>>891
生ポインタは言語仕様上、現在でも有効だし、合理的理由があればナマポを使うことを否定されるわけでもないのに、何が不満なのか分からんな。
903デフォルトの名無しさん
2020/10/06(火) 12:44:06.33ID:CI7Aw4lV
>>882
グローバル変数やスタティック変数のコンストラクタに依存姓のある処理を記述して失敗しているのを目撃することはよくある。
でもそれはロード時に自動実行する機能のある言語では同様に起こりうることだと思うよ。

だいたいシングルトン多用するやつの仕業。
使うと恥ずかしくて死んでしまうようなパターン名ならよかったのに
904デフォルトの名無しさん
2020/10/06(火) 12:56:09.29ID:2iI+f89O
std::vector ←イキってるだけのアホ
::std::vector ←こう書かなきゃ意味ねえだろ
905デフォルトの名無しさん
2020/10/06(火) 13:04:06.67ID:c3+O5H5/
>>901
なんという貧弱なイマジネーション。
906デフォルトの名無しさん
2020/10/06(火) 14:46:47.18ID:QUhM0XrN
無益な話題ほど盛り上がるな
907デフォルトの名無しさん
2020/10/06(火) 18:37:05.86ID:Yd4gYmDo
メモ帳でコード書いてんの?
普通のエディタは補完が効くよ
908◆QZaw55cn4c
2020/10/06(火) 18:51:39.39ID:44oBE2pA
>>896
そういうのならその証拠をみせてください
あなたのものの言い方は、どちらかというと反対側の人の言い方ですね
909デフォルトの名無しさん
2020/10/06(火) 19:20:46.29ID:c3+O5H5/
この板で一番馬鹿っぽいのに自分は賢いと思っているのが QZだ。
恐らく女。
女の中では賢いのかもしれないが、男の中では普通。
910デフォルトの名無しさん
2020/10/06(火) 20:13:08.46ID:k5Zg1BNu
>>903
アドレスサニタイザー入れたらシンプルトン関連で例外だらけになった
やっぱ未定義動作なのね
911◆QZaw55cn4c
2020/10/06(火) 20:34:25.94ID:44oBE2pA
>>909
>恐らく女。

面白い意見ですね、どのような推論からこの結論が導き出されたのか興味があります

>>896
>実世界では天才と呼ばれているから。

というのなら、その証拠を投稿内容で証明してみせてほしいですよね
>>909 を見る限り、私には馬鹿の同類項にしかみえないですね……
912デフォルトの名無しさん
2020/10/07(水) 01:57:07.30ID:OVJx2Nts
全くオブジェクト思考できない言語w
913デフォルトの名無しさん
2020/10/07(水) 03:07:05.72ID:Bq/qs/XJ
C++で食ってるフリーランスいる?

いくつでどういう技能を持ってていくら貰ってるか教えてくれよ
914デフォルトの名無しさん
2020/10/07(水) 03:10:26.00ID:5YLES8U8
>>911
>>恐らく女。
>面白い意見ですね、どのような推論からこの結論が導き出されたのか興味があります
普段から、馬鹿な応答が多かったし、
「自分でコンテナクラス(リストなど)を作れるから天才」
だとか、男だったら基本中の基本の出来て当たり前の事が出来るだけで天才と言っている
辺り、如何に周りのレベルが低いかが分かったから。
915デフォルトの名無しさん
2020/10/07(水) 09:58:24.09ID:Ht8WKaAR
>>913
教師なら有り得るなω
916デフォルトの名無しさん
2020/10/08(木) 11:06:31.29ID:2a0CIcHX
>>904
> ::std::vector ←こう書かなきゃ意味ねえだろ
えーキモいからやだ
917はちみつ餃子 ◆8X2XSCHEME
2020/10/08(木) 11:23:23.22ID:xCgN3gCo
:: が増えると tanasinn な感じになるな。
918デフォルトの名無しさん
2020/10/08(木) 14:32:44.44ID:FCbCRYtX
>>916
絶対パスのつもりらしいが絶対パスになってねえだろ
相対パスならusingしろ
絶対パスの面倒臭さと相対パスの曖昧さのデメリット両取りする間抜けな書き方すんじゃねえって話
919デフォルトの名無しさん
2020/10/08(木) 14:53:12.38ID:k2d5Ic0g
stdが被る可能性はないに等しいのでセーフという合理性
920デフォルトの名無しさん
2020/10/08(木) 15:16:36.24ID:FCbCRYtX
あのなあ、ここ技術板だぜ?
合理性っておかしいだろ
921デフォルトの名無しさん
2020/10/08(木) 15:23:06.13ID:3RUxQQIS
>>920
技術板だからこそ、教条主義的な完全性より現実的な条件での合理的な判断があってしかるべきだと思うぞ。
922はちみつ餃子 ◆8X2XSCHEME
2020/10/08(木) 15:43:13.43ID:xCgN3gCo
プログラミングはサイエンスの部分もなくはないがエンジニアリング (またはテクノロジ) 寄りの話だろ。
一部の隙もない論理を構築したいわけじゃなくて問題を解決したいんだ。
で、 std のかわりに ::std と書くことで解決される問題が
このスレの誰かの前に出現したことがただの一度でもあると思うのかね?

トップレベル以外の名前空間に std が現れるのは仕様で禁止されていないっぽいから、
そりゃあ可能性だけで言えば絶対にないとは言えんだろうが、
現実にはこの二者がいたらどちらがよりクソだと思う?

・ 変なところに std という名前空間を作るやつ
・ ::std と書かずに std と書くやつ

前者があまりにもクソすぎるのでそういうやつはおらんだろということで
だいたい上手く運用できておるのや。
923デフォルトの名無しさん
2020/10/08(木) 15:45:51.60ID:FCbCRYtX
自己弁護にしか聞こえねえな
"今までそうやってきたから正しいことにしたい"
批判的な相手がそれで納得するとでも思っているのか
924デフォルトの名無しさん
2020/10/08(木) 15:48:46.09ID:bMUfOck+
#define std ::std
925デフォルトの名無しさん
2020/10/08(木) 15:51:15.44ID:FCbCRYtX
いっそstdをキーワードにすればって話ならまだわかるぜ
おまえらの論法で言うところの関数名やオブジェクト名をstdにはしねえんだから
下線で始まらないoperator""をstd以外には作らせないこともできるね
926はちみつ餃子 ◆8X2XSCHEME
2020/10/08(木) 16:12:32.18ID:xCgN3gCo
>>923
そうだよ。
std という名前を作らないか ::std を使うかのどちらかが達成されていればよく、
std という名前を作らないという習慣で今までやってきるのをあえて乱したいのはなんで?
っていう話だよ。
927デフォルトの名無しさん
2020/10/08(木) 16:16:24.11ID:2a0CIcHX
::stdってしてたら逆に何こいつイキってんの?って思うけどなw
928はちみつ餃子 ◆8X2XSCHEME
2020/10/08(木) 16:18:31.50ID:xCgN3gCo
>>923
どちらかが正しいと言ってるんじゃなくて、一貫させることが正しいと言ってるんだよ。
移行コストを支払って得られる何かがあるなら検討はするよ。
何かいいことあるの?
929デフォルトの名無しさん
2020/10/08(木) 16:25:12.01ID:OzyhYKZT
>>923
世の中には話の通じない相手がいるのは分かってるし、そんな相手を納得させることに無駄なエネルギーを費やす価値はない。お前さんが納得しなくも他の誰も困らないからどうでもいい。
というのも合理性だなw
930デフォルトの名無しさん
2020/10/08(木) 16:30:41.96ID:FCbCRYtX
「合理性」を咎められたのが余程効いたようだな
意味をここでだけ変更したくてそんなに必死になるのは
そういう手合いはstdの意味をここだけ変更もしかねねえな
931デフォルトの名無しさん
2020/10/08(木) 16:32:53.69ID:FCbCRYtX
>>928
どちらが正しいかって論点では分が悪いもんなw
932デフォルトの名無しさん
2020/10/08(木) 16:36:13.85ID:FCbCRYtX
> ID:2a0CIcHX

感情論ばっかりだな
933デフォルトの名無しさん
2020/10/08(木) 16:41:10.44ID:kXp3o/p+
コードヘタクソなヤツは変なところ拘る
934デフォルトの名無しさん
2020/10/08(木) 16:41:16.92ID:k2d5Ic0g
::stdって自己満でしかない
リターンがない
特に困ってない問題を解決したところで人生の無駄遣い
そこがんばったところでアホなマクロがひとつ混ざれば破綻する可能性はあるわけで
ある程度の良識や常識に依存するのは仕方ない
可能性のスケール感を考えられるかどうかとも言える
まぁやめろとは言ってないんだから好きにすればいいじゃん、ひとりで書いてる限りは
935デフォルトの名無しさん
2020/10/08(木) 16:59:59.98ID:FCbCRYtX
実害が出る前に予防的措置ということはあるぞ

それから俺は既存のコードを書き直せなんて言ってない
そんなのはてめーらの勝手だ

アカデミックな目線でおかしいと思うところを批判しているだけだ
代替案も出してる(採用されるか否かはともかく)
936デフォルトの名無しさん
2020/10/08(木) 17:01:17.10ID:FCbCRYtX
批判と非難を一緒にしないでくれな
937デフォルトの名無しさん
2020/10/08(木) 17:10:34.05ID:bhEfUzRp
初心者から抜けられない・・・
938はちみつ餃子 ◆8X2XSCHEME
2020/10/08(木) 18:12:40.88ID:xCgN3gCo
>>935
もっと広範囲に std という名前を禁止する提案はもう出てるよ。
言語仕様として良くなかったというのは言わなくても皆がわかってるので、
そんなに強くいわなくてもいいよ。
C++ の仕様がグダグダなんていうのは今更のことじゃん。

その上で、 std という名前を定義しないという運用上の習慣は確立してるって話。
939デフォルトの名無しさん
2020/10/08(木) 19:16:21.52ID:Bj+fAE8H
そもそもstd名前空間(::stdじゃなくて)の拡張は未定義じゃね?
(17.6.4.2.1 Namespace std)

何のためにstd名前空間を定義するの?
940デフォルトの名無しさん
2020/10/08(木) 19:50:52.17ID:2a0CIcHX
茨木が
いばらき
なのか
いばらぎ
なのか
くらいどうでもいい
941蟻人間 ◆T6xkBnTXz7B0
2020/10/08(木) 19:51:57.26ID:N89hoMl4
例えばstd::swapで自分のクラスの交換を定義したい、ってケースが考えられる。
942はちみつ餃子 ◆8X2XSCHEME
2020/10/08(木) 20:13:18.19ID:xCgN3gCo
>>939
その std は ::std のことやで。
その std を拡張することは禁止されているが、
別の名前空間の下に std という名前空間を作るのは禁止されていない。

using namespace で std を含む名前空間を取り込んだ上だと ::std でなく std という表現をすると
標準ライブラリの std でないものを指す可能性があるというのが今の話題。

でも禁止されてないからといって std という名前を付けるやつはおらんから気にするだけあほらしいでというのが反論。
943デフォルトの名無しさん
2020/10/08(木) 20:13:56.08ID:3LpdeaMK
>>935が言ってる採用されるか、てのは「相手が」だと思うが
C++標準の話ではないやろ
944はちみつ餃子 ◆8X2XSCHEME
2020/10/08(木) 20:41:41.67ID:xCgN3gCo
>>941
std (::std) に定義を追加することは禁じられているが特殊化を追加することは禁じられていなかった。
しかし C++20 からはこれも禁止になる。
カスタマイズポイントという仕組みが用意されたのでこれを使うのが (今後は) 望ましい。
945sage
2020/10/08(木) 20:42:23.39ID:5vNQ47uu
>>942
C++標準にnamespace std を ::stdとする定義ってあったっけ?
『standard libraryの名前xは ::std::xとして定義しろ(20.5.1.1.3)』
というのはあるけど、namespace std = ::std という定義じゃないよね?

最近は標準を読んでないから見落としあるかもしれんが、
ざっと見た範囲では無さそうだった。
946はちみつ餃子 ◆8X2XSCHEME
2020/10/08(木) 22:31:10.36ID:xCgN3gCo
>>945
そう。
using namespace std; の std が ::std でないものを指す可能性があるが、
拡張を禁じている std というのは ::std のことなので、
大元の議論は ::std を拡張するなんていう話はしてないという指摘をしてる。
947デフォルトの名無しさん
2020/10/09(金) 00:24:46.45ID:Sv65jxff
ID:FCbCRYtX さんはグローバル以外で自分のコードから見えるスコープに誰かが
std という名前を宣言している可能性も考慮して万全の策を取っているんですね。すごいなぁ。
ということは当然、誰かが #define std ... している可能性も考慮して
::std を使う行の前には必ず #undef std も書くのでしょうね。すごいなぁ。
948デフォルトの名無しさん
2020/10/09(金) 03:44:42.22ID:eAzl4WVQ
「::」って打つのは超々々多大なコストですもんね。すごいですよね。
949sage
2020/10/09(金) 03:59:02.26ID:eAfWXkzh
>>946
16.5.4.2.1 Namespace std
Unless otherwise specified, the behavior of a program is undefined if it adds declarations or definitions
to namespace std or to a namespace within namespace std.
で、::stdの規定があるのは
16.5.1.1 Library contents
Whenever a name x defined in the standard library is mentioned, the name x is assumed to be fully qualified
as ::std::x, unless explicitly described otherwise. For example, if the Effects: element for library function F
is described as calling library function G, the function ::std::G is meant.
だけだから、拡張を禁じているのが::stdだけというのは言いすぎじゃね?

標準化の経過を追っているわけじゃないからこの解釈が妥当か知らんが。
950デフォルトの名無しさん
2020/10/09(金) 07:35:33.10ID:TjErAM+z
>>942
反論なら論で来いよ
あほららしいなんて感情ではなく
951デフォルトの名無しさん
2020/10/09(金) 07:36:25.15ID:TjErAM+z
>>943
「相手が」stdをキーワードにできると思うのか?
952デフォルトの名無しさん
2020/10/09(金) 07:48:48.53ID:NEyoYsah
>>950
>>939でほぼ確定だろ。
namespace std == ::std
なら話は別だが、それは無さそうだし。
953デフォルトの名無しさん
2020/10/09(金) 08:05:41.52ID:TjErAM+z
>>952
俺だけでなく>>946もそうは見ていないようだぞ
C++14の時点では考え落とされているから言及がないだけだろ
それとも、どこかに議論された形跡でもあったのか?
954デフォルトの名無しさん
2020/10/09(金) 08:30:04.27ID:NEyoYsah
>>953
反論なら論で来いよ。
標準で議論されていないなら標準の文言が全てだろ。
>>949の通り、標準の文言だと明らかに
namespace std != ::std
として扱われているんだから、反論するならそれを否定する
namespace std == ::std
の証拠を持ってこいや。
955デフォルトの名無しさん
2020/10/09(金) 09:46:43.60ID:TjErAM+z
>>954
標準ライブラリのxは::std::xだと書いてあるやん
956デフォルトの名無しさん
2020/10/09(金) 09:52:04.08ID:TjErAM+z
pathは::std::pathじゃないけどね
957デフォルトの名無しさん
2020/10/09(金) 12:06:02.44ID:NEyoYsah
>>955
16.5.4.2.1で拡張を禁止されているのはstdと名前の付いた名前空間で、::stdに限定しないだろ。
と言っているんだが。

反論するなら、標準で
namespace std==::std
としている定義を持ってきてくれ。
958デフォルトの名無しさん
2020/10/09(金) 12:19:21.22ID:TjErAM+z
話が噛み合ってないな
考え落としで言及がないだけだろと言ったはず
あくまで推測だけどね、考え落としていないとわかるものがあるなら拝見したい
959デフォルトの名無しさん
2020/10/09(金) 12:48:04.11ID:NEyoYsah
>>958
標準化委員じゃないんだから、議論したかどうかなんてクソどうでもいい。
「::stdじゃないと意味ない」とかいう話をしているんだから、まずは標準でどうなっているかだろ。

標準で「namespace stdを拡張すると未定義」となっているなら、::stdに限らず未定義としか言えんわ。
反証するなら
namespace std==::std
とする証拠を出せよ。
960デフォルトの名無しさん
2020/10/09(金) 13:15:13.68ID:TjErAM+z
958と全く同じことなんで二度は言わん
961デフォルトの名無しさん
2020/10/09(金) 13:15:55.31ID:vxTRmbpR
話の流れとはずれますが、C++の仕様の確認のための質問をします。
namespace AAA {
 void func() {
  std::vector<TYPE> v;
 }
}
と書いた場合、コンパイラはstdをAAAの中に最初に探し、AAAの中に見つからなければ
「グローバルな名前空間」から探すので、AAAの中にstdが見つからない場合でも、
::std と書かなくてもエラーにはならないんですよね?
962はちみつ餃子 ◆8X2XSCHEME
2020/10/09(金) 13:17:08.39ID:vI140Nir
>>959
いやいや、自然言語で書かれている以上は文脈・意図を全く考慮せずに読み解くことは出来んよ。
そんなこと言ったら add という言葉の意味が仕様書内で定義されてるか?
とかいう話にもなりかねんわけで。

仕様書という性質上、なるべく解釈の幅がないように書くべきではあるが、
不確かな場合はどうしたってあるし、経緯に遡って解釈することだってあるよ。
963デフォルトの名無しさん
2020/10/09(金) 13:24:30.32ID:vxTRmbpR
>>961
[捕捉]
ファイルのパス名の場合、/std と書くとルートから探し、stdと書くと
カレントディレクトリから探すだけでルートは探しませんが、
C++の場合、stdと書いても最初は「カレント名前空間」から探し、
見つからなければ、見つかるまで「親の名前空間」を連鎖的に探して
行くのですよね。
この違いは気を付けなければなりません。パス名との類推から、
ややもすればうっかり混同してしまいそうです。
964デフォルトの名無しさん
2020/10/09(金) 17:42:56.92ID:8wCv3rMc
コードを書け
社会貢献しろ
965デフォルトの名無しさん
2020/10/09(金) 17:47:40.59ID:m4egzLq0
じゃあ見本でお前のgithubさらしてくれる?
966デフォルトの名無しさん
2020/10/09(金) 18:16:22.78ID:8wCv3rMc
>>965
お前はまず働け!
967デフォルトの名無しさん
2020/10/09(金) 18:17:41.17ID:m4egzLq0
はい雑魚
968デフォルトの名無しさん
2020/10/09(金) 19:29:37.80ID:mnBkuaJE
このスレは餃子以外はまともな書きこみねえなほんと
969デフォルトの名無しさん
2020/10/09(金) 19:32:46.57ID:NEyoYsah
>>962
今回の件と関係するのかね?
極端な例で反論したつもりになられても議論できんわ。

文脈の話をするならば、標準の記載では入れ子になったnamespace Nもnamespace N表記なんだから、特に記載の無い限り入れ子になったnamespace stdもnamespace std表記だろ。

namespace stdを
::stdに限定するなんて、標準の文脈からすればなおさらありえん。
970デフォルトの名無しさん
2020/10/09(金) 19:47:52.64ID:fkeFOvGK
UBIとかEAのような大規模ゲームってどんなコードで作られてるの?
きっとmain関数の中にスレッドループがあったりはしないんだろうな
タイトル画面ですら複雑な処理してそう
971デフォルトの名無しさん
2020/10/09(金) 20:16:53.59ID:m4egzLq0
メインループは回すよ
回さなかったら終了するじゃん
まぁspawnしてjoin待ち見たいなのもよくあるけど
972デフォルトの名無しさん
2020/10/10(土) 06:22:29.70ID:W6O5r79w
test
973デフォルトの名無しさん
2020/10/10(土) 06:32:13.62ID:tjeCnATK
leave
ret
974デフォルトの名無しさん
2020/10/10(土) 07:23:12.80ID:gvSXcuMi
>>968
餃子がまとも?ヤベェな。。
975デフォルトの名無しさん
2020/10/10(土) 09:08:57.50ID:g6Q5c5Tz
>>927
そんなコード見たら虐めちゃうけどな
なんかイラッとするわ
976デフォルトの名無しさん
2020/10/10(土) 10:47:12.02ID:TSALDtkC
女の子だったら置換する
977デフォルトの名無しさん
2020/10/10(土) 12:58:42.27ID:24/haesl
>>974
俺のみたところ餃子はだいたいまともな事を言っている
ただし lisp シンパなのはまったく理解できない
978デフォルトの名無しさん
2020/10/10(土) 13:01:08.76ID:yhyq5Xqm
C++の知識はちゃんとしたものではあるが、それ以外の事は必ずしも
正しくはない。
979デフォルトの名無しさん
2020/10/10(土) 13:23:13.45ID:g6Q5c5Tz
次スレ警報発令。
980はちみつ餃子 ◆8X2XSCHEME
2020/10/10(土) 13:24:43.37ID:i9YWGOdm
>>977
ワイは Lisp 全体に対してはそんなに関心ないわ。
Scheme を好きで使ってるから結果的に周辺の情報に少し触れることもあるって程度。
981デフォルトの名無しさん
2020/10/10(土) 13:37:41.54ID:g6Q5c5Tz
わかりやすく言えば老害
982デフォルトの名無しさん
2020/10/10(土) 14:31:19.76ID:yhyq5Xqm
>>981
そうは思わない。
少なくとも、日本には役立っていると思う。
983デフォルトの名無しさん
2020/10/10(土) 14:33:21.17ID:djk9d7ug
lispは数学的には美しいけど実用の道具としてはカス
984デフォルトの名無しさん
2020/10/10(土) 14:45:47.75ID:TSALDtkC
※ 個人の感想です
985デフォルトの名無しさん
2020/10/10(土) 14:50:55.66ID:poQTxlfJ
このスレの主要なコンテンツ
・不毛な議論
・072/マウントみたいなレス
・昔話
986デフォルトの名無しさん
2020/10/10(土) 15:06:39.81ID:g6Q5c5Tz
>>985
不要じゃなくて主要
987デフォルトの名無しさん
2020/10/10(土) 15:31:09.66ID:yhyq5Xqm
質問に答えているのはマウントではなく、国の衰退を防ぐためとか、
プログラミング産業を盛り立てるためとかもある。
988デフォルトの名無しさん
2020/10/10(土) 15:33:26.12ID:lmvlajWr
そんな崇高な理念を持ってる奴いねーよ
ただマウント取りたいだけ
989デフォルトの名無しさん
2020/10/10(土) 15:35:51.69ID:g6Q5c5Tz
はちみつ爺さんは世界平和のために書き込んでるんだぞ
990デフォルトの名無しさん
2020/10/10(土) 15:40:29.45ID:yhyq5Xqm
>>988
普通にいるぞ。
崇高と言うのとはまた違う。
なぜなら国の衰退や、産業の衰退は、必ず自分にもマイナスになって帰ってくるから。
この板が荒れれば、日本も衰退し、やがて自分の将来も暗くなることは
予想できる。
991デフォルトの名無しさん
2020/10/10(土) 15:46:52.37ID:yhyq5Xqm
たとえば、プログラミング学校、プログラミングの支援ツール、
ゲーム作製ツール、プログラミング言語の解説本、プログラミング処理系
などを仕事にしたり作製したりしている人にとっては、プログラミング
している人を支援することはプログラミングが好きな人を増やし
やがて自分も潤うと考えられる。
だからこのようなスレや板で質問に答えれば彼にとっては得になる。
992◆QZaw55cn4c
2020/10/10(土) 15:49:09.22ID:viEJhGtz
>>990
数学者の藤原正彦氏のようなことをいってますね‥‥
993デフォルトの名無しさん
2020/10/10(土) 16:06:15.00ID:yhyq5Xqm
>>992
あの人は、実は人の気持ちが分からない人。
京大生に昼休みの始まりに小学生レベルの分数をさせて、時間がもったいないから
無回答で出て行った人が多かったのに対し、「小学生レベルの分数の問題が解けない」
と本に書いた。
994デフォルトの名無しさん
2020/10/10(土) 17:11:28.38ID:THhanVwl
>>988
自己紹介乙
995デフォルトの名無しさん
2020/10/10(土) 23:14:10.28ID:TSALDtkC
誰か次スレ建てて社会貢献しろよ;;
996デフォルトの名無しさん
2020/10/11(日) 01:14:38.25ID:TCtjmjrc
,   ,:‘.          。             +   ,..
 ’‘     +   ,..       . ..; ',   ,:‘
      . .; : ’                           ' ,:‘.
           あ あ             ,:‘.      +
.. ' ,:‘.                             . ...:: ’‘
’‘     .;    こ ん な に お 断 り し た い
                                       。
.     。   気 持 ち に な っ た の は   ,:‘. 。
 '+。
                初 め て で す          .. ' ,:‘.
:: . ..                            .. ' ,:‘.
      ハ,,ハ
     ( ゚ω゚ )
997デフォルトの名無しさん
2020/10/11(日) 09:44:54.65ID:ErUdhCxH
>>991
英会話教室関係者と似たような構図にしか思えない
998デフォルトの名無しさん
2020/10/11(日) 09:58:02.16ID:kZXFoyze
C++ 相談室 153
http://2chb.net/r/tech/1602339500/
999◆QZaw55cn4c
2020/10/11(日) 16:30:04.82ID:sJNU+9dX
>>993
それは多分別の人だと思いますよ
藤原氏は「アメリカの学生は分数がわかっていない」と昔のエッセーに書いていたのは記憶していますが、
一般の日本人の「数学力」を腐す論調ではなかったと思います
彼のいうことは唯一つ、なんでもいいから「本を読め」、「本を読め」、「本を読め」、「本を読め」、「本を読め」、「本を読め」、「本を読め」、「本を読め」、「本を読め」、「本を読め」、「本を読め」
1000デフォルトの名無しさん
2020/10/11(日) 16:32:48.88ID:kZXFoyze
梅太郎
-curl
lud20241205155809ca
このスレへの固定リンク: http://5chb.net/r/tech/1594528940/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「C++相談室 part152 ->画像>3枚 」を見た人も見ています:
C++相談室 part137
C++相談室 part126
C++相談室 part142
C++相談室 part143
C++相談室 part135
C++相談室 part138
C++相談室 part144
C++相談室 part147
C++相談室 part136
C++相談室 part154
C++相談室 part159
C++相談室 part151
C++相談室 part158
C++相談室 part150
C++相談室 part153
C++相談室 part162
C++相談室 part156
C++相談室 part163
C++相談室 part149
C++相談室 part124
C++相談室 part161
C++相談室 part148
C++相談室 part160
C++相談室 part133
C++相談室 part131
C++相談室 part140
C++相談室 part137
C++相談室 part130
C++相談室 part117
C++相談室 part134
C++相談室 part146
C++相談室 part145
C++相談室 part132
C++相談室 part141
C++相談室 part139
0からの、超初心者C++相談室
C++Builder相談室 Part21
Cygwin + MinGW + GCC 相談室 Part 8
Cygwin + MinGW + GCC 相談室 Part 3
C♯相談室 Part20
C#, C♯, C#相談室 Part93
C言語相談室(上級者専用)
自営業 悩みごと相談室 40
自営業 悩みごと相談室 47
ライダーマンのお悩み相談室
C#, C♯, C#相談室 Part91
C#, C♯, C#相談室 Part97
C#, C♯, C#相談室 Part94
[特設]サマータイム対応相談室
C#, C♯, C#相談室 Part79
C#, C♯, C#相談室 Part75
自営業 悩みごと相談室 43_
C#, C♯, C#相談室 Part90
0からの、超初心者C#相談室
C#, C♯, C#相談室 Part96
C#, C♯, C#相談室 Part95
C#, C♯, C#相談室 Part95
C#, C♯, C#相談室 Part94
【不倫.浮気】お悩み相談室
【スキー】初級者アイテム相談室4【板靴何でも】 [無断転載禁止]
アパートマンション経営なんでも相談室【154号室】
♪♯☆ IRCnet相談室 part2 ♪♯☆
アパートマンション経営なんでも相談室【146号室】
12:54:28 up 11 days, 13:58, 2 users, load average: 10.77, 9.90, 10.10

in 0.079171895980835 sec @0.079171895980835@0b7 on 012502