Bester Überblick über moderne C ++ - Paradigmen? [geschlossen]

16

Ich habe C ++ vor 8 bis 10 Jahren ausgiebig geschrieben. Ich bin seitdem aus beruflichen Gründen zu C # gewechselt. Allerdings sehe ich von Zeit zu Zeit Aussagen wie

"Wenn Sie Zeigerreferenzen immer noch manuell verfolgen, machen Sie es falsch."

oder

"C ++ ist absolut sicher, solange Sie moderne Konzepte wie RAII verwenden und nicht wie ein wiederherstellender C-Entwickler Speicher manuell zuweisen."

Beide waren vor einem Jahrzehnt Standardverfahren. Ich habe gesehen, dass C ++ in letzter Zeit erheblich verbessert wurde; Insbesondere C ++ 0x scheint einige neue Funktionen zu haben. Was ist die beste Ressource für einen "C / old C ++" - Programmierer, um sich über "moderne" C ++ - Muster und -Praktiken zu informieren?

GWLlosa
quelle
3
Sie waren vor einem Jahrzehnt Standardverfahren. Leider gibt es immer noch einen sehr bedeutenden Teil der C ++ - Entwickler, die die Standardprozedur von vor drei Jahrzehnten verwenden.
DeadMG
7
Ich kenne keine einzige Ressource, aber modernes C ++ beruht im Wesentlichen auf: (1) weitgehender Verwendung der STL, wann immer dies möglich ist, anstelle von handgerollten Algorithmen, (2) Verwendung von intelligenten Zeigern und STL-Containern über manuelle Zuweisung / Freigabe , (3) einen funktionalen Programmierstil unter Verwendung von Funktoren / Lambdas zusammen mit Funktionen höherer Ordnung und (4) eine Präferenz für vorlagenbasierten statischen Polymorphismus gegenüber virtuellen Laufzeitfunktionen, wann immer dies möglich ist
Charles Salvia
Effective C ++ von Scott Meyers
Gyan alias Gary Buyn

Antworten:

5

Es hat vielleicht mehr mit dem Lehrmaterial zu tun als mit den meisten anderen Dingen, aber vor 8 bis 10 Jahren schien es mir, dass sich die Art und Weise, wie die Sprache verwendet wurde, stark von der heutigen unterscheidet. Der Fokus liegt heute mehr auf der Nutzung von Vorlagen, der Typensicherheit und der generischen Programmierung, wo zuvor mehr Angst davor bestand und sich die Leute fast ausschließlich auf das C mit Objektaspekten konzentrierten.

Auch die Lehrmaterialien ändern sich. Während vor dem Standard-C ++ - Einstiegsbuch Sie durch printf, scanf usw. geführt haben, sehen Sie diese kaum in Büchern mit einem modernen Ansatz.

Einige gute Bücher gehören zu den roten Büchern. Außergewöhnliches C ++, außergewöhnliches C ++, Metaprogrammierung von C ++ - Vorlagen, modernes C ++ - Design, beschleunigtes C ++ ...

Ich denke, dass es ein gutes Beispiel sein kann, zu sehen, wo ich gerade arbeite. Ich bin mit C ++ auf eine moderne Art hierher gekommen und es scheint, dass die meisten Entwickler nicht einmal wissen, was ich tue oder warum. Erstellen von Objekten mit operator () in ihnen zum Beispiel ... Musste jedes Vorkommen von bind () verdammt kommentieren und wurde schließlich angewiesen, den gesamten Code zu verschrotten. Die wissen nicht, was Initialisierer tun ... Es war wirklich verrückt und schwierig für mich.

Edward Strange
quelle
5

Um einen schnellen Überblick über die modernen Funktionen zu erhalten, die recht gut präsentiert werden, sollten Sie sich die aktuelle Präsentation von Herb Sutter "Schreiben von modernem C ++ - Code: Wie sich C ++ im Laufe der Jahre entwickelt hat" von C ++ - Funktionen unter // build / ansehen.

Er spricht darüber, warum es eine bessere Sprache als C # ist (natürlich wechselt Microsoft regelmäßig die Hosen und heute tragen sie die C ++ - Mode, damit sie dies übertreffen, nur weil sie C # als Antwort auf den Welthunger ein Jahrzehnt lang hochgespielt haben vor), aber dabei beschreibt er alle guten Bits (wie 'automatische' Speicherverwaltung und die STL-Klassen) und spricht dann über die neuen Bits aus dem C ++ 0x-Standard.

gbjbaanb
quelle