X



C/C++の要らない仕様
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2021/10/23(土) 23:44:31.52ID:wRUe/Toi
C/C++は増築に次ぐ増築でとても複雑になり過ぎましたが
要らない仕様を使用禁止にすることで
もっとシンプルで使いやすくなるはず

皆さんそれぞれ色々考えがあると思いますが
これさえ無ければというものを描いて逝け
0007デフォルトの名無しさん
垢版 |
2021/10/27(水) 08:56:57.42ID:Kh6UZqWe
makeなんたら関数とかラムダ式がなかった頃のファンクタはもういらん
あとnewな
exceptionもnested_exceptionのクールさの前にすっかり霞んじまった
0013デフォルトの名無しさん
垢版 |
2021/11/01(月) 14:32:43.32ID:Pe/toaIP
Cの環境構築が荷が重いって・・
80年代から時が止まってんのかよ?
0015デフォルトの名無しさん
垢版 |
2021/11/08(月) 07:32:02.70ID:IKRlrs1W
C++は例外周りがクソ過ぎ
C++11でマシにはなったが
まだまだ全然不十分
あれじゃCのsetjmpにボロ負けだ
0020デフォルトの名無しさん
垢版 |
2021/11/15(月) 10:34:01.74ID:xJpmlO5M
cはそんなに建て増してないだろう、建て増されたc++からシステムプログラミングに本当に必要な物だけ取捨選択してる
atomicの保証されないc11以前のcはシステムプログラミング言語として欠陥品だった、あとはpodさえあればいい

c2xはなんか雲行きが怪しいが…
0021デフォルトの名無しさん
垢版 |
2021/11/16(火) 17:49:09.97ID:ikMftiDM
暗黙のコピーコンストラクタはやめて欲しい
定義されてなかったらエラーの方が嬉しい
0025デフォルトの名無しさん
垢版 |
2021/11/25(木) 03:58:54.44ID:0166A/na
Cは良い
C++自体がいらない

Linusは20世紀の頃からC++は駄目だと言ってた
0026ハノン ◆QZaw55cn4c
垢版 |
2021/11/25(木) 04:14:23.56ID:GVKW9hzJ
>>25
例の GoF が嫌い、というかなんでも GoF でドヤる人が嫌いなだけかと…
C で GoF をやる人は見たことがありません
0028デフォルトの名無しさん
垢版 |
2021/12/01(水) 07:18:21.69ID:dzGTi3xH
他人を蹴散らし、頭脳オリンピックのチャンピオンを目指すような暴れん坊が、
自分にしかメンテできないコードをビルドに組み入れてドヤ顔するのに相応しい言語。
意図的に多重継承を数段重ねで使い、あの手この手で難読化も隙がない。

やがてプロジェクトのメンバーは、彼たった一人だけになった。独り勝ちして残ったのだ。
0030デフォルトの名無しさん
垢版 |
2021/12/01(水) 08:57:47.06ID:dzGTi3xH
決め台詞乙
やはり戦士にピッタリな言語っすね。戦国時代のままでいてソフトウェア後進国なだけある。
戦うことが目的じゃない俺にはもう魅力を感じない言語だ。戦う事が好きな奴同士で競い合ってくれ。
0032デフォルトの名無しさん
垢版 |
2021/12/01(水) 09:56:20.11ID:dzGTi3xH
>>31
高級アセンブラにもなるCはそのままで、オブジェクト指向は他の良質な言語でいいって感じ。
登場時のC/C++はとにかく汚い仕様のプログラミング言語で、異種言語を一つ屋根の下で
同居させただけの、あれもこれも何でも許すマルチスタンダードな言語仕様だったな。

昔、現場でコーディング規約を強制すればPG辞めていくし、緩めれば呪文コードや数百行の関数を
当たり前の顔で書くし、日本語できないPG増えるし、テストしたら正常に動かねーしw など、
マネジメントの仕事を投げ出して逃げたかったんだぜ。メンタル強くなくなって後々逃げたけどw
0033デフォルトの名無しさん
垢版 |
2021/12/01(水) 10:52:30.00ID:t8eOzoR7
どっかで聞きかじっただけの綺麗事の
原理主義者はそいつ自身は空っぽで使い物にならないから
実を取る選択をしたら同調者が多かったのがC
それが気に入らねえやつは要するに排除対象なタイプってことだ
0037デフォルトの名無しさん
垢版 |
2021/12/01(水) 23:50:11.64ID:dzGTi3xH
Object Pascalか・・・
変数オブジェクトの宣言時、型表記を後に付ける点がフランス語文法の形容詞は名詞の後に付けるみたいで
UMLのクラス・オブジェクトの表記法とも相性良さそうだよな。
ただし、begin/endが野暮ったいとか面倒くさいと感じて毛嫌いする人も多いので、{ } 表記を取り入れれば良いのにな。
0039デフォルトの名無しさん
垢版 |
2021/12/24(金) 10:27:18.25ID:NLox1fGs
std::unordered_map<int, char> m;
の宣言ならm[1]のかたちでKey指定すればValueを取得できるのに
const std::unordered_map<int, char> m;
の宣言だとm[1]がコンパイルエラーになるのは設計の敗北感ある
0040デフォルトの名無しさん
垢版 |
2021/12/26(日) 06:30:32.85ID:FmoRv+T4
特定の使い方だけを想定したみっともない関数だね
ヘルパー関数なら他にいくらでも作りようがあるのに
なんであんなゴミにしちまったのか理解に苦しむ
0041デフォルトの名無しさん
垢版 |
2022/01/12(水) 15:33:50.20ID:hptTX/Oy
>>39
mapの[ ]演算子はキーに対応する値が存在しないときに追加する仕様なので、constの時にコンパイルエラーになるのは当然では?
0042デフォルトの名無しさん
垢版 |
2022/02/01(火) 11:56:49.82ID:Fe4SCtbl
参照しただけで値が代入される場合があるので当然
おとなしくfind使っとけ青二才
0043デフォルトの名無しさん
垢版 |
2022/05/07(土) 00:59:07.42ID:MO4OairX
構造体はC言語と同じ仕様のままであって欲しかった
structにメソッド定義とか誰得なんだろう
0044デフォルトの名無しさん
垢版 |
2022/05/09(月) 08:47:06.91ID:WojLOIeb
ドラフト段階ではclassは存在しなくてstaticを拡張したものだったのかもしれない
そのうち継承やスコープの概念が取り込まれる際に分離されたが
互換性を保つため今に至ってるんじゃないかと
0045デフォルトの名無しさん
垢版 |
2022/05/12(木) 15:28:18.89ID:dpFYLwpR
structと全く無関係な機能としてclassを作ってたら
C使いの食い付きが悪くて今の地位には昇れなかったろうな
C++以外のC系OOP言語がそうであるように
0046デフォルトの名無しさん
垢版 |
2022/07/30(土) 16:24:14.46ID:paa5jUiA
inline float operator"" _\u03C0(unsigned long long times){ return 3.14159 * times; }
float r = 2_π;
こんなこと出来るんか
あと戻り値の型を色々変えてもいける観たいだが
同名で戻り値違いって定義できんの?
0051デフォルトの名無しさん
垢版 |
2022/08/04(木) 02:23:22.99ID:4HLZV6kX
アセンブラ屋がCを始めたとき
オンレジスタではなくオンメモリなことに
ちょっとしたストレスを感じたもので
デフォがautoなのが気になってregister指定しまくってた
0052デフォルトの名無しさん
垢版 |
2022/08/16(火) 23:10:35.95ID:MJ5t+Mpg
バッファを指すポインタを貰って弄る時とか
register *rpで受けてゴニョゴニョし、最後に引数のp=rpで返すとか
最初と最後ですり替えるだけなのであんまり認知不可は高くないし、渡されたpを触らないのでデバッグもしやすい&意図も明瞭でわかりやすい使い方かと
0053デフォルトの名無しさん
垢版 |
2022/08/16(火) 23:17:34.02ID:MJ5t+Mpg
オリジナルを触らずローカル(auto)で受けても良いけど、この作業変数無駄じゃんと受け取られる可能性がある、c書きにはそういう最適化好きな奴多いしおさら
特にパフォーマンスで利点がなくとも、registerが付いてるだけで(プロファイリングされない限り)他人に弄られにくくなるw
0054デフォルトの名無しさん
垢版 |
2022/12/03(土) 16:41:57.74ID:A0vd1N2c
ローカルクラスが静的データメンバを持てないのはなぜなのか。
静的関数メンバ内に静的ローカル変数を定義して、それを戻すことはできるのに。
0055デフォルトの名無しさん
垢版 |
2023/03/14(火) 20:44:32.89ID:RzXH33+P
ローカルクラスはリンケージを持たないから
静的データメンバはリンケージが必要
0056デフォルトの名無しさん
垢版 |
2023/03/17(金) 17:42:55.43ID:Jukv8C3G
これのこと?

int main()
{
struct local_class
{
static int data; //NG
};
}

診断メッセージに書いてあんじゃん

d:\learn>g++ 54.cpp -std=c++2b
54.cpp: In function 'int main()':
54.cpp:5:25: error: local class 'struct main()::local_class' shall not have static data member 'int main()::local_class::data' [-fpermissive]
5 | static int data;
| ^~~~

スコープに丸括弧なんか使えないんだから当たり前
0057デフォルトの名無しさん
垢版 |
2023/03/17(金) 21:12:38.23ID:axfbRcbR
スコープとリンケージは少し違う概念
c++ の仕様書のno linkage を調べると
no linkage
The name can be referred to only from the scope it is in.
Any of the following names declared at block scope have no linkage:
variables that aren't explicitly declared extern (regardless of the static modifier);
local classes and their member functions; ←ーーこれ
other names declared at block scope such as typedefs, enumerations, and enumerators.
Names not specified with external, module, (since C++20) or internal linkage also have no linkage, regardless of which scope they are declared in.
■ このスレッドは過去ログ倉庫に格納されています