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😀
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.
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...
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...
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.
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...
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 :)
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
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.
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.
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.
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.
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.
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.
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
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.
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
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?
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.
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.
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ß....
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
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.
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.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.