Was ist der beste C ++ - Quellcode für Anfänger? [geschlossen]

25

Ich versuche, meine C ++ - Codierungstechnik durch Lesen von C ++ - Quellcode zu verbessern. Welches Open Source Projekt würden Sie empfehlen? Ist der Code von Boost C ++ - Bibliotheken gut?

Schneefuchs
quelle
11
Warum enge Abstimmungen? Die Frage ist klar und konkret.
Nemanja Trifunovic
STLs Implementierungen
dukeofgaming
12
@dukeofgaming: Du hast das "ironische" Tag vergessen.
Doc Brown
1
Nun, ich denke der Boost-Quellcode ist keine so gute Idee für Anfänger. Sie werden wahrscheinlich in Vorlagen und SFNINAE-Techniken ertrinken, deren Funktionsweise und Gründe Sie noch nicht verstehen.
Chris sagt Reinstate Monica
7
Die engen Abstimmungen erfolgen, weil diese Frage zwar konkret ist, aber nicht konstruktiv. Es wird nur eine Liste aller Projekte erstellt, bei denen keine Antwort "die Antwort" sein kann. Weitere Informationen hierzu finden Sie in den FAQ .
Walter

Antworten:

27

Ich würde jeden Open-Source-C ++ - Code von Google empfehlen, wie zum Beispiel den folgenden:

Vorteile der Verwendung von Google Code:

  • Es wurde nach hohen Standards geschrieben und von Fachleuten begutachtet (im Gegensatz zu Open Source-Code).
  • Es verfügt über eine gute Entwicklerdokumentation (die das Auffinden und Verstehen erleichtert).
  • Es verwendet einige moderat fortgeschrittene C ++ - Techniken (und ist daher gut zum Lernen geeignet).
  • Es ist wahrscheinlich einfacher zu verstehen als Boost, da es sich nicht so sehr auf erweiterte Vorlagen-Metaprogrammierung und Präprozessor-Metaprogrammierung stützt und nicht so sehr mit unzähligen Compiler-Kompatibilitäts-Hacks und Sonderfällen belastet wird.

Der von Googles C ++ - Code verwendete Google C ++ - Styleguide ist im Allgemeinen gut, weist jedoch einige recht ungewöhnliche Elemente auf (z. B. einige seiner Benennungsrichtlinien oder Ausnahmen, die nicht zugelassen werden) was Sie auf dem Gebiet sehen werden.

Josh Kelley
quelle
9

Ich würde nicht empfehlen, eine Codebasis zu lesen. Ich würde empfehlen, die häufig gestellten Fragen zu C ++ zu lesen . Es gibt auch ein exzellentes Buch, das zur Seite passt. Der beste Weg, um Ihre C ++ - Codierungsfähigkeiten zu verbessern.

Onorio Catenacci
quelle
13
-1: Ich bin sehr anderer Meinung. Das Lesen des Codes anderer Völker ist ein sehr wichtiger Teil der Verbesserung der eigenen Codierfähigkeiten. Das Beheben von Fehlern in diesem Code ist jedoch noch besser.
Jan Hudec
6
@Jan Vollständige Zustimmung von mir. Die meisten C ++ - Quellcodes saugen und verwenden jedoch alle Arten von schlechten Mustern, die schlechte Techniken lehren würden. Kennen Sie ein gutes OSS-Projekt, das als Einführung dienen kann?
Konrad Rudolph
Ich bezog mich auf dieses Buch : amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/… aber ich kann sehen, dass es jetzt auch andere Bücher gibt.
Onorio Catenacci
6

Das Lesen von vorhandenem sauberem C ++ - Code ist eine großartige Möglichkeit, die Sprache zu lernen.

Der Code im OpenFST- Toolkit ist zum Beispiel sehr sauber. Es ist lesbar und verwendet leicht erweiterte Funktionen, ohne über Bord zu gehen.

Boost hingegen kann etwas schwer zu lesen sein, zum Teil, weil sie schwer zu verstehende C ++ - Tricks verwenden und weil sie den Code häufig mit verschiedenen Problemumgehungen für verschiedene Compilerversionen besprühen.

user3287
quelle
6

Ich würde vorschlagen , die „lesen Effective C ++ “ von Scott Meyers und mit den Vorschlägen er in kleinen Spielzeug - Programmen hat.

Sardathrion - Setzen Sie Monica wieder ein
quelle
2
Mit kleinen Spielzeugprogrammen lernst du nichts. Sie müssen Programme schreiben, die aktuelle Probleme lösen. Sie müssen nicht groß sein, Sie werden es nicht schaffen, große Programme allein zu schreiben, aber sie dürfen nicht nur Spielzeug sein.
Jan Hudec
@JanHudec: Was Sie beschreiben, ist das, was ich Spielzeugprogramme nenne : ein Stück Code, der ein einzelnes Problem löst. So wäre beispielsweise ein Runge-Kutta-Algorithmus ein "Spielzeugprogramm", während eine vollständige N-Körpersimulation dies nicht wäre.
Sardathrion
2
Das sind beide "Spielzeugprogramme". Weil die Probleme nur erfundene Beispiele für ein Problem sind, wenn Sie numerische Simulationen durchführen und die meisten Programmierer dies nicht tun. Das eigentliche Problem ist etwas, das Sie oder jemand, den Sie kennen, tatsächlich verwenden werden. Es wird wahrscheinlich eine GUI oder zumindest eine ziemlich komplexe Befehlszeile haben, die Dateien analysiert und manipuliert oder eine Verbindung zum Netzwerk herstellt und einige vorhandene Bibliotheken verwendet, und es wird keine nicht trivialen Algorithmen geben, da 99% der Programme dies nicht tun.
Jan Hudec
1
@JanHudec Sagen Sie, dass eine Person nichts lernt, indem sie zuerst mit kleinen, eingeschränkten Problemen arbeitet? Wenn Programmierer direkt auf große und komplizierte Probleme stoßen, ohne zumindest einige Grundprinzipien und einige grundlegende Sprachausdrücke zu lernen, erhalten wir diese riesigen "Big Ball of Mud" -Apps.
Onorio Catenacci
3
Ich bin nicht sicher, ob dies die Frage beantwortet, aber jeder C ++ - Programmierer sollte dieses Buch (und seine Fortsetzungen) lesen
Gort the Robot
2

Versuchen Sie, etwas zu lesen, das seit Jahren existiert und groß ist. Es wird einige Monate dauern, bis Sie den Code verstanden haben und etwas tun können.

Ich denke an Firefox, Thunderbird, OpenOffice.org, LibreOffice. Es sollte auch viele ähnliche geben. Diese Projekte laufen auf vielen Betriebssystemen und Hardwareplattformen. Außerdem müssen sie hinsichtlich der Lesbarkeit punkten. Dies könnten Sie die Techniken, die Sie suchen.

vpit3833
quelle
0

Noch besser als das Lesen des Codes wäre es, mit diesem Code in Form von Fehlerbehebungen und kleinen Verbesserungen hier und da zu arbeiten. Suchen Sie sich ein Programm aus, vorzugsweise eines, für das Sie sich entschieden haben, melden Sie sich bei der Mailingliste an, durchsuchen Sie den Bug-Tracker und versuchen Sie, einige Fehler zu diagnostizieren. Fragen Sie auf der Mailingliste, ob Sie eine Lösung für etwas finden, ob es angemessen ist oder ob Sie stecken bleiben. Das gibt Ihnen einige spezifische Ziele beim Lesen des Codes, zwingt Sie zu wirklichem Verständnis und ist das, was Sie die meiste Zeit bei jeder Arbeit tun werden.

Sie können sich vielleicht eine KDE-Anwendung ansehen. Die meisten sind in C ++ geschrieben und Sie können mit einigen kleineren zuerst beginnen.

Jan Hudec
quelle
-3

Ja, der Code von Boost C ++ - Bibliotheken ist eine großartige Ressource, von der man lernen kann, wenn nicht einer der besten auf dem Planeten. Für Anfänger kann das Lernen von Boost-Code die Lernkurve jedoch sehr steil machen. Wenn Sie Boost wirklich ausprobieren möchten, beginnen Sie mit einigen kleinen und einfachen Bibliotheken wie Boost.Array .

mloskot
quelle
2
Ich denke, das wäre eine gute Möglichkeit, Skifahren zu lernen, wenn man die doppelt schwarzen Diamantpisten kauft.
Gort the Robot
@StevenBurnap bitte, lies meine Antwort noch einmal und weise auf diesen lächerlichen Vorschlag hin, den ich gemacht habe. Hören Sie auf zu bumsen und weisen Sie auf eine umfangreichere Bibliothek hin, die für Anfänger lesenswert ist. Sie werden zu dem Schluss kommen, dass die besten Beispiele für Anfänger aus einem Buch für Anfänger stammen.
Mloskot
-3

Versuchen Sie das C ++ PDF zu lesen. Es ist kostenlos und ich habe C ++ daraus gelernt, obwohl ich keine andere Programmiererfahrung hatte und erst 14 Jahre alt bin.

Xi_Ensen
quelle
3
Können Sie einen Link zu einer Ressource hinzufügen, die sich auf dieses Projekt bezieht?
Giorgio,
3
Welches C ++ PDF meinen Sie?
Martijn Pieters