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

C++は難しすぎ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
あんなの理解できるハズないだろ!
わかりやすいプログラミング言語をつくれないBjarne Stroustrupには げんあり
0002デフォルトの名無しさんNGNG
超絶はげどう
0003デフォルトの名無しさんNGNG
>>1
がんばれ
0004デフォルトの名無しさんNGNG
C++、ま、基礎的な文法は理解してるけど
これでコーディングはしたくない。
0005デフォルトの名無しさんNGNG
その意見を誰一人否定しないと思うが使えんるんだよアレ
とりあえず単発禁止、削除依頼だしとけ。
0006デフォルトの名無しさんNGNG
Javaの方が10倍くらい楽。
JavaがだめになったらC#に移行する。
0007デフォルトの名無しさんNGNG
C++でゲームは作れるが、チームプロジェクトでもしない限り、
VisualBasic等の方がすぐ作れて楽しいと思う。
0008デフォルトの名無しさんNGNG
Write once, compile anymore.
0009デフォルトの名無しさんNGNG
>>1
> あんなの理解できるハズないだろ!
そうかなぁ。
0010デフォルトの名無しさんNGNG
今からはC++の時代じゃない。ハードウェアの性能が上がった今はC++など
やっていても仕方がない。

(個人でちょこちょこっとやる場合は。)
0011デフォルトの名無しさんNGNG
これからはひまわりの時代
0012デフォルトの名無しさんNGNG
>>1
お前が頭悪いだけだろう。人のせいにすんな
0013デフォルトの名無しさんNGNG
>>6
template が使いこなせるようになれば世界が変わるかもよ
C++の殆ど全機能が使いこなせるようになるとJavaも必ずしも楽でもないと分ると思うが・・・
0014デフォルトの名無しさんNGNG
>>13
テンプレートは、Javaでも来年頃サポートされるらしい。

0015デフォルトの名無しさんNGNG
Javaのtemplateは使い物にならねぇよ
0016デフォルトの名無しさんNGNG
まぁC++が強力なのは否定せんが
俺は非力でも言語仕様の簡単なものの方が良い。
オートマ車で十分だよ。
0017デフォルトの名無しさんNGNG
誰かが言ってたな。
昔のプログラマが不幸だったのは、Cを覚えないと何もできなかったことだって。
今の言語なら、JavaでもVBでも、他の言語で大概潰しが利くから、
無理してC++覚えなくてもいいんじゃないか?
C++じゃないとできない事をやろうとしているなら別だけど。
0018デフォルトの名無しさんNGNG
なんか「STL使ってるプログラムは読みにくい」とへたれに言われた
のですが、ここのへたれ方々もそういったことをほざくのでしょうか?

typedef vector<int> IntArray;
IntArray ia;
ia.push_back(10);

これってやっぱ読みにくいんですか?
0019デフォルトの名無しさんNGNG
>>18
つーか,テンプレ知らない。
0020デフォルトの名無しさんNGNG
どんなことでも知っている人にしかわからないよ

でC++だけど俺も最初あんな物は開発者にしか分からないとか思っていたんだが
暇を見て解説書を眺めていたら今やもうSTLもBoostも手放せなくなっている
0021デフォルトの名無しさんNGNG
>>18
テンプレートというか、iaという変数名に対して小一時間問い詰めたい。
おまえはなぜ変数名に2文字しか使わないのかと。
誰かに「この変数、何?」って聞かれて得意づらするキモオタなのかと。
0022デフォルトの名無しさんNGNG
まぁ今の時代、UMLとか覚えることが増えすぎているし
OOだと分析・設計に手間を食うわけだから
なるべく言語は簡単な方がいいな。

0023デフォルトの名無しさんNGNG
18ではないが IntArray で変数名が ia なら見ての通りだと思うが、
これで解らないなら脳がヤバイよ。
0024デフォルトの名無しさんNGNG
>>18
俺もSTL使ってるけどキタネェなって思うときはあるよ。
ポインタの配列をvectorでもっておいて
容量を増やしつつ新しく作ったものを格納して初期化
って良く使う流れを行うとなんか汚くなるんだけどみんなどう書いてる?
俺がSTLかじっただけでアホなやり方してるだけかもしれないけど。
0025デフォルトの名無しさんNGNG
3行しかないサンプルでどんな意味のある変数名
付ければ >>21 は満足なのか。
0026デフォルトの名無しさんNGNG
>>24
汚くなったコードを晒してくれれば添削できるかもしれない。
0027デフォルトの名無しさんNGNG
>>26
携帯なので書きにくいんだ。
手順をいうと要素を増やすのに
・サイズを取得する
・リサイズして1増やす。
・newで生成したものをいれる。
・今作ったもの初期化する。

てやってるんだけど
これが汚いんだ本当。
末尾に追加とかあると思うけどリサイズで済むなら別にいいやとか思ってたりする。
一番末尾にある要素にもsize()-1とかやってたりする。
0028デフォルトの名無しさんNGNG
>>6
>JavaがだめになったらC#に移行する。
(゚Д゚)ハァ? 時代はD言語への移行だろ
0029デフォルトの名無しさんNGNG
v.push_back(new hoge("hoge"));
なら1行で済むはずなんだが...。


0030デフォルトの名無しさんNGNG
>>15
おまえはここへ逝け

【猿が】JavaニGenericsハ不要 【ソース汚す】
http://pc2.2ch.net/test/read.cgi/tech/1055519583/l50
0031デフォルトの名無しさんNGNG
>>1
その気持ちは理解できなくも無いが、全ての機能を覚えなくても良い、
どんな機能があるか概要だけ知っておいて、詳細は必要になったときに
覚える、というスタンスでやればいいんでないの?
0032デフォルトの名無しさんNGNG
>>1
ttp://hp.vector.co.jp/authors/VA000092/jokes/strup.html
0033デフォルトの名無しさんNGNG
>>31
そういう人はよく見かけるけれど、C++に限ってはそれは危ないよ
003418NGNG
>>21
ぎゃはははははは(ワラ

ちゅうがくせいはなつやすみのしゅくだいでもやってろって(ワラワラ


( `_)乂(_´ ) 勝負! \(^o^)/
☆○(゜ο゜)o ぱ〜んち、☆(゜o(○=(゜ο゜)o バコ〜ン!!( ゚▽゚)=◯)`ν゚)
・;'パーンチ (>_<) いてっ!
ダメ!! ゛o(≧◇≦*)oo(*≧◇≦)o″ダメ!!
(☆o☆)きゃ〜〜(@_@;)やられた〜〜(o_ _)o ドテッ ガ━━(゚Д゚;)━━ン!
(+_+) 気絶中。。。。・゚゚・o(iДi)o・゚゚・。うぇぇん <(゜ロ゜;)>ノォオオオオオ!! (゚□゚;ハウッ!
なあんて(#⌒▽⌒#)こんな私っ!σ(^_^)だけど、(///▽///)
お友達になってm(_ _)mくださいませませ♪('-'*)フフ
ドガ━━━Σ(ll◎д◎ll)━━━━━ン ということで。(^-^)vじゃあね〜〜〜♪
(⌒0⌒)/~~ ほんじゃo(゜▽゜ヽ)(/゜▽゜)o レッツゴー♪
0035デフォルトの名無しさんNGNG
>>33
具体的にどんなことでしょうか?

俺なんかは多重継承なんて、できることは知っててもC++始めて数年間、やり方を
知りませんでした。
今でも全く、と言っていいほど使わないけど。
0036デフォルトの名無しさんNGNG
>>28
アメリカのアホーにも載ってない言語誰が使うかと。
ネタにマジレス。
0037デフォルトの名無しさんNGNG
D言語
http://www.digitalmars.com/d/
0038デフォルトの名無しさんNGNG
>>35
多重継承とかならキャストの問題とか、
他にも代入を定義していないと、構造体としてコピーされるとか
explicit をつけないと勝手にキャストされて謎の挙動になるとか
ようするに、全部把握していないと簡単に落とし穴に簡単に落ちるってところ。
C++歴史があるので、積み上げに積み上げた無理のある言語仕様になっていますからね。
言語仕様ではないが所有権共有リファレンスカウンタ式スマートポインタを何も考えずに使ってしまう人とかも危険。
また、実際使うときにも、話題によく上がっているようにtemplateなんかは、
細かい仕様を理解していないと上手に使えないから、
C++本来のおいしい所が使えなくて、なんだこりゃ具合の悪い言語だって事になってしまいます。

とはいっても、いっぺんに全部とは絶対に行かないので、少しづつ憶えざるをえないですが、
それでも最終的には全部知らないとよろしくないと思います。
0039デフォルトの名無しさんNGNG
>>29 例外安全にしる。
0040デフォルトの名無しさんNGNG
>>29
追加したあと追加した要素を初期化したいときなんかは
リサイズ使うときとあんまり変わらなくないですか?

ところで末尾の要素ってどうやってアクセスしてますか?
0041デフォルトの名無しさんNGNG
vector::back()
0042デフォルトの名無しさんNGNG
>>40
> 追加したあと追加した要素を初期化したい
ここらへんが間違ってないか?
0043デフォルトの名無しさんNGNG
>>38
> 言語仕様ではないが所有権共有リファレンスカウンタ式スマートポインタを何も考えずに使ってしまう人とかも危険。

これってなにか落とし穴があるの?
0044デフォルトの名無しさんNGNG
>>43
巡回参照問題とかでさがしてみ
0045あぼーんNGNG
http://homepage.mac.com/hiroyuki44/
0046デフォルトの名無しさんNGNG
循環参照て言わないか
0047デフォルトの名無しさんNGNG
>>41
ありがとうございます

>>42
なんで駄目なんですか?
自分じゃどこが悪いのか全くわかりません。
0048デフォルトの名無しさんNGNG
難しいのは同意だが、代わりがないのも事実。
Java も C# も D も上っ面は似てるけど、対応分野が違うし、
(特にJavaは次世代COBOLの座が確定状態な上にGenericsがあれではC++で培われたテクニックが何も使えん)

というわけで C -> C++ の流れの次の言語の登場を待たれい!
俺は今そんな目的でトランスレータを作ってるが、こないだやっと数値リテラルをトークン化できるようになったトコロなので
完成は10年後くらいだ!!
0049デフォルトの名無しさんNGNG
高校2年のときVBがはじめて3年後半からC++にあがって今大学3年、C++以外使う気にならないな。
VBからC++にうつったときはこんなもん使えるかよバカ、::ってなんだよボケとか思ったが・・・
しかしC++なのにポインタばっかり使って参照は滅多に使わないな。なんでだろう。
まあ継続してやっていけば年々理解が深まるからいずれ使えるようになるさ。
良著と呼ばれる本をあさって読もう。
0050エスパー伊藤ギャビンNGNG
サイキックシェアードポインタ最強!
0051デフォルトの名無しさんNGNG
>>18
つーかSTL無いと困るよね。とくにvector。一回STL本に目を通せば別に読みづらくないのに。
0052デフォルトの名無しさんNGNG
>>47
未初期化なオブジェクトがコンテナに含まれているタイミングがある。
マルチスレッドだと深刻な問題になり得る。

new のあとにさらに初期化が必要なのが、もっと根本的な問題。
0053デフォルトの名無しさんNGNG
Effective C++
More Effective C++
Efficient C++
Exceptional C++
More Exceptional C++
Modern C++ Design
こんなトコかな?これくらいこなせば中級者くらいにはなれる。
0054デフォルトの名無しさんNGNG
あと、
Effective STL
C++ FAQ
C++標準ライブラリ チュートリアル&リファレンス
憂鬱
0055デフォルトの名無しさんNGNG
>>40
コンストラクタでの初期化と再初期化のこと?
格納したクラスの仕様書に載ってるはずだが...。

iteratorって知ってる?
*(v.end())

もう少し基本的なことを調べたほうが近道だと思われ。
explicit,コンストラクタ初期化子,iterator,
Effective C++,STL標準講座,boost,DeepC++(MSDN templateの話題),Modern C++
0056デフォルトの名無しさんNGNG
> *(v.end())
未定義

0057デフォルトの名無しさんNGNG
More Effective C++ は翻訳が悪いらしいが本当?
0058デフォルトの名無しさんNGNG
c++はどんなにSTLやtemplateその他の機能が理解できてもしょせん
根っこのほうを理解していないと一人よがりなコーディングになるのがオチ。
0059デフォルトの名無しさんNGNG
*(v.end()-1)
end()は末尾の一つ後だったね...。
0060デフォルトの名無しさんNGNG
>>57
たしかに読みにくかったけど、まあしょうがないでしょう。
嫌なら原著嫁って事で。

>>58
>1 の書き方だと他の言語はしっかりわかるみたいだけど。
ところで根っこの方って何?ぼいんタン演算とかそういう古臭いCの知識だったらむしろはじめは無い方がいいとすら思う事もあるけど。
0061デフォルトの名無しさんNGNG
>>52-55
初期化ってコンストラクタですべてやりきるものなんですか?
そもそもtryとcatchを職場で使っている人間がいなかったりします。
initとかありますよ。
紹介してもらった本よんで頑張ります。
0062デフォルトの名無しさんNGNG
>>60
ポインタ演算くらいは古臭いとかじゃなくてC系の言語を使うものの常識して欲しいと思うが・・・
C++を使うって時点で特殊なターゲットを相手にする確率はメチャメチャ高いわけだし。
とはいっても、知らないと一人よがりになる根っこの方って何だよと思うのは同感。
006360NGNG
>>62
ポインタはほとんどオブジェクト参照としてしか使ってないのでね。
大抵は配列の書式で間に合うし。
CやっててC++できないって人の多くが、「今までのやり方==正しいやり方」っていう勘違いの為に
C++使えないでいると思う。
だから下手するとCとか知らないほうがC++マスターするにはいいんではないかと。
ちなみに漏れはBASIC系育ちだが、もはや母語がC++になってまった感があります。
(もちろんポインタ演算もたまにしますよ、パフォーマンスが気になる部分で、ポインタ演算使っても複雑怪奇にならない所だけだけど。)
0064デフォルトの名無しさんNGNG
>>63が良いこと言った!
0065デフォルトの名無しさんNGNG
イテレータがあればポインタいらない
0066デフォルトの名無しさんNGNG
>>63
でもCからC++に行った人で、「今までのやり方 != 使ってはいけない悪しきやり方」と
思い込む余りにC++の全てを覚えることに焦って破綻、ってパターンもあると思うが。
0067デフォルトの名無しさんNGNG
>>66
!= じゃなくて == だった。
0068デフォルトの名無しさんNGNG
>>63
「今までのやり方!=正しいやり方」はもちろん「近年のやり方!=正しいやり方」です、
こんなものは時代ととも学者が適当に理由をつけて代わる物だし、貴方も勘違いです、多分。
なお、ポインタを使うことにより、使わないよりスッキリしたプログラムを書くことができる場合
それを使わないで執拗にこだわれば、それは裸の王様という物です。
ポインタ演算がパフォーマンスのためだけにあると思うのであればそれは間違いなく勘違いでしょう。
0069デフォルトの名無しさんNGNG
ポインタはつかわない。
参照!コンテナ!イテレータ!
おわり。
0070デフォルトの名無しさんNGNG
>>68
釣られんなよC親父。
0071デフォルトの名無しさんNGNG
>>70
今さら「釣り」か。悔し泣きカコイイな( ´,_・・`)プッ
0072デフォルトの名無しさんNGNG
>>68==71
哀れだな。管理職にもなれず30歳定年説を覆しつづけて現場の若造から
ウザがられ続けているC親父というのは。
0073デフォルトの名無しさんNGNG
うわーわかりやすい。
「釣り」っていうごまかしを看破されて何も言い返せないもんだから、
苦し紛れの妄想を水増しして間に合わせてるよコイツ。
だっさ。
0074デフォルトの名無しさんNGNG
>>68==71==73
どうしてムキになっているのですか?
怖がらなくてもいいのにー:p
0075デフォルトの名無しさんNGNG
>>74
あー、今度は日下部の真似ね。よしよし。
でも下手糞w

さ、次はどうやって自分の火病をアピールする?
0076デフォルトの名無しさんNGNG
>>75
ご苦労様。うん、君が正しいね。よかったね。
0077!= 75NGNG
>>68
>時代ととも学者が適当に理由をつけて代わる物
学者の意見なんて誰も聞いていない。だいたい学者なんているの?
スパハカの人たちがテクニックを開発し、それが広まる。

>ポインタを使うことにより、使わないよりスッキリしたプログラムを書くことができる場合
C++では、そんな場合は、まずない。
そんなこと言ってるようじゃ、やっぱりC親爺とよばれても(ry
0078デフォルトの名無しさんNGNG
68 だけどね、普段からポインタを使っているわけではないよ、基本はスマートポインタだ。
いずれにしてもあんたらよりはC++を使いこなしている自信はあるよ。

>>77
>C++では、そんな場合は、まずない。
と思っているからいつまでたっても使えないのさ。
0079デフォルトの名無しさんNGNG
>いずれにしてもあんたらよりはC++を使いこなしている自信はあるよ。

へー。使いこなしてるんだー。すごいですねー。
スマートポインタですか。ふーん。
年を取っても若いものには負けてないんですね。

俺たちもがんばろうな。(w
0080デフォルトの名無しさんNGNG
>なお、ポインタを使うことにより、使わないよりスッキリしたプログラムを書くことができる場合

すまんが、コード例とかで示してくれんか。俺には思いつかんのであげ
0081デフォルトの名無しさんNGNG
68じゃないけど。こういう書き方ってどうなんだろ。

struct a_type
{
unsigned char a : 2;
unsigned char b : 4;
unsigned char c : 2;
}

void* const addr = (void*)0x420000;
reinterpret_cast<a_type*>(addr)->b = 0x1234;

すっきりしてないかも。

0082デフォルトの名無しさんNGNG
厨房の頃プログラミングしようと思って、VC++6買ったはいいが買ったその日に挫折した。
0083デフォルトの名無しさんNGNG
でも、今なら出来そうな気がする。。
あのときに買ったVC++6Proのアカデミック版、探してみよう。
0084デフォルトの名無しさんNGNG
>>81
a_type& a = *reinterpret_cast<a_type*>(0x420000);
a.b = 0x1234;
0085デフォルトの名無しさんNGNG
>>82
できるか!C++は数学と同じ積み重ねが必要なんだぞ!
0086デフォルトの名無しさんNGNG
VB→Delphi→C#と、それぞれ中途半端に積み重ねたので。
0087デフォルトの名無しさんNGNG
a_type& a = *reinterpret_cast<a_type*>(0x420000);
0088デフォルトの名無しさんNGNG
>>68はどこに逃げた?
プゲラって書いてもいいか?
0089デフォルトの名無しさんNGNG
>>88
あなた79?
反応もらえるような内容のあるレスじゃないと思うけど・・・。
0090デフォルトの名無しさんNGNG
>>85
本当か?
0091デフォルトの名無しさんNGNG
16 人中、1人の方が、「このレビューが参考になった」と投票しています。

似非オブジェクト指向開発者にお勧め, 2003/05/23
レビュアー: カスタマー   東京都 Japan
この本ほど素人から絶賛され,そうでない人から無視される本も珍しいの
ではなかろうか.ざっと見ただけでも,プログラミングパラダイムが完全に
1〜2世代前のものだということが伺える.10年前ならいざしらず,2000年
も過ぎた今になってもこのような本が絶賛される辺りに,日本のソフトウエア
産業の人材枯渇という深刻な問題が伺える.



ウホッ
0092デフォルトの名無しさんNGNG
スマートポインタはポインタの6倍遅い(boost::shared_ptr)
0093デフォルトの名無しさんNGNG
スマートポインタなんて循環参照も手動で解決しなきゃいけない糞ショボイもの使わないで、
GCライブラリ使おうぜ。w3mだって使ってるんだから。
0094デフォルトの名無しさんNGNG
>>91
何の本?
0095デフォルトの名無しさんNGNG
憂鬱
0096デフォルトの名無しさんNGNG
>>95
ありがとう、見てきた。マジだw
0097デフォルトの名無しさんNGNG
1人は本人だな
0098デフォルトの名無しさんNGNG
どんな本だか逆に読みたくなってきてしまった。きっと次に本屋でみたら買ってしまう
ttp://www.amazon.co.jp/exec/obidos/ASIN/4881356194/ref=lm_lb_3/250-0725465-7120222
0099デフォルトの名無しさんNGNG
>>98
憂オブだな。いまのところOOを理解するのにこれが一番手っ取り早い。
俺は3回読んだ。
これに目を通さずして、OOを身につけたという人は、よほどのプロだと推測される。
0100デフォルトの名無しさんNGNG
似非オブジェクト指向開発者キタ━━━━(゚∀゚)━━━━ッ!!
0101デフォルトの名無しさんNGNG
まぁこの本はUMLで表記されていないというだけで
本質的なところは役に立つ、と推測される。
■ このスレッドは過去ログ倉庫に格納されています