初心者に最適なC ++ソースコードは何ですか?[閉まっている]


25

私はC ++ソースコードを読むことでC ++コーディング技術を改善しようとしています。どのオープンソースプロジェクトをお勧めしますか?Boost C ++ Librariesのコードは良いものですか?


11
なぜ票を閉じるのですか?問題は明確で具体的です。
ネマンジャトリフノビッチ

STLの実装
-dukeofgaming

12
@dukeofgaming:「ironic」タグを忘れました。
Doc Brown

1
さて、ブーストソースコードは初心者にとってそれほど良いアイデアではないと思います。テンプレートやSFNINAEのテクニックにdrれ、その動作や理由をまだ理解していないでしょう。
クリスは、モニカを復活させる

7
この質問は、具体的ではあるが建設的なものではないからです。全員のプロジェクトのリストが表示されるだけで、誰も「答え」になれない。この詳細については、FAQを参照してください
ウォルター

回答:


27

次のようなGoogleのオープンソースC ++コードをお勧めします。

Googleコードを使用する利点:

  • これは、高水準で記述されており、(一部のオープンソースコードとは異なり)ピアレビューされています。
  • 優れた開発者向けドキュメントが用意されています(これにより、理解しやすくなります)。
  • ある程度高度なC ++テクニックを使用します(したがって、学習に適しています)。
  • Boostよりも理解しやすいのは、高度なテンプレートメタプログラミングやプリプロセッサメタプログラミングにそれほど依存しておらず、数え切れないほどのコンパイラー互換性ハックや特殊なケースでそれほど重くされていないためです。

GoogleのC ++スタイルガイド概ね良好であるが、それは(そのような彼らの命名ガイドラインまたはその禁止の例外の一部など)いくつかのかなり珍しいのビットを持っているので、彼らのC ++コードからそれらの点で異なることに注意してくださいGoogleのC ++コードが使用することをフィールドに表示されるもの。


9

コードベースを読むことはお勧めしません。C ++ FAQSを読むことをお勧めします。また、サイトに沿った優れた本もあります。C ++コーディングスキルを向上させる最良の方法。


13
-1:私は非常に強く反対します。他の人のコードを読むことは、コーディングスキルを向上させるための非常に重要な部分です。ただし、そのコードのバグを修正することはさらに優れています。
1月Hudec

6
@Jan私からの完全な合意。ただし、ほとんどのC ++ソースコードは、悪いテクニックを教えるあらゆる種類の悪いパターンを吸い込み、採用しています。あなたは入門書として役立つかもしれない良いOSSプロジェクトを知っていますか?
コンラッドルドルフ

私はこれについて言及していました:amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/…しかし、私は今でも他の本があるのを見ることができます。
オノリオカテナッチ

6

既存のクリーンなC ++コードを読むことは、言語を学ぶための素晴らしい方法です。

たとえば、OpenFSTツールキットのコードは非常にクリーンです。読みやすく、オーバーボードすることなくわずかに高度な機能を使用します。

一方、ブーストは読みにくい場合があります。これは、理解しにくいC ++のトリックを使用しているため、またコンパイラのバージョンごとに異なる回避策をコードに散在させることが多いためです。


6

Scott Meyersによる「Effective C ++」を読み、小さなおもちゃプログラムで彼が持っいる提案を使用することをお勧めします。


2
小さなおもちゃのプログラムでは何も学びません。実際の問題を解決するプログラムを作成する必要があります。大きなプログラムである必要はありません。大きなプログラムを一人で書くことはできませんが、単なるおもちゃではありません。
1月Hudec

@JanHudec:あなたが説明するのは、私がおもちゃプログラムと呼ぶものです。単一の問題を解決するコードです。したがって、たとえば、ルンゲクッタアルゴリズムは「おもちゃのプログラム」になりますが、完全なN体シミュレーションはそうではありません。
サルダスリオン-モニカの復活

2
これらは両方とも「おもちゃのプログラム」です。なぜなら、問題は数値シミュレーションを実行していてほとんどのプログラマーが実行していない限り、問題の不自然な例だからです。実際の問題は、あなたまたはあなたが知っている誰かが実際に使用しようとしているものです。99%のプログラムにはないので、おそらくGUIまたは少なくともかなり複雑なコマンドラインの解析とファイルの操作とネットワークへの接続、またはいくつかの既存のライブラリを使用し、非自明なアルゴリズムは使用しません。
1月Hudec

1
@JanHudecは、最初に小さな制約のある問題を扱っても何も学ばないと言っていますか?プログラマーが少なくともいくつかの基本原則といくつかの基本的な言語のイディオムを学ばずに大きく複雑な問題に直接飛び込む場合、これがこれらの巨大な「泥の大玉」アプリになります。
オノリオカテナッチ

3
これが質問に答えるかどうかはわかりませんが、すべてのC ++プログラマーはその本(およびその続編)を読む必要があります
ロボット

2

長年にわたって存在し、サイズが大きいものを読んでみてください。コードを理解し、コードで何かを始めるには数か月かかります。

Firefox、Thunderbird、OpenOffice.org、LibreOfficeが思い浮かびます。さらに多くの類似したものがあるはずです。これらのプロジェクトは、多くのオペレーティングシステムとハードウェアプラットフォームで実行されます。また、読みやすさでスコアを付けなければなりません。これらは、あなたが探しているテクニックです。


0

コードを読むよりもさらに良いのは、バグを修正し、あちこちで小さな改善を追加するという形でそのコードを使用することです。いくつかのプログラム(できれば使用しているプログラム)を選択し、メーリングリストに登録し、バグトラッカーを調べて、いくつかのバグの診断を試みてください。合理的であるか、行き詰まったときに何かの解決策を見つけたら、メーリングリストで尋ねてください。これにより、コードを読む際に特定の目標が得られ、本当に理解するように強制されます。これは、ほとんどの場合、どんな仕事でも行うことです。

おそらくいくつかのKDEアプリケーションを見ることができます。ほとんどはC ++で書かれており、最初に小さいものから始められます。


-3

はい、Boost C ++ Librariesのコードは、地球上で最高のものではないにしても、そこから学ぶのに最適なリソースです。ただし、初心者の場合、Boostコードから学習すると、学習曲線が非常に急になる場合があります。Boostを本当に読みたい場合は、Boost.Arrayのような小さくてシンプルなライブラリから始めてください


2
スキーを学ぶための良い方法を提案するのは、ダブルブラックダイアモンドのスロープを買うことだと思います。
ロボット

@StevenBurnapください、もう一度私の答えを読んで、私が行ったそのばかげた提案を指摘してください。b ***** itingをやめて、初心者が読む価値のあるより包括的なライブラリを指摘してください。初心者に適した最良の例は、初心者向けの本からのものであるという結論に達します。
mloskot

-3

C ++ PDFを読んでみてください。それは無料で、私は他にプログラミングの経験がなくても、それからC ++を学びました。私はまだ14歳です。


3
このプロジェクトに関連するリソースへのリンクを追加できますか?
ジョルジオ

3
C ++ PDFとはどういう意味ですか?
マーティンピーターズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.