トップページ⇒tech
869コメント271KB

C++は難しすぎ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
あんなの理解できるハズないだろ!
わかりやすいプログラミング言語をつくれないBjarne Stroustrupには げんあり
0159デフォルトの名無しさんNGNG
>>158
じゃーmanaged C++使えばいいんでないの?ごめんなさいよく知りません。
もしくはBで始まるC/C++で使えるガベコレ導入するとか?ごめんなさいよく知りません。
0160デフォルトの名無しさんNGNG
managed C++は移植性可搬性に大きな問題がある。
Bで始まるガベコレは所詮ライブラリ。
0161デフォルトの名無しさんNGNG
C++(C)はポインタをかなり自由に使えるからごみ判別自体が難しいだろう
0162デフォルトの名無しさんNGNG
Bで始まるガベコレってコードが貧雑になるからやだ。
やっぱ言語自体が実装してくれないとね。
0163デフォルトの名無しさんNGNG
>>160
それは不思議な意見だ。
コンパイラの独自拡張に任せればどうやったって可搬性はなくなるし、
仕様に含めて強制すれば恐ろしくパフォーマンスを低下させる。
0164デフォルトの名無しさんNGNG
俺はガベコレは参照カウンタで十分だと思う
起きる問題って循環参照だけっしょ?
0165デフォルトの名無しさんNGNG
>>164
十分だと思う、それがあると構造のあるコンテナがまともに作れん。
0166デフォルトの名無しさんNGNG
>>163
いや、だから規約内でガベコレうまくやろうやって方向が正しいんじゃあ?

cyclic_shared_ptr はどうなの?誰かboost追っかけてる人の感想ラゴンヌ。
0167デフォルトの名無しさんNGNG
難しすぎなC++を理解し終わって
もっと機能が欲しいという人たちにこのスレは占拠されました。

C++を理解できない人たちはそもそも頭が弱いので反論もできません。
0168デフォルトの名無しさんNGNG
C使いとしては、>>1 に同意
難しいというより使いにくい。
0169デフォルトの名無しさんNGNG
C++は、難しいのではなく、複雑(煩雑)なのだと思う
つー訳で、STL使いたくない香具師は、STLを使わなければ良いだけだし
漏れみたいに、演算子のオーバーロードが、(便利な時もあるけど)あまり好きでない香具師は
演算子のオーバーロードを、あまり使用しなければ良いし
スマートポインタが…(略)
0170デフォルトの名無しさんNGNG
>>153
何度も言うけど設計の時点でミスってるものをなんで誤魔化そうとするものを使うの?
きちんと設計すればそんなものいらないでしょ。
こんな基本的なこともわからないで設計段階で何を考えてるのよ。
それと言語の性質みたいにいわないでよ。
JavaやC#を使うとインスタンスの依存関係も管理ができなくなるのか?
違うでしょ。
スマートポインタが必要ってのは明らかに設計ミスなんだよ。
最近の生成と破棄に関しての実装技術はなんか信用できない。
使ってもちっとも便利になった気がしない。
解決するべき問題が違う方向にいってる。
0171デフォルトの名無しさんNGNG
キター!

「スマートポインタが必要ってのは明らかに設計ミスなんだよ。」

の理由を述べてください。
もう前提条件が間違っているとしか言えません。
0172デフォルトの名無しさんNGNG
スマポって何ぞよ?
0173デフォルトの名無しさんNGNG
>>172
大乱闘スマッシュ○○ぽ…
0174デフォルトの名無しさんNGNG
オブジェクト自身にそれ自身の管理をさせる参照カウンタは設計ミスになりますか?
0175デフォルトの名無しさんNGNG
ここまでくると悲惨としか言いようがないな(^^;
0176デフォルトの名無しさんNGNG
参照カウンタの加減が間違ってる腐った実装ならあるかもしれないな。
0177デフォルトの名無しさんNGNG
設計ミスって言ってる時点で妄想家だよね。
0178デフォルトの名無しさんNGNG
「設計ミス」の定義が明らかでないと
「明らかな設計ミス」がどういうことだかわからん。
しかも「なんか信用できない」って激しく感覚的だな。
0179デフォルトの名無しさんNGNG
で、どうなのよ。本当に大手企業でも設計ミスしてないのか?本当は全部のプロジェクトで設計ミスは必ず1つはあrんじゃないのか
0180 NGNG
コンポーネントオブジェクトモデルとかインタフェイス志向のプログラムでは、
あるコンポーネントへの参照(あるいはインタフェイス)については「参照が
存在する」間は寿命が継続する、ということにしとかないとクライアント側が
いちいち実装についての知識を持つ必要があって面倒なわけで、そういったも
のを使うときはスマートポインタの類は便利だと思う。ダイナミックに委譲先
が生成・消滅する場合なんかもあるし。
0181デフォルトの名無しさんNGNG
設計ミスと言うより
設計当時の技術力の
限界といった方がいいね。
0182デフォルトの名無しさんNGNG
設計ミスねぇ

C++の言語仕様そのものが設計ミスだと思うけど
0183デフォルトの名無しさんNGNG
C++の設計は時代に合わない。
0184デフォルトの名無しさんNGNG
スマートポインタが無いと、インスタンスをnewしたブロックで
例外を吐きうる関数とか呼んだりする時、極めてめんどくさいんですが。
0185デフォルトの名無しさんNGNG
GCがあれば簡単に解決するのにね。
やっぱりC++は設計が腐ってるよ。
0186デフォルトの名無しさんNGNG
ガベコレを仕様に含めたC++<<<<<<<<<<<<<<<<<<<<<<<<<<<<Java
ガベコレを仕様に含めたC++<<<<<<<<<<<<<<<<<<<<<<<<<<<<今のC++
Java⊥C++
0187デフォルトの名無しさんNGNG
>>185
そのうち追加されるんじゃねぇの、16ビット時代の far near のように属性でもつけりゃ上位互換で拡張はできるし、
Microsoft 流に class に属性つけてもいいし、やり方はいくらでもあるし
個人的には細かめの機能で template を使って実装、小細工をユーザー側でてきるようなのがいいな。
0188デフォルトの名無しさんNGNG
追加されてもM$は絶対に無視するだろうなぁ
0189デフォルトの名無しさんNGNG
メモリ以外のリソースを掴むオブジェクトを扱う時は非同期ガベコレは会わない気が
0190デフォルトの名無しさんNGNG
ガベコレはメモリを扱うものですよ。
それ以外のリソースは関係ありません。

それ以外のリソースは今まで通りで、
メモリに対してアドバンテージがあるのです。
0191デフォルトの名無しさんNGNG
直感的にだが、デストラクタとガーベジコレクタって
共存させると、極めて煩雑になりそうな気がする...
0192デフォルトの名無しさんNGNG
>>190
リソースじゃなくてリソースを掴むオブジェクトの話だろ
ガベコレでオブジェクトが破棄されればそれが持ってるリソースも同時に開放されるだろ
0193デフォルトの名無しさんNGNG
まあ、M$的にはC♭移行を推奨して終了だろう。
0194デフォルトの名無しさんNGNG
C++の欠点はオブジェクトの管理よりテキストベースの#includeだと思うがどうよ。
privateなメンバを変更するだけで参照しているプログラム全部コンパイルしなおすのはかなり嫌だ。
実装をさらけ出したうえ、1メソッド=1機能にしようにも複数のメソッドに分割すればするほど再コンパイルの可能性が上がるし。
pImplイディオムとかしょうも無いことやら無きゃいけなくなる・・・
0195デフォルトの名無しさんNGNG
そんなあなたにD言語

と言いたくなるんだけど、正直Dってどうよ?
0196デフォルトの名無しさんNGNG
>>1
「げんあり」ってなに?
0197デフォルトの名無しさんNGNG
まだ知らない人もいるみたいなんで、これ貼っておきますね

Bjarne Stroustrup Interview about C++
http://hp.vector.co.jp/authors/VA000092/jokes/strup.html
0198デフォルトの名無しさんNGNG
197=最近知って嬉々として貼り付けてます
0199デフォルトの名無しさんNGNG
C++が難しいんじゃない
VC++が糞なだけだ
0200デフォルトの名無しさんNGNG
VC++のクソな原因をあげたら
それはC++がクソなせいというオチ
0201デフォルトの名無しさんNGNG
VC++が糞なのはMFCが糞だからだ
0202デフォルトの名無しさんNGNG
>>192
でも、ぼくはガーベジコレクションが走るまでリソースを確保しっぱなしに、なんてできないんです。
0203デフォルトの名無しさんNGNG
BCBはうんこしないよ
0204デフォルトの名無しさんNGNG
>>194
いまさらincludeを無くすという訳にもいかんだろうし、やるとしたら
プリコンパイルヘッダの規格化が良いと思う。
0205デフォルトの名無しさんNGNG
>>194
ヘッダファイルまとめてインクルードしてない?
0206デフォルトの名無しさんNGNG
お母さんには内緒です。
★☆見られるのはちょっと恥ずかしいけど、、、★☆
http://endou.kir.jp/akira/linkvp.html
0207デフォルトの名無しさんNGNG
今更っぽいけど、「スマートポインタが必要な時点で設計ミス」
というのは結構賛成。本当の意味で、対等に共有されている
オブジェクトというのも存在するけど、基本的には、オブジェクトが
誰の下請けとして動いていて、誰と心中すべきかということは
はっきりしているでしょ。意味論的に死ぬべきオブジェクトが、
間違って参照されていて、たまたまそれで動いていても、
それはバグであって、GCがあると単に落ちないだけ。
だから、auto_ptrは使うけど、shared_ptrとなると、vectorに
突っ込む場合に使う程度で、積極的に使うことはほとんど無かったり。
0208デフォルトの名無しさんNGNG
>>207
激しく同意
0209デフォルトの名無しさんNGNG
>>203
BCBってあのC++にはない拡張構文をふんだん使ったあれ?
完全C++ライブラリのOWLが死んで、
C++に(ついでにobject pascalにも)ないclosureという
デリゲートもどきプロパティもどきやAnsiStringを使いまくった
VCLが生き残っているのは皮肉だな。

結論、C++はクソ
0210デフォルトの名無しさんNGNG
>>207
そんな所有関係がはっきりしているような状況はそもそも話題にもなりゃしないだろ。
あくまでオブジェクト同士が対等の場合の話に限るべき。
0211デフォルトの名無しさんNGNG
開店セール見に来てーーーーーーーーーー!DVDを見ようー!GO!
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
開店セール1枚 500円より→→→http://www.dvd-exp.com 
アダルトDVDが激安販売→→→http://www.dvd-exp.com 
アダルトDVDの価格はなーんと1枚900円→→→http://www.dvd-exp.com 
最短でご注文いただいた翌日にお届け!→→→http://www.dvd-exp.com 
セルビデオ店の人気商品が24時間お買い物が出来ます。
        時間をかけてゆっくり選んでください!
          http://www.dvd-exp.com←へGO!
           DVDエクスプレス
0212デフォルトの名無しさんNGNG
スマートポインタがあると、単純に可読性があがるのでいいと思うんだが。
(宣言すると同時にスコープをはずれた瞬間、破棄されることが保証される)

shared_ptrでいまいち寿命がはっきりしないケースというのは、
設計上、特に注意すべきポイントだとは思う(単純にスマートポインタを
つかえばすべての問題が解決するわけではない)が、設計ミスとは
いえないと思う。
0213デフォルトの名無しさんNGNG
>>212
可読性はあがんねーだろ?
現状、Boost知らない奴のが多いんだから。
0214デフォルトの名無しさんNGNG
C++厨って技術先行型だね。
用途は無視してとりあえず作ってみました。
使ってね。って感じ。

「Longhornではインドウがグニャグニャ動いてすごいだろ。」
「それをなんに使うの?」
「・・・」
と同じ感じがする。
0215デフォルトの名無しさんNGNG
生成したらキッチリどこで削除されるのか把握するのがプログラマだろが。smartpointerなんか使うな。デフォルトのポインタで勝負しろ。
0216デフォルトの名無しさんNGNG
なんかもう自作自演が始まってるから相手にしないほうがいいよ
0217デフォルトの名無しさんNGNG
>>214
ダブルバッファリングになって3Dアクセラレータが使えるようになっただけだっけ?
凝ったことするとゲーム屋ご用達になるけど基本は変わらないでしょ?
GUIまわりだけ?
0218デフォルトの名無しさんNGNG
こんな煽りスレが勢いよく伸びていること。
その一方で、C++相談室は、荒れもせずもくもくと進んでいること。
この2つを見ただけで、C++という言語の性質がわかるような気がする。
0219デフォルトの名無しさんNGNG
>>215
GCでは使用されなくなったらGCが起動した時点で削除されます。

あなたはどこで削除されるのか分からないのですか?
GCぐらい使いこなしましょう。
0220デフォルトの名無しさんNGNG
>>219
アホか。GCにたよらないとリーク起こすようなプログラムを書く詰めが甘い奴はプログラマ辞めろってこと。
0221デフォルトの名無しさんNGNG
対等のオブジェクトの相互参照をGCを使わずスマートかつエレガントに実装してみてくれ。
0222デフォルトの名無しさんNGNG
>>221
散々でている参照共有スマートポインタがそれなのでは?
0223デフォルトの名無しさんNGNG
>>220
えぇそういうプログラマは辞めたほうがいいですね。
同時にGCの便利さが分からないプログラマも辞めたほうがいいです。

ちなみに私はGCに頼らなくてもリークを起こさないプログラムを書けて
GCの便利さを認めています。

もしかしてあなたはプログラマ失格者ですか?
0224デフォルトの名無しさんNGNG
>>222
あれじゃスマートかつエレガントに実装できない。
0225デフォルトの名無しさんNGNG
>>222
ゴメン、参照共有スマートポインタってなに?
0226デフォルトの名無しさんNGNG
>>221
対等のオブジェクト同士を無理に関連づけようとするからうまくいかないんだよ。
上の方でだれかがいってた、一つ上に管理クラスを用意する方法が一番綺麗じゃないかな?
0227デフォルトの名無しさんNGNG
それがガベージコレクタじゃねーの?
0228デフォルトの名無しさんNGNG
>>225
誰もアクセスしなくなったあるオブジェクトを自動的に削除するために
そのあるオブジェクトを生成すると同時に削除用オブジェクトを生成する、
そこには参照カウンタなるものがあって、参照する人が一個増えたらカウントアップ
減ったらカウントダウン、でカンウタが 0 になったら、そのあるオブジェクトを削除して
削除用も自滅するって感じかな。
= オペレータをオーバーロードして、ポインタがコピーされたときに参照カンウタをいじくる仕掛け。
-> オペレータもオーバーロードしてあって、見掛けは普通のポインタ。
Pythonの簡易ガベコレの実装がそうだって聞いているけど詳しいことは知らない。
完全にメモリーリークを防げないのでガベコレとは言えないかも。
0229デフォルトの名無しさんNGNG
対等のオブジェクトの相互参照?
class unko
{
public:
unko* p;
};
unko* u1,*u2;
u1=new unko();
u2=*u1;
u1->p=u2;
u2->p=u1;
ってこと?
0230デフォルトの名無しさんNGNG
メモリリークなんてVCにみつけてもらってるよ
0231デフォルトの名無しさんNGNG
>>230
サンクス。一つ賢くなった。
0232231==225NGNG
(;´Д`)誤爆
>>230×
>>228○
0233229NGNG
まちがった。
0234デフォルトの名無しさんNGNG
デリートすんのめんどいからshared_prtr
でもいくらめんどうでも、GCはどうだろう?
パフォーマンスにそれほど影響なければ入れてくれ。
0235230NGNG
>>231
まちがってなーい!
なに×つけてんだゴルァ!
0236デフォルトの名無しさんNGNG
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
★☆                       
☆★ 送料激安!!  送料激安!!  送料激安!!
★☆      http://www.get-dvd.com      
☆★  激安アダルトDVDショップ        
★☆    お買い得セール1枚500円〜980円!急げ!
☆★    インターネット初!「きたぐに割引」  
★☆    北海道・東北の皆様は送料も激安!   
☆★      http://www.get-dvd.com      
★☆        スピード発送!        
☆★      http://www.get-dvd.com      
★☆        商品が豊富!         
☆★      http://www.get-dvd.com      
★☆                       
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
0237デフォルトの名無しさんNGNG
もしかして236みたいな奴ってあるタイミングで一番上にあったスレに自動で貼られるのか?
0238デフォルトの名無しさんNGNG
>>36
> アメリカのアホーにも載ってない言語誰が使うかと。
> ネタにマジレス。
JavaがだめになったらC#に移行するという考え方が現実的でない
ということだろ。だめになったらむしろC++かD言語に移ったほうが
特定環境への依存度を控えめにすることができるってことだろ。

どこかに知られている知られていないを基準にして受動的に言語を選ぶなよ。

>>48
>Java も C# も D も上っ面は似てるけど、対応分野が違うし、
>(特にJavaは次世代COBOLの座が確定状態な上に
これは悪い意味で言っているのか良い意味で言っているのか激しくよくわからん。
「COBOLのシェアを奪う」ので良い意味なのか、
「COBOLと同じようにスパゲティコード吐きまくって
嫌われる言語になる(おれにはとてもそうは思えん。
それだったらC++のほうがよっぽど嫌われやすい)」びで悪い意味なのか
よくわからん。
0239デフォルトの名無しさんNGNG
>GenericsがあれではC++で培われたテクニックが何も使えん)
JavaでGenericsを使うにはCollection系の型キャストの問題を
解決できれば十分で、それ以上のスパゲティ化につながる
C++独自のtemplateのテクニックの必要性を感じないと思うがどうよ。

10年経ったら「Javaは遅い」ともさすがに思わないだろうし
C++の必要性も、ソースコードを汚してまで
細かいポインタ演算や細かいメモリ管理をしてまで使うことも少なくなり
淘汰されると思うが。

うーむ、これはC++信者に対する煽りなのだろうか?
それでもJavaの速度に不満があるなら(10年計画で)独自のJavaChipを自作するなり
C/C++/アセンブラなどを使ってJVMを独自に改造するなりしてパフォーマンスをあげてみるのがいいんじゃないかな。

これからのプログラムは、各CPUにあわせてその場でコンパイルして実行する形式
になる、それでいいんじゃないかと。
0240デフォルトの名無しさんNGNG
>>105
> >>104
> 言語以外にも学習すべきことは山ほどあるので、まだお楽しみは続く。
> UML2.0とか。
UMLは使うだけなら「学ぶ」ほどのものではないと思われ。
しかしUMLの資格試験を取るなら学ぶしかない。
0241デフォルトの名無しさんNGNG
>>108
同感。C++の余計な機能はおまけとして学んでおいて
Javaでもできることもちゃんと学べよ。
0242デフォルトの名無しさんNGNG
>>98
結城浩の「デザインパターン」本のほうが
オブジェクト指向を素早く理解できそうな気がするが。
0243デフォルトの名無しさんNGNG
>>114
> C++ にとってのオブジェクト指向っていうのは、使える方法論の一つに過ぎないんです。
その「オブジェクト指向」による再利用性、拡張性、移植性を無視した
C++プログラマがわんんさかいて後継者が大変な思いをしているんだよ。
0244デフォルトの名無しさんNGNG
10年たってもクライアントサイドでのJavaのシェアはきわめて0に近い悪寒
速度以前に改善すべき点があるんじゃないのか?
0245デフォルトの名無しさんNGNG
>>218
> こんな煽りスレが勢いよく伸びていること。
> その一方で、C++相談室は、荒れもせずもくもくと進んでいること。
> この2つを見ただけで、C++という言語の性質がわかるような気がする。
どういう性質なのかあなたの意見を聞いてみたい。
おながいしますわ
0246デフォルトの名無しさんNGNG
>>244
> 10年たってもクライアントサイドでのJavaのシェアはきわめて0に近い悪寒
> 速度以前に改善すべき点があるんじゃないのか?
じゃ、D言語を普及させておくれよあんた。
C#なんかに乗せられたくないし。
0247デフォルトの名無しさんNGNG
>>188
> 追加されてもM$は絶対に無視するだろうなぁ
M$の流れに合わせる必要があんのかと小一時間
M$に自分の将来を左右される必要があるのかと小一時間
0248デフォルトの名無しさんNGNG
このスレでわからない単語
template
スマートポインタ
GC
STL
Generic programming
...

おまいら日本語しゃべってください
0249デフォルトの名無しさんNGNG
>>248
マジレスすると、無視しても何の問題もないよ。
0250デフォルトの名無しさんNGNG
>>244
> 10年たってもクライアントサイドでのJavaのシェアはきわめて0に近い悪寒
JavaWebStartで自動ダウンロード、自動インストールが売りだと思う。
J2EEと連動しないと動かないクライアントサイドJavaプログラムを
作ってしまえば普及するかな。かえって普及しなくなるかな。

> 速度以前に改善すべき点があるんじゃないのか?
しかし、これは釣りか?
実際シェア0ってことがあるのかと問い詰めてみたいものじゃ。

改善すべき点と何かね? C#厨がJavaと比較してC#の宣伝に使っている
あの中途半端な変な機能をJavaに追加するんならばC++やったほうがいい
ともいえるが、そういうものでもないかね?

それとも、JavaはもっとSmalltalkライクな言語にすべきかね?
0251デフォルトの名無しさんNGNG
>>248
日本語に翻訳したらかえって分かり辛くなる気がする
0252デフォルトの名無しさんNGNG
>>243
C++にもクラスライブラリーを揃えてOOをしようという動きはあったんだが、
とこが、STLをみて考えが変わってそのライブラリーは捨てられ、そしてSTLが標準になって今に至ったんだと。
C++でクラスライブラリーを作っても使い物にならないという結論となった。

っていう話を聞いたことがある。
0253デフォルトの名無しさんNGNG
>>195
> そんなあなたにD言語
> と言いたくなるんだけど、正直Dってどうよ?
C++やJavaがだめになったらC#に以降だなんて最悪。
M$に左右されてversion upするたびにソースコードを無駄に改変する手間は
かけたくない。そんなときD言語に期待。
0254デフォルトの名無しさんNGNG
>>252
標準に仮想デストラクタを持った基本クラスを決めてくれてれば
いろんなところが便利になったんじゃないかと思う。
0255デフォルトの名無しさんNGNG
C#やJavaよりCやC++のほうが超絶に簡単だと思うんだが・・・。
色々な情報に惑わされてねーか。
あとC++とC#とJavaでは用途が違うんでねーか・・・。
0256デフォルトの名無しさんNGNG
>>248
検索するしかないのう。
Javaに関連があるものはtamplateが少し、
GC(ゴミ収集車)がおもいっきり(しかし自動なので意識する必要性がほとんどない)、
STLがtemplate周りで少し(JavaのCollection系ライブラリにも追加されんのかね?)
Generic Programmingが時期Javaでおもいっきり。

スマートポインタ? こんなのしか知らん。
http://www.panasonic.co.jp/pc/prod/note/l1es/spointer3.html

こんなサイトを見つけた。
スマートポインタの落とし穴
http://www9.plala.or.jp/dequartet/new_page_4.htm

スマートポインタ
ポインタ編のおまけとして、スマートポインタについて解説します。
スマートポインタは例外処理やJavaの存在で、必要不可欠な存在にな
りつつあると思います。まだよく知らないという方のための簡単な解説ということで。
http://www.kab-studio.com/Programing/Codian/Pointer/12.html

よく見るとスマートポインタはJavaの常識だすのう。
しかし「スマートポインタ」は死語にみえてしまうのでおじゃる。
0257デフォルトの名無しさんNGNG
>>255
初心者がC/C++の本を読んだら、実際に動かしたときに
ポインタ演算のところとエラーメッセージのわかりにくさと
バッファオーバフローの判別のしにくさなどで
ひるんでしまいそうだが。
0258デフォルトの名無しさんNGNG
>>255
「マイクロ」が付く2つの会社にだまされているのですか?
■ このスレッドは過去ログ倉庫に格納されています