C++ Kabarett: Josuttis -Move Semantics for Trivial Classes

Gast #7004563
Lesenswert?

Ein schöner Beweis dafür, das C++ als Sprache eine völlige 
Fehlentwicklung genommen hat. Einfachste Dinge sind unnötig komplex, so 
komplex dass sie kaum von durchschnittliche Programmierer komplett 
verstanden werden. So sind Fehler vorprogrammiert.
#7004568
Lesenswert?

Am Anfang wars ja noch übersichtlich. Bischen Objektorientierung und 
dann STL,
kann man sich gewöhnen. Aber dann die ganzen neuen Sachen die über BOOST 
reinkommen. Lambda, Type Erasure, etc. Alles toll, aber irgendwann 
blickt doch vor Metaprogrammierung keiner mehr durch...
Gast #7004722
Lesenswert?

Man muss sich halt in C++ raussuchen, was für einen gut funktioniert.
Bei neuen Features schaue ich mir erst mal den Assembler Code an,
da verstehen ich schneller was passiert, als wenn ich mir den C++ 
Standard anschaue.

Wobei ich schon die C++ Elite bewundere, die etwa bei Facebook oder 
Google richtig guten und effizienten Code raushauen.
Da gibt es auch ein paar Blogs, wo drüber geflucht wird, dass der 
Compiler
unnötigen Copy Constructoren reinhaut, und man bei jeder Zeile
gegenkontrollieren muss.  Aber am Schluss zählt, dass es funktioniert.

Ich wundere aber mich schon, wenn sogar Experten die sich
seit über 20 Jahren mit C++ beschäftigen, und sogar in
Gremien sitzen, nicht immer wissen was da eigentlich passiert.

Hier z.B. ein sehr informatives Video über das spannende Thema wann der 
Compiler automatisch Destruktor, Constructur, Copy-Assignment und 
Copy-Constructor einbaut. Von Howard Hinnant, der selbst mal für einen 
Compilerbauer STL Libs geschrieben hat:
https://www.youtube.com/watch?v=vLinb2fgkHk&t=2130s

Dann kommt irgendwann eine harmlose klingende Frage aus dem Publikum, 
und selbst Howard H. hat weiss keine Antwort drauf. Das Zeugs ist im 
Detail schon sehr kompliziert.
Gast #7004724
Lesenswert?

Zuerst hat "move" Zombies zurückgelassen.
Dann erkannte die C++ Community daß Zombies schlecht für wartbare 
Programme sind, und spezifizierte daß nach "move" ein Objekt wie 
default-constructed zu sein hat.
Zuerst hat man in C++ exception specifications implementiert.
Dann erkannte die C++ Community daß exception specifications schlecht 
für wartbare Programme sind, und hat sie entfernt.
Zuerst...
#7004752
Lesenswert?

Der gequotete Text stimmt meiner Meinung nach nicht. Ich hab jetzt zwar 
nicht nachgeschaut, aber soweit ich mich erinnern kann ist ein 
"moved-from object" einfach in irgendeinem Zustand... 
default-constructed wäre auch komisch. Wieso sollte man keine Objekte 
herumschieben können die nicht default-constructible sind.
#7004784
Lesenswert?

So ganz beliebig darf sein Zustand nicht sein.

Auch wenn man das Objekt eigentlich nicht mehr anfassen darf und kaum 
Annahmen darüber machen kann, wird es aber immer noch irgendwann auf 
seinen Destruktor losgelassen.
Und der wird vielleicht für einen Zeiger darin ein delete machen.
Das geht aber nur gut, wenn der Zeiger entweder NULL ist oder auf etwas 
zeigt, was mit delete freigegeben werden darf (und es noch nicht wurde).

Also eine gewisse Konsistenz muß ein Objekt auch nach move noch haben.
Gast #7004849
Lesenswert?

Ihr habt recht laut Standard ist der Zustand eines Zombie-Objekts (moved 
from) außer für spezielle Klassen nicht spezifiziert außer das der 
Destruktor immer aufgerufen werden kann.
Ich dachte das wurde irgendwann mal geändert aber da hab ich mich 
getäuscht.
#7004970
Lesenswert?

Richtig.

Die ganze Diskussion oben geht darum, wie man etwas besser machen kann 
im Sinne von effektiver und schneller.

Der einfache Weg, einen String als const& zu übergeben, funktioniert 
nach wie vor.
Nur kann man die eine oder andere Operation einsparen, wenn man mehr 
nachdenkt und C++ besser versteht.

(Für µC-Programmierung ist das eh uninteressant, da nutzt man andere 
Ecken von C++.)

In Java odder sonstwo braucht man über solche Optimierungen gar nicht 
nachdenken.
Gast #7004990
Lesenswert?

Hallo

Klaus W. schrieb:
> Es geht noch schlimmer :-)
>
> 50 shades of C++ - Nicolai Josuttis - Meeting C++ 2018 Closing Keynote
> https://www.youtube.com/watch?v=7DTlWPgX6zs

Egal ob er mit den eigentlichen Inhalt recht hat und es sich sogar um 
einen guten Vortrag halten sollte:

Wer so (Eingangsthumbnail, "Startbild") bei Youtube anfängt sucht sich 
sein Publikum entweder bei denen die sowieso eine vorgefasste Meinung 
(Vorurteil, "Blase") haben, ist ein kleiner Klickbaiter (schwierig bei 
den Thema, aber auch wir Nerds sind ein wenig Sensations- und 
Bestätigungsgeil) oder einfach nur ungeschickt was dieses Medium 
betrifft.

Ziemlich unprofessionell so für sein Video zu "werben", so mancher der 
hochwertige und vorurteilsfrei Information erwartet wird durch solche 
Bilder (Ich meine hier den "Handbeißer") abgeschreckt - gerade auf 
Youtube wo es gute Videos gibt man aber gezielt suchen muss...
Traurig wenn dann eventuell guter content ungesehen bleibt, und der 
"Witz" innerhalb des Vortrags und im Zusammenhang durchaus funktionieren 
mag und wenig mit "Klickbait" zu tun haben mag.

YT Nutzer
#7004994
Lesenswert?

YT Nutzer schrieb:
> Hallo
> Klaus W. schrieb:
>> Es geht noch schlimmer :-)
>> 50 shades of C++ - Nicolai Josuttis - Meeting C++ 2018 Closing Keynote
>> https://www.youtube.com/watch?v=7DTlWPgX6zs
> Egal ob er mit den eigentlichen Inhalt recht hat und es sich sogar um
> einen guten Vortrag halten sollte:
> Wer so (Eingangsthumbnail, "Startbild") bei Youtube anfängt sucht sich
> [...]
Wovon redest du?
#7005002
Lesenswert?

Ich hatte von Nicolai Josuttis schon diverse Bücher in der Hand, und 
auch eine Woche Schulung bei ihm genossen.

Der weiß, wovon er redet, und bringt das auch gut rüber.
Die Videos oben sind angesichts der Umgebung nicht bierernst zu nehmen. 
Aber im Kern stimmt es natürlich, und er verfolgt die Entwicklung schon 
lange genug um zu sehen, daß ein Abdriften in zu esoterische Gegenden 
droht.

Ich glaube, er hat genug zu tun, um nicht billige Stimmungsmache zu 
brauchen.
#7005069
Lesenswert?

Klaus W. schrieb:
> Es geht noch schlimmer :-)
> 50 shades of C++ - Nicolai Josuttis - Meeting C++ 2018 Closing Keynote
> https://www.youtube.com/watch?v=7DTlWPgX6zs
> Aber das schöne ist doch: man muß in C++ nicht alles nutzen...

Wenn nicht irgendwelche Kollegen meinen immer das Neueste direkt 
verwenden zu müssen ("Concepts sind toll"), und man dann nach deren 
Ausscheiden aus der Firma den Code warten muß....
#7005070
Lesenswert?

Thomas W. schrieb:
> Klaus W. schrieb:
>> Es geht noch schlimmer :-)
>> 50 shades of C++ - Nicolai Josuttis - Meeting C++ 2018 Closing Keynote
>> https://www.youtube.com/watch?v=7DTlWPgX6zs
>> Aber das schöne ist doch: man muß in C++ nicht alles nutzen...
>
> Wenn nicht irgendwelche Kollegen meinen immer das Neueste direkt
> verwenden zu müssen ("Concepts sind toll"), und man dann nach deren
> Ausscheiden aus der Firma den Code warten muß....
Das ist kein C++-Problem, sondern ein Firma-Problem
#7005168
Lesenswert?

Thomas W. schrieb:
> Wenn nicht irgendwelche Kollegen meinen immer das Neueste direkt
> verwenden zu müssen ("Concepts sind toll"), und man dann nach deren
> Ausscheiden aus der Firma den Code warten muß....

Sei doch froh, dass endlich jemand diesen Weg gegangen ist. Concepts 
sind ja so als wie templates an sich, und jeder, der sich bisher 
ernsthaft mit der template-Mechanik befasst hat, muss sie eigentlich 
schmerzlich vermisst haben.
Gast #7010708
Lesenswert?

C++ kommt mir immer mehr vor wie ein inside job. Da ist ne kleine Gruppe 
die  die SPrache immer mehr aufbläht und verkompliziert um danach von 
den Schulungen und Buchverkäufen zu leben damit die Entiwickler die im 
C##-Straflager arbeiten müssen, mit dem Schrott zurechtkommen.

Das gibts in anderen Sprachen auch aber bei C++ profitieren davon seit 
Jahrzehnten die immer selben Leute: "Der Grieche",  der Typ mit der 70er 
Jahre Rockstarfrisur, der nach eigenen Angaben noch nie ein reales 
Programm in C++ geschrieben hat und nur die Features runterleiern kann 
und die andere  dubiosen Gestalten die allseits bekannt sind und denen 
jder C++-Fanboi blind nachrennt egal was die Absondern.

C++ ist zur reinen Freaksprache verkommen, d.h. eigentlich war sie das 
schon immer aber was heute im Standard "definiert" ist (C++ Standard und 
das Wort "definiert"- LOL - kleiner Insiderwitz), das ist doch nur noch 
ein schlechter Scherz. Ich verstehe auch nicht warum man an diesem 
Schrott krampfhaft als Entwickler festhält, C++ ist doch heute völlig 
überflüssig, es gibt massig Alternativen, auch im Embeddedumfeld, 
woanders spielt das praktisch keine Rolle mehr.
Angehängte Dateien:
#7010732
Lesenswert?

Herr Kaiser von der  Mannheimer schrieb:
> C++ kommt mir immer mehr vor wie ein inside job.
Nur weil du es nicht verstehst, ist es kein insider Job. Ich 
unterscheide hier mal nicht zwischen können und wollen.

Herr Kaiser von der  Mannheimer schrieb:
> Das gibts in anderen Sprachen auch aber bei C++ profitieren davon seit
> Jahrzehnten die immer selben Leute: "Der Grieche",  der Typ mit der 70er
> Jahre Rockstarfrisur, der nach eigenen Angaben noch nie ein reales
> Programm in C++ geschrieben hat und nur die Features runterleiern kann
> und die andere  dubiosen Gestalten die allseits bekannt sind und denen
> jder C++-Fanboi blind nachrennt egal was die Absondern.
Kannst du wenigstens einen echten Namen nennen? Da mehrere allseits 
bekannst sein sollen, sollte das ja nicht so schwer sein.

Herr Kaiser von der  Mannheimer schrieb:
> Ich verstehe auch nicht warum man an diesem
> Schrott krampfhaft als Entwickler festhält, C++ ist doch heute völlig
> überflüssig, es gibt massig Alternativen, auch im Embeddedumfeld,
> woanders spielt das praktisch keine Rolle mehr.
Dann kannst du ja mehrere echte Alternativen nennen? Massig hört sich 
nach >10 an.
Gast #7010814
Lesenswert?

Mombert H. schrieb:
> Herr Kaiser von der  Mannheimer schrieb:
>
>> Ich verstehe auch nicht warum man an diesem
>> Schrott krampfhaft als Entwickler festhält, C++ ist doch heute völlig
>> überflüssig, es gibt massig Alternativen, auch im Embeddedumfeld,
>> woanders spielt das praktisch keine Rolle mehr.
>
> Dann kannst du ja mehrere echte Alternativen nennen? Massig hört sich
> nach >10 an.

Würde mich auch brennend interessieren und bitte jetzt nich Go, Java 
oder .Net weil nur sehr wenig embedded geeignet (ein Raspi ist nicht 
embedded) sonst bleiben ja nur C und vielleicht Zig, Nim
Gast #7010887
Lesenswert?

Schade ist das sich ADA nicht mehr verbreiten konnte, weder im 
PC/Server-Bereich, noch Embedded. Dürfte u.a. an den sehr teuren 
Compilern gelegen haben. GNAT kam erst spät und krankte an den 
Lizenzbedingungen.
Gast #7010900
Lesenswert?

Herr Kaiser von der  Mannheimer schrieb:
> ein schlechter Scherz. Ich verstehe auch nicht warum man an diesem
> Schrott krampfhaft als Entwickler festhält, C++ ist doch heute völlig
> überflüssig, es gibt massig Alternativen, auch im Embeddedumfeld,
> woanders spielt das praktisch keine Rolle mehr.

Der Grund sind die vielen guten Bibliotheken, die STL ist nur eine.
Die Sprache ist nebensächlich, aber nicht die vorhandenen Bibliotheken.
Und das haben alle bis auf Python (das gerade links an C++ vorbeizieht,
aber noch ein anderes Anwendungsfeld hat), verschlafen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren