2009-06-11 12 views
5

私はC++に非常に興味があり、この言語を習得したいと考えています。私はC++に関する多くの本を読んできました。私は自分のスキルを向上させるためにいくつかのライブラリのソースコードを読んでみたいですが、私がブーストライブラリのソースコードを読むと、それは非常に難しいと感じています。
誰でも私に何かを教えてもらえますか昇圧のソースコードの読み方についてのアドバイスとそれを理解する前に私はどのような本を読むべきですか?boostライブラリのソースコードからC++を学習する

答えて

12

あなたはメタプログラミングの暗い芸術を学びたいと言いますから、Andrei Alexandrescuの "Modern C++ Design"をお勧めします。

メタプログラミングは非常に複雑な領域であり、ほとんどの場合は必要ありません。あなたがそれについて学ぶと、それがあなたのすべての問題を解決できると考えることは非常に簡単です。それはあなたの新しいお気に入りのハンマーになります。

また、自分のコードに追加する前に、boostやlokiのようなメタプログラミングに基づいて非常に堪能なライブラリユーザーになることをお勧めします。

2人の異なるプログラマーが、私が担当するコードベースの一部でメタプログラミングを使用しました。彼らは熟練したプログラマーであったが、商用製品は遊び場のように扱われるべきではない。これらはおそらく、現在のコードベースの最悪の領域です。新しいコンパイラのサポートを追加すると、非常に複雑で非常に脆いでしょう。書かれたときに私がコードに責任を負っていれば、彼らはここにいませんでしたが、今は交換するには高価です。

あなたがライブラリライターでない限り、要するにメタプログラミングはほとんど必要ありません。また、非常に優れた図書館ユーザーでなければ、図書館の作家になれません。

+0

ええ、あなたの答えは私に多くの助けになります、ありがとう – cppguy

15

C++で始める場合、ブーストソースコードはおそらく最適な場所ではありません。それは、ウィザードが立ち往生し、テンプレートマジックを扱う場所です。私はより良い出発点はスコット・マイヤーズとハーブ・スッタースの本(その順序で)だと思います。

Scottの本の一部のバージョンは少し古いかもしれませんが、彼らはまだファンダメンタルズに強いです。ハーブの本は何度も読む価値があり、貴重なツールです。これらの著者の両方を経験したら、ブーストソースコードに取り組むのに良い時期になるでしょう。

  • スコットマイヤーズ:Effective C++
  • スコットマイヤーズ:Effective STL
  • Herb Sutter - 本当に私はこのリストからタイトルに有効とC++で何のために行くだろう。
+0

あなたは私の周りをフォローしていますか? –

+2

@OJ、あなたはまだ十分速く動いていません;) – JaredPar

+0

これは楽しいです。あなたたちは類似したお気に入りのタグを持っている必要があります。 –

14

私はブーストコードの読み方について助言することはできませんが、私はいくつかのアドバイスを提供することができます。

読書を停止してを書く :)読書​​は貴重ですが、あなた自身でコードを書いていない限り、近くでは学ぶことはありません。基本から始めましょう。初心者の本を読んでのサンプルを入力してください。(コピー&ペーストはしないでください)。ミスタイピングの結果であるエラーを修正することによって、あなたは学びます。簡単なアプリケーションのためのあなた自身のアイデアのいくつかと一緒に遊んで、そこから行く。

ブーストソースコードを読むことから始めることは、自分自身を言語から怖がらせたり、多くの質問と非常に混同したりするための、確実な方法です。

小さなものから始めてください。

+2

はい、あなたがブーストに興味がある場合は、実際にそれを使用し始める - 一度使用することができますまた、どのように物事が一緒にぶら下がっているかのより良い理解 – none

1

ええ、いくつかのブーストライブラリには本当にひどいものがあります。素晴らしいソースコードを読んでみたい場合は、WebKitやGoogleオープンソースプロジェクト(ChromeやProtobufsなど)をチェックしてみてください。

+0

ええ、Googleのオープンソースコードはちょっといいと思われ、私はその "ctemplate"コードの一部を読んでいます – cppguy

+0

ええ、物事は、AppleやGoogleのような企業で、実際にコードがレビューされ、コーディングのスタイルルールとベストプラクティスが実際に実施されます。そして、典型的には非常に経験豊かで華麗な人がプロジェクトを指導しています。私が見た唯一の企業外でないオープンソースプロジェクトは、SVNプロジェクトですが、C++ではなく、まっすぐなCです。 –

8

boostは、テンプレートなどの高度なC++機能を多く使用しています。Boostライブラリは、厳密なプログラミング標準とスタイルに従って、STLのようなものと互換性があるようにしようとすると、非常に複雑になりがちです。

あなたがそれを理解していない場合、あなたはおそらくあなたの頭の中にいるでしょう。とにかくそれを読んでいる必要はありません。あなたが泳ぐ方法を知らないならば、水に飛び込んではいけません。あなたは本質的に滝を泳ぐことを試みました。

+1

また、クロスプラットフォームの問題の多くは内部的にブーストによって対処されており、複雑さの別の層が追加されています – none

0

私はLipmann's Premiere(あなたの好みの の他の初心者の本)のようなもので始めることをお勧めします。コードに慣れたら、Herb Sutter Alexandreskuに移動して、あなたの視野を広げ、ソフト開発者のより完全な視点を得ることができます。そして、 最も重要なこと - うまくいきわたえるためには、他にも というスキルがあり、それを習得するのに習慣が必要です。

P.S.>確信が持てば、最初からStroustrupを他の 本と一緒にピックアップすることができます。私は、それがC++の別のソースを作者のように完全に完成させたとは思わない。

関連する問題