探検
C++相談室 part152
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/07/12(日) 13:42:20.13ID:TX1mpKr6426デフォルトの名無しさん
2020/09/21(月) 20:04:55.13ID:NkrhQtlS >>425
現行のLLVMとかによる最適化なら知ってるけど、まだ実現されてないAIによる最適化ってなにかなぁと思って。
現行のLLVMとかによる最適化なら知ってるけど、まだ実現されてないAIによる最適化ってなにかなぁと思って。
427デフォルトの名無しさん
2020/09/21(月) 20:11:19.83ID:I28tUppa typedefがわかりにくいのではなくてC言語以来のポインタ定義構文がおかしいんである
これは聖典『プログラミング言語C』でも「批判を浴びることがある」みたいに書かれている
これはどうせCベースの言語なら乗り越えねばならない関門なのでノーカンとして、
単に型のエイリアスが欲しいときはtypedefで十分やし、
定義型をテンプレートにしたいとか別の型にしたいときはクラスにしたら宜しい
かと
これは聖典『プログラミング言語C』でも「批判を浴びることがある」みたいに書かれている
これはどうせCベースの言語なら乗り越えねばならない関門なのでノーカンとして、
単に型のエイリアスが欲しいときはtypedefで十分やし、
定義型をテンプレートにしたいとか別の型にしたいときはクラスにしたら宜しい
かと
428デフォルトの名無しさん
2020/09/21(月) 20:12:23.44ID:IzAwgxqY 普通に考えて
機械語を入力としてそれと等価で高速に動作する機械語を出力する
作業をAIに任せるってことなんじゃないの(たぶん)
機械語を入力としてそれと等価で高速に動作する機械語を出力する
作業をAIに任せるってことなんじゃないの(たぶん)
429デフォルトの名無しさん
2020/09/21(月) 20:13:49.74ID:I28tUppa 同じことをするのにいくつも書き方があるようだと
C++はますますプログラミング言語界のPerlになってしまうま、
C++はますますプログラミング言語界のPerlになってしまうま、
430デフォルトの名無しさん
2020/09/21(月) 20:19:15.08ID:I28tUppa AIによる最適化はそもそも最適な最適化が何なのかは計算不能(コルモゴロフ複雑性
というのはどうすんじゃ………
というのはどうすんじゃ………
431デフォルトの名無しさん
2020/09/21(月) 20:20:24.50ID:NkrhQtlS >>428
ごめんね、喧嘩売ってるつもりじゃないんだ。
コンパイル最適化技術は興味あるんだけど俺の知識が数年前で止まってるので新しい知識として取り入れたかっただけ。
>機械語を入力としてそれと等価で高速に動作する機械語を出力する
それってAIと関係なく何十年も前からあるなんの変哲もない最適化だと思うの。
ごめんね、喧嘩売ってるつもりじゃないんだ。
コンパイル最適化技術は興味あるんだけど俺の知識が数年前で止まってるので新しい知識として取り入れたかっただけ。
>機械語を入力としてそれと等価で高速に動作する機械語を出力する
それってAIと関係なく何十年も前からあるなんの変哲もない最適化だと思うの。
432デフォルトの名無しさん
2020/09/21(月) 20:27:18.34ID:WONfy98d433デフォルトの名無しさん
2020/09/21(月) 20:29:32.74ID:WONfy98d >>428
AIなら何でも解決するとか思ってそうw
AIなら何でも解決するとか思ってそうw
434デフォルトの名無しさん
2020/09/21(月) 20:32:17.31ID:IzAwgxqY >AIによる最適化はそもそも最適な最適化が何なのかは計算不能
AIって解析的に解くわけじゃないから計算不能でもいい感じに動いてくれるんじゃないの
>それって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の話ではないけど
合理性という論点では同じことだよ
それを言うならこっちでしょ
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化はできないまま放置されてるんだよな
そう、だからtypedefはもういじるのやめてtemplate化はできないまま放置されてるんだよな
439デフォルトの名無しさん
2020/09/21(月) 21:22:17.03ID:WONfy98d440デフォルトの名無しさん
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+Z444デフォルトの名無しさん
2020/09/21(月) 21:55:50.30ID:PNFNM3Vd >>443
では言い方を変えようか
関数識別子でも型識別子でもそれを一覧しやすいところに集めやすいことを合理性と言っている
概要と詳細はどっちを先に書くべきかってことだよ
typedefは右端に宣言対象の識別子
usingは左端から7文字目という決まった位置に宣言対象の識別子
trailing-return-typeも5文字目という決まった位置に宣言対象の識別子がある
可読性という観点からどう思う?
では言い方を変えようか
関数識別子でも型識別子でもそれを一覧しやすいところに集めやすいことを合理性と言っている
概要と詳細はどっちを先に書くべきかってことだよ
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];
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); //それでも俺はこっちが好き
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;
}
その点については統一感あってむしろ美しいと思うけど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の同義語をそんなに量産してどうするんだと
変数の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 文の羅列のようなものまで人工知能の一種だった。
でもそれらが分野として確立されたら人工知能とは呼ばれなくなっていた。
機械でやるのが当たり前のものになったから。
普通の道具になったから「知能」ではなくなったんだ。
人工知能を実用化するってのは人工知能を人工知能でなくすること。
逆に言えば人工知能と呼ばれている間は曖昧模糊としてよくわからんのが当たり前なんだと思う。
これはいろんな使い方をされる「人工知能」という言葉について私なりの解釈であって
正しさを主張するつもりはないが、それなりに実態に合った解釈ではあると思う。
人工知能 (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/y455デフォルトの名無しさん
2020/09/21(月) 23:33:11.93ID:I28tUppa 最適化方面へのAIの適用というと、
高度なルールベース(80年代のAI)までいったん後退したものに
収束が必ずしも保障されない最適化処理(有限ステップで終わる保証がないからもはやアルゴリズムと呼ぶのは抵抗があるがGAとか
を組み合わせたものになりそうなヨカン
FPGAの論理合成エンジンみたいなやつを考えたら宜しいかと、
もはや冪等性は気体できない
ビルドをやるたびに結果が変わるorz
高度なルールベース(80年代のAI)までいったん後退したものに
収束が必ずしも保障されない最適化処理(有限ステップで終わる保証がないからもはやアルゴリズムと呼ぶのは抵抗があるがGAとか
を組み合わせたものになりそうなヨカン
FPGAの論理合成エンジンみたいなやつを考えたら宜しいかと、
もはや冪等性は気体できない
ビルドをやるたびに結果が変わるorz
456デフォルトの名無しさん
2020/09/21(月) 23:38:03.83ID:I28tUppa この場合LPはAIに含めて良いものかどうか、
457デフォルトの名無しさん
2020/09/22(火) 01:59:39.72ID:ZtayyY2i458デフォルトの名無しさん
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++;
}
以下のプログラムだと一部の文字しか抽出できていませんでした
完全が必要な点を教えてください
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してるなら別だけど
とりあえず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:5FJrAAJE464デフォルトの名無しさん
2020/09/22(火) 07:14:47.66ID:iby+25bn465デフォルトの名無しさん
2020/09/22(火) 08:00:49.11ID:xLdkMK4R >>459
このレベルで人に聞いてるようでは使い物にならんな
このレベルで人に聞いてるようでは使い物にならんな
466デフォルトの名無しさん
2020/09/22(火) 09:27:17.92ID:5FJrAAJE467デフォルトの名無しさん
2020/09/22(火) 10:13:21.77ID:Zd6n0i5+468デフォルトの名無しさん
2020/09/22(火) 10:52:41.92ID:GaogVwml >>467
>444 を読むと、言いたかったことはわかる。
> 関数識別子でも型識別子でもそれを一覧しやすいところに集めやすいことを合理性と言っている
言葉のチョイスはおかしいと思うけどね。単に「読みやすさ」「読みにくさ」とか言えばよかったところ。
>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);
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)と美しく統一されている。
個人的に数学記号のようなもの解読する値から強い方だからかも知れないが、
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);
とか描けないよな
↑
の代わりに
typedef int (*(funcA, funcB, funcC))(float, long);
とか描けないよな
473デフォルトの名無しさん
2020/09/22(火) 16:17:29.92ID:EdpAH8NO474443
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 は変数宣言の文法と一致させているという意味では一貫していることに合意するが、
そもそも型名を途中で分断するかのような変数宣言の文法がイケてないので、
そっちで統一するのが本当にうれしいのかね? という点で疑問を提示する。
いや、それでうれしいというのならそれでもいいんだが、
前提がそれほど一貫してないのに一貫性をもちだしても仕方なくね?
> しかしながら、C/C++では、
> 型名 変数名; // (100)
> の順序な分けで
「型名 変数名;」ではなく「型指定子 宣言子;」な。
(実際には宣言子は複数書けるがそれはわきに置く。)
順序はある程度は好みだろうとは思うが、
変数を宣言するにあたって「型名を与えているわけではない」んだ。
たとえばポインタ型の変数だと
int* a;
みたいに宣言できるが、
このとき int という型指定子と *a という宣言子から成る。
a の型名は int* であるが、
宣言のときには int は型指定子の側について * は宣言子の側についてるわけ。
typedef は変数宣言の文法と一致させているという意味では一貫していることに合意するが、
そもそも型名を途中で分断するかのような変数宣言の文法がイケてないので、
そっちで統一するのが本当にうれしいのかね? という点で疑問を提示する。
いや、それでうれしいというのならそれでもいいんだが、
前提がそれほど一貫してないのに一貫性をもちだしても仕方なくね?
476デフォルトの名無しさん
2020/09/22(火) 16:38:32.20ID:Zd6n0i5+477デフォルトの名無しさん
2020/09/22(火) 16:43:05.81ID:EdpAH8NO int* a;
int* b;
int c;
//int[42] d;
↑こう書きたいという勢力と…
int *a, *b, c, d[42];
↑こう書きたいという勢力があるんやろね
好みというかその人のバックグラウンドというか
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 ではそういう書き方になってるので。)
* の両側に空白を入れる流儀も存在するようだ。
* は (文法的には) 宣言子の側についてるからそちらにくっつくもんなんだろうが、
型名としては int* だから int* と書く方が好ましいと考えている。
文法的な解釈はともかく「型名 変数名;」に近い書き方の方がわかりやすいという考え方だ。
あと、 C++ の設計者自身が * を左に寄せる書き方をしてるから私はそれに巻かれている。
C として書くときは * は変数名の側にくっつけて書くようにしてる。 (K&R ではそういう書き方になってるので。)
* の両側に空白を入れる流儀も存在するようだ。
479デフォルトの名無しさん
2020/09/22(火) 17:23:35.93ID:Zd6n0i5+ >>478
>あと、 C++ の設計者自身が * を左に寄せる書き方をしてるから私はそれに巻かれている。
>C として書くときは * は変数名の側にくっつけて書くようにしてる。 (K&R ではそういう書き方になってるので。)
Cの設計者は数学的、C++の設計者は凡才的。
>あと、 C++ の設計者自身が * を左に寄せる書き方をしてるから私はそれに巻かれている。
>C として書くときは * は変数名の側にくっつけて書くようにしてる。 (K&R ではそういう書き方になってるので。)
Cの設計者は数学的、C++の設計者は凡才的。
480デフォルトの名無しさん
2020/09/22(火) 18:25:41.01ID:iCejn/78481デフォルトの名無しさん
2020/09/22(火) 18:27:35.58ID:iCejn/78482デフォルトの名無しさん
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ですよ、ってことなんだろうか
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*を返す関数じゃないんだから不思議はないと思うが
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)() // 戻り値側だけ左に寄せる
こういう感じでやっていくのかな
なるほど
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.
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.
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 はそれなりに取り入れてもいいと思うよ。
元からイケてない変数宣言の文法を部分的にどうにかすっきり見せる
って程度の話なんで、複雑な事例を更に複雑にするような変なルール
にしたいわけではない。
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:Q5rCUsEX497デフォルトの名無しさん
2020/09/23(水) 01:33:58.69ID:JzGrrpxj sprintf_s()と_countof()をセットで標準にしてホスイ
498はちみつ餃子 ◆8X2XSCHEME
2020/09/23(水) 01:40:34.94ID:2N0Iktsg499デフォルトの名無しさん
2020/09/23(水) 01:44:08.47ID:wtMA3RXJ >>493
>元からイケてない変数宣言の文法を部分的にどうにかすっきり見せる
一般的なポインタを表現するためには、どうしても、宣言子の中にも型の一部を
書くべきだったので、文法がそのように選択され、
int* a;
ではなく、
int *a;
と書く方がその記法と統一感がある。
数学者や物理学者は一般性や統一性がある方が美しいと感じる人が多いと
言われており、通常、数物の世界で「美しい」というのは、統一性のある
書き方。
なので、C/C++の型でも、後者の方が美しく感じるのが数物系の才能がある
人の感覚。
>元からイケてない変数宣言の文法を部分的にどうにかすっきり見せる
一般的なポインタを表現するためには、どうしても、宣言子の中にも型の一部を
書くべきだったので、文法がそのように選択され、
int* a;
ではなく、
int *a;
と書く方がその記法と統一感がある。
数学者や物理学者は一般性や統一性がある方が美しいと感じる人が多いと
言われており、通常、数物の世界で「美しい」というのは、統一性のある
書き方。
なので、C/C++の型でも、後者の方が美しく感じるのが数物系の才能がある
人の感覚。
500デフォルトの名無しさん
2020/09/23(水) 01:47:03.11ID:SSau2msF501デフォルトの名無しさん
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)の記法は至って分かり易い。
ポインタだけでなく、配列も、
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;
となり、前後を逆に書くのが「正しい」。
これが即座に理解できる人が数学的才能が有る人で、
教えてもらわないと分からない人才能が無い。
さらにいえば二次元配列の場合、宣言は、
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)よりも統一が取れており、数学的には「美しい」状態となっている。
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:wtMA3RXJ506デフォルトの名無しさん
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;
のように書くと、一般性を失い、組み立て型としては破綻しまい、その場しのぎの
記法となってしまう。
もしこれが理解できないのなら、悪いけど、数学的才能や、コンパイラを設計する才能が無い。
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 を使ったほうがいいよねってだけ。
数学的・物理的な美しさを (仮に (あくまでも仮に) その主張が妥当だとしても) C++ スレで根拠にするのが不思議。
そんな美しさなんてどうでもいいもの。
こちらの主張は
宣言の文法が型名とは別にある
→ その時点で一貫性なんてないよ
→ どちらを軸にすることもありうる
→ でもまあ C++ の発展の様子からすると型名を軸にしたさが見えるね
って話で、現時点で無い文法を導入したいとか思っているわけでもないし、
存在する文法を絶対に駄目だというわけでもない。
とはいえ (話の大元に戻るが) 現在の C++ が typedef を冷遇しているので、
なるべく using を使ったほうがいいよねってだけ。
513デフォルトの名無しさん
2020/09/23(水) 04:12:53.08ID:VKAwJeUe わしのFormatterは
int* a;
int *a, *b, c;
のように整形しよる。これが落とし所として妥当であろう
int* a;
int *a, *b, c;
のように整形しよる。これが落とし所として妥当であろう
>>500
https://github.com/fmtlib/fmt
でしょうか?github になれてなくて、これを使う方法もよくわからないし…
20年使っている sprintf() でもういいや…って妥協してしまいました
手元のコンパイラは g++17, 職場のは g++11 だけれども、セキュリティが堅くて「無断で」cygwin をアップデートさせてもらえない…
必要に迫られて徹夜して間に合わせたけれども、プログラミングへの集中力はずいぶんと落ちてしまいました…
コメントありがとうございました
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のグラマーが読めない、つまり数学的才能に乏しいことになるぞ
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使うのを邪魔すんなー
僕はものすごく数学と物理に詳しいんだーセンスないやつうるせー
あいつ結局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:hJkRvCZv522デフォルトの名無しさん
2020/09/23(水) 10:22:59.31ID:hJkRvCZv523デフォルトの名無しさん
2020/09/23(水) 11:04:51.52ID:tBUnvPYy 分かりにくい文法で自爆ってダサすぎるなw
そもそもC++なのに素の多重配列使うって
センスなさすぎだし
そもそもC++なのに素の多重配列使うって
センスなさすぎだし
524デフォルトの名無しさん
2020/09/23(水) 12:28:26.75ID:OXXcv7E7 >俺は数学が好きで、学生時代、ほぼ満点だった。
数物系が得意な人が、こんな馬鹿っぽくて曖昧な書き方するのかね?
この情報でどうやってお前の能力を推し量れと
数物系が得意な人が、こんな馬鹿っぽくて曖昧な書き方するのかね?
この情報でどうやってお前の能力を推し量れと
525デフォルトの名無しさん
2020/09/23(水) 12:31:30.53ID:YfY3TQQ4 正直マジレスするアホが居るとは思いもよらなんだ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★3 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★8 [蚤の市★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★3 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 【音楽】松山千春、女性っぽい名前に親恨んだ「名簿には必ず女の方に入ってる。情けなかったりもしたけどね」 [湛然★]
- 【画像】ドw童貞はw絶ッッッ対"1"を選ぶ卓球 J Kのお食事会の写真見つけちゃいましたwwwwwwwwwww [904880432]
- 【悲報】30代独身女性「結婚や成功してる友達との差は開く一方、このまま1人で生きて淘汰される人生だと気づいて絶望してる…406万いいね [483447288]
- ワイの名字が 女鹿 (めが)なんやが娘の名前で良いの有るる?
- 【動画】韓国新人kpopグループHearts2Heartsさんの投稿、これが卑猥に見える人は脳が壊れていると話題に [963243619]
- 半日勤務だけど出勤したくない🥺
- 【埼玉】34歳無職、置き配📦を盗みまくる!その数、400点!😱 [718678614]
