X



C++相談室 part138
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (スフッ Sd9f-fGne)
垢版 |
2018/08/05(日) 18:02:36.57ID:DigzqJtZd
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part137
http://mevius.5ch.net/test/read.cgi/tech/1531558382/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1530384293/

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0196デフォルトの名無しさん (ワッチョイ 0101-MZ1U)
垢版 |
2019/08/31(土) 11:12:47.33ID:XxwPKKvU0
そういって腐ったテンプレートを残していった老害を何人も見てるからな。
下の世代がまた同じことを繰り返そうとしてたらそりゃ文句の一つも言っとかなきゃあかんだろ。
0197デフォルトの名無しさん (ワッチョイ 0b7c-ca7b)
垢版 |
2019/08/31(土) 11:29:08.15ID:nubn4z9u0
>176 みたいな文盲ってホントに居るんだな
0198デフォルトの名無しさん (ワッチョイ c17b-u0zy)
垢版 |
2019/08/31(土) 12:05:29.37ID:CPr5eAdi0
今ここで為されている議論ももう何回目だ?だし、積極的に続ける意味はないと思うが。

そんなに気になるなら他人のコーディングルールを確認してみればいい。
例えばgoogleのテンプレートについての記述は以下。
https://ttsuki.github.io/styleguide/cppguide.ja.html#Template_metaprogramming
まあそうだよね、程度だが。

個人的にはリファクタの障害になるのが致命的だと感じる。
max_fやmax_iなんてやるのは馬鹿みたいではあるが、
しかし検索は簡単で、変更時の影響範囲も明確に分かる。
これはLinusも同じ事を言っている。

C++は若干コードに執着しすぎている。
泥臭くも書けるところを無理矢理綺麗にしようとして、余計に複雑になっている。
具体的に言うと、記述を1ヶ所に絞る為にテンプレートを3回重ねがけ、なんてのは割とある話で、
それなら数ヶ所ならベタで書いてしまって「同じ記述が○○にもあるから変更するときは注意しろ」と
コメントに書いてしまうというドベタな解決策も採れるわけだが、C++はこれをよしとしない。
(Cの場合はこの場合はマクロにしてしまって1ヶ所に纏めたりする。
これはこれで問題はあるが、それ以前に意識高い系C++erではマクロは禁止だし)

ただ現実的には、C++は上記「コメントで対応」「マクロで対応」「テンプレートで対応」のどれも出来る。
だからユーザーが適切に選べばいいだけであって、
より本質的な問題は、「こう書くべき、じゃないと認めない!」
みたいな意識高い系馬鹿がC++にも進出してきたことではある。
色々な書き方が無駄に出来てしまうC++は彼等にとってはそれなりに居心地がいいのかもしれない。
だからそういう馬鹿に流されず、「俺流のC++はこう」みたいなのが出来るのならそれでいいと思うが。

同じ話はconstや例外にもあって、それらも結局煮え切らない議論になってるだろ。
googleはconstは推奨、例外は禁止、のようであるが。
https://ttsuki.github.io/styleguide/cppguide.ja.html#Use_of_const
https://ttsuki.github.io/styleguide/cppguide.ja.html#Exceptions
0200デフォルトの名無しさん (ワッチョイ c17b-u0zy)
垢版 |
2019/08/31(土) 12:55:35.82ID:CPr5eAdi0
>>199
しかし例外が素性が悪いのも事実だろ。
そして現在のソフトウェア工学はこれに対する解をまだ提供できてない。

オブジェクト指向は各オブジェクトを基底側のクラスで抽象化して統一的に扱えるからいいのであって、
例外は基本的に派生クラスでの対処が必要だから全く馴染まない。
そしてこれがJavaで繰り返されてる
「例外でコケるの止めてくれない?」「えっと?握りつぶせばいいですか?」
の根元だろ。
かといってC流のエラー番号&毎回いちいちチェック方式がいいというわけではないが。

C++流のオブジェクト指向はほぼ全てのメジャー言語に広まった。これは出来がいいからだ。
同様に、ラムダも出来がいいから最近採用されまくってる。
C++が当初これを持ってなかったのは結果的には単にC++が馬鹿だったからでしかない。
テンプレートも同様で、広まらないのは出来が悪いからでしかない。

例外がイマイチなのは、そもそも出来が悪いからだ。
そして本質的に、例外方式では非同期/ベクタ(SIMD)には対応できない。
同期で済むところを非同期で書かされるJavaScriptも相当ウザイが、
今後のプログラミングのトレンドが
マルチスレッドによる非同期やGPU活用の為のベクタライズ(SIMD)に進むとしたら、
今現在の『旧式』の例外をコードに含まないようにしておくことはかなり意味がある。
googleが過去にこだわっているだけだと見るのは勘違いだと思うよ。

まあいずれにしろ、C++は今後とも「全部入り、使うかどうかはおまえら次第」を目指すようではあるし、
そういう言語が一つくらいあってもいい。
だからこそ、各自でその機能をどこまで使うべきか考えないといけないし、
それを適切に出来ない人は、
誰かのコーディングルールに乗っかるか、C++を使うのを止めるかした方がいいと思うが。
0202デフォルトの名無しさん (ワッチョイ b1f6-CJuN)
垢版 |
2019/08/31(土) 17:59:23.48ID:9yJw5XoJ0
>>194
おまえさ、そんなすぐ目先の損得に頭を占領されてんの?
同じ「コスト」って言葉を使ってるけど、なんか全然意味違いそうだな
5年10年単位の長い波長を持つ金の津波をどう起こすかって話と
ずいぶんズレて聞こえるんだが
0209デフォルトの名無しさん (ワッチョイ d101-GX87)
垢版 |
2019/08/31(土) 19:11:34.05ID:RlpJENj70
は?
まぁ自営歴はそっちのが長いかもしれんが
>>186に対して>>187を書ける根拠が知りたいね
くだらないことでマウントかましてきたからやり返すけど、お前チーム開発の経験はあるんだろうな?
自分が開発したライブラリ(もちろんテンプレート使った)を人様に使わせたこともあって言ってるんだろうな?
0212デフォルトの名無しさん (ワッチョイ 13f9-Be7n)
垢版 |
2019/08/31(土) 20:40:29.29ID:fVr7bLUC0
>5年10年単位の長い波長を持つ金の津波をどう起こすかって話と
名言ktkrwww
金の津波www
それを考える奴がC++のソース書くのは時間が勿体ないよwww
0214デフォルトの名無しさん (ワッチョイ 0101-drPI)
垢版 |
2019/08/31(土) 21:59:21.80ID:XxwPKKvU0
理解してないバカがいるかぎりは何度でも言う。
てか google c++ の規約くらい読めばいいと思うよ。
実際、ためになるし、この手の文書にしては相当簡素で物量で圧倒されるようなもんでもないし。
0215デフォルトの名無しさん (ワッチョイ d1b3-cRT5)
垢版 |
2019/08/31(土) 22:43:32.33ID:1Tc6sj780
ちょっと悪意ある実例かもしれんけど、
仮にメモリリソースを標準ヒープ限定にしないよう、任意のアロケータを使ったstring, vectorを
受け取る関数を書いたとして(いずれのデータも結構大きい可能性がある)、

https://wandbox.org/permlink/wGxcWDrAvb93ptzD
↑のようにテンプレート化した途端に、簡単なリテラルや初期化子リストからは受け取れなくなる
(もちろんstd::string(), std::vector<hoge, allocator<hoge>>{うんたらかんたら}とすれば通るが)
むやみにテンプレートマンセーして、ちょっと否定的な意見(しかも経験豊富な人からの)を見ただけで火傷起こしてるバカどもは
この程度の(自分でテンプレート使って汎用性求めればすぐわかる)デメリットにすら気付いたことがないんだろう

(こんなんだったらポインタで受け取った方がマシ、この場合は。)
0216215=ID:RlpJENj70 (ワッチョイ d1b3-cRT5)
垢版 |
2019/08/31(土) 22:50:46.58ID:1Tc6sj780
ちなみに、こういう任意のリソースを受け取るということについていちいちテンプレート化しなきゃいけなかったという
STL周りの不便さを改善すべく、新しいリソース管理クラスが導入されたけど
Alex Stepanovや標準化委員会も、allocator周りは失敗だったと思ってるんだろうな

あと、>>187も含めテンプレートマンセーしてる初心者は知らんだろうけど
STLは構想から含めて十年以上かけて作られた代物だからな、ある意味優れてて当たり前
そんなライブラリでも改善すべき点は見つかるんであって、ろくにテンプレートライブラリ書いたことも無いやつが権威を笠に着るなと言いたい
その上で「お前らその開発期間を償却できるほどの設計センスと経験、責任感があるんか」と問いたい

>>212
自営業といっても全然関係ない業種の趣味グラマだったりして
0218デフォルトの名無しさん (ワッチョイ d1b3-cRT5)
垢版 |
2019/08/31(土) 23:43:13.60ID:1Tc6sj780
StringTとかArrayTとかもっと雑に受け取れってことやろ?
わかるけど、その先で全部統一した一つの関数テンプレートで処理をまとめられるとは限らない
結局泥臭いコンパイル時分岐を書かなきゃいけなくなることもある
0219デフォルトの名無しさん (ワッチョイ c17b-u0zy)
垢版 |
2019/08/31(土) 23:44:19.87ID:CPr5eAdi0
>>215
ちょっと趣旨から脱線して申し訳ないが、
そういえば独自アロケータを与えられるのもC++の特長ではあったか。

となると、C++をどうしても使わなければならない局面は、
・ナマポとスマポの混在
・独自アロケータの使用
とかかな?

ただまあ、責める気はないが、
独自アロケータについては他言語は対応してないと思うので、
この場合はstlやテンプレートがどんだけ糞であろうが頑張ってC++で書くしかない。
勿論、色々改善する余地はあるとしても、
他言語がいわゆるシステムレベルプログラミング(≒OSそのものを作る)に
対応していないのだから選択の余地はない。
まあLinusに言わせればC++もシステムレベルプログラミングには使い物にならない、とのことだが。
0222デフォルトの名無しさん (ワッチョイ 0101-drPI)
垢版 |
2019/09/01(日) 00:08:04.65ID:gzRpR9B40
SFINAEで対応とか、c++のオーバーロード、ならびにrvalue周りの仕様を
全部読み、かつ現実のソースをすべて読むのにどれだけの物量かかるか少しも想像してないんだろう。
0223デフォルトの名無しさん (ワッチョイ d1b3-cRT5)
垢版 |
2019/09/01(日) 00:10:55.48ID:glhkS+QQ0
>>219
いや、悪意ある例と書いたけど
どう確保したかに関数側が興味ないのであれば&特殊な用途でなければ素直にポインタでいいし
>>216で挙げたPolymorphic Resource使えばテンプレートにする必要すら無いんだけどね(実際めっちゃ便利)

標準ヒープを前提にした設計&サンプルコードなんかの綺麗な例のようなSTLの使い方しか
したことない初心者には全くそういう問題が想像つかないんだろうなと言いたかった
テンプレート使って設計するのはめっちゃ時間かかるし、そこまでする価値があるのかどうかというのは
今どきのC++でのコーディングには避けられない重要な判断だと思う
(そういう判断放棄して古臭い書き方してる職場が多いのは、決しておかしな話ではない)

>>220
>SFINAEで制限
まぁその方が理想的なんだろうね(ある程度差異を吸収する関数はあるし)
0225デフォルトの名無しさん (ワッチョイ 99c3-mBEq)
垢版 |
2019/09/01(日) 00:17:20.70ID:JdN5NInb0
string_view的なもので実装書いて、他のは適当に切り分けてtemplateも必要に応じて使いつつoverloadで変換して実装呼ぶみたいなのはよくやる

そう言うのが多過ぎて面倒なら、パラメーター受け用のクラス作って受けたい元クラスから作るコンストラクタで変換するってのもあるし
0226デフォルトの名無しさん (ワッチョイ 0101-drPI)
垢版 |
2019/09/01(日) 00:24:30.79ID:gzRpR9B40
>>224
c++の場合、まともにオーバーロードの仕様を抑えてる奴などおらん。
てかコンパイラ作る方も理解が薄いんじゃないかと思うレベルでバグ入れ込む話だぞ。
実際に仕様読むと増築につぐ増築でまともな仕様とは思わなくなる。
簡単だと主張する輩というのは仕様を読んでないか、もしくは江添みたく仕事の関係で後に引けないやつかしかおらんってことだ。
0229デフォルトの名無しさん (アウアウエー Sa23-ca7b)
垢版 |
2019/09/01(日) 02:04:06.84ID:sYwYgS29a
>>200
「全部入り」と言いつつcodecvtを入れた香具師は死刑
0231デフォルトの名無しさん (ワッチョイ 132c-cmxz)
垢版 |
2019/09/01(日) 08:56:38.65ID:XF6G4Ohn0
実引数依存の名前探索 (じつひきすういぞんのなまえたんさく、ADL)とは、
C++において関数呼出時に与えられた引数の型に依存して、
呼び出す関数を探索 (lookup)する仕組みのことである

英語ではKoenig lookup、argument dependent lookup (ADL)、argument dependent name lookupなどと呼ばれる。
なお、Koenig lookupとは、この仕組みをAndrew Koenigが提案したことにちなむ

Koenigは、C Traps and Pitfalls(Cプログラミングの落とし穴)を、1989年に書いてる。
ADLは、Koenigが発明したのではないけど、標準委員会を説得したのは彼らしい

たぶん、ここまで詳しいのは、江添の本にしか書いてないだろう
0232デフォルトの名無しさん (アウウィフ FF55-ca7b)
垢版 |
2019/09/01(日) 10:09:22.81ID:kCJZVLuHF
Cは使い続ける意味はあるが
C++には未来はないよ
そういう使い方したい人は
Dを使えば良いんじゃないかな
0233デフォルトの名無しさん (ワッチョイ 0101-drPI)
垢版 |
2019/09/01(日) 11:24:12.52ID:gzRpR9B40
>>227
それなら関数名なりを変えてるのと変わらんだろ。
オーバーロードなんて無理に使う必要ない。
てかそこまでうまくモジュール分割できないやつに限って使おうとする機能だから
問題なんだよ。
0240デフォルトの名無しさん (ワッチョイ c17b-u0zy)
垢版 |
2019/09/01(日) 19:56:31.21ID:YvMNWW8O0
まあ使うも使わないも自由だが、あまり文法的なことばかりにこだわらない方がいい。
言い方を変えれば、「プログラミングの達人」と「C++言語の達人」は別なことを認識した方がいい。

「C++言語特有の機能」を使いこなせれば「C++言語の達人」ではあるだろう。
しかし、それは「プログラミングの達人」ではない。
「プログラミングの達人」なら当然「他言語を使っても達人」であり、
それは「言語非依存部分での圧倒的な巧さ」によるものだ。
単純に言えば、「ああ、こうすればこんなに簡単に実装できるのか」を繰り返してる。
C++特有の機能、つまりテンプレートやオーバーロードをいくら使いこなしてもここには到達できない。
それらは無ければ無いで何とかなる程度のものでしかなく、所詮はソースコードの整形でしかない。
それらをどれだけ使いこなしても本質的な構造の改善には繋がらない。

休日に5chに来てプログラミング談義に参加するような奴は、
モチベーションはあり、これは素晴らしい。上達も(本来は)するだろう。
ただ、最近は脱線している奴を多く見かける。
そして、無駄にやる気だけはあるから、おかしな議論で永久ループしてしまっている。
「言語非依存部分での腕前の差」を認識できないうちは、文法的なことにばかりこだわらない方がいい。
「C++言語の達人」ではなく「プログラミングの達人」を目指すなら、それは完全に空回りでしかない。

俺が見る限り、どの言語で始めてもどうやらそれなりにくだらない議論をやってる。
Javaの初学者は必要もないところでクラスを作って継承をこねくり回してる。
JavaScriptの初学者はセミコロンを打つか打たないかで議論してる。
C++の初学者はC++の無駄に複雑な言語仕様、特にテンプレート周りに惹かれるようだ。
ただ、これらを使いこなしても「プログラミング」そのものの上達はしない。
本来の「プログラミング」、つまり「言語非依存部分」での上達にフォーカスした方がいい。
そうであれば、C++が死んだら死んだで、あっそう、でしかない。
(俺はRustではC++を殺しきれないと見ているが)
0244デフォルトの名無しさん (ワッチョイ c17b-u0zy)
垢版 |
2019/09/01(日) 23:08:41.79ID:YvMNWW8O0
>>241
君がどこを目指すかは君の自由だが、「プログラミングの達人」のつもりなら、
君らが馬鹿にする「C限定」「C++98限定」縛りでも他の凡人とは明確に差を付けられなければいけない。
それが出来ないのなら、君は「プログラミングの達人」ではない。

ただ、新しい記述は古い記述の問題点を修正したものであるのは事実なので、
その問題に直面しているのに新しい記述を拒絶するのは、老害だと馬鹿にしていい。

といっても、当然だが基本/必要不可欠な部分から整備するので、
最近のC++に入っている仕様はかなり屋上屋を架す状態になっているのも事実だろ。
googleのルールがC++11を基本としているのもこれが遠因にある。


C++のスレが歪んでいるのは、住人がこの辺の「ちょっと考えれば分かること」を認めないからだ。
はちみつ餃子(コテ名)なんて、リアルの友人に職業マ(ゲーム)が居て色々聞いてみて、
「プロでも最近の仕様には疎いんだよなー」とか愚痴ってたろ。
そこでアマチュアであるはちみつ餃子が正しくプロが間違っている、と認識する点が狂ってる。
そしてこのタイプの人間がC++スレには割と多い。

C++が一番使われているのはゲーム業界だと思うが、これは単純に速度が速いからだ。
そしてゲーム業界が直面している問題は(ちと古いが)例えば以下であり、要するにOOPの限界とかだ。
OOPはコードを綺麗にまとめる手段ではあるが、速度は大概遅くなる方向だからだ。
https://sites.google.com/site/shunichisnote/translations/data-oriented-design
そして当たり前だがC++の新機能なんてこれに対する解を提供するものでは全くない。
結果、C++のゲームプログラマはC++の新機能なんて知る意味がないから、無視または受動的となる。
これもちょっと考えれば分かることだと思うんだがな。

プログラマ=料理人に対して、包丁職人=C++の達人も必要であり、
それを目指すなら、新機能を使えること=上達だと考えるのは正しい。
でもそうでない場合、早い段階でこの認識は改めた方がいい。
0245デフォルトの名無しさん (ワッチョイ 99c3-mBEq)
垢版 |
2019/09/01(日) 23:27:53.27ID:JdN5NInb0
ある機能を使わない理由が知らないからで、結果無駄な労力かけている
知らない理由を正当化しようと、知る前から役に立たないとか抽象的な理屈で断定するのは逃げでしかないんだよね
まあ言語仕様なんてアセンブラがあればなんでもできる
色々な言語があって、それぞれ独自に進化しているのは、結局みんな楽をしたいからなんだよ
手を動かす方で楽をするためには知識と知恵が必要で、知識を得るためには勉強が必要
まあ知識だけ入れても使いこなす知恵がないと無意味なのだけど
0247デフォルトの名無しさん (ワッチョイ c17b-u0zy)
垢版 |
2019/09/02(月) 00:21:05.86ID:qlCCPxCU0
>>243
リフレクションは動的→静的変換には必要ではある。
ただし動は動で組む、というのがC流ではある。(リフレクションがない世界だったから当然ではあるが)
といってもリフレクションありならだいぶ楽に書けるのも事実で、
.NET(WPF)はこの部分だけはフレームワークが自動的にリフレクションしてくれることになっている。

RTTIはgoogleは「必要になるのは設計ミスだ」という見解であり、確かにこれは事実だが、
https://ttsuki.github.io/styleguide/cppguide.ja.html#Run-Time_Type_Information__RTTI_
RTTIを使っていいのなら手抜きなパッチをサクッと当てられるのもまた事実だ。
(RTTIありなら1行で済むのが、無しでvirtualで対応なら新規クラス追加になってしまう)

ここら辺は結局のところ、どのコード品質まで許容するか、であり、
当然体面は「常に今現在の仕様で最高のコードにしておけ」な訳だが、
現実的に「そんなん出来るかバカヤロー」である程度デタラメなパッチも許容するのなら話は変わってくる。
だからこの辺は「無くても実装は出来るし、困らない」のを認識した上で、
どこまで手抜きを許容するか、だと思う。


>>245
それは俺に向けたものではないと思うから補足になるが、
俺はそれに関してはC++ではなく他言語をやった方がいいと思ってる。
現状、手抜きに関してはLL言語の方が数段上で、C++は完全に周回遅れだ。
クロージャ採用も今更だし、リフレクション等も他言語で普通に学べる。
(それを使うかどうかはまた別として)

今現在、C++でしか学べない事って、
C++固有案件(テンプレートをこねくり回すこと等)以外にはないよね?
C++が先頭切って導入しようとしている事ってあったっけ?
0248デフォルトの名無しさん (ワッチョイ d1b3-cRT5)
垢版 |
2019/09/02(月) 01:57:52.96ID:AXKQdh3S0
>>244
業界経験者としても概ね同意
ただリンク先読むと、さすがにOOPとデータ主導(と速度)を両立できないのは
さすがに設計力不足だと思う(実際日本のゲーム会社は海外と比べてOOPの浸透率が低い)
枝葉末節にこだわって大局が見れてないんだろうな(このスレ見ててもわかるように)

>>245
>ある機能を使わない理由が知らないからで、結果無駄な労力かけている
>知らない理由を正当化しようと、知る前から役に立たないとか抽象的な理屈で断定するのは逃げでしかないんだよね
過去レス読む限り総称的なプログラミングには精通してる人のようだけど
さすがに↑の2行は思い上がりすぎだと思うよ、自分で読み直してみ

>手を動かす方で楽をするためには知識と知恵が必要で、知識を得るためには勉強が必要
人の時間は有限だよ
あとここでよく挙げられるEASTLの開発動機の和訳
ttp://i-saint.hatenabl○g.com/entry/20101012/1286822888
の、Game software issuesの項を読め
0249デフォルトの名無しさん (ワッチョイ d1b3-cRT5)
垢版 |
2019/09/02(月) 02:25:50.18ID:AXKQdh3S0
ただまぁ、正直コンセプトが導入されたり他の理由で
総称的プログラミングが浸透する可能性は否定しないけどね
しかし自分の払った学習コストを正当化したいがために
学習コストまたは開発コストの増大を危惧する人を「不勉強」と貶すアマチュアの声が一番大きい言語だったら
C++に未来は無いだろうな(すでに無いという声もあるけど)
0251デフォルトの名無しさん (ワッチョイ 313c-G0dn)
垢版 |
2019/09/02(月) 03:37:36.21ID:GDA/xmbY0
俺も自演と思ったw
文の長さ、漢字と平仮名のバランス、使う単語、全部似てるんだよね
自演と分かってないなら何かの病気を疑うレベル
それともC++使うとこうなってしまうのか?
長すぎるエラーばっかり見てるのも困りもんだな
0253デフォルトの名無しさん (ワッチョイ b1f6-CJuN)
垢版 |
2019/09/02(月) 06:35:03.03ID:zdMRmPOK0
長文で必死こくやつは余裕のなさが丸見えだ
それこそ言語に振り回されて及び腰になっている自分を恥じるあまり
防衛反射で攻撃的になっているだけだろ馬鹿馬鹿しい
0255デフォルトの名無しさん (ワッチョイ 6961-hioB)
垢版 |
2019/09/02(月) 07:11:23.77ID:CuenWXUR0
>>239
func(const char *)とfunc(int)のようなものが10種類くらい有った場合、
func という名前で検索するだけでは目的のものが検索できない。

さらに、どの関数が呼び出されているかが分かりにくくなりバグの原因に成り易い。
例えば、func(int)とfunc(char)が有った場合、
func('A'+1)と書いた場合に、intとcharのどちらが呼び出されるかが混乱を
招きやすい。例えばの話、もっと複雑になって、+演算子が operator+()
によってオーバーライド(オーバーロードではない)されていた場合、
どうなるかとか。
0265デフォルトの名無しさん (ワッチョイ 6961-hioB)
垢版 |
2019/09/02(月) 16:40:42.89ID:CuenWXUR0
>>264
ケース・バイ・ケースだが、例えばの話、dump(int a)が呼び出されていると
思っていたら、dump(char c)が呼び出されていてせっかくのデバッグ情報
すら混乱してしまう可能性も有るかもしれない。入れ替わっても特に問題ない
場合も有るが、それは作り方による。余り変化が大きいようなものを
overloadだけで済ますと無駄な悩み事を増やしてしまうかもしれない。
0269デフォルトの名無しさん (ワッチョイ 3332-cRT5)
垢版 |
2019/09/02(月) 20:22:15.08ID:x3GPTWQz0
>>265

256デフォルトの名無しさん (ワッチョイ 6961-hioB)2019/09/02(月) 07:12:36.17ID:CuenWXUR0
>>253
長文の人は知的な人が多い。短文の人は女子高生の略語みたいに馬鹿な人が多い。


259デフォルトの名無しさん (ワッチョイ 6961-hioB)2019/09/02(月) 07:26:46.74ID:CuenWXUR0
>>258
ちなみに俺は現実世界では天才と言われている。
0270デフォルトの名無しさん (ワッチョイ c17b-u0zy)
垢版 |
2019/09/02(月) 22:54:18.80ID:qlCCPxCU0
>>248
リンク先のは多分、綺麗なOOP(意識高い系OOP)を目指しすぎた結果だと思う。
ソースコードの品質『だけ』を目指した場合、そりゃそうなる、というのをやっている。

ソースコードの品質は一般的に

・長期的保守性(つまり可読性)
・仕様変更に対する強さ(というより不感度)
・ソースコードの流用性
 (他に持って行っても使える度合い≒自身内部で流用出来ればコード削減に繋がる)

が重要だとされるはずだけど、これには、

・値配列ではなく、ポインタ配列
・インスタンスは纏めて取るなんてやらず、一つ一つnewする
・配列は固定長なんて止めて全部自動可変長にする
・全部virtual

みたいに、JavaやLL言語の方向性で行った方が断然いい。
ただ、こういう無駄をいちいち外す事によりC++の高速性は成り立っているのだから、
ソースコードの品質『だけ』を目指した「綺麗なOOP」をやりすぎるとそれはゲームには向かない。
30年後に赤の他人が読む可能性もあるJavaと同じ土俵で議論するのが馬鹿げてる。
0271デフォルトの名無しさん (ワッチョイ c17b-u0zy)
垢版 |
2019/09/02(月) 22:55:33.55ID:qlCCPxCU0
>>249
> 学習コストまたは開発コストの増大を危惧する人を「不勉強」と貶すアマチュアの声が一番大きい言語だったら
> C++に未来は無いだろうな(すでに無いという声もあるけど)
多分これはない。
おそらくC++は積み上げ型の学習(=ここまで出来た!)をしたい奴にとっては
「項目がやたらある」という意味で居心地がいいんだ。
だからここ5ch(数の上での主力はモチベーションの高いアマチュア)には妙な奴が集まることになる。
K&Rはあっさりしすぎてて、読んでも彼等は何をすればいいのか全くピンと来ない。
だから彼等はCを貶す。
とはいえ、現実のゲームプログラマの大半は休日はのびてるだろうし、ここの動向とは全く別だと思う。

が、まあ、これはさておき、
現実的にC++が提供している「ゴリゴリにマニュアルチューニング可能」が出来る言語が他にない。
よってゲームプログラマをはじめとして最高速が求められる領域、今ならMLとかもそうだと思うが、
これらにはC/C++しかない。
ところがCは全くやる気がなく、現実的にはC++しかない。

現状C++の代替となる可能性の最有力はRustだが、
C++が全部入りを目指す以上、Rustが出来ることは「C++とゴリゴリのリンター」で出来る範囲でしかなく、
結果的にRustコンパイラ自体が「C++のリンター」になって終わるのではないかと俺は見ている。

なお学習コストも考えて取捨選別して生産性を高めようとしているのはC#だが、
結果的にJavaとダダ被りすぎ、そしてJavaが死ぬことは今のところあり得ないから、
死ぬならC#になってしまっている。これも残念なことだ。
0273デフォルトの名無しさん (ワッチョイ c17b-u0zy)
垢版 |
2019/09/02(月) 23:11:25.28ID:qlCCPxCU0
>>272
お前はプログラミングを止めた方がいい。

マジな話、ドキュメントを読む能力の必要性は以前よりもどんどん高まっていて、
今時の若者プログラマは英語もある程度読めないと付いていけないと思う。
母国語すら3行しか読めないようならどうあがいても未来はない。
0276デフォルトの名無しさん (ワッチョイ 9963-n2vT)
垢版 |
2019/09/02(月) 23:54:40.82ID:L8repKrD0
昔はドキュメント読まなくて良かったってマジ?
もちろん分野によるけど、公式のリファレンス等に目を通さなくてもなんとでもなる分野は圧倒的に昨今のほうが多いと思う
英語に関しても同じ
何やるかに大きく左右されるけど英語圏にしか情報がほとんど転がってないような分野も昔からある
というかCPU回りとかハードよりなとことかは特にそうじゃない?
0281デフォルトの名無しさん (アウウィフ FF55-ca7b)
垢版 |
2019/09/03(火) 10:58:46.39ID:gWEsYspAF
>>279
+1

.h に本体書く馬鹿もな
0286デフォルトの名無しさん (アウウィフ FF55-ca7b)
垢版 |
2019/09/03(火) 15:37:28.53ID:gWEsYspAF
真相はCMのあとで!
0288デフォルトの名無しさん (アークセー Sx5d-G0dn)
垢版 |
2019/09/03(火) 21:55:23.31ID:sj4DSyzdx
>>287
俺は実装のあるなしではなくC/C++の両方から呼ぶときには.hを、C++からのみ呼ばないときは.hppにしてる
このルールだと確かにheader only libraryは.hppだし、実装を含む場合は.hppと言えなくもない
0293デフォルトの名無しさん (ワッチョイ a9b0-cRT5)
垢版 |
2019/09/04(水) 09:02:40.51ID:t4uWG4G60
俺も最初から実装を含む前提のheader only libraryとただのプロトタイプに分けてるな。
後からテンプレートを追加する場合といっても、ライブラリじゃなけりゃたいてい明示的
インスタンス化で片付くしな。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況