[Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema "modernes C++"
-
Ich habe nur gesagt, dass es in vielen Fällen wie mit Kanonen auf Spatzen schiessen ist, wenn man einen shared_ptr verwendet. Abstrakt gefragt: Wozu in der Sahara statt eines normalen Stahlbolzen einen Bolzen verwenden, der bis -30°C haltbar ist?
Ich denke es ist offensichtlich, dass er einen höheren Speicherverbrauch hat und dafür brauche ich ein Argument, das mir diesen rechtfertigt. Die 3 Zeilen Code sind es für mich nicht. Selbst wenn du das Objekt an mehreren Stellen verankerst ohne genaue Besitzdefinition ist für mich shared_ptr noch lange nicht zwangsläufig die richtige Wahl. Solange alles in einem Thread geschieht, reicht für mich ein 'normaler' nicht-threadsicherer Zähler aus. Wenn natürlich verschiedene Threads darauf arbeiten, würde ich ebenfalls einen shared_ptr verwenden.Wenn ich jetzt ein Pfennigfuchser wäre, dann würde ich sagen, dass bei einem move zusätzlich zum Kopieren des Zeigers auf das Objekt auch noch des Zeiger auf den Counter kopiert werden muss... Aber darum geht es mir eigentlich nicht.
Mir geht es darum, dass alle immer den Porsche nutzen, obwohl ein Clio ausreicht.Bezüglich des unique_ptr:
Ich bin (generell) ein Befürworter des unique_ptr und wollte nur klarstellen, dass er auch einen minimalen Overhead haben kann. Übrigens wollte ich ursprünglich 'meistens' statt 'manchmal wegoptimiert' schreiben, dachte mir aber sei lieber vorsichtig
Ich sehe es absolut wie du, dass dieser Unterschied nicht nennenswert ist. Diesen nehme ich (i. d. R.) wegen Exceptionsicherheit gerne in Kauf. Hier habe ich einen klaren Nutzen.Wenn ich den Nutzen des threadsicheren Referenzzählers verwenden möchte, dann kann ich gerne den shared_ptr verwenden. Klar kommt das vor, aber nicht so oft, dass ich dessen Verwendung als 'default' anpredigen würde.
-
(Herb Sutter, Microsoft) && modernes "C++" in einem Wort.
HahahahahahahahahahahaDie Deppen von M$ haben ja noch nicht mal die einfachsten Sachen von C++11 umgesetzt. Mit modernem C++ hat das garnichts zu tun. Das Ding überhaupt C++ zu nennen grenzt schon an frechheit.
Nur zum vergleich:
http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
vs
http://gcc.gnu.org/gcc-4.7/cxx0x_status.html <----- So muss das aussehen
Zum Glück kann ich richtig modern Programmieren unter einem richtig modernen OS (Linux)
________________________________
"Es ist besser für den Pinguin zu Sterben, als zu Microsoft zu leben"
- Mein Motto
-
Die Vortragende auf der Build-Konferenz wollen sich und ihr Produkt natürlich auch verkaufen. Das nervte schon ein bisschen.
Gleich nachdem Sutter sagte, dass der Microsoft Compiler der erste gewesen sei, der Rvalue-Referenzen unterstützt hat, hat er sich korrigiert: einer der ersten Compiler.
Bei seiner Verwendung von std::for_each in den Beispielen habe ich gedacht: "Das benutzt Du nur, weil ihr noch keine for-range-Schleife im Compiler implementiert habt". Aber einen Vorteil hat std::for_each dann doch noch. Es sagt genau das aus, was da passiert: Eine Schleife über alle Elemente, während im for-range Loop ein break versteckt sein könnte.
Auch ich habe mich über den "prefer shared_ptr and make_shred as default over new" gewundert und an unique_ptr gedacht. Aber er relativiert das ja später...
Ob der Microsoft-Compiler nun schon viel C++11 kann oder nicht, sein Vortrag ist immer noch gut.
-
Linuxoid schrieb:
(Herb Sutter, Microsoft) && modernes "C++" in einem Wort.
HahahahahahahahahahahaDie Deppen von M$ haben ja noch nicht mal die einfachsten Sachen von C++11 umgesetzt.
Du hast genau gar nicht verstanden worum es bei modernem C++ geht.
-
Ich glaub er hat auch keine Ahnung wer Herb Sutter ist...
-
dot schrieb:
Ich glaub er hat auch keine Ahnung wer Herb Sutter ist...
Reicht wohl das Mr. Sutter bei Microsoft arbeitet, eingebildet

-
Linuxoid schrieb:
Zum Glück kann ich richtig modern Programmieren unter einem richtig modernen OS (Linux)
Na gottseidank, dann kannst du ja jetzt wieder spielen gehen, während die großen sich unterhalten...
-
hustbaer schrieb:
Du hast genau gar nicht verstanden worum es bei modernem C++ geht.
Herb Sutter hat die ganze Zeit fast nur über die C++11 features gelabert.
std::for_each in verbindung mit Lambdas,
RValue Referenz,
share_ptr unique_ptr,einiges ging auch schon mit c++98 (smart_pointer, vector)
vieles aber nicht.Das kuriose ist, dass der MSVC++ der Compiler mit der schlechtesten C++11 unterstützung ist, also sollte HS aufhören das Teil als C++11 Compiler zu bezeichnen, sondern korreckt als C++0x Compiler oder C++98 mit baby C++11 features.
-
Linuxoid schrieb:
Das kuriose ist, dass der MSVC++ der Compiler mit der schlechtesten C++11 unterstützung ist,...
Das sehe ich etwas anders... Zumindest einiges der Funktionen die ich dringend vermisst habe sind enthalten (u.a. auto). Es gibt andere Compilerhersteller, wo man nur ansatzweise Änderungen zwischen den Versionen bemerkt (z.B. habe ich dieses Gefühl beim C++ Builder).
-
Das Problem ist doch auch nicht der C++11 Support. Das eigentliche Problem ist doch, dass es von M$ ist und wenn ich was von M$ verwende, bin ich voll nicht 1337 alta, hab ich recht?
-
dass alle immer den Porsche nutzen, obwohl ein Clio ausreicht
Wenn ich fuer das gleichen Preis einen Porsche bekomme, dann nehme ich wohl nicht den Clio.
-
knivil schrieb:
dass alle immer den Porsche nutzen, obwohl ein Clio ausreicht
Wenn ich fuer das gleichen Preis einen Porsche bekomme, dann nehme ich wohl nicht den Clio.
Der Porsche hat aber höhere Spritkosten.
-
Ja eben nicht, weil performanter eben weniger Strom. Zukunft bedeutet Elektroauto. Klar!
-
knivil schrieb:
Ja eben nicht, weil performanter eben weniger Strom. Zukunft bedeutet Elektroauto. Klar!
Dann bezahl du mal schön die Versicherungskosten für den Porsche

Mein Clio kostet sizeof(Object*)...
Dein Porsche kostet sizeof(Object*) + sizeof(CounterStruct*) und ist deswegen doppelt so teuer...EDIT: Ich brauch beim Proggn kein Status-Symbol

-
Hast du dir das Video ueberhaupt angesehen? Wenn nicht, wirst du die Analogie nur schwer erkennen.