Quel est le meilleur code source C ++ à lire pour un débutant? [fermé]

25

J'essaie d'améliorer ma technique de codage c ++ en lisant le code source c ++. Quel projet open source recommanderiez-vous? Le code des bibliothèques Boost C ++ est -il bon?

Renard de neige
la source
11
Pourquoi des votes serrés? La question est claire et concrète.
Nemanja Trifunovic
Implémentations des
12
@dukeofgaming: vous avez oublié la balise "ironique".
Doc Brown
1
Eh bien, je suppose que le code source de boost ne sera pas une bonne idée pour un débutant. Vous allez probablement vous noyer dans les modèles et les techniques SFNINAE dont vous ne comprenez pas encore le fonctionnement et les raisons.
Chris dit de rétablir Monica le
7
Les votes serrés sont dus au fait que cette question, bien que concrète, n'est pas constructive. Il en résultera simplement une liste des projets de chacun, où aucune réponse ne peut être "la réponse". Pour plus d'informations, consultez la FAQ .
Walter

Réponses:

27

Je recommanderais n'importe quel code C ++ open source de Google, tel que le suivant:

Avantages de l'utilisation du code Google:

  • Il est écrit selon des normes élevées et est évalué par les pairs (contrairement à certains codes open source).
  • Il a une bonne documentation pour les développeurs (ce qui le rend plus facile à comprendre et à comprendre).
  • Il utilise des techniques C ++ moyennement avancées (et est donc bon pour l'apprentissage).
  • Il est probablement plus facile à comprendre que Boost, car il ne repose pas tellement sur la métaprogrammation de modèles avancés et la métaprogrammation de préprocesseur et n'est pas autant alourdi par les innombrables hacks de compatibilité du compilateur et les cas spéciaux.

Le guide de style Google C ++ que le code C ++ de Google utilise est généralement bon, mais il contient des bits assez inhabituels (tels que certaines de leurs directives de dénomination ou leurs exceptions interdites), alors gardez à l'esprit que leur code C ++ sera différent à ces égards de ce que vous verrez sur le terrain.

Josh Kelley
la source
9

Je ne recommanderais pas de lire une base de code. Je recommanderais de lire la FAQ C ++ . Il y a aussi un excellent livre qui accompagne le site. Le meilleur moyen d'améliorer vos compétences en codage C ++.

Onorio Catenacci
la source
13
-1: Je suis très fortement en désaccord. La lecture du code d'autres personnes est une partie très importante de l'amélioration de ses compétences en codage. La correction de bugs dans ce code est cependant encore meilleure.
Jan Hudec
6
@Jan Accord complet de ma part. Cependant, la plupart du code source C ++ aspire et utilise toutes sortes de mauvais modèles qui enseigneraient de mauvaises techniques. Connaissez-vous un bon projet OSS qui pourrait servir de lecture introductive?
Konrad Rudolph
Je faisais référence à celui-ci: amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/… mais je peux voir qu'il y a aussi d'autres livres maintenant.
Onorio Catenacci
6

La lecture du code C ++ existant est un excellent moyen d'apprendre le langage.

Le code dans la boîte à outils OpenFST est très propre, par exemple. Il est lisible et utilise des fonctionnalités légèrement avancées sans aller trop loin.

Boost, en revanche, peut être un peu difficile à lire, en partie parce qu'ils utilisent des astuces C ++ difficiles à comprendre et parce qu'ils saupoudrent souvent le code avec différentes solutions de contournement pour différentes versions de compilateur.

user3287
la source
6

Je suggérerais de lire le " C ++ efficace " de Scott Meyers et d' utiliser les suggestions qu'il a dans les petits programmes de jouets.

Sardathrion - Rétablir Monica
la source
2
Vous n'apprendrez rien sur les petits programmes de jouets. Vous devez écrire des programmes qui résolvent des problèmes réels. Ils n'ont pas besoin d'être grands, vous ne réussirez pas à écrire de gros programmes seuls, mais ils ne doivent pas être que des jouets.
Jan Hudec
@JanHudec: Ce que vous décrivez est ce que j'appelle des programmes de jouets : un morceau de code qui résout un seul problème. Ainsi, par exemple, un algorithme de Runge-Kutta serait un "programme jouet" alors qu'une simulation complète à N corps ne le serait pas.
Sardathrion
2
Ce sont deux "programmes de jouets". Parce que les problèmes sont des exemples artificiels d'un problème, sauf si vous faites des simulations numériques et que la plupart des programmeurs ne le font pas. Le problème réel est quelque chose que vous ou quelqu'un que vous connaissez allez réellement utiliser. Il aura probablement une interface graphique ou au moins une analyse de ligne de commande assez complexe et manipulera des fichiers ou se connectera au réseau et utilisera certaines bibliothèques existantes et n'aura aucun algorithme non trivial, car 99% des programmes ne le font pas.
Jan Hudec
1
@JanHudec dites-vous qu'une personne n'apprend rien en travaillant d'abord avec de petits problèmes contraints? Si les programmeurs sautent directement dans des problèmes importants et compliqués sans apprendre au moins certains principes de base et certains idiomes de langage de base, c'est ainsi que nous nous retrouvons avec ces énormes applications "Big Ball of Mud".
Onorio Catenacci
3
Je ne sais pas si cela répond à la question, mais tous les programmeurs C ++ devraient lire ce livre (et ses suites.)
Gort the Robot
2

Essayez de lire quelque chose qui existe depuis des années et qui est de grande taille. Il faudra quelques mois pour commencer à comprendre le code et à y faire quelque chose.

Firefox, Thunderbird, OpenOffice.org, LibreOffice viennent à l'esprit. Il devrait y en avoir beaucoup plus similaires. Ces projets s'exécutent sur de nombreux systèmes d'exploitation et plates-formes matérielles. De plus, ils doivent marquer sur la lisibilité. Ceux-ci pourraient vous convenir des techniques que vous recherchez.

vpit3833
la source
0

Mieux encore que de lire le code serait de travailler avec ce code sous forme de correction de bugs et d'ajout de petites améliorations ici et là. Choisissez un programme, de préférence celui que vous avez utilisé, inscrivez-vous à la liste de diffusion, commencez à parcourir leur traqueur de bogues et essayez de diagnostiquer certains bogues. Demandez sur la liste de diffusion si vous trouvez une solution à quelque chose, que ce soit raisonnable ou quand vous êtes coincé. Cela vous donnera des objectifs spécifiques lors de la lecture du code, vous obligera à vraiment comprendre et c'est ce que vous ferez la plupart du temps dans n'importe quel travail.

Vous pouvez peut-être regarder une application KDE. La plupart sont écrits en C ++ et vous pouvez commencer par un plus petit en premier.

Jan Hudec
la source
-3

Oui, le code des bibliothèques Boost C ++ est une excellente ressource à apprendre, sinon l'une des meilleures de la planète. Cependant, pour un novice, l'apprentissage à partir du code Boost peut rendre la courbe d'apprentissage très abrupte. Si vous voulez vraiment essayer de lire Boost, commencez par quelques petites et simples bibliothèques comme Boost.Array .

mloskot
la source
2
Je pense que ce serait comme suggérer une bonne façon d'apprendre à skier en achetant des pistes de double diamant noir.
Gort the Robot
@StevenBurnap s'il vous plaît, lisez à nouveau ma réponse et montrez cette suggestion ridicule que j'ai faite. Arrêtez de b ***** iting, voulez-vous, et indiquez une meilleure bibliothèque complète qui mérite d'être lue par les débutants. Vous arriverez à la conclusion que les meilleurs exemples qui conviennent aux débutants proviennent d'un livre pour débutants.
mloskot
-3

Essayez de lire le PDF C ++. C'est gratuit, et j'en ai appris le C ++, même si je n'avais aucune autre expérience en programmation, et je n'en ai que 14. Incroyable.

Xi_Ensen
la source
3
Pouvez-vous ajouter un lien vers une ressource liée à ces projets?
Giorgio
3
Quel PDF C ++ voulez-vous dire?
Martijn Pieters