- 1 名前:デフォルトの名無しさん [2008/08/28(木) 14:48:15 ]
- 仕様が大きすぎるくせに、
実用的なライブラリが未整備。 なんかいらいらしない? こんなこともできないくせに、 なんでこんな仕様ばっかり作るんだよって。 C++ってなんであんなに肥大化しちゃったの? 名前: 仕様書無しさん E-mail: 内容: 仕様が大きすぎるくせに、 実用的なライブラリが未整備。 なんかいらいらしない? こんなこともできないくせに、 なんでこんな仕様ばっかり作るんだよって。 C++はなんでもできます。でもなんにもできてないので つくってね。的な。
- 720 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:09:15 ]
- >>701
言いたいことは判るけどさ、それで問題が起こるようなケースってのは コピーやキャストされてしまうような時だけであって、そうなるかもしれないってのが頭にあるなら できる限り避けましょうと、参照にしたりすればよく、逆に高速化が必要ならオーバーロードしたりテンプレート化したりして個別対応すればいい訳。 実用上の障害は何一つないのに問題視するのは、それ自体問題だ。
- 721 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:14:02 ]
- >>719
テンプレートはコンパイル時に型が特定されるので、問題はないのでは? 動的なテンプレートを実装したりすると問題が起こると思うけどC++はそうではないし。
- 722 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:17:41 ]
- >>721
勿論テンプレートを実体化するときには確定するな が、テンプレートは静的ダックタイピングの手段だから、 関数テンプレートを記述する際には型に関する仮定はおけんだろ? で、&&はどうすりゃいいんだろうな &&が腐ってるんなら、仕方なくVBみたいにifのネストを使うか?
- 723 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:20:36 ]
- C++最大の問題はプリプロセッサと旧態依然のコンパイル・リンクだろうな、あれの存在のお陰で
自動テストは作れない作ってもショボイ、インテリセンスも作れない作ってもバカの極み 自動リファクタリングに至ってはもはや絶望的、しかもコンパイルもリンクも超低速という点。
- 724 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:35:14 ]
- >>722
それが問題になるような事態に直面した事はないが、仮に直面してどうしても困るなら type_traits でも使えばよいのではと俺なんかは思ってしまいます。
- 725 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:41:57 ]
- >>724
議論ずれてきてるな こんな風にすればカバーできるよ!ってのどんどん突き進めたのが TMPなりboostなりだろ いやそれはあんたはそれでいいのかもしれねーけどよ 大したことやってるわけでもねーのに、あの糞ったれなバッドノウハウ集 全部押し付けんのか?プログラマに &&の問題なんて、禿の設計誤りさえなければそもそもそんなことを 考える必要すらないんだぜ
- 726 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:43:26 ]
- >>725
それ以前に困った事態ってのはどんな事態なんだよ、俺はそっちの方が気になる。
- 727 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:46:53 ]
- >>726
俺は困ってねえよ ユーザ定義&&なんてつかわねえからな 自分では が、テンプレート関数の中の&&は、一種の時限爆弾のようなもんだろ 誰かがユーザ定義&&を用いたら、それはコンパイルエラーにはならず 不可解な実行時の問題を引き起こす、かもしれない そして、それはすぐには気づかれない、かもしれないわけだ
- 728 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:50:27 ]
- それが心配でたまらないなら、ある種病気だよ
- 729 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:53:03 ]
- 実際、「C++の仕様で爆弾発生率が高い」ってのがソースなさすぎだからなw
- 730 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:54:32 ]
- 流石にそれはないよw
ただ、俺はそういう問題を知るためにまたしても*無駄な*コストを払わされたがな みんな麻痺してんじゃねえのか? C++の要求するあまりの学習コストの高さとバッドノウハウの多さに 確かにこんなのは氷山の一角ですらねえよ もともとが糞の山過ぎてな
- 731 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:57:11 ]
- 危険だと分かっているものであれば自然、用心深く取り扱われるので、思ったほど事故は起こらないもの。
面倒臭いだけだから何とかしろとは思うが、それらの問題点に突っ込み入れても問題は出てこないだろうね。 C++逝ってよし派ではあるんですが、重箱の隅をつつくような問題点指摘には賛成できない。
- 732 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:57:54 ]
- お金もらえるならなんでも書くよ
- 733 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 19:08:41 ]
- >>727
まあ、もしそういうことが起こったら、&&を定義したユーザの方が悪いだろということにされるな。 やっぱりなんでこんなの定義できるようにしたんだって話ではあるが。
- 734 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 19:15:29 ]
- ヘッダファイルに
static int int_data; #define x int_data などと比べれば&&など些細な問題さ
- 735 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:21:24 ]
- &&と||は避けようと思えば避けられた問題だもん
演算子はとにかく全部オーバーロードできるというわかりやすい規則を優先して その中には危険な演算子もありますよという話ならまだわかる でもそうじゃないじゃん 例えば&&と同じく副作用完了点を持つ?:はオーバーロードできない ::は出来ないし.も.*も出来ない、sizeofもtypeidもthrowも出来ない どれも問題あるからわざと出来ないようにしてるんだ どうしてこのリストの中に&&と||を加えることが出来なかったんだ? つーか?:を出来なくした時に気付けよ禿
- 736 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:42:31 ]
- えんざんしちげーだろ
- 737 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:44:22 ]
- そんなに気になるなら、&&セーフとか&&FREEのシールでも貼っとけ。
- 738 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:51:51 ]
- >>729
>実際、「C++の仕様で爆弾発生率が高い」ってのがソースなさすぎだからなw EffectiveC++等々の存在は十分爆弾発生率の高さを証明してると思うが・・
- 739 名前:デフォルトの名無しさん [2008/10/07(火) 21:00:38 ]
- EffectiveJavaもあって、初級者用じゃないけどJavaプログラマの中ではかなりの必読の部類に入るよ。
- 740 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 21:16:14 ]
- 組み込み系の経験ないんですが、C++使用の場合って
コーディング規約とかで縛ったりするものなんでしょうか?
- 741 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 21:18:14 ]
- もう一つ問題がある演算子があって、それはカンマ演算子
&&や||などと同じく、やはり副作用完了点として働く演算子の一つだ 普通は逐次実行されるので、左辺も右辺もどのみち評価されるから気にすることは少ないが 左辺が例外投げるような場合はやはり同じような問題が起こる さて、なぜoperator,は定義できてしまうのか?偉大なるBjarne大先生の答えはこうだ >operator,をオーバーロードできるようにしたのは、そうしてはいけない理由がなかったからだ。 (C++信者の聖典、D&Eより引用) これはひどいwwwwwwwww
- 742 名前:デフォルトの名無しさん [2008/10/07(火) 21:19:58 ]
- ある分野では operator , が実用上離せない
- 743 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 21:25:34 ]
- >>739
それ関係なくね?
- 744 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 21:31:32 ]
- >>741
なんつうかおじいちゃんはもっといたわって隠居させるべきだと 思ってしまうな
- 745 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 22:05:12 ]
- いけなかったというより、::や.のような制約がなかったからと言うべきのような……。
- 746 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 23:54:42 ]
- >>727
核戦争の心配してるほうがお似合い そっちのほうが被害は甚大だし現実にあり得る
- 747 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 00:11:43 ]
- 結局、使いこなせない人が「この要素が悪いんだボクが悪いんじゃないやい」
って言い訳しつつ、使いこなせる人をデタラメに煽って射精するスレってことでおk?
- 748 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 00:21:39 ]
- operator&&なんて使いこなしちゃいけない機能です
- 749 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 00:25:31 ]
- 問題点を指摘されて、それがありえる・ありえないって話にすり替えるのは違うんじゃないか
問題はあるけど回避可能だからC++を使おうって判断はそれぞれの職場でやればいい だけどココで問題を指摘されてるのに、自分にとってありえないから問題じゃないってのはお話にならないよ
- 750 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 00:33:41 ]
- >>747
また同じ煽りパターンか ぼくちんのC++に文句いうやつらは全員C++理解できないに違いない! C++も禿もぼくちんも天才!欠点なんかあるわけない! これで満足?
- 751 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 00:36:09 ]
- 何でもルールのせいにするのはゆとりだろう。
- 752 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 00:40:30 ]
- C++ しか知らなければ、C++ を過大評価したくもなるんじゃないかな。
2ch で主張してる分には見掛け上はノーリスクだし。
- 753 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 00:54:36 ]
- 747みたいに突然流れ無視して
「アンチはC++使いこなせないんだ!」って暴れ出す厨が定期的に出てくるよな 正直、どっちサイドからみても邪魔な基地外なんだがw
- 754 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 01:02:39 ]
- テンプレートメタプログラミング禁止とか多重継承禁止とか
実際に実行出来てる例はあるのかな。ベターCとして使う事を 考えるなら当たり前に出来て欲しいんだけど、どうも揉めそうだ。 他にも例外禁止とか名前空間禁止とか演算子のオーバーロード 禁止とか、Boost禁止とか、RTTI禁止とか。
- 755 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 01:15:19 ]
- >>750
君って低学歴でしょ?
- 756 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 01:31:45 ]
- >>754
禁止する理由を納得のいくように説明すれば揉めないんじゃない。
- 757 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 01:49:11 ]
- >>749
&&なんてC++使っているほうからしたら、誰も使わないだろjkって話なんだが、 外から見たら、ようするにバッドノウハウなんだよな。 そこに温度差というか埋まらない溝を感じた。
- 758 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 01:55:05 ]
- >>754
うちは揉めないけど、やっぱりみんな言語仕様通しの関連が分かってないね まあ新人はいまどきCなんて嫌だろうし、 ちゃんと理解して使うならC++でもいいよーって許可するんだけどね ミスらなかった子はひとりもいない、ベテランでもミスる もちろん仕事だからフォローはするよ
- 759 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 01:55:58 ]
- 誰も使わないし誰も使っちゃいけない機能が何であるんだよという素朴な疑問があるだけです
まあ設計者が大した考えもなしに使えるようにしちゃってるだけだけど
- 760 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 02:09:42 ]
- >>741
カンマの左辺で例外が起きたときの問題ってどんなの?
- 761 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 02:14:53 ]
- >>760
ただの関数呼び出しでは評価順序は決まっていないから、 a, bでoperator ,関数が呼び出されるときには、 b, aの順で評価されても構わないということになるはず。
- 762 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 02:22:18 ]
- >>749
なら誰にとってありえるの? 使いこなせないくせに演算子オーバーロード機能使って、しかも&&演算子を… っていう人間を仮定してみるとあちこち矛盾が生じるのだけれど 使いこなせるのに…もまた然り
- 763 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 02:59:50 ]
- >>762
え?釣りなの?本当に理解できてないの?
- 764 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 03:12:41 ]
- いいかい
問題がある・ないってのは客観なんだ 問題がありうる・ありえないってのは主観なんだ 客観に対して主観で反論したら議論にならないだろう? これはC++とか関係ない当たり前のことだよ
- 765 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 03:21:30 ]
- >>762
釣りじゃないなら一晩おいて、もう一度よく読み返してみな? 大丈夫、C++の問題点よりずっとずっと簡単な話だよ
- 766 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 03:56:33 ]
- Javaだと回避不能なウンコ仕様が多くて困るけど
(例えばしょうもないことで例外が飛んでくるとかthrowsとか) C++のウンコは知ってれば回避可能なウンコが多い気がするな まあ確かにC++にはウンコ満載な気はするけど 知ってしまえばどうということはないので 慣れればあまりフラストレーションが溜まらない、というのが俺の実感 && || , のオーバーロードの話だって More Effective C++ に「やるな」と書いてあって、 簡単に納得できるレベルの話だしねえ
- 767 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 04:07:11 ]
- いやいや、中にはそもそもできないようにしろよって主張も上の方にあっただろ。
俺もそう書いた1人だよ。
- 768 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 04:15:20 ]
- >>766
>>764に書かれてる事なんですぐ繰り返すの?ねえ?なんで?ばかなの?しぬの?
- 769 名前:デフォルトの名無しさん [2008/10/08(水) 04:35:23 ]
- CGIしか作れないようにしたらC++の意味ないよな。
ウケルw
- 770 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 08:59:01 ]
- 包丁は販売禁止ですね
わかります
- 771 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 09:47:29 ]
- いや、別に包丁は売ってもいいし、包丁で人が切れてもいいけど、
包丁を使ったと思ったら菜箸だった(ポルナレフAAry となるのがC++の凄いところ
- 772 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 09:55:57 ]
- >>770
両刃の包丁を買ってきたと思ったら、背側にも刃がある両刃でした
- 773 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 10:52:24 ]
- >>766
> Javaだと回避不能なウンコ仕様が多くて困るけど > (例えばしょうもないことで例外が飛んでくるとかthrowsとか) これはウケた 以下のコードはf()は何もthrowしない、と例外仕様で言っているが、 f() throw() { throw 1; } これをあんたのコンパイラがどう扱うか確認してみればいい C++では文字列も整数もクラスも ポインタも参照も、何でもthrowできる 例えばMFCとVC++のCOMサポート、C++標準ライブラリのようなものは 当然のように全く異なる流儀で例外を扱っている それらを全て捕まえたければ catch (...) を使うしかないが、 これでは何が飛んできたか分からないから、事実上何の役にも立たない 勿論スタックトレースの取得などできるわけもない C++はJavaの例外を馬鹿にできる立場には一切無いよ
- 774 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 11:25:14 ]
- >>769
operator &&や||をなくしただけで CGIしか作れなくなるのか すげえ言語だな
- 775 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 12:44:13 ]
- || のオーバーロードは昔からあるんだから現実にこの世の中で問題が起きたことを
確認してから批判してくれ。 どうせ || のオーバーロードができなければできないで批判されるだろうから。
|

|