Warum programmieren einige noch in C?
-
Gibt es denn eigentlich Bücher in denen schönes C++ gelehrt wird? Die meiste Fachliteratur schreibt nur alle Möglichkeiten runter, aber was davon best practice ist und was man lieber lässt, erfährt man nicht.
-
@Computerwelt
Ich habe die meisten der Bücher nicht gelesen, aber es gibt hier: https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list/388282#388282
und hier https://www.c-plusplus.net/forum/topic/251551/bücher-c-lernen-passende-lektüre-und-richtiger-anfang/3 eine Liste mit Büchern.
Ich selbst habe "Effective modern C++" von Scott Meyers hier rum liegen, würde das aber nicht als typisches Lehrbuch empfehlen, sondern eher als weiterführende Literatur.
-
Ist kein Buch, aber trotzdem nützlich: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
-
Das hier ist auch gut:
https://herbsutter.com/gotw/
-
Danke für die Tipps
-
Wo wir gerade bei Settern und Büchern sind... ich empfehle an der Stelle den Stroustrup ("The C++ Programming Language"). Wird gerne als Referenz missverstanden, hat aber durchaus einiges zu sagen, in einem sehr unaufgeregten Stil, wenig Predigten, viele Ratschläge und jeder Winkel von C++ wird beleuchtet. Warum ich den in dem Zusammenhang empfehle: Stroustrup legt großen Wert darauf, dass der Sinn der Kapselung darin besteht, eine Invariante zu schützen. Ich will nicht exakt erklären, was das ist, aber ein Beispiel nennen: Eine Klasse für Brüche besteht in der Regel aus zwei Ganzzahlen, von denen eine, der Nenner, immer ungleich Null sein muss. Es ist der Job des Konstruktors, dafür zu sorgen, dass das von Anfang an so ist, und es ist der Job jeder Memberfunktion (und jedes Friends), dafür zu sorgen, dass das so bleibt. Dafür muss man sich nie fragen, was eigentlich passieren soll, wenn es doch mal nicht stimmt, weil das nie vorkommen kann. Das Interface der Klasse muss so entworfen sein, dass es von außen nicht möglich ist, die Invariante zu zerstören. Oder aus der anderen Perspektive: Es ist nicht der Job des Restes der Welt, die Invariante zu bewahren, sondern das ist Aufgabe der Klasse. Übrigens folgt aus dieser Betrachtung auch, dass Setter kritisch sind -- entweder können sie die Invariante zerstören, oder sie können fehlschlagen (wenn man versucht etwas ungültiges zu setzen und das abgefangen wird), oder sie betreffen einen Teil der Daten, der an der Invariante nicht beteiligt ist, was evtl. auf eine Verletzung des Single-Responsibility-Principles hinweist.
-
@Computerwelt sagte in Warum programmieren einige noch in C?:
Gibt es denn eigentlich Bücher in denen schönes C++ gelehrt wird? Die meiste Fachliteratur schreibt nur alle Möglichkeiten runter, aber was davon best practice ist und was man lieber lässt, erfährt man nicht.
Es gibt regalmeterweise Bücher die sich mit diesem Themenkomplex befassen. Das Problem ist nur, dass viele dieser Bücher vor C++11 entstanden sind, und es nicht von allen Neuauflagen mit angepassten Inhalt gibt. Aktuelle Bücher sind dann meist für C++11 und/oder für C++14 geschrieben.
- Effective Modern C++; Scott Meyers (es gibt noch die drei alten Bücher auf dem Stand von C++98)
- Exceptional C++, More Exceptional C++, Exceptional C++ Style; Herb Sutter (leider auf dem Stand von C++98)
- Programming: Principles and Practice Using C++; Bjarne Stroustrup