21/01/23 14:06:29.89 pKYkJfCY.net
>>160
>1文字の特殊変数だらけの言語
APL記号?
201:はちみつ餃子
21/01/23 14:54:28.68 Q+Wu8A2P.net
>>188
URLリンク(docs.ruby-lang.org)
202:デフォルトの名無しさん
21/01/23 16:26:10.57 LPDMRZtK.net
>>200
懐かしいな
俺アンペールのいじってたよ
203:デフォルトの名無しさん
21/01/23 18:58:05.34 C4WlxIYr.net
>>198
そんなクソみたいなこと言うんだったら、まず「関数型言語」の定義から言えよ。
Lispが関数型言語じゃないとか言い始めそうだな。
204:デフォルトの名無しさん
21/01/24 11:36:54.35 wSlEv8S7.net
Rubyは関数型ωωω
205:デフォルトの名無しさん
21/01/24 12:17:53.22 /MPXRGah.net
カオスコードって意味ならc++とperlが双璧だわな。rubyは別の意味で糞だが。
206:デフォルトの名無しさん
21/01/24 14:46:51.42 bXJjYU1w.net
rubyの糞とrailsの糞がかけ合わさって悪臭漂う糞になる
207:デフォルトの名無しさん
21/01/24 21:13:47.08 hPeuQsPP.net
肛門を保護するために出る粘液はイイ匂いがするので、化学的に類似品が合成され、香水の原料になっています。
ウンコは臭いですが、ウンコの周りには良いものがあるかもしれない。
208:デフォルトの名無しさん
21/01/24 23:17:47.88 bXJjYU1w.net
Co-mon++
209:デフォルトの名無しさん
21/01/25 00:51:35.02 h/LmkNzq.net
>>207
腸液は質感、匂いともに精液に酷似してるっていうのはよく言われてるけど、それのことじゃないよね?
良い匂いの分泌液なんて聞いたことがない
210:デフォルトの名無しさん
21/01/25 09:53:48.54 RU5Fvovq.net
やだこのスレホモ臭い
211:デフォルトの名無しさん
21/01/25 10:13:42.80 uSgkqdKl.net
と言いつつ嬉しそうな吉宗であった。
212:デフォルトの名無しさん
21/01/25 13:06:55.63 sPc2eBUP.net
PerlとC++は、見づらいソースコードに慣れる能力を鍛えてくれる。
Perlをオワコン扱いする人は情弱である。
213:デフォルトの名無しさん
21/01/25 13:11:37.73 54hHF458.net
厄介者のperl厨
214:デフォルトの名無しさん
21/01/25 13:34:11.10 lM5Uli0g.net
糞コードに触れるとアンチパターンがわかるというのは確かにあるが、それを人に勧めるのは気がひける。
215:デフォルトの名無しさん
21/01/25 13:48:32.46 sPc2eBUP.net
まずい酒の味を知らない者には、うまい酒の味を見分けることはできない。
216:デフォルトの名無しさん
21/01/25 21:12:20.67 bQwFUjl3.net
美味い酒の味を知ったら不味い酒は飲めん
217:デフォルトの名無しさん
21/01/25 22:13:56.33 IR169uBT.net
酒は飲まんからようわからん
218:デフォルトの名無しさん
21/01/25 22:56:10.85 sPc2eBUP.net
まずい酒を飲めなくなることは、プログラミングに置きかえればクソコードのメンテナンスができなくなることを意味しており、スキル低下でしかない。
219:デフォルトの名無しさん
21/01/25 23:11:18.97 bBvI6B4m.net
まずい酒はわかるけどうまい酒はマジわからん…
220:デフォルトの名無しさん
21/01/25 23:57:21.75 sPc2eBUP.net
うまい酒については「水のように飲みやすい」というほめ表現もあるが、なら水飲んどけよという話でもある。
221:デフォルトの名無しさん
21/01/25 23:57:36.36 t4dFVxvz.net
<body>
!unti {nuritakuri}
<body/>
222:デフォルトの名無しさん
21/01/26 00:02:06.39 Qnn6Y+tc.net
<head>
<bukkake> seisi <bukkake/>
<strong> naaaaaaaaa!!!<strong/>
<head/>
223:デフォルトの名無しさん
21/01/26 02:05:34.14 wg8lZWjJ.net
>>220
ほんまこれ
前にカエルの肉を食ったやつが「ほんと鶏肉とおんなじようなもんだから!食べてみて!」
ってしつこいんだが、だったら鶏肉でいいだろなんでわざわざゲテモノ食わにゃならんのか??となる
224:デフォルトの名無しさん
21/01/26 03:51:19.13 uiGtA95I.net
寄生虫が良い風味出すから。
225:デフォルトの名無しさん
21/01/26 06:09:38.08 ZRZozNwf.net
macOSのHomebrewいいね。Perlが最新の5.32.1に即対応。人柱上等なところに惚れる。
226:デフォルトの名無しさん
21/01/26 07:49:52.25 ZI8ZD6Xl.net
安めの食材や有り合わせでうまいもん作れる腕があっても
腐ったものはどうにもできない
例えるなら、これだろ
227:デフォルトの名無しさん
21/01/26 07:59:37.62 xVPuSdRM.net
>>220
酔える水なら。
228:デフォルトの名無しさん
21/01/26 11:52:17.15 XuLptVzr.net
>>223
今ジビエなどとおしゃれに言ってるがゲテモノ食いが今の事態を招いてる
中途半端な科学信仰が何もかも迷信にしてしまって自然を正しく畏れなくなった
229:デフォルトの名無しさん
21/01/26 13:45:24.16 uiGtA95I.net
ちょっと腐ったほうが柔らかくなってアミノ酸も多いよ。
熟成させたと言えばグルメも安心だし。
230:デフォルトの名無しさん
21/01/26 13:48:13.24 uiGtA95I.net
野菜は立てておくと腐らないんだけど、その代わり成長するからね。
光合成できるかも?と思ってなけなしの養分使って葉を伸ばすんだろうけど、光合成は出来ません。
231:デフォルトの名無しさん
21/01/26 13:54:11.58 uiGtA95I.net
野菜の活〆を発明したら儲かるだろな。
放射線以外で。
232:デフォルトの名無しさん
21/01/26 21:06:31.25 Du8Hqhh0.net
いいかげんスレ違い。
233:デフォルトの名無しさん
21/01/26 21:46:24.92 ZRZozNwf.net
プリプロセッサマクロだらけの“汚い”コードを否定したらC/C++の強みを失うことになる。
JavaやC#はプリプロセッサマクロが貧弱なのが玉にキズだ。
234:デフォルトの名無しさん
21/01/26 21:51:10.66 ZRZozNwf.net
pybind11スレがないこんな世の中じゃ~Python~
まぁマクロの塊のような代物だが。
235:デフォルトの名無しさん
21/01/27 06:03:44.65 yQalyIAE.net
C++はコミュニティで発言力のある人が大抵率直にものを言い過ぎる、悪く言えば口が悪いので忌み嫌われてるとこある
236:デフォルトの名無しさん
21/01/27 07:30:48.85 eLUquqZ0.net
>>229
カダベリンやムスカリンが発生してたり
セレウス菌が大量にいるのは
そういう問題じゃねえぜ
237:デフォルトの名無しさん
21/01/27 07:48:28.28 4l9V085Z.net
でも、Linux板なんか失敗したボランティアの住所載せて、放火しろとは言ってませんよ??言ってませんよ??・・・などの書き込みあるからな。
それに比べれはだいぶ良識的では?
238:デフォルトの名無しさん
21/01/27 11:26:52.94 cJSBZXf9.net
C/C++のプリプロセッサも貧弱すぎ
239:デフォルトの名無しさん
21/01/27 17:43:27.13 nPuTGnvU.net
C++例外のスタック情報がとれないのはC++の欠点。
例外でスタック情報を使えるJava/C#/Python/Perlはエライ。
240:デフォルトの名無しさん
21/01/27 21:51:38.91 NT655YPf.net
おまえは二度とC++使うな
241:デフォルトの名無しさん
21/01/27 23:04:53.57 TqcnYSNG.net
>>239
スタックフレーム作ればイケるってば
242:デフォルトの名無しさん
21/01/28 09:07:27.76 dmDIUcy2.net
>>235
例えば誰?
243:はちみつ餃子
21/01/28 10:23:46.51 vBYpvnJx.net
>>239
gdb にアタッチしたことないんか?
C++23 には stacktrace が入るから
デバッガを使いこなせなくても少し楽にトレースできるかもな。
244:デフォルトの名無しさん
21/01/28 10:52:39.05 dNWrUHbO.net
>>223
フグは豚肉に触感似てるけどフグの方が美味い
245:デフォルトの名無しさん
21/01/28 10:54:00.53 dNWrUHbO.net
>>228
日本で感染爆発が起きてないのは以前からジビエが流行してたからか
246:デフォルトの名無しさん
21/01/28 10:55:14.42 dNWrUHbO.net
>>230-231
白菜は外の皮じゃなくて中の芯から先に食べろと言われている
247:デフォルトの名無しさん
21/01/28 11:40:01.79 eLxqvNeX.net
>>200
ユニコ時代だからAPLよりずっと先行ってるぞ
組み込み演算子で∩∉とか集合論の記号採用してたりアトミックな演算子は⚛++とか洒落効いてたりする
一方で古代perlのプレフィックスは緩和されてる
248:デフォルトの名無しさん
21/01/28 11:51:37.25 eLxqvNeX.net
∅∘∩ ⊍∪ ⊖ ⊎ ∖≅ ∈ ∉ ∋ ∌ ≡
≢ ⊂ ⊄ ⊃ ⊅ ⊆ ⊈ ⊇ ⊉ ≼ ≽.«»≠
他組み込みではこんな感じか
>= やらよりmずっと可読性高いと思う、エディタもvimとか高機能なのなら問題なかろう
文字を表示してくれるのは特に便利
249:デフォルトの名無しさん
21/01/28 11:58:59.45 kskG1wa2.net
>>245
さすがにコウモリはどこの地方でも食わんだろ
250:デフォルトの名無しさん
21/01/28 17:23:15.04 8Al9oSyF.net
なんでプリミティブ型って継承できんの?
251:はちみつ餃子
21/01/28 17:29:22.44 vBYpvnJx.net
>>250
やりたいときってあるか?
252:デフォルトの名無しさん
21/01/28 17:41:41.73 GsoT0xyU.net
クラスAのオブジェクトをクラスBのメンバにするときってどうやってAのコンストラクタ呼ぶの?
class B{
A a;
public:
B(){
// この辺でAのコンストラクタを呼びたい
}
};
253:デフォルトの名無しさん
21/01/28 17:48:00.82 WrE+/6so.net
>>252
メンバのコンストラクタの方が先に呼ばれる。だからそこでは既にAは構築済み。
どうしてもBのコンストラクタ内でAのコンストラクタ呼びたいなら、メンバ変数はポインタで持つ
254:デフォルトの名無しさん
21/01/28 18:07:20.07 IHrlZHr2.net
>>243
gdbはおいとくとして、Visual StudioってC++例外のスロー位置を追跡できたっけ?
255:デフォルトの名無しさん
21/01/28 18:50:38.47 Hqj+H5f7.net
>>252
初期化リストを使う
B() : a(hoge, piyo)
256:デフォルトの名無しさん
21/01/28 18:54:30.61 IHrlZHr2.net
あとで再初期化したくなること多いから、結局コンストラクタの実装を別の関数に分離すること多いよね。
コンストラクタの種類が増えたら使いまわしたくなるし。
257:デフォルトの名無しさん
21/01/28 19:24:37.48 q3mIN91/.net
>>243
デバッガ使いこなせないとか話にならんだろ・・
258:デフォルトの名無しさん
21/01/28 19:28:49.13 IHrlZHr2.net
デバッガやシンボルがない環境でもスタックトレースできたほうが良いと思うけどね。
後発言語の生産性の高さはこの辺の充実ぶりにあるでしょ。
259:デフォルトの名無しさん
21/01/28 19:42:24.27 IHrlZHr2.net
他プロセスと連携するシステムにはデバッガを当てにくい事が多い。
タイミング依存の不具合を追跡する場合、デバッガがまったく役に立たない。
260:デフォルトの名無しさん
21/01/28 20:25:47.81 eBfsAdOM.net
>>258
その手の生産性と成果物の効率はトレードオフでどっちを重視するかが違うだけでしょ
261:デフォルトの名無しさん
21/01/28 20:36:13.14 IHrlZHr2.net
デバッガ使いこなすとか言って悦に入ってる人と会話が噛み合わないんだが。
262:デフォルトの名無しさん
21/01/28 20:36:14.66 yp+dwtvR.net
>>258
だよね
むしろデバッガをアタッチできる環境ならスタックトレースはなくてもなんとかなる
ユーザー環境でスタックトレースがテキストファイルに落ちるようになってるとトラブルシューティングがしやすい
263:デフォルトの名無しさん
21/01/28 21:29:31.41 oPlwADge.net
>>261
ここほとんどアマチュアの人だから許してやろうやw
264:デフォルトの名無しさん
21/01/28 21:48:11.74 q3mIN91/.net
>>261, >>263
悪いがプロだよ
IDEの機能を使いこなせてない初心者が、先に学ぶべきことから逃げて言語だけでどうにかさせようとするような
(いつものことだが)はちみつのミスリードに釘を刺しただけだ
265:デフォルトの名無しさん
21/01/28 21:51:13.66 q3mIN91/.net
>>261
あと、流れを読む限り俺の発言が気に入らなくてファビョってるのは君の方だよね、俺1行しか書いてなかったし(しかも大した内容じゃない)w
何が気に障ったんだ?
266:デフォルトの名無しさん
21/01/28 21:51:23.69 oPlwADge.net
いやごめん、俺は流れは一切追ってなくて他意はないよ
茶化したかっただけ
気にしないで
267:デフォルトの名無しさん
21/01/28 23:50:09.41 g6qVZG7L.net
発狂やないかw
Perlの人かな
268:デフォルトの名無しさん
21/01/28 23:53:15.94 RfcrpqT0.net
>>253,255
じゃあ、Bを構築してしばらく経ってからわかる情報を使ってAを構築したいとき、Aのインスタンスをメンバとして持つのは不可能ということですか?
ポインタで持つ以外の方法はない (想定されてない?) のでしょうか
constなメンバ変数を初期化するときも近いことを思います
269:デフォルトの名無しさん
21/01/29 00:10:27.15 ZIYbfTXe.net
>>268
そういうコンストラクタ制約を持つクラスはけっこう多い。
WindowsのC++向けGDI+ライブラリのクラス群はまさにこれが当てはまる。
広範に存在している以上は受け入れるしかない。
今時は標準でshared_ptrなどの共有ポインタクラスを使えるので、さほど問題にならないでしょ。
270:デフォルトの名無しさん
21/01/29 00:19:48.35 SRnp44iw.net
>>268
Aに引数なしのコンストラクタ、コピーorムーブ代入演算子があるなら、後で作って代入でもいいけど
まぁ特に理由なければ(スマート)ポインタで持った方が無難だし楽
constはどうしようもない
271:デフォルトの名無しさん
21/01/29 00:22:16.89 MWSZTtHp.net
>>268
「Bを構築してしばらく経ってからわかる情報」を返すヘルパー関数を作って初期化リストの中で呼べばいいじゃない
272:デフォルトの名無しさん
21/01/29 07:49:13.10 /axUqcOX.net
データメンバをconstってあんまりやらないな
publicに晒すとかじゃなきゃメンバ関数を
constにするだけで足りるから
あ、staticメンバのconstはよくやるけどね
273:デフォルトの名無しさん
21/01/29 08:02:53.38 1V7SRlCX.net
>>251
ある
実装は同じunsigned longでも意味が違うから別クラスとして扱いたいときとか
private継承できたらナア……
現状(C++03)はプリミティブ型と同じ演算子(のうちの当座のアプリケーションで使うやつ)をいちいち実装したクラスを作って
NDEBUGマクロで実装を切り替えるみたいな涙ぐましい努力が要る
274:デフォルトの名無しさん
21/01/29 08:05:13.74 1V7SRlCX.net
訂正orz
誤: private継承
正: public継承かつoperator unsigned long()はprivateかつunsigned longからの構築はexplicit
275:デフォルトの名無しさん
21/01/29 08:08:37.91 1V7SRlCX.net
メンバをconstにして代入演算子を定義せずにいるとデフォルトの代入演算子をが定義できないとコンパイラに文句を言われる俺環、
276:デフォルトの名無しさん
21/01/29 09:20:50.39 koPyq8om.net
>>273
それ、継承できたとして式の中で混在しても区別されないんじゃね?
テンプレートの型引数で区別するような使い方くらいしか思いつかないが。
277:デフォルトの名無しさん
21/01/29 12:20:22.74 c2S2Mocm.net
メンバ変数のconstはポインタ型ならすることあるけど、値で持つメンバ変数はあんまり意味なくない?
constなくても勝手に外部から書き換えられないように、ちゃんと隠蔽しとけばいいだけでしょ
278:デフォルトの名無しさん
21/01/29 12:35:16.78 2DekME/2.net
>>277
class内の処理においても変更しないつもりだ、変更されることはない、と明示することで意識しておかなければならないことを少し軽減できるのだから、無駄ではないと思う。
手間をかけずにconstにできるならしておけばいいし、逆に無理して複雑なことをしてまでconstにする必要はないという程度のことかと思う。
279:デフォルトの名無しさん
21/01/29 12:55:03.34 c2S2Mocm.net
>>278
たしかにconst付いてればコンストラクタで設定した値がずっと変わらないことが
明示的になるから無意味ではないか
280:はちみつ餃子
21/01/29 14:10:30.45 heeNhc25.net
>>273
そういう用途なら opaque alias という提案だけは出てるけど
どう見てもグダグダなんで、場当たり的な方法のほうがマシだと思うよ。
281:デフォルトの名無しさん
21/01/29 16:04:20.47 5pIDnM+S.net
>>251
3値のboolean作るときってboolean継承すべき?
282:デフォルトの名無しさん
21/01/29 16:07:44.73 5pIDnM+S.net
>>256
言いたいことは判るが
コピーコンストラクタやムーブコンストラクタが勝手に使われるから
デフォルトに任せてると何が起こるかは判ってた方が良い
283:デフォルトの名無しさん
21/01/29 16:10:21.66 5pIDnM+S.net
>>259
COMサーバーというかDX用にフィルタ書いてると訳判らなくなった
284:デフォルトの名無しさん
21/01/29 16:56:37.48 RxAp4EkX.net
>>281
3値のbooleanを作って何するの?
boolへのポインタにしてtrue / false / nullptr の3値でなんとかならんか?
285:デフォルトの名無しさん
21/01/29 17:20:59.69 ADFs+h5F.net
boostにtriboolってのがあるな
286:はちみつ餃子
21/01/29 17:23:22.91 t7wU8l8M.net
>>281
仮に真偽値型を継承可能であったとして、三値型が真偽値型を継承するのはおかしいだろう。
場合によって柔軟な判断が必要な場合はあるものの、
継承は is-a 関係を表したいときに限ったほうがよろしいというのが一般的な設計原則だと思うが。
287:デフォルトの名無しさん
21/01/29 17:25:47.23 GtDK4kd8.net
nullableか、DBのフィールド値?
288:デフォルトの名無しさん
21/01/29 18:57:54.24 ZIYbfTXe.net
はちみつ餃子「スタックトレースできないならデバッガ当てればいいじゃない」
289:デフォルトの名無しさん
21/01/29 19:41:08.91 rAmh2V0K.net
典型的な円楕円問題だな
290:デフォルトの名無しさん
21/01/29 19:56:26.71 ZIYbfTXe.net
テンプレートを使えば、クラス継承に依存しない記述が可能。
iostreamが黒歴史扱いである現実を踏まえての話。
291:デフォルトの名無しさん
21/01/29 21:24:08.77 WFMo+mcm.net
とりあえずiostream批判しとけば訳知り顔ができた気に浸れる浅はかなやつ
292:デフォルトの名無しさん
21/01/29 21:35:39.96 nnAlz0gZ.net
c++ニワカあるあるだよなw
iostreamとりあえず批判奴w
293:デフォルトの名無しさん
21/01/29 21:39:11.47 ZIYbfTXe.net
iostreamは使いもしないメンバ変数を継承することを強要される悪い手本でしょ。
294:デフォルトの名無しさん
21/01/29 22:16:38.63 WFMo+mcm.net
何も説得力を示さずに突然「悪い」と言い出す
295:デフォルトの名無しさん
21/01/30 01:56:51.26 SJAC6oP5.net
iostreamはクソなのは正解だが別に批判するようなことでもない
なぜなら使わなければいいだけの話だからだ
296:デフォルトの名無しさん
21/01/30 02:06:50.03 OHt9F1SU.net
無理にクラス継承を使わずオーバーライド関数とそれを使うテンプレート関数を充実させたほうが幸せになれる。
297:デフォルトの名無しさん
21/01/30 02:41:04.49 PJvUkb6d.net
別に無理して継承を使っているわけではない
どっかの馬の骨が気に入らんからといって
あれを使うなこれを使うなと言われるほうが無理そのものだ
298:デフォルトの名無しさん
21/01/30 02:53:37.72 OHt9F1SU.net
例えば、ファイルに書き込む処理があったとする。
ファイルハンドルとして有名な型としては、int型、FILE*型、iostream型、Win32APIのHANDLE型などがあげられる。
これらを派生クラスに閉じ込めて抽象化するよりも、関数名が同じになるオーバーライド関数を作ってテンプレート関数から呼んだ方がはるかに楽。
int WriteBuffer(int fp, const char* buffer);
int WriteBuffer(FILE* fp, const char* buffer);
int WriteBuffer(ostream& fp, const char* buffer);
int WriteBuffer(HANDLE fp, const char* buffer);
template<typename FILE_OBJECT>
void WriteContent(FILE_OBJECT o)
{
WriteBuffer(o, "write test1");
WriteBuffer(o, "write test2");
}
299:デフォルトの名無しさん
21/01/30 03:53:39.52 ULcRPxme.net
ドヤってるところすまんがそれオーバーライドじゃない
300:デフォルトの名無しさん
21/01/30 04:01:05.04 PJvUkb6d.net
プゲラ
301:デフォルトの名無しさん
21/01/30 05:45:11.84 SLqQC90z.net
フリー関数とクラスメンバでは、インテリセンスが効くか効かないかの違いもある。
302:デフォルトの名無しさん
21/01/30 05:52:17.44 OHt9F1SU.net
そんなあなたに名前空間
303:デフォルトの名無しさん
21/01/30 06:06:53.60 SLqQC90z.net
クラスの場合、名前空間を書かなくても、インテリセンスが効く。
304:デフォルトの名無しさん
21/01/30 06:47:43.00 budoESfZ.net
コンストラクタの初期化リストで
class A{
int x;
public:
A(int x) : x(x) {}
};
みたいにしたとき、ちゃんとメンバのxがコンストラクタの引数のxで初期化されますよね?
メンバの x と同名の引数の x が同一のスコープに同居しているようで紛らわしいかなと思ったのですが、こういう書き方を避ける慣習はありますか
305:デフォルトの名無しさん
21/01/30 07:04:07.72 ULcRPxme.net
自分は普通にその書き方してる
避ける人も居るっぽいけど好きなようにすればいい
306:デフォルトの名無しさん
21/01/30 09:09:49.20 PHKUCpSE.net
iostreamマンセーバカってのは型安全ならどんな仕様でも良いと思ってるカスが多いからな。
型安全は評価する一項目に過ぎないってのに。
307:デフォルトの名無しさん
21/01/30 09:29:38.23 vDjChjwr.net
iostreamは整形のための情報をわざわざ状態として持たされるのがクソ
当時は状態が邪悪だっていう考え方が一般的じゃなかったからしょうがないけど
308:デフォルトの名無しさん
21/01/30 09:38:20.91 2pTx0la6.net
でも状態もってなかったら記述が煩雑になりすぎない?
HTMLのマークアップとまでは言わんまでも
309:デフォルトの名無しさん
21/01/30 09:59:20.80 OHt9F1SU.net
整形設定を記憶する変数インスタンスをiostreamインスタンスと分離すべきって話でしょ。
必要に応じて差し替えできるように参照渡しするか、逆にiostreamを参照渡しするとか色々やれたはず。
310:デフォルトの名無しさん
21/01/30 10:06:40.70 OHt9F1SU.net
というか他のオブジェクト指向言語だと整形情報がFormatterクラスとかに分離されているのが普通だし。
311:デフォルトの名無しさん
21/01/30 10:32:05.24 PJvUkb6d.net
FORTRANのFORMAT文が好きな人をどうこうしようとは思わない
312:デフォルトの名無しさん
21/01/30 10:40:52.47 hVJYorL3.net
初歩的な質問なのですが、stringクラスの内部バッファはデストラクタで破棄されるため自分では一切管理しなくていいという認識で良いのでしょうか?
313:デフォルトの名無しさん
21/01/30 11:17:24.76 SLqQC90z.net
アロケータによるけど、普通は管理しなくて良いのでは?
314:デフォルトの名無しさん
21/01/30 12:47:13.80 EWZvTk3z.net
>>308
状態持ってても無駄に煩雑(複雑ではない)
315:デフォルトの名無しさん
21/01/30 12:57:10.51 8FYOnD7D.net
iostream 型安全なのはいいけど、char/signed char/unsigned char ぜんぶ文字扱いするのはやめて欲しかった。
316:デフォルトの名無しさん
21/01/30 13:18:35.30 SLqQC90z.net
単項プラスで。
317:はちみつ餃子
21/01/30 13:18:38.04 4OMKN/Z4.net
>>309
入出力を直接的に司るバッファクラス (basic_streambuf) と
書式制御を司るストリームクラスを分離したデザインになっているし、
必要に応じて差し替えることも出来るよ。
iostream においてそれがわかりやすいか、良いデザインであるかは別として、
ちゃんと分離したデザインになってる。
318:
21/01/30 14:53:52.50 L1O2TNoD.net
>>304
私は馬鹿なのでメンバ変数とコンストラクタ引数を x, _x というふうに書き分けています、馬鹿が感染るかもしれないのでお勧めはしません
319:デフォルトの名無しさん
21/01/30 15:08:20.24 S5wIZr5N.net
C++でのメンバ変数は、標準的には m_xと書く。
320:デフォルトの名無しさん
21/01/30 16:04:40.96 0ahE8ZR3.net
>>319
何処信者だよ
ダッサw
321:デフォルトの名無しさん
21/01/30 16:41:05.48 SLqQC90z.net
MicrosoftとAdobeがその書き方多いですね。
322:デフォルトの名無しさん
21/01/30 17:13:12.28 S5wIZr5N.net
なお、_x は、命名規約上、禁止。先頭が _ の名前はコンパイラなどの
システム予約なため。
323:デフォルトの名無しさん
21/01/30 17:14:26.98 2r/QlSUC.net
そうだったっけ?
324:はちみつ餃子
21/01/30 17:19:55.79 4OMKN/Z4.net
>>304
>>318-319
命名規約の方法論は色々なのでプレフィクスを付けるルールが定めてある場合もあるし、
むしろ一致させていくようにしているものもある。
私自身は、少なくともメンバに値を設定するだけの単純なコンストラクタである場合には
名前を一致させていくスタイルで書く。
C++ を使う上でのガイドラインとしてよく参照されているのはグーグルのスタイルガイドで、
データメンバの名前は最後にアンダースコアを付けるようにルールを定めている。
URLリンク(google.github.io)
その一方では C++ の設計者である Stroustrup は型やスコープを変数名に含めるのは好ましくない
(しかし部分的に便利な場合もあることは認めている) と書いている。
URLリンク(stroustrup.com)
どちらの習慣が圧倒的優勢ということはないと思う。
>>322
グローバル変数としてはアンダースコアで始まる名前は予約されているけど、
そうでない場合には問題ない。
ただし、
・ アンダースコアで始まって大文字が続く名前
・ アンダースコアが連続 (名前の先頭部分以外でも) する名前
は名前の種類やスコープにかかわらずどこでも予約されている。
325:デフォルトの名無しさん
21/01/30 17:30:01.20 2r/QlSUC.net
互いの信仰を侵害してはならないがチーム内では統一されている必要がある
規約の背景は明確である必要がある
326:デフォルトの名無しさん
21/01/30 18:08:50.99 OHt9F1SU.net
>>317
まず、FILE*とostreamが一対一対応していないのがダメ。
せっかくC言語でファイル、パイプ、標準IOがFILE*型としてで統合化・抽象化されていたのに、
C++でostreamとfstreamで分離される劣化が起きた。
327:デフォルトの名無しさん
21/01/30 18:30:25.89 PJvUkb6d.net
ios_baseで統一する形に変わっただけ
それをFILE*がどうたらと駄々こねるのは
頭が堅すぎる実年齢に無関係の老害だ
328:デフォルトの名無しさん
21/01/30 18:36:35.02 OHt9F1SU.net
パイプ処理をostream系で書く奇特な人ってどのくらいいるの?
329:デフォルトの名無しさん
21/01/30 18:41:09.24 OHt9F1SU.net
pythonは定数がないから全部大文字の変数は定数のようにみなしましょう的な談合がある。
330:デフォルトの名無しさん
21/01/30 19:00:34.72 0ahE8ZR3.net
定数というか型もない
331:
21/01/30 19:09:23.04 L1O2TNoD.net
>>322
束縛領域が狭いローカル変数とかには、_x を使ってもいいのではないか?と考えていますが‥‥
332:デフォルトの名無しさん
21/01/30 20:32:34.21 PJvUkb6d.net
data_
size_
333:デフォルトの名無しさん
21/01/31 03:18:57.87 6QCY/vGM.net
>>331
実は#defineマクロの中で使われるケースがあってね。
_xが、アプリの中で使われてない事を前提にしないとマクロが作れない
場合とか。
334:デフォルトの名無しさん
21/01/31 06:52:18.40 gXTMTlGe.net
HTTPサーバーのサンプルで、関数型言語がCを凌駕して、C実装の作者が??になってるやり取りをどこかで見たのですが、わかる方いらっしゃいませんか?
おそらくC++は簡単に勝てるはずなんですが。
335:デフォルトの名無しさん
21/01/31 07:27:56.74 fCVb5Gn/.net
dmrが?
336:デフォルトの名無しさん
21/01/31 09:14:46.77 bSEeGU13.net
>>333
c++実装者がユーザから参照可能な形でそれやってるの見たことあるの?
337:デフォルトの名無しさん
21/01/31 09:22:03.74 fCVb5Gn/.net
>>333
#define A(_x) (std::cout << #_x)
int main()
{
int _x = 5;
A(_x);
std::cout << _x;
}
何か問題でも?
338:デフォルトの名無しさん
21/01/31 10:19:42.43 BqL9JwJS.net
ひどいな
URLリンク(qiita.com)
339:デフォルトの名無しさん
21/01/31 10:23:16.43 BqL9JwJS.net
>>331
_で始めると激しくコンパイラ依存になる
340:デフォルトの名無しさん
21/01/31 10:50:22.50 BqL9JwJS.net
>>334
Erlang?
341:はちみつ餃子
21/01/31 10:57:57.30 +XHxoAeu.net
>>339
繰り返すが言語仕様上はグローバル変数ではない名前の頭がアンダースコアで始まるだけなら問題ない。
現実に出来が悪いコンパイラがたくさんあるのであれば仕方がないが、
少なくとも俺はそんなのに遭遇したことはない。
342:デフォルトの名無しさん
21/01/31 11:04:21.78 fCVb5Gn/.net
>>338
DLLのビルドに使ったコンパイラと
そのDLLを使うアプリをビルドするコンパイラが違っても動くんだぞ
ABIの指定は仕方ねえだろ
343:デフォルトの名無しさん
21/01/31 11:29:10.73 2WBeknRq.net
>>334
これか?
サーバーじゃなくてパーサー部分だけだけど
URLリンク(blog.8arrow.org)
344:デフォルトの名無しさん
21/01/31 12:10:02.04 gXTMTlGe.net
>>343
それです。
ありがとうございます。
345:デフォルトの名無しさん
21/01/31 13:12:26.22 ZnRwde8F.net
>>341
英語サイトでも、説明の仕方が誤解を招くようなものがありまして、もしかしたらそれは誤解かも知れません。
URLリンク(stackoverflow.com)
「Here's what the C standard says (section 7.1.3):
1. All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.
2. All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
訳:
1. アンダースコアで始まって直後に英大文字が続くか、または、アンダースコアが連続して
続く識別子は、いかなる使用も予約されている。
2. アンダースコアで始まる全ての識別子は、通常または、タグ名前空間における
ファイルスコープの識別子として常に予約されている。
1. の方は、_XXX か、__xxx は予約されていると言うことですが、
2. の方は、_xxx の形式は、例え xxx の部分の先頭が小文字であっても、ファイルスコープにおける
識別子として予約されており、ローカル変数名としては使うべきではないということだと思われます。
また、C++の方では、
URLリンク(stackoverflow.com)
*Reserved in any scope, including for use as implementation macros:
10. identifiers beginning with an underscore followed immediately by an uppercase letter
11. identifiers containing adjacent underscores (or "double underscore")
*Reserved in the global namespace:
12. identifiers beginning with an underscore
この12.の書き方が(あなたに)誤解を招いた気がします。
また、11.によれば、xxx__yyy のように _ が連続するものは、識別子の中間であっても予約されている
とのことです。
346:デフォルトの名無しさん
21/01/31 13:18:09.37 ZnRwde8F.net
>>337
それは問題ではないんだけど、
#define a(x) { int _x = 1; _x = x * 2; printf("%d",_x);}
のようなマクロが有ったとすれば、
int y = 5;
a(y); // 10 と表示される。
と
int _x = 5;
a(_x); // 2 と表示される。
347:デフォルトの名無しさん
21/01/31 13:42:32.29 Rr91L/mp.net
int と自作クラス A の pair を priority_queue に入れようと思ったら pair<int, A> に対する less の定義(?)が要るって言われました
int だけに基づいてソートしてくれたら結構なんですが、最も簡単な書き方はどんなですか
また、自作クラス A は array を継承しているのですが、less の定義も引き継ぐ方法はないのでしょうか
348:デフォルトの名無しさん
21/01/31 14:05:10.94 WjHCKOmN.net
いろんな見解があってややこしいから、安全側に倒して「_で始まる名前は一切使うな」でいいと思ってる
コンパイラ実装するような奴以外はそれで困らんやろ
349:デフォルトの名無しさん
21/01/31 14:10:22.05 gXTMTlGe.net
【HOW】予約済みの席に座る方法【TO】
350:デフォルトの名無しさん
21/01/31 14:15:41.43 WjHCKOmN.net
>>347
using Aitem = std::pair<int, A>;
using Aqueue = std::priority_queue<Aitem>, std::vector<Aitem>, [](const Aitem& lhs, const Aitem& rhs){ return lhs.first < rhs.first; }>
Aqueue your_queue;
351:デフォルトの名無しさん
21/01/31 14:54:17.91 bSEeGU13.net
>>345
ファイルスコープとローカルスコープは違うよ。
あと、今議論中なのはアンダースコアひとつで始まるメンバ変数についてなんで、アンダースコアの連続がアウトなのは誰でも知ってるし、餃子も324で書いてる
352:デフォルトの名無しさん
21/01/31 15:06:11.72 gXTMTlGe.net
盛 り 上 が っ て ま い り ま し た ↑
353:デフォルトの名無しさん
21/01/31 15:07:16.87 gXTMTlGe.net
SRELLって知ってますか?
354:デフォルトの名無しさん
21/01/31 15:15:54.45 ZnRwde8F.net
>>351
undersocre で始まる識別子は、Cの仕様ではこうなっています:
「All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
「undersocre で始まる識別子はfile scopeでは使用してはいけない」
とは言っておらず。
「undersocre で始まる識別子はfile scopeの識別子として使用される
ことが予約されている」
と言っています。
with file scope
の前置詞がなぜ in ではなく with になっているかは私には分かりかねますが、
その直後にも in が使われているので in が二重に使われるのを避けたのかも
知れません。
355:デフォルトの名無しさん
21/01/31 15:18:08.68 gXTMTlGe.net
inを踏むとか言ってみたくなるじゃないか。
責任とれ。
356:デフォルトの名無しさん
21/01/31 15:18:17.21 ZnRwde8F.net
どうやら、
「identifiers with file scope」は、「ファイルスコープを持つ識別子」
であり、with は、「持つ」の意味で使われているようです、。
357:デフォルトの名無しさん
21/01/31 15:41:47.21 bSEeGU13.net
>>354
予約されてるとはつまり使うなってことだけど、いずれにせよファイルスコープの話であって、ローカル変数の話じゃないよ。
358:デフォルトの名無しさん
21/01/31 16:03:58.33 fCVb5Gn/.net
>>346
#define a(x) { int z = 1; z = x * 2; printf("%d",z);}
int y = 5; a(y);
int z = 5; a(z);
これと何が違うの?
下線で始まることとは無関係だろ
359:デフォルトの名無しさん
21/01/31 16:08:45.08 q0ry4PhJ.net
STLコンテナの継承ってしない方が良いんですかね?
たとえばarrayに機能を追加 ([i][j] で i 行 j 列の要素を取得する等) して行列クラスを作りたいとき、
・arrayを継承する
・行列クラス内で要素を格納するメンバを array として持つ
の2パターンが考えられますが、皆さん的にはどっちが好ましいですか?
行列 is an array なので今こそ継承の使いどころだと思ったのですがいかがでしょうか
360:デフォルトの名無しさん
21/01/31 16:16:47.40 WjHCKOmN.net
arrayは仮想デストラクタ持ってないからポリモは出来ない
データ構造使うだけなら必要ない
やめとけ
361:デフォルトの名無しさん
21/01/31 16:20:57.91 NgKJGEE4.net
かか関数型マクロなら不用意に定義されていても
int y = (a)(x)
という書き方おすれば問題無くマクロじゃない関数a()の方が呼ばれるので問題無い!
事前に
typedef double a;
とかされていた場合は知らんが、
362:デフォルトの名無しさん
21/01/31 16:21:36.60 2wqasnUt.net
好きにしたら?
C++なんて自己流全開で俺スゲーしてなんぼ、他人の顔色伺ってたらダメ
行列なんてプロダクションではどうせ出来合いのライブラリ使うんだし
363:デフォルトの名無しさん
21/01/31 16:22:25.80 q0ry4PhJ.net
>>360
じゃあメンバとして要素(array)を持てば良いってことですよね?
[]の定義の仕方はわかるのですが、[][]ってどうやって定義するんでしたっけ?
364:はちみつ餃子
21/01/31 16:27:00.30 +XHxoAeu.net
>>363
直接には出来ない。 (二引数を受け取れるようにしようという提案はある。)
operator[] を持つ別のクラス (のオブジェクト) を返すという形で実装する。
365:デフォルトの名無しさん
21/01/31 16:27:38.50 X7lGC0go.net
case by case だろうけど
Array と Matrix に関してなら
直観的に考えると後者かな
継承する意味が無い
366:デフォルトの名無しさん
21/01/31 16:30:29.11 X7lGC0go.net
[][][]だと3引数になるの?
[][][][]だと4引数になるの?
って疑問が出るので
operator[] を持つ自分自身のクラス (のオブジェクト)が正解だと思う
367:デフォルトの名無しさん
21/01/31 16:31:13.60 NgKJGEE4.net
std::array<std::vector<double> > x;
みたいな
368:デフォルトの名無しさん
21/01/31 16:32:01.22 NgKJGEE4.net
ジャグ配列になってしまう…orz
369:デフォルトの名無しさん
21/01/31 16:32:06.68 fCVb5Gn/.net
継承といえば
type_infoは仮想デストラクタ持ってるけど
派生クラス作ったやついる? 実験でなく
370:デフォルトの名無しさん
21/01/31 16:34:24.04 ZnRwde8F.net
>>358
命名規約に従って変数名をつけていれば、>>346のマクロはバグらない。
一方、>>358のマクロは、命名規約に従って合法的に定義されたローカル
変数zに対して使ってもバグる。
その違い。
371:はちみつ餃子
21/01/31 16:34:43.94 +XHxoAeu.net
>>366
operator{] にこだわらずに要素にアクセスするメンバ関数を用意するのでもそんなに困らない。
見栄えだけの問題。
まあ見栄えも大事なんだけど。
372:デフォルトの名無しさん
21/01/31 16:36:28.41 ZnRwde8F.net
>>357
そうではなく、_xxx は、グローバル変数で使うことが予約されているので、
ローカル変数では使ってはならない、と読み取れるように思う。
373:デフォルトの名無しさん
21/01/31 16:38:11.57 q0ry4PhJ.net
>>366
すみません。どう書いたら良いのか分かりません
[]は
int& operator [] (int i) {return elem[i];}
みたいな感じですよね?
374:デフォルトの名無しさん
21/01/31 16:43:15.04 fCVb5Gn/.net
>>370
そのためにinlineとconstexprが用意されてるわけだが
なぜマクロで作らなければならないんだ?
どこぞのOS屋がmaxなんてクソマクロ作ってたせいで
みんな迷惑してたよな
375:はちみつ餃子
21/01/31 16:45:04.61 +XHxoAeu.net
>>372
ファイルスコープで予約されている名前とローカル変数で名前がかぶっても
単にシャドウされるだけなので衝突しない。
ローカル変数名として使うべきでないという理由にならない。
376:デフォルトの名無しさん
21/01/31 16:51:19.01 ZnRwde8F.net
>>370
[補足]
マクロ引数が二重に評価されてしまうのを防ぐため、マクロ作者が
気を利かせたつもりで次のようなマクロを書いたとする:
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
作者の意図としては、
char *ptr1, *ptr2;
b(*ptr1++, *ptr2++);
のような場合にも正しく動作するようにしたいということで、
この場合は、*ptr1++, *ptr2++ は、それぞれ1回ずつ評価されるので、
ptr1, ptr2 は、それぞれ 1ずつ前に進むので、アプリ作者の意図を
組むことが出来る。
一方、使う側が命名規約に従わず、アプリのローカル変数で_x,_yを定義し、
int _x=1;
int _y=2;
b(_y,_x);
とすると、このマクロは誤動作し、
int x=1;
int y=2;
b(y,x);
と書いたときと結果が変わってくる。
377:デフォルトの名無しさん
21/01/31 16:55:15.98 wwbd/Qx2.net
こういうクソしょーもない話って馬鹿でも理解できるから盛り上がるよね
378:デフォルトの名無しさん
21/01/31 16:57:55.61 ZnRwde8F.net
>>375
まあ、そうなんだけども、多分、英語の意味をそのまま素直に汲み取れば、
単純に>>372の意味のはず。
またそれは>>376のような状況を防ぐことが出来る。
>>374
まあ実際それはそういうこともあることは有るが、マクロでしか書けないような
例もあるわけで、>>376のようなマクロ作者のせっかくの配慮が、命名規約
を破って書かれたアプリでは逆効果になってしまうことがある。
379:デフォルトの名無しさん
21/01/31 17:00:34.53 ZnRwde8F.net
[補足]
なお、Cの伝統だと、
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
ではなく、
#define b(x,y) do {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } while(0)
と書く。
こうしておくと、このマクロを{}ブロックを伴わないif文に書いたときに異常動作
をしない。
380:はちみつ餃子
21/01/31 17:08:36.84 +XHxoAeu.net
>>378
素直に読めばグローバルスコープで予約されているものは
グローバルスコープで予約されているという意外の意味を読み取ることは出来ない。
そこからローカル変数も制約されるという主張が出てくる理由が不在なんで、
何を言うてんのやろ……? ってなるわけ。
381:デフォルトの名無しさん
21/01/31 17:11:34.77 ziXVeJXQ.net
>>350
in instantiation of function template specialization ... requested here
というエラーが出ます
382:デフォルトの名無しさん
21/01/31 17:14:33.59 fCVb5Gn/.net
>>376
だから二重評価が問題になるようなことをマクロでやるなって
その例だってinlineで書けるだろ
邪道なやり方を保護するために
本筋が迷惑を被るのは本末転倒だ
383:デフォルトの名無しさん
21/01/31 17:15:05.39 ZnRwde8F.net
>>380
「All identifiers that begin with an underscore are always reserved
for use as identifiers with file scope in both the ordinary and
tag name spaces.」
「file scopeを持つ識別子として使用されるために予約されている」
だべ?
block scopeを持つ識別子として使用されたら、話がおかしいと思うが。
「この自動車は、仕事で使うために予約されています」
の場合、その自動車を私用で使えば、規則違反だよね。
384:デフォルトの名無しさん
21/01/31 17:15:45.54 fCVb5Gn/.net
int _x; //こんなのがあっても
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } //ブロックスコープで保護されるだろうが
385:デフォルトの名無しさん
21/01/31 17:19:07.49 ZnRwde8F.net
>>382
でも、_ が最初に来る名前をアプリが使っちゃいけない、というのは伝統的にそういう
ことが一番の目的だと思うぞ。
もう一つは、コンパイラの内部でこっそり使う場合があって、それと知らないうちに
衝突する可能性が僅かにあるため。
なぜこっそり使うかと言うと、絶対に衝突しないようにコンパイラ側を
書こうとするとコンパイラ作りに手間がかかるから。
もし、アプリ側が命名規約を守ってくれていれば、コンパイラ作りが楽になる
ことがある。
386:デフォルトの名無しさん
21/01/31 17:20:06.45 ZnRwde8F.net
>>384
b(_y,_x)
と書いたらどうなるか考えてみたらしだんご。
387:デフォルトの名無しさん
21/01/31 17:25:17.52 fCVb5Gn/.net
>>385
おまえさんはコンパイラ屋か?
そうだとして同業者は__builtin_va_argのように注意深くやってるぞ
自分らのエゴのために客に制限をかけるようなことを
でかい声で叫びまくるのはやめてくれ
388:デフォルトの名無しさん
21/01/31 17:30:48.87 ZnRwde8F.net
>>387
まあ、本当はコンパイラ内部でこっそり使う場合、絶対に衝突しないような
もっと変な名前を使っているから大丈夫なんだ。
起動時の TickCounter の値を変数名の一部に入れたりとかね。
389:デフォルトの名無しさん
21/01/31 17:37:15.73 2WBeknRq.net
>>383
ローカルスコープで同じ名前の別変数を定義するのは「その自動車を私用で使う」ことには当たらないって言ってるの
390:デフォルトの名無しさん
21/01/31 17:42:24.07 /1NNOLNs.net
ヘッダーファイルに書くか、ソースファイルに書くかの違いも大きい。
ヘッダーファイルに書くときは名前衝突に対する細心の注意が必要。
391:デフォルトの名無しさん
21/01/31 17:45:15.36 fCVb5Gn/.net
>>386
{int _x=_y; int _y=_x; f(_x,_y); g(_x,_y); }
どうなるって言いたいんだ?
392:デフォルトの名無しさん
21/01/31 17:51:16.48 /1NNOLNs.net
C/C++の場合、スコープだけ意識するのは不十分で、ヘッダーかソースかで厳格さを変える柔軟性が必要。
ヘッダーに書くと影響範囲が大きいから。
393:デフォルトの名無しさん
21/01/31 17:57:13.23 fCVb5Gn/.net
テンプレートなんか普通にヘッダに内容全部を書くが
マクロでバカやるやつがいなければ平和だよ
394:デフォルトの名無しさん
21/01/31 17:58:49.95 A8yllSCF.net
ローカルスコープでも _x が禁止だというなら >>346 のマクロ a 定義内で _x を使っていい理屈もわからんよな。
395:デフォルトの名無しさん
21/01/31 18:55:26.91 gXTMTlGe.net
std::pair<>を継承してquadを作る場合どうなりますか?
396:デフォルトの名無しさん
21/01/31 18:58:05.19 gXTMTlGe.net
std::regexが意外と使える子に成長してますが、標準化委員会では捨て去る提案まで出てるそうで。
397:デフォルトの名無しさん
21/01/31 19:37:14.68 /1NNOLNs.net
std::regexはプロパティが貧弱なので結局、従来の正規表現ライブラリ使う羽目になる。
std::regexと互換性のあるインターフェースを持つ正規表現クラスを提供するよう呼びかけるのが現実的。
398:デフォルトの名無しさん
21/01/31 19:51:04.44 vFnk+kXo.net
順序付き pair って自分で順番に格納するのと2要素のsetにするのどっちが良いですか
399:デフォルトの名無しさん
21/01/31 20:39:53.24 /1NNOLNs.net
pairはSTLのアルゴリズムの恩恵を得るための物。
自宅の郵便受けを豪華にしたところで、郵便事業には何の関係もない。ただの趣味の世界。
400:デフォルトの名無しさん
21/01/31 21:08:09.18 vFnk+kXo.net
set< pear<int, int> > で、ある数を含む pear を高速に検索する方法ってある?
401:デフォルトの名無しさん
21/01/31 21:47:36.00 jyYnHelr.net
set<int, vector<pair<int,int>*>>
元の集合に1億個程度のペアが入ってるとすると、住所録めいたものをあらかじめ生成しておく
配列でやっても速そう
list[m].empty()
こういうリストで空っぽかどうかわかればいいわけだ
vector<vector<pair<int,int>*>>>;
それならドでかい二次元配列に入れた方がラクかもしれない
連想配列でも出来る
map<int ,vector<pair<int,int>*>>>
静的な話だったが動的つまり追加と検索が交互に起こるとおそらく話は違ってくる
全部試して早かったモンが高速である、程度の他愛ない結論に落ち着く
402:デフォルトの名無しさん
21/01/31 22:01:19.63 gvpDZJRs.net
構造体にしろよバカども
読みにくいだろ
403:
21/01/31 22:54:08.94 wKQ2AmTw.net
>>333
>>339
では _x ではなく x_ にしようっかな‥‥
404:デフォルトの名無しさん
21/01/31 23:01:41.96 eyFvwlDf.net
googleスタイルガイドはそちらを推してるな
405:デフォルトの名無しさん
21/02/01 01:17:42.16 FSry25xS.net
>>391
int _x=_y;
int _y=_x;
ここの二行目の右辺の_xは、b(_y,_x)の第二引数の_xではなく、一行目
で宣言した_xになっているので、b(_y,_x)の第一引数の_yになる。つまり、
int _x=引数の_y;
int _y=引数の_y;
となるので、{}の中の_x, _yは、どちらも引数の_yの値に等しくなってしまう。
これではマクロ作者が意図したことではなくなってしまう。
406:デフォルトの名無しさん
21/02/01 01:19:32.38 FSry25xS.net
>>394
まあ、それはもっともな指摘なのだが、アプリ本体では使用禁止で、
マクロでは使用可能と勝手に解釈してしまうのが一つの流儀。
407:デフォルトの名無しさん
21/02/01 01:22:56.68 FSry25xS.net
>>389
そうではなくて、ローカルスコープで使うことそのものが、file scope
で使ってないことに当たるので、規約違反と言うことになると解釈できる
気がするんだ。
なぜそんなルールにしたのかは分からんがな。
408:デフォルトの名無しさん
21/02/01 03:22:30.15 fw9rYrIy.net
>>405
残念だったね。インライン関数使おうね。
>>406
あなたの流儀を規格の定めであるかのように話すのは迷惑なのでやめてくださいね。
>>407
file scope で予約されてる名前を file scope で使ってないなら問題ないね。
規約違反などという解釈にはならない。気のせい。そんなルールになってない。ってことで終われよ。
409:デフォルトの名無しさん
21/02/01 07:01:58.51 v6ebtUL1.net
>>400
unordered_map<int, int>
410:デフォルトの名無しさん
21/02/01 07:30:17.18 LhepLs74.net
>>406
マクロ定義内の仮引数名は当のマクロ定義外の何者とも関係しないのでは…
いわゆる束縛変数
411:デフォルトの名無しさん
21/02/01 07:38:30.21 LhepLs74.net
として安全に取り扱われる
一方>>346の_xはa(x)が展開された結果が他のプリプロセッサ定義で再置換され得るなら危険
これが起きるかはプリプロセッサの仕様(規格)を見たら白黒付くが
個人的には君子なので危うきには近づかないことに死体、
412:デフォルトの名無しさん
21/02/01 08:09:47.67 v6ebtUL1.net
うちの若いのがあんなアホマクロ書いてたら張っ倒す
まあ、やらかしそうなのはいないけど
413:デフォルトの名無しさん
21/02/01 09:26:53.82 5yr9aQzL.net
>>346
そもそもそのマクロで生成される変数はファイルスコープでないから、そもそも問題外では?
仮にファイルスコープな変数を宣言するようなマクロでも、ユーザが意図せず
414:デフォルトの名無しさん
21/02/01 11:43:32.41 xFB8fPis.net
仕事に情熱が持てなくなった
415:デフォルトの名無しさん
21/02/01 11:43:38.91 VhfMLcQM.net
>>346
アホだ
416:デフォルトの名無しさん
21/02/01 12:06:54.06 ZelzH3+k.net
>>414
コロナの影響だろな。
福島大爆発の影響も計り知れない。
「原爆ぶらぶら病」で検索してください。
417:デフォルトの名無しさん
21/02/01 12:30:15.68 jyRtFT93.net
>>408
>file scope で予約されてる名前を file scope で使ってないなら問題ないね。
そうじゃない。
英語原文を読めば、file scopeで予約されているのではなく、file scopeで
使用するために予約されているのだ。
だから、file scope以外で使用することが禁止されている。
418:デフォルトの名無しさん
21/02/01 12:32:18.30 jyRtFT93.net
>>417
日本語で言うなら、「file scope 専用」。
419:デフォルトの名無しさん
21/02/01 12:46:40.95 /T40sBmV.net
>>414
ちゃんと飯を食え。
週末はちゃんち休め。
年10日は連続した休暇をとれ
420:デフォルトの名無しさん
21/02/01 12:55:04.41 ioMwojjO.net
>>417
その一文ばっかりやたらこだわるけど
これが属しているセクションの名前って「17.4.3.1.2 Global names」なんだわ
グローバル名前空間の名前以外については言及してないの
ドラフトならインターネットで無料で見られるんだからこの辺の全容見てきな?
421:デフォルトの名無しさん
21/02/01 13:14:13.18 Z79JHlVc.net
>>417
あらゆる場所で使ってはいけないのなら、7.1.3でわざわざ1つ目と対比させるように使用用途を限定して記載した理由を説明してよ。
普通はコンパイラ実装者のために予約されている、だけで十分でしょ
422:デフォルトの名無しさん
21/02/01 13:45:48.95 fos4FOVO.net
仕事に情熱が持てなくなった
423:デフォルトの名無しさん
21/02/01 13:50:50.97 jyRtFT93.net
URLリンク(www.learncpp.com)
Second, you should avoid naming your identifiers starting with an underscore, as these names are typically reserved for OS, library, and/or compiler use.
424:デフォルトの名無しさん
21/02/01 14:08:01.06 fos4FOVO.net
>>373
obj& operator [] (int i) {return elem[i];}
もちろんelem[]の定義はobj elem[];
obj.shape() も実装すると便利
425:デフォルトの名無しさん
21/02/01 14:13:00.08 fos4FOVO.net
>>416
「コロナでゴロゴロ病」
426:デフォルトの名無しさん
21/02/01 15:47:43.70 Z79JHlVc.net
>>423
そのサイトを紹介して何の証明になるの?
427:デフォルトの名無しさん
21/02/01 16:16:30.24 ZelzH3+k.net
>>426
URLリンク(isocpp.org)
428:デフォルトの名無しさん
21/02/01 16:22:14.79 ZelzH3+k.net
C++ is the only real language for expert developers.
429:デフォルトの名無しさん
21/02/01 16:55:19.50 fos4FOVO.net
C/C++は好きだし比較的最強の部類だと思うけど
夢未過ぎは判断を誤るから色んな言語を適材適所に使えるようになるのが理想
430:デフォルトの名無しさん
21/02/01 17:40:26.58 LhepLs74.net
システム記述言語はアセンブラを除けばこの世にCとC++とRustしか、
431:デフォルトの名無しさん
21/02/01 17:46:42.82 ZelzH3+k.net
中国人のありがたいお言葉ですぞ。
432:デフォルトの名無しさん
21/02/01 18:02:36.06 jyRtFT93.net
大体、この板には中国人や韓国人はほとんど来ず、来ているのはアメリカ人
やヨーロッパやアフリカが多いらしい。
433:デフォルトの名無しさん
21/02/01 18:44:36.44 +21BJdPm.net
いやrustが最強でしょww
434:デフォルトの名無しさん
21/02/01 18:47:23.23 CDWd/LQ7.net
Goは駄目なん?
435:デフォルトの名無しさん
21/02/01 18:57:50.94 0s4gr52A.net
自作の構造体をsetに入れたいときって operator < さえ定義しとけば良いの?
eraseとかは全部のメンバが同じものを見つけて消してくれると思って良い?
436:デフォルトの名無しさん
21/02/01 21:08:59.66 ZelzH3+k.net
検索するとひろみをお勧めしてくる時点で無理だった。
437:デフォルトの名無しさん
21/02/01 21:34:17.50 ZelzH3+k.net
しかもチップも取るんかーい!
438:デフォルトの名無しさん
21/02/01 22:43:42.23 CtNYZU7D.net
>>435
erase含め、同値性は!(a<b)&&!(b<a)で判定される
全メンバ一致で同値とみなしたいなら辞書順比較する比較関数を定義すればよし
439:デフォルトの名無しさん
21/02/01 22:46:24.33 FbSt8IWH.net
演算子オーバーロードは地雷度高い。
440:デフォルトの名無しさん
21/02/01 22:53:14.56 CtNYZU7D.net
まあ、setに入れるためだけなら演算子オーバーロードするより関数オブジェクト使う方がいいかね
441:デフォルトの名無しさん
21/02/01 23:03:45.93 f9q1oLiO.net
C++の質問じゃないとは思うんですが、上位数ビットを0で埋めたいといった場合は
「0埋めしたいビットを0、他を1にしたもので&演算する」
であってますか?
442:デフォルトの名無しさん
21/02/01 23:11:37.27 ZelzH3+k.net
合ってます。
443:デフォルトの名無しさん
21/02/01 23:17:45.03 f9q1oLiO.net
>>442
ありがとうございます
今までは例えばQWORDの上位3バイトを0埋めしたいってとき(value << 3*8) >> 3*8って言う2命令使う馬鹿な方法でやっていました・・・
444:デフォルトの名無しさん
21/02/02 02:08:00.00 DmcXRB7X.net
へ椅子ブックが少し綺麗になってます。
445:デフォルトの名無しさん
21/02/02 02:10:27.05 DmcXRB7X.net
RedditのC++コミュは17万人、オンラインが500人以上。
凄いね。
446:デフォルトの名無しさん
21/02/02 10:17:10.33 uFATDe77.net
ビット演算の中で最速なのってシフトじゃなかったっけ?
だから下手したら>>443の方がフェムト秒レベルでは微妙に早いんじゃない?
447:デフォルトの名無しさん
21/02/02 10:29:21.33 kGc73xZq.net
命令語長がマスク分だけでもQWORDに対して、シフトなら1バイト程度か
448:デフォルトの名無しさん
21/02/02 12:37:23.36 vWAdhQ36.net
>>446
CPUの世代やアーキテクチャによって違うが、
Latencyが、Shiftの方がandより少し遅いことがある。
449:はちみつ餃子
21/02/02 12:49:48.88 +MtixY9O.net
>>434
Go は GC が前提にあるから少し制約が強いけども、
OS のカーネルを書くのでもない限り思ったより足かせにならないという評価はあるみたいだね。
450:デフォルトの名無しさん
21/02/02 13:08:50.07 aIAA0dxH.net
Goはクソすぎるから駄目だ
何が駄目といってまず名前が駄目
451:デフォルトの名無しさん
21/02/02 13:45:57.34 8HFbTrXI.net
GoはPC初心者用
昔でいういわばBASIC
452:デフォルトの名無しさん
21/02/02 18:03:08.15 FSwj4KRK.net
バレルシフタと単純ゲート
レイテンシも糞もねえだろ
453:デフォルトの名無しさん
21/02/02 18:11:36.53 8HFbTrXI.net
でもその縛りプレイが大好きな変人も居る
454:デフォルトの名無しさん
21/02/02 22:23:15.74 likaPPB8.net
operator ==も定義しておくとなお良い
==のために<が2回呼ばれるのもアホらしいと感じるはず…
結局std::rel_opsを使って全部定義するという結論に落ち着く
455:デフォルトの名無しさん
21/02/02 22:25:04.30 likaPPB8.net
インテルのやつはバレルシフタじゃない気配がする…
シフト結果をテーブル化した方が速かったことg
456:デフォルトの名無しさん
21/02/02 22:28:35.48 likaPPB8.net
あるいは最大限バレルシフタにしようとしているがパイプライン1段に収まっていないだけかもしれん…
457:はちみつ餃子
21/02/03 00:25:34.21 p0NvFN6a.net
>>443
gcc, clang, msvc で最適化最大で試してみたら and をとるように最適化されたぞ。
主要コンパイラがそのように最適化するということは (前後の状況によるかもしれないけど)
たぶん and のほうが効率的ってことなんだろう。
458:デフォルトの名無しさん
21/02/03 00:38:50.10 53EFMpkm.net
ビットシフトは64bit整数でのコンパイラ解釈が信用できないからAND演算子使うのが確実だと思うけどどうかな。
459:デフォルトの名無しさん
21/02/03 00:51:08.70 5b6XJ+8s.net
>>458
落ち着いてよく考えてみよう
お前がC++で作った成果物のうち、お前自身が書いたコードの割合なんてごくごく僅かに過ぎない
仮にそんなレベルで互換性が当てにならないような環境があったとして、お前が直接書いていない他の99%のコードがまともに動くと本気で思うか?
460:はちみつ餃子
21/02/03 00:54:51.58 p0NvFN6a.net
0xffffffffff とか書いてたら桁数を正しく書けてるか不安になる……
今の C++ だと桁区切りも入れられるけど、
どう入れたら意図がわかりやすいかようわからんし、
シフトで表現するのもありな選択だと思う。
461:デフォルトの名無しさん
21/02/03 01:01:02.57 +m9V7fCu.net
>>458
具体例をお願いできますか?
462:デフォルトの名無しさん
21/02/03 01:20:23.24 53EFMpkm.net
コンパイラがちゃんと32bit整数への丸め警告を出してくれるならいいが、しれっとコンパイルされたらお手上げ。
463:デフォルトの名無しさん
21/02/03 02:47:38.99 +m9V7fCu.net
>>462
丸めって暗黙の型変換のことですか?
シフト演算は特に関係しないと思いますが……
464:デフォルトの名無しさん
21/02/03 06:01:31.58 QcjMAifW.net
>>460
0x0000'ffffull
465:デフォルトの名無しさん
21/02/03 06:29:42.77 y3dS6mbz.net
unsigned long long x = (0x1ULL << 32) - 1ULL;
ならちゃんと動く(と思う)が
unsigned long long x = (0x1 << 32) - 1;
とかだとイマイチ不安が…
466:デフォルトの名無しさん
21/02/03 06:38:54.06 Nl+WsQpo.net
>>465
下の方はイコールの右辺にintしか出てこないのだから、intが32bitの環境なら32bitでしか計算されないだろう
467:デフォルトの名無しさん
21/02/03 10:23:38.02 q8Ed7guF.net
丸めと暗黙の型変換は違うものでは?
468:デフォルトの名無しさん
21/02/03 11:47:09.95 HtH84Poo.net
丸めや打ち切りは浮動小数点数の概念やね
469:デフォルトの名無しさん
21/02/03 13:02:19.58 53EFMpkm.net
ビットシフト記述は自然すぎてソースコードに埋もれてしまう。
64ビットマスクのAND記述は見た目がどぎついので、かえって人間の注意を引くことができる。
470:デフォルトの名無しさん
21/02/03 14:45:43.48 J722wycU.net
なにいってんだこいつ
471:デフォルトの名無しさん
21/02/03 15:50:32.48 pE1foWCw.net
>>465
やっぱり、32BITの時が一番プログラミングし易かったな。
64BITになると、64BITと32BITを区別して書く必要が出てきて、
書くのが面倒になった。
472:デフォルトの名無しさん
21/02/03 19:12:23.88 XaYGR0Wv.net
そう?ポインタサイズくらいしか違いなくない?
473:デフォルトの名無しさん
21/02/03 21:29:02.90 53EFMpkm.net
まじめにC/C++標準型size_tを使っている人には32bitと64bitの処理切り分けが地味に辛い。
474:デフォルトの名無しさん
21/02/03 22:36:28.54 y3dS6mbz.net
>>465の下の方のやつは符号拡張されたりする気がするorz
475:デフォルトの名無しさん
21/02/03 22:40:25.83 Ea4RwHR/.net
>>424
> obj& operator [] (int i) {return elem[i];}
> もちろんelem[]の定義はobj elem[];
objは行列クラスで、elemはobjのメンバで行列要素を格納する一次元配列、で合ってますよね?
class obj{
array<int, ?> elem;
public:
obj& operator [] (int i) {return elem[i];}
};
ということですか?
476:デフォルトの名無しさん
21/02/04 03:22:45.38 R0EDVzG0.net
>>473
size_t は、型名が長いし _ も含んでいるし、打つのが辛い。
それにコードに締める長さも長くなるので画面が狭くなるし。
477:デフォルトの名無しさん
21/02/04 04:17:06.60 SkZt7jTc.net
>>473
まじめに、て別にsize_t使ってたら偉いわけじゃない
サイズを表したいけどいちいち考えたくない場合の選択肢だぞ
478:デフォルトの名無しさん
21/02/04 11:32:06.33 sIhIIpMX.net
size_t型はSTLを使う人なら避けて通れない。
479:デフォルトの名無しさん
21/02/04 11:40:48.70 ZzRKCYY/.net
>>471
それ本来そこにあった問題に気付いていないだけだったと思うぞ
480:デフォルトの名無しさん
21/02/04 11:44:02.03 ZzRKCYY/.net
>>475
class obj{
array<obj, ?> elem;
public:
obj& operator [] (int i) {return elem[i];}
};
481:デフォルトの名無しさん
21/02/04 12:06:17.02 DWE1XJjK.net
>>480
それってarrayのarrayとかvectorのvectorとか配列の配列として行列を作るのと同じですよね?
一次元配列に要素を格納しておいて[][]でアクセスするのは不可能なんでしょうか
row majorやcolumn majorを自由にできる、等の理由でそちらの方が好ましいのですが
482:デフォルトの名無しさん
21/02/04 12:29:12.61 waKgX41w.net
一次元配列を内包しているクラスのoperator[](int y)が、下記のようなクラスを返すようにすればできる。
class Row {
vector<int>& 一次元配列への参照
int 列数
int y
int& operator[](int x){ return 一次元配列への参照[列数*y+x]; }
};
でも自分ならoperator[]は使わずもとのクラスにindex(x, y)みたいな関数を用意して対処すると思う。
483:デフォルトの名無しさん
21/02/04 13:10:42.29 g2cSm/y9.net
malloc とか new で確保したメモリ領域を使うように
vector ( または array ) をインスタンス化するにはどうすればよいですか?
484:はちみつ餃子
21/02/04 13:13:43.37 ttCVH4wp.net
>>481
こういう雰囲気で他のクラスをひとつ間に入れることでなんとかなる。
URLリンク(wandbox.org)
だけど俺も >>482 の言う通り operator[] にこだわらずに適当なメンバ関数でやる方法を推すわ。
実態として二引数なのだし、記法のためだけに余計な定義をするの馬鹿らしいと思う。
提案としては hoge[i, j] みたいな感じで二引数のインデックスを受け取れるようにする案は出てるんだが、
現状ではこのときのカンマは普通にカンマ演算子として解釈される。
前準備として、 C++20 からはブラケット内でのカンマは非推奨にするという変更が入っている。
URLリンク(timsong-cpp.github.io)
485:はちみつ餃子
21/02/04 13:20:29.03 ttCVH4wp.net
>>483
ある時点で確保済みのメモリの上にオブジェクトを構築するには
std::uninitialized_default_construct を使う。
でも std::vector 自体を適当なメモリの上に構築できても
std::vector 内で使うメモリは std::allocator で確保しようとするから、
必要ならアロケータを定義する必要がある。
486:デフォルトの名無しさん
21/02/04 15:40:11.75 R0EDVzG0.net
>>479
いや、全て32BITは、それに全て統一することで速度とメモリ効率と実用性の
バランスが取れていた。
ところが64BITだと実用上、表せる値の範囲はオーバースペックで
変数のメモリに占めるバイト数が8バイトと余りにも効率が悪い。
なので、多くの数値は32BITとし、必要な部分だけ64BITにするという
面倒な選択を強いられる様になった。
アドレスが64BITなので、それを整数型に入れるためには32BITの整数では
不足するので引きつられて整数も64BITを必要としがちになり、大混乱
が生じている。
(また、メモリーもアドレスを32BITより多くを必要とするアプリは非常に稀。)
487:デフォルトの名無しさん
21/02/04 16:48:02.49 DWE1XJjK.net
>>482
ありがとうございます
ストラウストラップの「プログラミング言語C++」に「行列クラスの設計」なるセクションがあったのを覚えてるので、そちらではどうしていたかも見てみます
488:デフォルトの名無しさん
21/02/04 17:07:22.68 dB2jWvbu.net
unique_ptr<Hoge[]> p(new Hoge[4]{a, b, c, d});
みたいな定義と同時に代入は出来るのですが
(各要素毎に Hoge(a), Hoge(b), Hoge(c), Hoge(d) になりました)
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
だと引数無しのデフォルトコンストラクタが無いといけないし
(そもそも引数無しのデフォルトコンストラクタ作りたくない)
unique_ptr<Hoge[]> p = make_unique<Hoge[]>({a, b, c, d});
とか
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4){a, b, c, d};
とかはコンパイル出来ませんでした
引数無しのデフォルトコンストラクタがあれば
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
p.reset(new Hoge[4]{a, b, c, d});
だとうまく逝きますが効率が悪い気がします
make_unique は使ってはいけないのでしょうか?
489:デフォルトの名無しさん
21/02/04 17:51:26.68 b9gCdorg.net
>>487
485も見てねー
490:デフォルトの名無しさん
21/02/04 17:52:07.72 b9gCdorg.net
まちがえた。484
491:デフォルトの名無しさん
21/02/04 20:56:33.92 ZyzsEROR.net
配列のunique_ptrは色々と中途半端で使いづらいからオススメしない
492:デフォルトの名無しさん
21/02/04 22:14:32.91 b9gCdorg.net
>>488
unique_ptr<Hoge[]> p;
p.reset(new Hoge[4]{a, b, c, d});
でよいのでは?
493:デフォルトの名無しさん
21/02/04 22:20:26.07 un3OWVjy.net
>>486
32bitアプリでも今どきなら64bit整数を使える処理系は多いだろ
そもそもアドレスを整数型に入れるっていつの時代の人よw
494:デフォルトの名無しさん
21/02/04 22:47:34.63 /RiZUiBF.net
>>493
アドレスを整数に入れるのは過去の話じゃないぞ
495:デフォルトの名無しさん
21/02/04 22:51:09.67 sIhIIpMX.net
intptr_t整数型を使ってたのっていつの時代?
496:デフォルトの名無しさん
21/02/04 23:24:48.23 hMfhfQWp.net
uintptr_tならいつもお世話になっております
497:デフォルトの名無しさん
21/02/05 00:01:41.63 NIkVqohR.net
この手合いのボケを量産するのはC++の害だな
498:デフォルトの名無しさん
21/02/05 01:35:15.82 EB7VAtvO.net
むしろCの害
499:デフォルトの名無しさん
21/02/05 01:52:47.05 xbM9VFWh.net
Rubyって結局勉強しないままPythonの時代になってしまったな
500:デフォルトの名無しさん
21/02/05 04:42:48.12 ZuGfyZDY.net
同様にC++を勉強しないままRustの時代になる
501:デフォルトの名無しさん
21/02/05 09:51:39.70 U76qOqQA.net
>>488
URLリンク(www.it-swarm.jp.net)演算子よりもstd-makeuniqueを使用する利点/826350881/amp/
URLリンク(ja.stackoverflow.com)の利点
502:デフォルトの名無しさん
21/02/05 13:28:24.98 ou/gU5gH.net
c++やらずにrustとか馬鹿量産するだけにしか思えんな。
503:デフォルトの名無しさん
21/02/05 14:10:32.07 Xzu/prlh.net
それ言ったらノーコードがどうたら言ってる奴らはもっとやばそう
504:デフォルトの名無しさん
21/02/05 14:17:08.86 M7C1cdPI.net
ノーコードていってノードツリーみたいなのでフロー管理するやつ
よくゲーム系ツールにありがちだけど、サンプルみたいな単純な処理ならともかく
こみいったフローになってくるとノード間の接続線がものすごいことになって
とても管理しようという気になれない、まさに見た目どおりのスパゲティプログラムに
505:デフォルトの名無しさん
21/02/05 14:18:44.73 ou/gU5gH.net
>>503
それはもう50年くらいずっとそうだろ。
ノーコードとか逆に俺様言語作ってるのとほぼ変わらん状態にしかならんという
しょーもない展開しか見たことない。
506:デフォルトの名無しさん
21/02/05 15:14:07.00 zImWQG8r.net
VCPKGのupdate、upgradeが常に失敗するんだけど、使えてる人いますか?
小まめにupdateしないからだろか?
507:デフォルトの名無しさん
21/02/05 15:14:37.91 zImWQG8r.net
Goは標準ライブラリが圧倒してる。
508:デフォルトの名無しさん
21/02/05 15:18:44.78 zImWQG8r.net
半年に一度フルビルドみたいになってしまう。
509:デフォルトの名無しさん
21/02/05 16:12:02.35 A9cGRDK5.net
Goは何がクソといってまず名前がクソ
510:デフォルトの名無しさん
21/02/05 16:36:26.85 zImWQG8r.net
C++は基本だから、義務教育で習得するべき。
511:デフォルトの名無しさん
21/02/05 16:50:43.11 /MNAnFTn.net
言語仕様がでかすぎるからC言語で精一杯
オマケで紹介される程度かな
512:デフォルトの名無しさん
21/02/05 18:21:14.28 7P5D6x+s.net
>>505
昔はアセンブラすら触れない奴がC言語とか笑わせるなとか真顔で言う人がいたんだぜ。
別に仕事ができるのならRustでもPythonでも何でもいいと思うぞ。
513:デフォルトの名無しさん
21/02/05 19:09:46.26 AjJLCZml.net
仕事ができるのならw
514:デフォルトの名無しさん
21/02/05 20:48:06.29 ou/gU5gH.net
>>512
仕事ができるならなw
できないカスがクソみたいなもん押し付けてくるから文句が出るんだよ。
rustでもpythonでもまともなコード書いてりゃ文句はないわ。
まともじゃないから文句が出る。
515:デフォルトの名無しさん
21/02/05 21:49:13.85 a81hUa+F.net
というか、プログラマとしてrust(鉄さび、腐食)になるというダブルミーニングを狙ったんだと思うけど。
516:デフォルトの名無しさん
21/02/05 21:59:53.11 kFtfKVND.net
お前らってド素人のくせになんでいっちょまえの口利くん?
それって不思議だわ
517:デフォルトの名無しさん
21/02/05 22:34:33.49 EB7VAtvO.net
Rustの名前は金属の錆じゃなくてサビ菌が由来
518:デフォルトの名無しさん
21/02/05 22:36:07.20 NIkVqohR.net
Rottenでいい
519:デフォルトの名無しさん
21/02/05 22:48:47.57 a81hUa+F.net
Perl6はRakuになってしまったし、Rustもいずれ「わびさび」の境地でSabiに改名されるでしょ。
520:デフォルトの名無しさん
21/02/06 03:04:22.39 kQVOjfvp.net
「まともなコードが書けるなら」じゃなくて、まともなコードを強制するのがRustという言語の方針だと思うが
521:デフォルトの名無しさん
21/02/06 04:45:05.79 oQfB5lBJ.net
>>284
昔からのプログラミング/電気界隈の慣習だから仕方ないけど、2要素のミニマルなブール代数しか扱わないにも関わらずboolean型を称するのがそもそもキモい
プログラミングで使うような半順序関係は、9割booleanで書くのが一番スッキリする
一般のbool型をプリミティブにして、そこからt/fやら三要素やらに派生するのが合理的に思う
522:デフォルトの名無しさん
21/02/06 04:50:47.70 GfZyzG1j.net
ブーリアン革命。
523:デフォルトの名無しさん
21/02/06 05:13:59.88 oQfB5lBJ.net
革命というか、クラスシステムでブール代数をエミュレートしてるのが現状のOOPじゃないかと
まあ言語によって可補性はマチマチだけど、全てについてスーパークラス/サブクラスなクラスを設けるのは、メインストリームの言語では大体そうだろ
524:デフォルトの名無しさん
21/02/06 07:27:56.30 S9Y30hRK.net
>>520
だとしたら胡散臭さ200%のカルトだな
525:デフォルトの名無しさん
21/02/06 09:31:12.13 rZdEmaWa.net
>>524
Java、Kotlin、Scala、C#、Ruby、Python、PHP
あたりのどれかを触ってみれば、危険な記述を言語仕様レベルで封印することのありがたさが分かる
他言語も触ってみることをオススメする
526:デフォルトの名無しさん
21/02/06 09:34:34.84 5Ze23T9D.net
よくわからんが安全カミソリみたいなものかね?
527:デフォルトの名無しさん
21/02/06 10:10:31.61 rZdEmaWa.net
>>526
そんな感じ
まぁ、C++もマスターすれば危険な記述を避けることはできるんだけど...
プログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う
528:デフォルトの名無しさん
21/02/06 10:11:15.51 S9Y30hRK.net
>>525
ありがとう、おまえさんのレベルの低さがよくわかった
文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな
アプリの内容として良からぬ事を企むという次元には程遠いわけか
529:デフォルトの名無しさん
21/02/06 10:12:54.42 rZdEmaWa.net
>>528
投稿した瞬間の不意打ちレスワロス
530:デフォルトの名無しさん
21/02/06 10:17:55.71 u/OM7jGY.net
>>527
> プログラマーが悪vログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う
>>528
> 文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな
この流れは大草原不可避
531:デフォルトの名無しさん
21/02/06 11:01:19.43 PohEB++t.net
>>504
Unity とか UE はきらい?
532:デフォルトの名無しさん
21/02/06 11:07:09.44 PohEB++t.net
>>509
めっちゃわかります
URLリンク(blog.golang.org)
URLリンク(write.kogus.org)
533:デフォルトの名無しさん
21/02/06 11:09:03.81 gLiOOG5V.net
rustの縛りプレイはマルチスレッドでのメモリ管理のクソ面倒さが原因だろう
534:デフォルトの名無しさん
21/02/06 12:19:39.89 S9Y30hRK.net
>>527
いーや、くだらねえ
プログラマを信頼しない方針はあれもダメこれもダメの制限だらけになるだけだ
おまえさん自身も実社会で職場の誰よりも制限だらけなんだろう
重責を担ったことのないやつは人のせいにすることしか考えねえ
535:デフォルトの名無しさん
21/02/06 12:25:16.36 UXUwo66G.net
それだけ無責任で信頼出来ない人間が多いって事だろ
536:デフォルトの名無しさん
21/02/06 12:31:39.86 58EQLFGq.net
信頼はタダではないからな
バグを流出させたら銃殺ぐらいが妥当
537:デフォルトの名無しさん
21/02/06 12:53:16.04 DutNpJ49.net
>>528
お前のレベルが極めて高いのは分かったが、お前の共同の開発者もお前のようにハイレベルだとは限らない
538:デフォルトの名無しさん
21/02/06 13:19:02.89 Hu1Z4B3S.net
>>534
負け犬の遠吠え
539:デフォルトの名無しさん
21/02/06 13:29:55.66 EjDQT0l8.net
>>460
「(type)~0」でどう?
540:デフォルトの名無しさん
21/02/06 13:32:30.22 TGsCRbLO.net
>>536
ハゲを流出させたら~と空目した
541:デフォルトの名無しさん
21/02/06 13:33:33.54 rZdEmaWa.net
>>538
しー!余計なことを言うんじゃないっ!
542:デフォルトの名無しさん
21/02/06 13:38:49.17 Hu1Z4B3S.net
>>528はスマートポインタを知らなさそう
文章から溢れ出る無能感
543:デフォルトの名無しさん
21/02/06 13:44:48.20 S9Y30hRK.net
構ってちゃんは、スマポ憶えたてらしいなw
544:デフォルトの名無しさん
21/02/06 13:46:38.15 gYQHLnIz.net
天才の俺が書くプログラムは絶対正しいから無駄なバカよけ機能はいらないしテストのような下等なことはしない
って豪語してたいつぞやの天才くんが帰ってきたのかな
545:
21/02/06 13:50:19.96 kbrcRlAn.net
>>544
私は馬鹿なので天才のコードというのがどんなのか凄く興味があります…
546:デフォルトの名無しさん
21/02/06 13:53:43.56 ROiZJzWf.net
コテハンでこの程度の文章も読めないのは
547:
21/02/06 13:55:54.96 kbrcRlAn.net
>>546
そりゃ馬鹿だからでしょう…
548:デフォルトの名無しさん
21/02/06 13:59:04.79 aJ9IYVGP.net
どう考えても誰かさんに対する皮肉なんだよなぁ...
まぁ、荒れるから誰とは言わないけど