トップページ⇒tech
107コメント33KB

皆さまC++の具体的な勉強方法は?

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
皆様の、初めてC++触ったときから今にいたるまでの、勉強方法を具体的に教えてください。
読んだ本とか、標準ライブラリのリファレンスを読め、とか。
なんか、いつまでたっても、ポインタ、クラスの話ばかりで、実際にそれがどうプログラミングの実践の中で有効なのか、ぜんぜん見えてこない。。
レベルアップしたい!
0002デフォルトの名無しさんNGNG
実践之最良師也
00032getNGNG
肛門に興味を持ちましょう。
レベルが格段に違ってきます。
0004デフォルトの名無しさんNGNG
A++から勉強致しました。
0005デフォルトの名無しさんNGNG
モノ作らなきゃ身につきません。
何か自分にとって初めてのものを作ってみると、
「これどうやるんだ?」という事がいくつもでてきます。
考えたり文献を調べたり人に聞いたりしてそれを解決する。
そういうのが勉強です。
0006デフォルトの名無しさんNGNG
>>2 に1票
0007デフォルトの名無しさんNGNG
ポイントは、松田聖子のCDを聞きながら勉強することなのです
0008デフォルトの名無しさんNGNG
漏れは岡田有希子を推しとく。
0009マジレスしてみるNGNG
とにかく本を読みプログラムを書く。これしかない。
以下、必読書リスト。全部常備すべし。わからなくても一度は目を通すこと。
プログラミング言語C++第3版 (アスキー)
C++標準ライブラリ チュートリアル&リファレンス (アスキー)
Generic Programming ―STLによる汎用プログラミング― (アスキー)
Effective C++ (アスキー)
More Effective C++ (アスキー)
Exceptional C++ (ピアソン)
デザインパターン (ソフトバンク)
0010_NGNG
>>1
ある程度のレベルなら他の人のソースを見る(みれるものはね)
まだC++を全然わからないなら一通り覚えてからソースを見る
0011デフォルトの名無しさんNGNG
>>1腰が低くてよろしい。
0012デフォルトの名無しさんNGNG
>>1
コバケンの「これならわかるC++」(ブルーバックスの方)読んだ?
0013デフォルトの名無しさんNGNG
まずは >>2 >>5 に同意。一段落したら>>9に同意。
0014デフォルトの名無しさんNGNG
俺は知り合いにソースをミロと言われた。
それでまねをしろ、と。
Cすらできない人にもC++やVC++のソースを見て真似しろともいっていたがどうだろう?
0015デフォルトの名無しさんNGNG
>>14
ソース読むのもいい勉強になるけど、それだけですむようなものでもない。
たとえばソース読むだけで>>9にあげられてる本に書いてあるような
テクニックや体系的な知識を読み取るのは無理。
0016デフォルトの名無しさんNGNG
C++勉強しようと思うんだけど・・・

http://pc.2ch.net/test/read.cgi/tech/1016308148/l50
0017デフォルトの名無しさんNGNG
>>15
だよね!
昨日それで知り合いと言い合いになっちゃって。
0018デフォルトの名無しさんNGNG
>>14
その知り合いは真似しか出来ないに1票。

自分の知らないテクニックは、真似だけしても、危険なコードになる可能性が高い。
知る、読む、作るが揃ってこそのプログラミングだと思う。
0019デフォルトの名無しさんNGNG
>>18
いやー同意してくれる人がいてくれてよかったよー
覚えるには基礎からだよな。
それから真似したりしてテクニック盗むのが(゚д゚)ウマーだな
0020デフォルトの名無しさんNGNG
ここでも読んでおけ。

ttp://hp.vector.co.jp/authors/VA000092/jokes/strup.html
0021デフォルトの名無しさんNGNG
>>20
がっかりすた。
C萌え
0022デフォルトの名無しさんNGNG
>>19 いや、しかしちゃんと動くコードが全体として提供されているなら

全体の作り方から、
ソース読みながら変更してみたり、判らない所でブレークしてトレースしたり
教科書読みながら、そのキーワードのある部分を触るのが一番速いと思う
0023デフォルトの名無しさんNGNG
>>22
なるほど。
自分の作りたいものと似たようなもののソースを見て
そのように勉強すると無駄がなさそうですね
0024デフォルトの名無しさんNGNG
>>21
だからそれは (略
00251NGNG
とても感謝
>>all
0026デフォルトの名無しさんNGNG
>>9
毎回でてくるリストだけど、情報古いよ。
今なら、Accelerated C++読んどけば、
少なくとも、EffecticeC++はいらない。More..は興味のあるとこだけ
斜め読みするくらいの価値はあるかも。
Exceptional..は買う価値があるかもしれない。
002726NGNG
スペルミスった、かっこ悪い・・・
00289NGNG
>>26
情報 tnx。正直、自分でも毎度毎度同じ本を紹介してるとは思ってた。
逆に、Accelerated C++ にしかない情報ってある? あるなら読んでみようと
思うんだけど。
0029デフォルトの名無しさんNGNG
>EffecticeC++
一文字しかスペルミスしていないんだけど、ぜんぜん違う単語に見えた。
0030( ´�D`)ノNGNG
「独習C++」は、結構いい本だと思うのですが、いかが?
誰も推薦していないようですが。。。
0031デフォルトの名無しさんNGNG
>>30
独習C&独習C++は俺も良い本だと思うよ。
ドリルみたいに理解テストがあって、学習しながら進めるしね。
0032デフォルトの名無しさんNGNG
>>1
アセンブラ等をやっておくと、
構造化プログラミングや、オブジェクト指向のありがたみがわかるので、
お勧め。
0033デフォルトの名無しさんNGNG
C言語プログラミングレッスンは初心者にはいいかも。
…あまり評判よくないかな?
0034デフォルトの名無しさんNGNG
↑あ、これはCだった。
0035デフォルトの名無しさんNGNG
学校とかで習うと知識が偏って会社とかあまりやとってくれないとか聞いたんだけど
実際のトコはどうなのかな?
0036デフォルトの名無しさんNGNG
>>35
どういう風に偏るんだろう・・・。

学校でしか習っていなかったら意味ないけどね。
0037デフォルトの名無しさんNGNG
>>36
発想がなくなるからヤメレ!っていわれました。
0038デフォルトの名無しさんNGNG
>>37
どっちにしろ意味はないから、やめてもやめなくても一緒だと思う。
003926NGNG
>>28
自分の学習のためなら、今さら必要ないと思われ。
しかし、後輩を教育(もしくはC++の布教活動)する必要があるなら
ナナメ読みぐらいしとくことをお勧め。
>>30
俺も最初に読んだのが独習C++だったので、思い入れはある。
確かに説明が明解だし。
しかし、あの本のスタイルだと、これからSTLってところで
普通の読者(俺含む)はおそらく息切れなのでは。
だから、文法は厳密に理解してるけど、C++の便利な側面がよく分かって
なかった人にとって、入門書なのに、stringとSTLの使い方から、
解説をはじめてしまうAcceleratedC++のやり口は新鮮なはず。
考えてみれば、低レベル部分の仕様は高レベル部分の使い勝手をよくする
意図で修正されているはずなので、高レベル部分から説明をするのは合理的
だし、多分、そのほうが頭の中で整理しやすいと思う。
デストラクタ、コピーコンストラクタという特定のタイミングで必ず
実行されるルーチンを活かしたプログラミングのノウハウは今のところ
C++特有の文化(だと思う)なので、その部分を解説したスタイルガイドは
重要でしょう。
この特定のタイミングで実行される処理って考え方を拡張していくと、
アスペクト指向プログラミングに行き着くのかな・・・とか思ったり。
AspectC++って使える言語に仕上がるのかな?
最後に、Lokiマンセーってことだけは書いておかねば。
0040デフォルトの名無しさんNGNG
俺もAccelerated C++ファンだよぉん。
00419NGNG
>>39
おお詳しいレス、tnx。なんか読みたくなってきた。
自分は今、一人で仕事をやっているんで、どっちかというと
「C++の布教活動」用だな。
00421NGNG
おおスレが伸びとる。
プログラミングを体得してきた人って皆自分なりのノウハウを持っているからだろうな。
そういうノウハウをつかんでいく作業だけれども、まだまだ暗中模索の状態。

それにしても、インクルードされる標準ライブラリがナゾすぎです。。
どうやって、標準ライブラリ関数は動いてるんでしょうか?
一般的な入門文法にでてくる、書型、クラス、演算子だけを組み合わせれば、あんなに複雑な関数をくみ上げられるんでしょうか?
その辺りが腑に落ちなくて進まない感じですな。
とりあえず、上で紹介してくだすった、標準ライブラリ関連の参考書をゲットしてみよう。
0043デフォルトの名無しさんNGNG
>>42
環境があるなら標準ライブラリのテンプレートが見れるんじゃ?
0044デフォルトの名無しさんNGNG
>>42
なんか「関数」にとらわれてるような。
どこか根本でまちがってるような気がするのは、気のせい?
0045デフォルトの名無しさんNGNG
>>42
というか知らなくてもイイコトだろ?
ある意味商品なんだからソースを知られたら作り手はあまり嬉しくないだろ。
ただこのヘッダファイルを読みこんだらこれが使える程度でいいと思うが。
0046デフォルトの名無しさんNGNG
age
0047デフォルトの名無しさんNGNG
A級B型C++ ソフトバンク刊
0048デフォルトの名無しさんNGNG
>>47
絶版?
0049デフォルトの名無しさんNGNG
>48 そのとおり。
でもわかりやすいホンだったから、しょうかいしたかったんだよぅ。
0050デフォルトの名無しさんNGNG
>>49
中古本屋にしか売ってないのかな
0051デフォルトの名無しさんNGNG
>50
http://www.sak.iis.u-tokyo.ac.jp/~takashi/abc.html
でも肝心の本が手に入らないんじゃなぁ。
0052デフォルトの名無しさんNGNG
>51
無理みたいだね。
http://shopping.yahoo.co.jp/shop?d=jb&id=19460190
結構評判いいみたいだったのに。
http://piza.2ch.net/tech/kako/992/992593450.html
0053デフォルトの名無しさんNGNG
そういわれるとホスィ…
古本屋を巡ってみよう
0054デフォルトの名無しさんNGNG
>51
ちゃんと for (i=0: …… の i のスコープの仕様変更にも対応してるね。
漏れはこれが C Magazine に連載されてたときに連載終了間際に知って、
本買ったんだよな……

当時 Borland C++ 3 手に入れて喜んでた工房だったんだけど、
わかりやすかったよ。

当時作ったクラスライブラリはもう使ってないけど。
だって工房のとき作ったのってありがちな文字列クラスとか、
演算子オーバーロードの練習で作った行列の演算のプログラムとか
だけだもん。


0055デフォルトの名無しさんNGNG
入門用の本(A級B型C++)の話が続いたので、
中級にさしかかった人向けの本を。

--------------------------------
C / C++ プログラミング実践応用事典
Anthony Porter 著、竹形 誠司 訳、技術評論社

もいいよ。役に立つテクニックから役に立たないテクニックまで。
あるていど C++ がわかってきて、自分のスタイルができ始めたらよむといいとおもう。
はじめから読むとなんかこの著者のスタイルに引きずられそうなんだよね。

---------------------------------
WRITING SOLID CODE
Steve Maguire著/岡本健太郎訳、264ページ、ASCII

Microsoft Press の本の訳本。
MS 嫌いの人もいるけど、そういう偏見を捨てて読んでみるといいと思うホン。
C++ に特化された話ではないし、マジメ(?)なプログラマや
プロジェクトリーダなら実践しているとおもうけど、
再確認のためにもいいとおもう。
0056デフォルトの名無しさんNGNG
>A級B型C++
俺はO型のせいか、なんかムカツク題名だな。
0057デフォルトの名無しさんNGNG
>A級B型C++
おれはC型のせいか、なんかうれしい題名っ!
0058デフォルトの名無しさんNGNG
>>57
あんた旧世代の人間?
俺はC++型ですが。
0059デフォルトの名無しさんNGNG
肝炎?
0060デフォルトの名無しさんNGNG
age
0061デフォルトの名無しさんNGNG
1じゃないんだがチョト質問。
C++primer(アスキー)って本はどう?
プログラミング言語C++第3版 (アスキー)とどっちにしようか悩んでんだが、
どっちのほうが読む価値あるかな?
0062デフォルトの名無しさんNGNG
と、age忘れ。
0063デフォルトの名無しさんNGNG
オブジェクト指向のなんたるかがわかってないのにC++を使ってるヤシのソースほど惨いものはないわな…。
カプセル化とかめちゃくちゃ無視しまくり…。
0064C++万世NGNG
>>63
事実認識としては正しいと思うが、一方、
>オブジェクト指向のなんたるかがわかってないのに
なんて書く奴もどうかな。
そんなたいしたもんじゃないのに。
0065仕様書無しさんNGNG
今まで掻いたマスの数だけプログラムを書け。
0066デフォルトの名無しさんNGNG
>>65
うーん。同じくらいかも。まじで。みんなはちがうの?
0067デフォルトの名無しさんNGNG
マジ? 毎日何本も作ってるの?
0068デフォルトの名無しさんNGNG
あくまで練習用のプログラムだろ。

んなら、1日2、3本は掻いた、いや書いたよ。
#include <iostream>
using namespace std;

int main(){
cout << "万世とはマンセー?" << endl;
}

ほら、また1本。
0069デフォルトの名無しさんNGNG
>>61
C++ primer って、なんであんな風に1冊に全部詰め込んであるのかと疑問が湧く。
アンサーブックのほうを見て、良書の予感がしてセットで買おうかと思ったけど、
本体のあの分厚さで萎えた。量が多いなら多いで、話題ごとに分けて、全3,4冊の
本にすべきだったんじゃないかと思う。「分割できなかった」ってんなら、著者の
能力を疑わざるを得ない。だから俺は敬遠した。
けど、前書き・後書きや目次を見たら意見が変わるかも。分厚さで瞬時に萎えたので、
チェックしてなかった(あの分厚さは意図したものかもしれんし。理解しがたいけど)。

推薦図書スレでも薦めてる人は今のところいないみたいだし(否定してる人も
いないけどね)、プロ言にしといたほうが無難じゃないかな?
0070デフォルトの名無しさんNGNG
>>69
thx!!デス
推薦も否定もいないとは…
0071デフォルトの名無しさんNGNG
と、ageてしまった…スマソ…
0072ログを見ずにカキコNGNG
オブジェクト指向とかカプセル化とかはとりあえずほっといて、
>>65 の言うとおりとにかく書いて慣れることじゃないかな。
関数、ポインタ、クラスとか、基本的なことがわかるまではとにかく試行錯誤。

で、ある程度使えるようになって他人のソースを見て多少理解できるようになって
初めてオブジェクト指向とかカプセル化とかを学ぶ。
すると、今まで不便に思えていたことがこうするとわかりやすいんだ!みたいに
ピンとくるんじゃないかな。
(似たようなクラスを何個も書いてて、継承の概念を知ると感動する)
0073デフォルトの名無しさんNGNG
C++PrimerでC++を覚えましたが何か?
未だにstroustrupは持ってませんが何か?
007469NGNG
>>73
なんだ、読んでる人いるじゃん。どうだったよ? 良書だった?
0075デフォルトの名無しさんNGNG
>>74
98年当時はまともな本が、これとProgrammingC++しかなかった。
ProgrammingC++の方は知ってる通りリファレンス的内容で
初めて勉強するには向いてないのは明らかだったから、
Lippmanを選んだんだよ。間違いやすいところをコードで
示してくれてる辺りはよかったと思ってる。

だけどそれは今となってはねぇ。初学者が手に取る本としては
もっと良いものがあるだろうし、リファレンス的に使うにしては
ちょっと説明がゴテゴテしてる。だから俺は進めない。
0076デフォルトの名無しさんNGNG
>>12が吉。
0077デフォルトの名無しさん NGNG
primerを分厚いとかほざいてるやしは永遠にC++をマスターできねーだろなw
0078デフォルトの名無しさんNGNG
primerの厚さに萎えな人に、ARM(邦訳版:注解C++リファレンス)を推してみるテスト。

http://www.amazon.co.jp/exec/obidos/ASIN/0201514591/yfcbookshelf-22/250-9307622-8827433
http://www.cbook24.com/bm_detail.asp?sku=01022102
0079デフォルトの名無しさんNGNG
>77
しかしC++のこまごまとした記法を説明するならともかく、
オブジェクト指向を説明するのに分厚い本は要らないと思う。
極めて自然な思考方法なnだから。
0080デフォルトの名無しさんNGNG
>>79
そんなの当たり前。
オブジェクト指向については別途勉強するのは当然。
大抵の人がC++が難しいというのは言語仕様の複雑さの
ことを言っているわけだしな。
0081デフォルトの名無しさんNGNG
>>80
>言語仕様の複雑
どの辺りの仕様が複雑なの?
0082のほほNGNG
まぁC++特有ということであげるとすれば、
・多重継承
・friend
・演算子オーバーロード
・テンプレート
・参照型
とかかなぁ。
どれも便利な局面もあるけど。

新しい機能を覚えると

1)どんな場合もその機能を使おうとする。
2)その機能を使わないですむ方法を考えようとする。
3)適切なときにその機能を使えるようになる。

って順番で慣れていくような気がするけど(しないって?)
テンプレートも演算子オーバーロードも使えば便利な局面がある。
friend だって危険だけど「ここぞ」というときがある(気がする)。
とくに演算子オーバーロードに際してだけど。

goto だって longjump だって、
ここぞというときに注意深く使えば幸せなこともあるしね。

C++を勉強する上で、まずオブジェクト指向の基本に沿って
クラスの定義方法、アクセス制限の方法などを理解するには
分厚すぎる本は必要ない、と >77 は逝っているのだとおもわれ。

しかし >1 にとっては物足りないのかもしれないけど。
長文スマソ。
0083デフォルトの名無しさんNGNG
C++は色んな演算子がリファレンスを返すよ

(c=65) += 1;
++c += 1;
とか
0084デフォルトの名無しさんNGNG
参照が再割り当てできないのが非常に残念。
0085デフォルトの名無しさんNGNG
ウィンドウズのアプリケーションを作成することを目標にしてCを勉強してるけど、
そろそろVC++でも買って実際にアプリケーションを作成してみたいと思ってます。
でも、順番としてはC++とかオブジェクト指向をコンソールでしっかり学んだ後
VC++でアプリケーション製作にはいったほうがいいんですか?
VC++無理やり使ってるうちにC++とかを自然と覚えられるのかなーと思ってるんですが
実際はどんな感じですか?
みなさんの体験談なんかを聞かせてください。
0086デフォルトの名無しさんNGNG
別にVC++買わんでもGUIアプリは作れるがな
0087デフォルトの名無しさんNGNG
演算子オーバーロードのナニがまずいって一番最初に目に触れるiostreamの奴が
一番悪い例っつー。どうにかならんのか。
008885NGNG
>>86
そうなんですか?
0089のほほNGNG
>87
でもさ、ためしに複素数型とかつくってみて、
演算子も定義してみて、あるていどわかってから
iostream の << >> の実装とかをみて
「ふーん」と思うと演算子オーバーロードはほぼマスターとおもわれ。
0090のほほNGNG
>88
えと、直接 Win32 API たたけば作れます。
とりあえず簡単なお絵かきアプリ
(マウスカーソルでなぞると線が書けるだけ)
とか作ってみると良いとおもわれ。
それでメッセージキューとかの概念をつかんでからでもいいとおもふ。
どよ?
0091デフォルトの名無しさんNGNG
システムワイドのメッセージフックを行うアプリケーションを作り終えて、
ようやくメッセージキューの概念がつかめたなぁ。
普通のアプリ書いてるだけじゃわからんかった
0092デフォルトの名無しさんNGNG
primerを分厚いと感じない>>77は、C++の勉強をする前に、
脳か目を医者に診てもらったほうがいいと思われ。
0093デフォルトの名無しさんNGNG
BeOSでプログラムを書こうとして、適当なC++の本買って、OS付属のサンプル
ソース読んでたら自然に覚えた。APIも完全C++化されていて美しすぎ。
その後色々触ったけど、Be程美しく、判り易いC++環境は他にないね。
MFCはマジで排泄物。C++の正しい作法を身に付けられるのはBeOSだけです。
0094デフォルトの名無しさんNGNG
うーん、OSと言語をそこまで密接に関連付けてしまうのはどうかな…
APIがクラスライブラリとして用意されていて美しいというのは、
あくまでライブラリの美しさなんじゃないかな?
0095デフォルトの名無しさんNGNG
unix/WinのネイティブAPIはCだが、
BeのネイティブはC++。

おかげで、バージョン間で互換性が無かったり、
サードパーティからコンパイラが用意されなかったり(C++の名前規約に標準がないから)
いろいろ弊害がある。

いっそのこと、C++じゃなくて、新しい言語かもっとまともな言語をネイティブにすればいいのに。
0096デフォルトの名無しさんNGNG
MacOSXのObjective-Cが、方向性で言えば同じか。
もうBeOSは使ってないが、C++書く時はいつも思い出して参考にしてる。
C++って叩かれるけど、やっぱり使い方だよ。
0097デフォルトの名無しさんNGNG
使い方次第なのはどの言語もそうだが。
c++みたいに実装依存がてんこもりの処理系は、
OS書くのにあまり向いているとは言えないよなぁ・・・
0098デフォルトの名無しさんNGNG
>c++みたいに実装依存がてんこもりの処理系は、
>OS書くのにあまり向いているとは言えないよなぁ・・・
意味わかんねー。「実装依存」の「実装」ってOSのことじゃないのか?
それに、実装に依存しない言語でOSを書く?でんでーん。
0099デフォルトの名無しさんNGNG
C++で書かれたeCos動かしたことある人いる?
0100デフォルトの名無しさんNGNG
100get!
0101デフォルトの名無しさんNGNG
primerを分厚いと感じない>>77は、answer bookと勘違いしている白痴と思われ。
0102デフォルトの名無しさんNGNG
短いサンプルプログラムが沢山載ってる本ってない?
g++で動くやつきぼんぬ.
0103デフォルトの名無しさんNGNG
>>102
質問する時の言葉づかいを勉強することをきぼんぬ
0104デフォルトの名無しさんNGNG
gdk
0105デフォルトの名無しさんNGNG
今日、Modern C++ Design と Efficient C++ と Essential C++ が
届いた。とりあえず Modern からちまちま読み始めたけど、これ、
すげーな。まあ C++ の良書はいつもそうなんだが、何でこう、
毎回毎回、次元の違いに驚かされる話が載ってるんだろうなぁ。
あまりの驚きに、泣きたくもなるし、笑いたくもなるし。どうすればいいんだ。
いったいどんなノーミソもってたら、こういうことを考えつくんだろうな…。

とりあえず「ポリシークラス」。すげぇ。感動ちまちた。けど、
継承が多くなりそうだから、Effective C++ や Exceptional C++ で
主張してある「public継承はひかえませう」と相反するから、
使いどころが難しそうな感じ。バランス感覚をやしなわなぁのぅ。
ていうか、標準もしくはセミ標準クラスのスペシャリスト人間が
作ったポリシーを使わせてもらうっていうのが正解か?
0106デフォルトの名無しさんNGNG
Effective C++でpublic継承を控えろって記述あるか?
private継承はアップキャストに注意って話じゃないか?
0107105NGNG
あ、すまん。俺が言いたかったのは、34項の依存性を減らそうって話なんだが、
よく見たらpublic継承のことは書いてなかったな。
■ このスレッドは過去ログ倉庫に格納されています