Forum: PC-Programmierung C++ Kabarett: Josuttis -Move Semantics for Trivial Classes


von udok (Gast)


Lesenswert?

Etwas C++2014 Kabarett: https://www.youtube.com/watch?v=PNRju6_yn3o

Man braucht etwas Geduld, aber dafür weiß man am Ende wie man einen 
String kopiert😀

von Einer (Gast)


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.

von Thomas W. (goaty)


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...

von Klaus W. (mfgkw)


Lesenswert?

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...

von udok (Gast)


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.

von loeti2 (Gast)


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...

von loeti2 (Gast)


Lesenswert?

Zuerst meinte man daß Exceptions eine coole Sache sind.
Mittlerweile gehen die Meinungen über die "richtige" Art Fehler zu 
signalisieren weit auseinander und die richtige Richtung ist unklar :)

von Vincent H. (vinci)


Lesenswert?

loeti2 schrieb:
> 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.

[X] doubt

von loeti2 (Gast)


Lesenswert?

Vincent H. schrieb:
> [X] doubt

Wie meinen?

von Vincent H. (vinci)


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.

von Klaus W. (mfgkw)


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.

von Mombert H. (mh_mh)


Lesenswert?

Klaus W. schrieb:
> [...]
> Auch wenn man das Objekt eigentlich nicht mehr anfassen darf und kaum
Warum sollte man das nicht dürfen? Soweit ich weiß, ist es nicht vom 
Standard verboten.

von Wilhelm M. (wimalopaan)


Lesenswert?

Natürlich darfst Du das Objekt anfassen.
Es macht nur keinen Sinn, denn Du kannst keine Annahme über seinen 
Zustand machen, nur dass es ist einem (von vielen) destruierbaren 
Zustand sein muss.

von Mombert H. (mh_mh)


Lesenswert?

Wilhelm M. schrieb:
> Natürlich darfst Du das Objekt anfassen.
> Es macht nur keinen Sinn, denn Du kannst keine Annahme über seinen
> Zustand machen, nur dass es ist einem (von vielen) destruierbaren
> Zustand sein muss.

Es sei denn, man weiß in welchem Zustand das Objekt ist. z.B. für 
std::unique_ptr ist klar definiert was der moved-from Zustand ist.

von loeti2 (Gast)


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.

von Oliver S. (oliverso)


Lesenswert?

Bei dem ganzen Hickhack über C++ sollte man aber nicht übersehen, daß 
die grundlegenden Probleme dahinter völlig unabhängig von der 
Programmiersprache sind. Andere Sprachen machen das nur nicht so 
sichtbar, oder lassen einem keine Wahl.

Oliver

von Klaus W. (mfgkw)


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.

von YT Nutzer (Gast)


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

von Mombert H. (mh_mh)


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?

von Klaus W. (mfgkw)


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.

von Mombert H. (mh_mh)


Lesenswert?

Klaus W. schrieb:
> Ich glaube, er hat genug zu tun, um nicht billige Stimmungsmache zu
> brauchen.

Was du sagst ist richtig, aber erstmal irrelevant ;-) Zuerst muss man 
rausfinden, wer den Thumbnail ausgewählt hat.

von Thomas W. (goaty)


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ß....

von Mombert H. (mh_mh)


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

von Wilhelm M. (wimalopaan)


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.

von Herr Kaiser von der Mannheimer (Gast)


Angehängte Dateien:

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.

von Mombert H. (mh_mh)


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.

von cppbert3 (Gast)


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

von cppbert3 (Gast)


Lesenswert?

und natürlich Rust

von Blechbieger (Gast)


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.

von udok (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.