C++についてどう思われます?
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNGC++言語に関するスレッドが殆ど無いのは何故っすか?
単に此処にはC++ユーザーが少ないだけなんでしょうか。
あのようなクレイジーな言語はネタの宝庫だと思うんですが・・
「C++言語なら、オレに聞け!」みたいな方は居ないですかね。
0002やめれ
NGNG0003名無しさん@お腹いっぱい。
NGNG知識バカと読んでやってください。
0004名無しさん@お腹いっぱい。
NGNG多分。
>「C++言語なら、オレに聞け!」みたいな方は居ないですかね。
C++なら、俺に聞け!
1 名前: ピノレ・ヅュプス 投稿日:あぼーん
俺は、C++ばっかり十年以上やってきた。
他の言語のことはよく知らないが、C++の知識だけなら誰にも負けない
C++のことなら、俺に聞け!
‥‥‥ってか?
あのようなクレイジーな言語で?
そんな奴、まずいないでしょ。
0005名無しさん@お腹いっぱい。
NGNGWindowsアプリ作るときはそりゃC++なんだが、
真面目に取り組むつもりはないって人が多いんじゃないかな。
0006名無しさん@お腹いっぱい。
NGNG0007C++信者
NGNG手のつけようのない基地外でしょうか?
0008C++信者
NGNG0009>8
NGNG奥が深そうだから取り敢えず教養としてC++弄っているが・・
他の言語やっても途中で止めそうだし・・・
0010名無しさん@お腹いっぱい。
NGNG極めたとは言いませんけど、
だいぶいいところまで逝ったんじゃないかと自負ってます。
>Windowsアプリ作るときはそりゃC++なんだが、
>真面目に取り組むつもりはないって人が多いんじゃないかな。
Windowsアプリを作るときはなぜかC++らしくない組み方になってしまいます。
デザインパターンすらいりません。STLは活用してますけど。
まだまだ未熟ってことなのでしょうか?
0011名無しさん@お腹いっぱい。
NGNGEffective C++すら読んでない(or 理解してない)奴が多いからです。
いろいろ出来て面白いけど、使い方を誤るととんでもないことになるのも事実。
0012名無しさん@お腹いっぱい。
NGNGSTLなんか、かなりクレイジーなコードじゃないですか?
俺的にはC++はメチャメチャおもろい言語だと思いますよ。
最高で最悪な言語って感じですね。
0013名無しさん@お腹いっぱい。
NGNGC言語やアセンブラなんかとは比較にならないくらい
安全性に配慮してある言語だよ。
そこんとこ、勘違いしないで欲しいな。
0014名無しさん@お腹いっぱい。
NGNG初心者には薦められないけど、中級者にはおすすめ。
0015名無しさん@お腹いっぱい。
NGNGでも、下手するとお腹壊すけど。
Effective C++はいいですね。基本です。
0016名無しさん@お腹いっぱい。
NGNGVC++ですらtemplateまわりが弱いのが痛い。
時々パッケージ殴りたくなることがある。7.0に期待。
0017名無しさん@お腹いっぱい。
NGNG7.0はC#の方に力はいってそうな気がするんだけど...
0018VC++
NGNG具合わりーな・・・・・
0019>13
NGNG型チェックはANSI-Cだよね。例外処理?
0020>19
NGNGどう安全性に配慮してるかわからないなら気にするな
0021名無しさん@お腹いっぱい。
NGNGという考えの下で設計されてたんでしたっけ?
0022名無しさん@お腹いっぱい。
NGNG盛り込むことが出来る。13はそういう意味でしょうね。
フールプルーフ…馬鹿が、想像もつかない方法でシステムに
ダメージを与えるようなドジをすることに対して、ガードを
掛けること。GUIによって入力インタフェイスを絞ることなどが
その代表。OOPの場合、クラスのインタフェイスが公開メソッドに
限られることにより、ある程度のフールプルーフを実現できる。
002319
NGNGまあ、そういう意味ならわからんでもないが、確かにJAVAと比べりゃ
危険だ。
>20
はて、13はたいした発言ではないから無視してよいということか?
002419
NGNGいっしゅん違うレスかと。
0025名無しさん@お腹いっぱい。
NGNG「C++の開発者は、みんなC#に移行していくだろう」
的なことが書いてあったけどそうなの?
002613
NGNGメソッドにconstやthrowを修飾できたり、キャストが拡張されたり、
安全のために付け加えられた機能がたくさんあるでしょう。
テンプレートも安全性の高いマクロなんだよ。
C++は、Cとは比べ物にならないくらいに強固なライブラリを作れます。
それが難しいというのは間違いじゃないけど、Cより危険だと考えるのは
明らかに勉強不足だね。
JavaやPascalよりかは危険だけどさ、Cよりかはずっと安全なんだよ。
002719
NGNG別にいまさらC++の講義を(特にあんたのような文体で)してくれとは
いってない。言語にとって「安全」というのをどうとらえているのか
を聞いているたのだが。(あんたには高級すぎる質問だったようだが)
0028ぽそっとな
NGNG0029名無しさん@お腹いっぱい。
NGNGprotectedが何故あるか考えた事がありますか?
関数や引数にconstを付ける目的を考えた事がありますか?
それ以前に、あなたの人間性に問題がありますね。
自分の自尊心を守る為に他人に情報を与えられる事を極端に嫌い、
挙句に牙を剥く人が居ますが、あなたはその典型っぽいですね。
自分の経験上、そのようなプログラマに碌な人は居ませんでした。
同じ勉強を続ける者として、もう少し謙虚で素直な心を持って
欲しいものです。
0030名無しさん@お腹いっぱい。
NGNGどうしてあんなにコンパイラを作るのを難しくするのだろう。
Javaぐらいがちょうどいい。
0031C++信者
NGNGMore Effective C++
萌えです。
これでC++に目覚めました。
C++駄目な人はこの本読んでみましょうよ。マヂで。
0032名無しさん@お腹いっぱい。
NGNGクソ言語の筆頭。
0033名無しさん@お腹いっぱい。
NGNGC++が純粋なOOPLだとでも思ってるの?
0034名無しさん@お腹いっぱい。
NGNG0035名無しさん@お腹いっぱい。
NGNG29は「C++は〜の機能があるから安全なんだ」と一生懸命述べている。内容は
私の見る限り正しいと思う。
19は「安全な言語」と判断する場合、どんな/どの程度の「安全のための機能」が提供され
ているべきなのか、と問い掛けているんだと思う。
>protectedが何故あるか考えた事がありますか?
>関数や引数にconstを付ける目的を考えた事がありますか?
例えば上記が提供している「安全」はいいとして、上記ではどういった
場合に対応できないか、どうすれば対応できないものが減るのか、それが
なぜC++で実装されなかったか(当然妥当な理由があるからだ)、を説明
した方がよいんでは。
003619
NGNGている者に対して、Aに関する知識が足りない、と断じる頭がよく分からん。
まあ、いいよ。相手を選ぶべきだった。
0037名無しさん@お腹いっぱい。
NGNGクソ言語と言い切るだけなら素人にもできるだろう。
よって具体的にどこがどのように糞なのかの説明を求む。
0038お前らってコドモだな。
NGNGBはペッティング。
Cは最後まで。
分かったか?
003929
NGNG私の日本語の読解力が足りなかったようです。
ただ他人事ながら、27の言い方にムカッと来て、
つい余計な口出しをしてしまいました。反省します。
0040名無しさん@お腹いっぱい。
NGNG楼閣の部分は確かに、そこそこ堅固(フールプルーフ)。
でも、足場は砂場(C言語)・・・
足下に気を付けながら使おうね。
0041名無しさん@お腹いっぱい。
NGNG君らのOSはCとC++で作られている。評価してどうする。
0042名無しさん@お腹いっぱい。
NGNGイヤでも付き合っていくしかないでしょう。
Windowsみたいな言語だな(w
0043名無しさん@お腹いっぱい。
NGNG0044おまえぢぢゐだな
NGNG>Cは最後まで。
タケノコ見に代々木逝ったろ?
0045名無しさん@お腹いっぱい。
NGNGクソ長くなるし、GUIがあるような、実行時の状態が
予測出来ないアプリケーションでバグが出やすい。
代入が=なのも気持ち悪い。等号が==なのもヘン。
社員教育にカネがかかる。コンパイルが遅い。自動
変数も不気味。
出来れば使いたくない、最悪の言語。
0046名無しさん@お腹いっぱい。
NGNGちなみに使いたい言語ってなに?
0047名無しさん@会社ではVG自宅はBCB
NGNG0048名無しさん@お腹いっぱい。
NGNGC++はfinallyはいらんだろ。
変にJavaやDelphiの流儀で組もうとするから、そういう発想になる。
代入や等号の書き方なんて慣れの問題なのに、本気で文句言うのは厨房だけ。
0049名無しさん@お腹いっぱい。
NGNGdelphi "しか" 使えない人
0050何度同じようなレスしたことか
NGNG自分が理解能力低い低脳だって宣伝してるようなもの
じゃないでしょうか?
0051名無しさん@会社ではVC自宅はBCB
NGNGそんなこともないと思うけど、ある言語や開発環境を批判するのであれば最低でも1−2年ぐらいは商用レベルのアプリケーション作成にそれらを用いて従事したことがあるという程度の経験はほしいですね。
無意味な批判に関しては50さんのいうとおり。
0052名無しさん@お腹いっぱい。
NGNG使い方がわからない。
VBから上がってきたD使いはCがわからない人が多い。
だからあちこちのBBSにマルチポストする。
>48
C++の例外処理機構はまだこなれていない面が多い。
ANSIの決定を各メーカーは気にしすぎ。
0053名無しさん@お腹いっぱい。
NGNG0054名無しさん@お腹いたい
NGNG以上。
0055名無しさん@お腹いっぱい。
NGNGふふふ、勝ったな。俺の意見が一番不毛だ。意義のあるやつは
言ってこい。
005646>47
NGNG0057名無しさん@お腹いっぱい。
NGNGなにかこれと同等なものがC++でマクロとか使って書けないですかね。
あと、breakせずにループを終了したときだけ実行されるブロックとか‥
(これはbreakの代わりにgoto使えばできるけど、ラベル名の重複を避けるのが面倒‥)
0058名無しさん@お腹いっぱい。
NGNGいないだろうと思うんだが。
0059名無しさん@お腹いっぱい。
NGNGC++批判するのは別にいいけど、もう少しましな理由付けてくれな。
finallyがないくらいでC++がダメだといわれても誰も納得しないぞ。
あと、等号の事だが使用頻度を考えるとPascal方式の方が気持ち悪い。
っていうか、Pascal形式の代入文の方が特殊だろう、多分。
ちなみに、等号の話をすると今まで使った中で最悪だったのがCOBOL。(藁
Delphiは、代入の記述が面倒で、C/C++は比較の記述が面倒。
でも、Delphiで代入の記述をするよりは楽だけど。
それから、PerlはC/C++に輪をかけて面倒。
つまり、1番いいのはBASIC。(藁
もっとも、C/C++の式の途中で代入ができる仕様はわりと便利だったりもするが。
0060名無しさん
NGNG関数内で構造体作ってデストラクタでOK
0061名無しさん@お腹いっぱい。
NGNGchar *p;としてp[32]とか出来るのは絶対に変
0062名無しさん@お腹いっぱい。
NGNG0063名無しさん@お腹いっぱい。
NGNGは?クラスの破棄だけの問題では無いと思うんだが?
>59
いずれも慣れの問題だ。だがCの初心者は比較と代入を
良く間違える。C文化の弊害としてタイプ量をけちって
コードの読みやすさがそこなわれている一例。
C++もその伝統はあいかわらず。
BASICはくそ言語。どうせ初心者用なんだからプロなら
2年以内に見切りをつけるべき。仕事で使いつづけるな。
客が迷惑。
Delphi(ObjectPascal)の言語仕様はシンプルで強い型づけ
により堅牢だが悪い面もある。シンボルの大文字小文字
を区別しないという点がくそBASICと同じだということだ。
BASICよりはましだがそこら辺が初心者用扱いされる原因。
0064> 63
NGNG>を区別しないという点がくそBASICと同じだということだ。
>BASICよりはましだがそこら辺が初心者用扱いされる原因。
これはあまり関係ないのでは?
言語仕様・OSのコマンドインターフェース仕様では大文字・小文字
区別しない方が主流で、C言語やUnixは珍しい方と認識しています。
さまざまな環境(PCから大型機まで)での動作をサポートする
方針が最初から明確だった言語では、小文字や波かっこを必須と
しない仕様となってました。角かっこを避けるものすらありました。
C言語とUnixは以下要因から小文字・大文字を区別する仕様になった
ものと推測しています。
・非常に小さなコミュニティ内で設計された。
・同コミュニティでの利用しか考えられていなかった。
・設計者が大文字より小文字の方が読みやすいかなと感じていた。
・手元にあったハードウェアは小文字と大文字を区別できた。
Adaは区別しなかったはずですが、およそ初心者向け言語ではあり
ません。
ちなみに、区別しない方が優れている、といっているわけではあり
ませんので、よろしく。
0065>63
NGNG・・・・・本文・・・・
}~finally{ => } ~XX(){
} => } }HOGE;
と対応させられぞ
0066<63
NGNGから、面白くないんだろうなぁ。
0067名無しさん@お腹いっぱい。
NGNGもっと分かりやすく書いてくれ。おちゃらけかと思って読み飛ばそうと
したぢゃないか。
0068>65
NGNGC/C++のタイプ量をケチる原則から外れてるぞ(汗;
0069名無しさん@お腹いっぱい。
NGNGclass内のconst定数の代わりにenumを用いるのと同じ。
だから、「どうしてもfinallyが使いたければ、面倒だけど代用手段はある」
と言ってるんじゃないの?
0070名無しさん@お腹いっぱい。
NGNGC言語の伝統にしたがって#define 定数でもいいだけどねえ。
次のバージョンでMS-Cも対応してくれるだろうか?
Javaの方が言語仕様的には好みなんだけど、もうすこし柔軟でもいいとおもうのと、
仮想マシンの設計がスタックマシンを前提としてるなんてクソだとおもう。
まぁ、もともと組み込み向けだから、コードサイズを小さくという
要求があるからしょうがないとは思うけどさ。
0071>65
NGNG違うんじゃないか?
{struct XX { XX() {
本文
} ~XX() {
後始末
}} HOGE;}
としないと。
0072名無しさん@お腹いっぱい。
NGNG>良く間違える。C文化の弊害としてタイプ量をけちって
>コードの読みやすさがそこなわれている一例。
まったく無意味な「一例」ですね。
もし、{}をbegin@`endに変えたり、=を:=に変えたり
しただけで読みやすさが向上すると思ってんの?
0073名無しさん@お腹いっぱい。
NGNG古くさいC言語批判を展開するのはやめよーよ。
C++の一番悪い点は、言語仕様の大きさと、"C"の直系ということ
だろうね。このスレッドをみて確信するよ。
0074名無しさん@お腹いっぱい。
NGNG0075名無しさん@お腹いっぱい。
NGNGC#はC/C++とは関係ないよ。
あれはどう見ても腐れJavaもどき。
ついでに、ネタだからまじレスすんな、という言い逃れはなしね。
0076名無しさん@お腹いっぱい。
NGNG特にBCBなんか、VCLをnewでしか確保できないから、この問題は深刻だよ。
ところが auto_ptr<TStringList>(new TStringList); とかやっとけば、
実はBCBでも__finallyをほとんど駆逐できる。
それができない場合でも、クラスの中にポインタを隠蔽しておいて、
デストラクタにdeleteさせればいい。
つまりデストラクタをうまく活用していれば本来は不要なんだよ。
ま、finallyがあって害もは無いけどさ。
それに次回の改定では採択されるって聞いたことがあるよ。
0077名無しさん@お腹いっぱい。
NGNGC++「バカなプログラマーは多いが、一部のコアとなる人物がしっかりと安全策を施した
ライブラリを十分に検証すればいい。完全な安全策は実務では障害となる。」
しかし、C言語との互換性が言語を不必要に脆弱にしている。
Stroustrupもそれは認めているぞ。
C言語との互換性をいちばん悔やんでいるのは、おそらくStroustrup本人だろう。
0078>76
NGNGそのときエラーが発生した場合、例外のスローとかはデストラクタの中では処理できないと思うが。
0079名無しさん@お腹いっぱい。
NGNG使わないよ。
0080名無しさん@お腹いっぱい。
NGNGC++がCとの互換性を放棄したら、どのあたりがすばらしい言語になるはずだったのか、
ぜひ説明してくれや
それができんのなら受け売り君と名づけよう。
0081名無しさん@お腹いっぱい。
NGNGグローバル変数禁止。
マクロ禁止。
(cast)方式のキャスト禁止。
これだけでもかなりすばらしい言語になるって事、
もう直感的にわかれ。
きみ、ダメすぎ。
0082名無しさん@お腹いっぱい。
NGNG>そのときエラーが発生した場合、例外のスローとかはデストラクタの中では処理できないと思うが。
CFoo::CFoo() throw(); ←こうあるべきだ、ということでしょうか?
0083名無しさん@お腹いっぱい。
NGNG>グローバル変数禁止
主観の問題かもしれないけれど、あまりすばらしく感じないが…
C++でコンストラクトの順序の問題がいやってことかな。でもクラス内の
staticメンバは結局さけられないし。
>マクロ禁止
#define aa()とかの廃止は賛成だ。#ifdefとかは残すんだよね。
>(cast)方式のキャスト禁止
まあ、クラスのポインタに対して(cast)を禁じてもよかったと思うが、そもそもC++の
初期にはdymamic_castとかなかったんで、あながちCのせいともいえない気がするが。
0084名無しさん@お腹いっぱい。
NGNGもしそうだったら、もっと批判されちゃうよね。
0085名無しさん@お腹いっぱい。
NGNGtype_info でとれるけどさ。返す値が処理系によって違うのがねえ。
008659
NGNG言語の比較をしたいわけじゃないんだけど。
あくまで、俺が今まで使った言語の等号を比較してるだけだから。
取りあえず、等号に関してだけBASIC方式が1番楽だったというだけの話。
0087名無しさん@お腹いっぱい。
NGNGelse throw stones;
0088名無しさん@お腹いっぱい。
NGNGすまん。できないというのは語弊が合った。気持ちとしてはまともな処理は
できない、なんだが…。82は多用する?
0089名無しさん@お腹いっぱい。
NGNG同感。C++はせっかくclassという新しい予約語を導入したのに、structと
ほとんど差別化していない(まったくとはいってないので念のため)。
もっと活用してもよかったと思う。
では、なぜそうならなかったのかというと、C++がCとの互換性を配慮した
からではなく、C++がCから段階的に拡張されたからだ。C++でキャストが問題
になった時には、C++自身の過去との互換性を考えると変更できなかった。
009082
NGNGは
CFoo::~CFoo() throw();
の間違いでした。
>>88
デストラクタでうまくやるということは、
クラスの中で解決しなければならない事情を、
クラスの外に持ち込まないということでは。
0091名無しさん@お腹いっぱい。
NGNGデストラクタが呼ばれると思うが、その時にデストラクタがさらに例外を
発生したら、いやではない?
0092>91
NGNGそれをfinally節で処理しきらなければ2つの例外が発生した事になって、元々の例外
を忘れてしまう。
デストラクトでも同じでは?
この話は、C++でスタティクな構造体のデストラクタは巻戻し保護されるって奴だよね。
これを利用してfinally代わりに使うのはC++の今更議論するまでもない基本テクだと思うけど
0093名無しさん@お腹いっぱい。
NGNGこれはそうかもしれない。
>これを利用してfinally代わりに使うのはC++の今更議論するまでもない基本テクだと思うけど
finallyで例外が発生しないケースでは使える。
私は、基本的にデストラクタで例外が発生するようなコードは極力書かないようにしているが…
91は割とデストラクタでからも例外を投げるんだ。あんまり問題になることってなかった?
0094>93
NGNGデストラクタ内部で例外が発生しても自分で処理して外に投げないのが普通では?
0095名無しさん@お腹いっぱい。
NGNG009682=90
NGNG勉強不足でよくわかりません。
明日会社でEffectiveC++でも読んでみます。
でもfinallyで処理するということは、クラスの外でエラーを処理
するということですから、カプセル化の原則に反しませんか?
デストラクタをきちんと利用した上で、さらにthrowを投げずに済めば
いちばん理想的なのではないかとおもいます。
0097名無しさん@お腹いっぱい。
NGNGものだから、デバッグ用のエラーチェックの例外以外は投げられても困るかも。
デストラクタが投げる例外を捉えるtryブロックを書く場所も悩ましいです。
009878=88
NGNGfinallyで例外を投げないケースは問題ない。例外を投げるケースが問題、と
述べている。
009978=88
NGNGデストラクタで例外を発生するのは基本的に私はやらない。
>でもfinallyで処理するということは、クラスの外でエラーを処理
>するということですから、カプセル化の原則に反しませんか?
finallyの代用にデストラクタが使えるかという話から始まっていると
思うのだけれど、上記の論旨を補足してもらえないだろうか。
0100756@折角なので一応
NGNGやや、御指摘の通りです。便利なC、確かにそんな節が最近あるかも・・・。
一応情報をひとくくりにしたり隠蔽したりってのは常に心がけているのです
けどね。メンバ変数は絶対privateみたいな。ただ、ときに「このメンバ変数
がpublicなら、いちいち新しい関数作らなくていいのに」って思っちゃうこと
があって・・・。
そんなときは、隠蔽保持のため新しいメソッドを乱立する、みたいな解決方法
しかまだ思い浮かばないんです。で、あんまりつまらないメソッド作りすぎる
の恐いな、ってのもあってあの質問をしたわけなんです。実は汎用(最初から
見通せてる)って感じよりかは、泥縄式に増えていくって感じですね。
いやオブジェクト指向、奥深いっす。has-aだのis-aだの、読んでる分には楽
しいんだけど、いざ使うとなると応用がねぇ・・・。僕も上級者のコードとか
意見聴いて勉強したいです。
■ このスレッドは過去ログ倉庫に格納されています