Ist C++ noch zu retten?



  • @john-0 sagte in Ist C++ noch zu retten?:

    Mich nerven massenweise unwichtige Warnungen des Compilers, wenn darunter die wichtigen Dinge im Rauschen verschwinden.

    Das muss ich auch immer feststellen. Ich kann mit meinen Beispielen beliebig fortfahren: Aufruf einer virtuellen Methode im Destruktor. --> Zufällig entdeckt als ich im Code eines erfahrenen Kollegen die unwichtigen Warnings entfernt habe.



  • @Steffo sagte in Ist C++ noch zu retten?:

    @john-0 sagte in Ist C++ noch zu retten?:

    Mich nerven massenweise unwichtige Warnungen des Compilers, wenn darunter die wichtigen Dinge im Rauschen verschwinden.

    Das muss ich auch immer feststellen. Ich kann mit meinen Beispielen beliebig fortfahren: Aufruf einer virtuellen Methode im Destruktor. --> Zufällig entdeckt als ich im Code eines erfahrenen Kollegen die unwichtigen Warnings entfernt habe.

    Deswegen kann man sich die Warnungen auch größtenteils selbst einstellen, was ich auch jedem raten würde.

    -Weffc++ oder -pedantic

    muss man sich ja nicht unbedingt antun. Aber in -Wall und -Wextra ist z.b. nix dabei was "nervt" oder das Log vollspammt. Es sei denn man hat schlampig programmiert 😅

    Wir haben Team-Intern/Büro-Intern die mindestens notwendigen Warnungen festgeschrieben und als Vorgabe gesetzt, dass nur Warnungsfreie Projekte nach dem Buildprozess noch im Installationspaket landen. So einfach.



  • Ist das bei anderen Sprachen alles nicht prinzipiell genauso?
    Zumindest in den weit verbreiteten.
    JavaScript ist so broken, dass "opinionated design" da extrem verbreitet ist. -> "Mache XY nur auf diese Art und Weise, weil ich weiß wie es am besten ist und alle Alternativen sind schlimm". Grausam.

    Und was ihr hier so aufzählt ist noch weit entfernt von den brutal fiesesten Sachen die mir begegnet sind. Da versteh ich schon dass die Diskussion zu Warnungen driftet.



  • @5cript sagte in Ist C++ noch zu retten?:

    "Mache XY nur auf diese Art und Weise, weil ich weiß wie es am besten ist und alle Alternativen sind schlimm". Grausam.

    Willkommen in der Wirklichkeit eines Ingenieurs - in diesem Fall halt Software-Ingenieur.



  • @hustbaer sagte in Ist C++ noch zu retten?:

    Willkommen in der Wirklichkeit eines Ingenieurs - in diesem Fall halt Software-Ingenieur.

    Ich bin der Ansicht, dass man mir in C++ 10 Umsetzungen zu einem Problem zeigen kann (in Punkto Software Design) und ich könnte für wenigstens 7 davon positiv argumentieren.
    Ohne dass ich gleich dazu neigen würde zu sagen: "nur diese eine, und der rest ist müll, weil [...]".

    Wenn man sich JavaScript Frameworks ansieht dann ist das voll von "nur so und nicht anders". Jede Fullstack Lösung und dazugehörige unerlässliche Libraries hat ihre eigene aus Erfahrung entsprungene Philosophie, die einen in eine Projekt und Softwarestruktur zwingt.

    Der Gedanke "ich weiß was gut für dich ist" stößt mir sehr auf.

    EDIT: Wichtig! Ich erkenne aber an, dass für manche libraries oft eine Abweichung vom dargelegten Workflow bedeutet dass man sich sehr viel Ärger einhandelt und was falsch macht. Das ist was ich meine wenn ich sage "JavaScript ist so broken, dass einem struktur aufgezwungen wird".



  • @5cript
    Was ich meinte ist: frag mal einen Maschinenbau-Studenten der bei einer Hausübung wo er ein Getriebe entwerfen sollte einen eigenen, neuen Entwurf abgegeben hat was sein Professor dazu gesagt hat.

    Als Ingeneur ist es deine Aufgabe bestimmte Dinge zu entwerfen die unter allen möglichen Bedingungen gut funktionieren sollen. Es ist quasi unmöglich bei einem neuen Entwurf alles zu bedenken. Was passiert wenn im Getriebe Zahnrad X bricht? Explodiert es mit schlimmen Folgen oder hört es einfach auf zu funktionieren? Was passiert wenn das Getriebeöl zu lange nicht gewechselt wird? Was passiert überhaupt wenn das Getriebe einfach nur "normal" betrieben wird? Welche Teile nutzen sich ab und wie stark und was hat das für Folgen? Wie kommt das Getriebe mit den stärkeren Vibrationen klar wenn das ZMS verschleisst und nicht mehr gut dämpfen kann?

    Bei bekannten, bewährten Designs sind diese Dinge eben bekannt, und man weiss dass sie in der Praxis gut funktionieren. Und das trotz dem man nichtmal alle möglichen Probleme kennt die andere Designs haben könnten.

    Und in der Software-Entwicklung ist es ähnlich. Daher gibt es auch diverse Muster die allgemein empfohlen werden.

    Jede Fullstack Lösung und dazugehörige unerlässliche Libraries hat ihre eigene aus Erfahrung entsprungene Philosophie, die einen in eine Projekt und Softwarestruktur zwingt.

    Wenn dich das Framework in eine Struktur zwingt, dann ist das ja keine Meinungssache mehr. Du hast dann ein Werkzeug das du auf Art X gut verwenden kannst, und alle anderen Arten funktionieren einfach nicht gut. Wenn du es dann trotzdem anders machst...

    Ich erkenne aber an, dass für manche libraries oft eine Abweichung vom dargelegten Workflow bedeutet dass man sich sehr viel Ärger einhandelt und was falsch macht. Das ist was ich meine wenn ich sage "JavaScript ist so broken, dass einem struktur aufgezwungen wird".

    Ich würde sagen das ist eine Eigenschaft von allen "Frameworks". Ja, es gibt Libraries mit denen man bestimmte Dinge gut machen kann, die einem kaum ein bestimmtes Design/eine bestimmte Struktur aufzwingen. Diese sind aber meistens spezialisiert und decken nur einen kleinen Teil davon ab was du in einer Anwendung brauchst. Wenn du dann mehrere dieser Libraries zusammenknotest und eine Anwendung damit baust bastelst du dir quasi dein eigenes Framework. Dieses hat dann auch eine Struktur, und wer auch immer die Anwendung weiter betreut sollte sich besser daran halten, denn sonst wird er genau so Probleme bekommen. Nachteile dieser Variante sind allerdings dass es meist deutlich mehr Arbeit ist, und dass keiner weiss wie sich das Design in Zukunft bewähren wird.

    Und wenn du dir grössere C++ Frameworks ansiehst, diese haben genau das selbe "Problem", also dass sie dich in bestimmte Strukturen zwingen. Nur mal als Beispiele MFC, Qt. Oder WPF für C#. Bzw. sogar Libraries wie Boost.Asio oder libuv zwingen dir bestimmte Strukturen auf - obwohl sie ja "nur" IO Libraries sind (OK, ist gelogen, sie sind eben ein wenig mehr als das). Ich glaube die empfundene Freiheit von C++ kommt eher daher, dass man in C++ seltener solche Frameworks verwendet.



  • @It0101 sagte in Ist C++ noch zu retten?:

    Ich finde es etwas übertrieben, eine ganze Sprache zu verteufeln, weil ein Feature etwas kurios ist.
    C++ kann viele Dinge, aber wie das ebenso mit mächtigen Werkzeugen ist, gibt es auch ein paar Fallen.

    @Steffo +1 🙂

    Ich bin ja auch "zwangsweise" C++ Fan. Bzw. es ist wohl mittlerweile eher eine Hassliebe nach rund 20 Jahren. Aber man sollte sich schon eingestehen, dass C++ an wirklich vielen Stellen Broken-By-Design ist. Leider werden diese Macken, dann von einer religösen C++-Gemeinde verneint und geleugnet. Schlimmer noch als wie zuweilen bei den Applejüngern. Keine Wunder, dass es dann nicht vorrangeht mit C++. Jetzt kommen dieses Jahr endlich Modules und ich bin mir sicher sie haben es voll verka... Eine Schande das nach all den Jahrzehnten diese vielen Probleme nicht angegangen oder wenn nur völlig vermurkst umgesetzt wurden. Das Beispiel von Steffo ist eines. Es gibt aber noch viele weitere. Ich wüschte mir ja ein C# so hardware nah wie C++ und plattformübergreifend/offen verfügbar. Microsoft hat hier was die Sprache anbelangt und das sage ich obwohl ich seit Jahren keines deren Produkte mehr verwende bzw. verwenden wöllte exzellente Arbeit gemacht. Dann könnte C++ sterben.



  • @Enumerator
    Volle Zustimmung.
    Nachdem Hejlsbergs Jünger jetzt auch die C-Zeiger verstanden haben und sie mittels Span<T> ab 7.0 in C# supporten - so schlecht können C Zeiger ja also nicht sein - und plötzlich laufen dann diverse C# Libs von ganz allein deutlich schneller (nur weil sie intern auf Span umgestellt wurden).
    Das ist natürlich ggü. den laienhaften Versuchen, C++ die Zeiger schmackhaft zu machen, ein ganzheitlicher Ansatz.



  • @Wutz sagte in Ist C++ noch zu retten?:

    @Enumerator
    Volle Zustimmung.
    Nachdem Hejlsbergs Jünger jetzt auch die C-Zeiger verstanden haben und sie mittels Span<T> ab 7.0 in C# supporten - so schlecht können C Zeiger ja also nicht sein - und plötzlich laufen dann diverse C# Libs von ganz allein deutlich schneller (nur weil sie intern auf Span umgestellt wurden).
    Das ist natürlich ggü. den laienhaften Versuchen, C++ die Zeiger schmackhaft zu machen, ein ganzheitlicher Ansatz.

    Niemand sagt dass C-Zeiger ( oder rohe Zeiger im Allgemeinen ) zwangsläufig schlecht sind. Ihre Verwendung ist halt unter Umständen fehleranfälliger. Daher hat man ja auch keine rohen Zeiger eingeführt sondern mit Span<T> eine Hülle drum gebaut. Wie heißt das nochmal in C++? Ach ja: Smart-Pointer.

    Warum ist das eine jetzt megageil und das andere Teufelzeug?



  • @It0101
    Weil die Stroustrup Jünger auch nach 30 Jahren immer noch neue "unentbehrliche" "Features" für C++ finden und sie unter dem Deckmantel als "Standard" hochvolatil der Allgemeinheit oktroyieren;
    jede Veröffentlichung eines solches "Standards" ist nur das Eingeständnis der eigenen Unfähigkeit, eine neue praxisrobuste Sprache zu kreieren.
    Wann wurden denn deine Smartpointer "erfunden"? Genau - viele Jahre nach Verabschiedung des 1. Standards - d.h. und noch viel mehr Jahre nach der ahnungslosen Stroustrup-Stümperei im stillen Kämmerlein;

    Wenn man keine Ahnung hat, Klappe halten und Finger weg.



  • @Wutz sagte in Ist C++ noch zu retten?:

    @It0101
    Weil die Stroustrup Jünger auch nach 30 Jahren immer noch neue "unentbehrliche" "Features" für C++ finden und sie unter dem Deckmantel als "Standard" hochvolatil der Allgemeinheit oktroyieren;

    Das mag vielleicht draussen auf der Straße funktioneren, hier im Forum befinden sich jedoch eher Leute, die viel Übung darin haben, die Semantik hinter Sprachkonstrukten zu ergründen.

    Die werden wohl recht schnell merken, dass dein Beitrag ausschliesslich Behauptugen und exakt 0 Argumente beinhaltet - nichtmal Pseudoargumente. Das ist sogar für einen Trollbeitrag ziemlich schwach.



  • @Wutz sagte in Ist C++ noch zu retten?:

    Wann wurden denn deine Smartpointer "erfunden"?

    Spätestens 1994.

    Wenn man keine Ahnung hat, Klappe halten

    Solltest du mal beherzigen.



  • @Finnegan
    Da siehst du so, bei Verwendung einer Sprache in der Praxis will ich nicht die Semantik hinter Sprachkonstrukten ergründen sondern die Sprache anwenden. Die Semantik hinter Sprachkonstrukten ergründen überlasse ich gerne Forschenden an Unis und dergleichen Theoretikern.



  • @Bashar
    unique_ptr gibts erst ab C++11, und wann gabs endlich Lambdas (und warum deren krude Syntax - genau, weil man beim Design der Sprache an sowas Essenzielles und in anderen Sprachen schon längst Vorhandene nicht "gedacht" hat)?
    Wer kam auf den Unsinn, zuerst <map> zu "designen" und erst später in TR1 verschämt <unordered_map> nachzureichen?
    Wie naiv kann man sein, eine compare-basierte Containerkonstruktion anzubieten und erst später eine hashbasierte?
    Die naive Ausrede, es gäbe wegen Mehrfachvererbung in C++ keinen anonymen baseclass Zugriff gehört ebenso in die Kategorie von Theoretikern, die gerne die Semantik hinter Sprachkonstrukten erforschen wollen, aber keine Ahnung von Leuten "auf der Straße" haben.



  • @Wutz sagte in Ist C++ noch zu retten?:

    @Finnegan
    Da siehst du so, bei Verwendung einer Sprache in der Praxis will ich nicht die Semantik hinter Sprachkonstrukten ergründen sondern die Sprache anwenden. Die Semantik hinter Sprachkonstrukten ergründen überlasse ich gerne Forschenden an Unis und dergleichen Theoretikern.

    Das ist auch für die Praxis eine wichtige Fähigkeit. Besonders wenn man fremden Code lesen und verstehen will - oder manchmal auch eigenen Code, den man erst letzte Woche geschrieben hat.

    Ein Entwickler sollte schon wissen, was sein Programm macht und bevorzugt auch schlüssig begründen können, warum das Programm korrekt ist.



  • @Wutz sagte in Ist C++ noch zu retten?:

    @Bashar

    Wieso soll ich dir diese Fragen beantworten? Kannst du alles selbst recherchieren. Mir ist meine Zeit dafür zu schade.



  • @Finnegan sagte in Ist C++ noch zu retten?:

    Ein Entwickler sollte schon wissen

    Das mag für Projekte auf der grünen Wiese gelten, wo du sogar schon in der Designphase dabei sein konntest - die Praxis sieht aber anders aus, da hat man zwangsläufig bei > 200.000 loc keinen Überblick mehr, ob das Programm "korrekt" ist; und bei >80% seines Zeitaufwandes für die Lektüre und Korrektur von anderer Leute Code ist es masochistisch darüber nachzudenken, was der liebe Kollege damals vor 10 Jahren wohl gerade für ein Theoriebuch gelesen haben mag.



  • @Bashar sagte in Ist C++ noch zu retten?:

    Wieso soll ich dir diese Fragen beantworten?

    Du verstehst nicht - allein das diese Fragen gestellt werden konnten, zeugt von (allenfalls theoretischer) Vision beim Sprachdesign, die ohne jeglichen Praxisbezug in Nicht-Überlebensfähigkeit mündet - wobei wir dann auch wieder ontopic wären.



  • @Wutz sagte in Ist C++ noch zu retten?:

    Wenn man keine Ahnung hat, Klappe halten und Finger weg.

    Erstens: bist du ein extrem unhöflicher und schlecht argumentierender Zeitgenosse. Alles in allem recht armselig.

    Zweitens: entscheidend ist doch ob ein neues Feature von der Community angenommen wird und ob es funktioniert. Beides ist bei Smartpointern der Fall. Und auch bei den meisten anderen neuen Features.
    Daher ist mir nicht klar, was eigentlich dein Problem ist.



  • @Wutz sagte in Ist C++ noch zu retten?:

    @Bashar sagte in Ist C++ noch zu retten?:

    Wieso soll ich dir diese Fragen beantworten?

    Du verstehst nicht - allein das diese Fragen gestellt werden konnten, zeugt [...]

    Nö, das zeugt davon, dass du keine Ahnung von C++ hast und offensichtlich nur Rumstänkern willst.


Log in to reply