Linkliste


  • Global Moderator |  Mod

    Linkliste für C++-Neulinge

    Mit ⚠ gekennzeichnete Themen setzen solide Grundkenntnisse voraus.

    Bücher

    Für Anfänger ist das wichtigste ein gutes Buch, welches Sprachgrundlagen und Standardbibliothek verständlich und korrekt erklärt. Leider ist der deutschsprachige Markt für gute Computerfachliteratur sehr dünn besetzt. Wer kein Problem mit Englisch hat, sollte sich unbedingt folgende, umfangreiche Liste ansehen, die stets aktuell gehalten wird:
    https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list/388282#388282
    Einige der dort genannten Bücher sind auch auf Deutsch erschienen. Man sollte jedoch darauf achten, dass es sich auch wirklich um das gleiche Buch vom gleichen Autor handelt und nicht um einen Trittbrettfahrer mit ähnlichem Titel; und man sollte ein paar Rezensionen lesen, ob die Übersetzung etwas taugt.

    Eine leider etwas veraltete Liste für deutschsprachige Titel findet man hier:
    C/C++ Forum :: C++ Lernen - passende Lektüre und richtiger Anfang
    Aktualisierungen dieser Liste gibt es hier:
    https://www.c-plusplus.net/forum/333039#2456058

    Wer nach einem kostenlosen Buchersatz sucht, ist mit dem Openbook "Thinking in C++" gut bedient:
    http://mindview.net/Books/DownloadSites

    Referenzen

    Mit Referenz ist eine Dokumentation der C++-Standardbibliothek gemeint.
    Die beiden bekanntesten und wahrscheinlich auch umfangreichsten Websites sind:

    Eine Referenz lässt sich nur effizient nutzen, wenn man bereits eine Vorstellung hat, wonach man sucht. Sie ersetzt kein Lehrbuch.

    Magazin

    Seit 2005 bringt c-plusplus.net das C++-Magazin heraus. Viele Stammgäste des Forums haben sich als gute Autoren darin verewigt:

    Oft empfohlene Artikel sind unter anderem:

    FAQs

    Viele Fragen wurden schon oft gestellt und noch öfter beantwortet:

    Tutorials

    Tutorials ersetzen kein Buch, seien aber trotzdem erwähnt:

    "Tutorials" auf YouTube sollten von Anfängern gänzlich gemieden werden!

    C++11

    ⚠

    C++11 ist war die neueste Fassung des C++-Standards, welche im August 2011 von der ISO verabschiedet wurde und C++03 ersetzt.

    Während das Verständnis einiger neuen Features wie z. B. Lambda-Ausdrücke, variadic templates und Multithreading samt tls solide Grundkenntnisse voraussetzt, sind andere bereits für Sprachneulinge interessant:

    • C++11 - Artikel in der englischen Wikipedia samt Auflistung wichtiger Neuerungen
    • ISO/IEC Document n3337 - im Grunde der Text des offiziellen Standards ISO/IEC 14882:2011 mit lediglich redaktionellen Änderungen

    Um C++11 Code kompilieren zu können, braucht man einen C++11-kompatiblen Compiler. Die aktuellsten Versionen der gängigen Compiler unterstützen fast alle der mit C++11 eingeführten Features:

    C++14

    ⚠

    C++14 ist die neueste Fassung des C++-Standards, welche im Dezember 2014 von der ISO verabschiedet wurde und C++11 ersetzt. Die Neuerungen sind jedoch bei weitem nicht so radikal wie beim Sprung von C++03 auf C++11:

    • C++14 - Artikel in der englischen Wikipedia samt Auflistung wichtiger Neuerungen
    • ISO/IEC Document n4296 - im Grunde der Text des offiziellen Standards ISO/IEC 14882:2014(E) mit lediglich redaktionellen Änderungen

    Wie bei C++11 auch, braucht man einen kompatiblen Compiler, um C++14-Code übersetzen zu können. Die meisten Compiler beherrschen bereits eine mehr oder wenige große Untermenge der neuen Features, man muss sie aber in der Regel durch einen Compilerschalter aktivieren. Man kann normalerweise zu allen gängigen Compilern leicht Listen der unterstützten Features und der nötigen Compilerschalter finden, indem man einfach nach "C++14" und dem Namen des Compilers googelt.

    Compiler und IDEs

    Boost

    ⚠

    Boost ist eine Sammlung vieler Bibliotheken, die unter C++-Programmierern breite Verwendung finden. Viele der sog. Boost-Libs wurden bereits in den C++-Standard integriert.
    Wer Boost nicht selbst kompilieren möchte, kann auf nuwen.net eine MinGW Distribution (gcc) inklusive vorkompiliertem Boost beziehen.
    Für Benutzer von Visual Studio 2010 und 2012 gibt es von unserem Forenmember Vertexwahn ein Tool Namens BlueGo, das Boost, Qt and OpenSceneGraph selbst herunterlädt und übersetzt.

    GUI-Programmierung

    ⚠

    Eine grafische Oberfläche ist ein wesentlicher Bestandteil vieler Desktopapplikationen.

    Tutorial zu wxWidgets im C++-Magazin:

    Artikel zu den MFC im C++-Magazin:

    Verschiedene empfehlenswerte Seiten

    • isocpp.org - News, Status & Discussion about Standard C++
    • stroustrup.com - offizielle Seite von Bjarne Stroustrup, Erfinder von C++
    • cdecl.org - Übersetzt selbst unverständlichste C (und C++) Variablendeklarationen in klares Englisch und zurück

    Hilfe beim Posten

    Bevor man eine Frage stellt:

    • Da fast jedes Problem mit einer dermaßen verbreiteten Sprache wie C++ schon einmal dagewesen ist, findet man mit einer Fehlermeldung und eventuell ein paar Stichworten + "C++" auf Google fast zu jedem Thema Input.
    • Sollten einem die richtigen Stichworte für Google nicht in den Sinn kommen, kann man immer noch die Suchfunktion des Forums versuchen.
    • Oftmals ist auch ein Blick in die C++-FAQs hilfreich, denn viele Fragen wurden schon oft gestellt und noch öfter beantwortet.

    Sollte die eigene Recherche nicht auf den grünen Zweig führen:

    ~edit durch SeppJ, 18. April 2014: Kaputten Link repariert und nicht mehr aktuelle Bemerkung zu C++11 auf www.cplusplus.com entfernt.~
    ~edit durch Arcoth, 2. Juli 2014: Liste der Compiler im C++11-Abschnitt verfeinert. Bücher-Rubrik oben platziert.~
    ~edit durch Swordfish, 1. August 2014: Informationen zu Visual C++ aktualisiert.~
    ~edit durch SeppJ, 25. November 2015: Informationen zu C++14 hinzugefügt~
    ~edit durch SeppJ, 23. Mai 2017: Bücherliste so gut wie möglich aktualisiert.~


    Linkliste zu lesenswerten Beiträgen

    Im Rahmen der Diskussion um die Neugestaltung der FAQ, hier mal ein Vorschlag, wie so etwas aussehen könnte. Die Idee ist, dass im ersten Beitrag dieses Threads eine Liste von Links zu häufig gegebenen Antworten zu finden ist. Das können Beiträge aus alten Threads sein oder neue Beiträge, die dann auch in diesem Thread selber gepostet werden können.

    Die Leute, auf die typische FAQ abzielen, lesen ohnehin keine FAQ. Der Sinn dieses Threads ist daher, dass man hier als regelmäßiger Forennutzer schnell und einfach Links zu guten Antworten finden kann, die man dann selber als Antwort nutzen kann, anstatt zum Tausendsten Male die gleiche Antwort auf eine häufig gestellte Frage oder ein häufig auftretenden Problem neu zu formulieren.

    Hier mal ein Anfang, wie so etwas aussehen könnte. Um mehr Links wird gebeten, ich werde sie dann hinzufügen. Bitte nur Links zu wirklich häufig gestellten Fragen oder häufig auftauchenden Problemen:

    Form von Beiträgen im Forum:

    C++ lernen:

    Korrekte Benutzung von C++:

    Fragen zum Stil:


  • Global Moderator |  Mod

    Zum Thema Bücher, die zum C++-Lernen geeignet sind, empfiehlt sich das Lesen dieses Threads:
    https://www.c-plusplus.net/forum/251551
    und der Aktualisierungen aus diesem Beitrag:
    https://www.c-plusplus.net/forum/333039#2456058
    Weiterhin gibt es folgende, umfangreiche, englischsprachige Liste, die regelmäßig aktualisiert wird:
    http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list/388282#388282
    Man bedenke, dass viel fortgeschrittene Literatur nur auf Englisch existiert! Englisch ist nun einmal die de-facto Weltsprache. Über kurz oder lang wird man um englische Literatur nicht umhin kommen, wenn man es ernst meint mit der Programmierung.

    Wer Kosten für Bücher scheut, mag sich vielleicht folgendes Buch ansehen, das kostenlos als Ebook erhältlich ist und auf beiden der oben genannten Listen empfohlen wird:
    Thinking in C++

    Es gibt leider auch absolute Negativbeispiele für Bücher, von denen man sich möglichst fern halten sollte. Skeptisch sein sollte man bei allem, was schnellen (in 21 Tagen!), einfachen (für Dummies!) und/oder vollständigen (von A bis Z!) Erfolg verspricht. Hier ist besonders der Autor Jürgen Wolf schon sehr oft negativ aufgefallen. Viele der "dümmeren" Fragen hier im Forum sind darauf zurück zu führen, dass jemand dessen Bücher gelesen hat und daraus völlig falsche Sachverhalte gelernt hat.

    Was Internettutorials angeht, muss man leider sagen, dass kein aktuelles, gutes Tutorial für C++-Anfänger existiert. Ganz besonders nicht, wenn es auch noch auf Deutsch sein soll. Für fortgeschrittene Themen findet man aber durchaus empfehlenswerte Seiten, zum Beispiel:
    Guru of the Week

    Die generelle Erfahrung im Forum ist, dass schlechtes Lehrmaterial mehr Schaden anrichtet, als es nützt. Wer auf eigene Faust nach irgendwelchen dubiosen Videotutorials lernt, wird vermutlich bald frustriert aufgeben, da das dort Gelernte nicht funktioniert, wenn man es selber anwendet (weil es einfach falsch ist und/oder falsch erklärt wurde). Selbst wenn man dann die Kurve bekommt und ein gutes Buch besorgt, muss man sich erst wieder mühsam abgewöhnen, was man falsch gelernt hat.

    Ähnliches muss man auch über das Lernen von C sagen, wenn man C++ lernen möchte. Es ist nichts Verwerfliches da dran, C zu lernen, aber es taugt nichts als Vorbereitung auf C++. Wer C++ lernen möchte, sollte gleich mit C++ anfangen. Und man sollte tunlichst nicht versuchen, in C++ so zu programmieren, als wäre es C oder Java. Es gibt zwar große Ähnlichkeiten in der Grammatik der Sprachen (Tatsächlich haben sie alle die gleiche Grammatik), aber die jeweiligen Philosophien sind völlig unterschiedlich.


  • Global Moderator |  Mod

    Wenn man Code im Forum postet (und in den meisten Fällen gehört zu einer Problembeschreibung auch eine Codebeispiel dazu) ist es wichtig, dass dieser lesbar formatiert ist. Unformatierter Code führt dazu, dass viele Leser den Beitrag gar nicht erst lesen, da sie schon beim ersten Blick abgeschreckt werden. Das Posten von formatierten Code ist ganz einfach:

    • Zunächst einmal muss man natürlich über sauber eingerückten Code verfügen. Im Idealfall erledigt das bereits automatisch der Editor, den man für seinen Code benutzt (ansonsten sollte man überlegen, einen anderen Editor zu benutzen, der besser für Programmierung geeignet ist). Wenn man so etwas nicht hat, hilft zur Not auch diese Webseite: http://prettyprinter.de/index.php

    Man beachte an dieser Stelle auch, welcher Code überhaupt relevant ist!

    Manchmal lösen sich Probleme ganz von alleine, wenn man den Code sauber einrückt und dadurch beispielsweise eine fehlende oder falsch gesetzte Klammer entdeckt!

    • Dann kopiert man den Code in den Foreneditor.
    • Unter dem Editorfenster findet man eine Reihe von Smileys. Und darunter eine Reihe von Knöpfen, mit denen man verschiedene Codetags setzen kann. Drückt man den Button einmal, wird an der Cursorposition ein einleitendes Codetag (etwas in der Art von [code="cpp"] ) gesetzt, welches am Anfang des Codes stehen sollte. Beim zweiten Drücken erhält man ein abschließendes Tag (etwas in der Form [/code] ), welches man an das Ende des Codes setzt. Alternativ kann man auch den Code markieren und dann einmalig den Button anklicken, damit automatisch die Tags an Anfang und Ende gesetzt werden.
    • Man benutze bitte die passende Sprache! Für alle hier im Forum gängigen Sprachen gibt es extra Tags. Der Button ganz links ("Code") ist wirklich nur dazu da, wenn gar nichts anderes passt.
    • Ganz wichtig: Man benutze die Vorschau, ob die Formatierung auch wirklich funktioniert!

    Mögliche Probleme und Lösungen:

    • Es funktioniert nicht: Wahrscheinlich hat man öffnende und schließende Tags nicht richtig gesetzt. Öffnende Tags sehen so aus: [tag] , wobei "tag" der Typ des gesetzten Tags ist. Schließende Tags sehen so aus: [/tag] . Zu jedem öffnenden Tag gehört ein schließendes Tag. Ineinander vernestelte Tags (also Tags in anderen Tags) funktionieren nur in Ausnahmefällen und sollten vermieden werden!
      So sieht es richtig aus:
      [c

    ode="cpp"]
    #include <iostream>

    int main()
    {
        std::cout << "Hello World\n";
    }
    [/code]

    • Es funktioniert nicht und ich bin ganz sicher, dass ich alles richtig gemacht habe: Möglicherweise hat man aus irgendeinem Grund BBCode deaktiviert. Ganz tief unten unter dem Editorfenster gibt es eine Checkbox, um BBCode für einen Beitrag zu deaktivieren. Eventuell muss man erst noch den Text "Zeige Optionen" anklicken, damit sie erscheint. Diese Checkbox sollte nicht aktiviert sein. Möglicherweise hat man BBCode auch global im eigenen Profil deaktiviert. Sein Profil kann man als registrierter Nutzer über den Link rechts oben auf der Forenseite ansehen. Dort gibt es die Option, BBCode überall zu aktivieren, die standardmäßig eingeschaltet sein sollte.

    • Ich habe den Code in meinem Beitrag nicht formatiert und jemand hat mich auf diesen Beitrag verwiesen.

    • Ich bin ein registrierter Nutzer: Man kann als registrierter Nutzer seine Beiträge im Nachhinein editieren. Dazu gibt es rechts oben am Beitrag selber einen entsprechenden Link. Darüber kann man die passenden Codetags einfügen.

    • In bin kein registrierter Nutzer: Dann bleibt nur zu hoffen, dass ein netter Moderator den Beitrag sieht und für einen die Formatierung vornimmt. Bei nächsten Mal bitte selber drauf achten!

    Es gibt unter dem Editorfenster auch noch zahlreiche andere Formatierungshilfen, zum Beispiel die in diesem Beitrag benutzten Listen, den Fett- und Kursivdruck und viele Sonderzeichen. Die meisten sollten selbsterklärend sein; mit Hilfe der Vorschau kann man experimentieren, wie diese genau zu benutzen sind. Wenn man wissen will, wie ein bestimmter Benutzer eine bestimmte Formatierung hin bekommen hat, kann man dessen Beitrag zitieren und so genau sehen, wie die Formatierung zustande gekommen ist. So kann man beispielsweise herausfinden, wie ich es geschafft habe, [c

    ode="cpp"]Beispielcode[/code] zu posten, ohne dass der Code von der Forensoftware formatiert wurde.


  • Global Moderator |  Mod

    Erst einmal gesperrt, um gegen Vandalismus zu schützen. Wer Vorschläge zu Erweiterungen hat, poste diese bitte in diesem Thread:
    https://www.c-plusplus.net/forum/332879
    Ich und die anderen Moderatoren werden die Vorschläge prüfen und ggf. übernehmen.


  • |  Mod

    Ich habe beide Linklisten vereint und auf Markup angepasst. /cc @SeppJ


Gesperrt