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.



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



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

    Wann wurden denn deine Smartpointer "erfunden"? Genau - viele Jahre nach Verabschiedung des 1. Standards

    In der ersten Norm wurde schon ein Smart Pointer eingebaut std::auto_ptr, nur war dieser ein suboptimaler Smart Pointer. Im Rahmen des Boost Projektes wurden dann relativ schnell die heute bekannten Smart Pointer entwickelt, und dann mit C++11 leicht abgewandelt in die Norm übernommen.

    Die STL hatte ebenfalls eine lange Vorgeschichte die auf die Booch Components für Ada zurückgeht.


  • Gesperrt

    Dieser Beitrag wurde gelöscht!


  • Naja, gerade die hier genannten "Smart"-Pointer sind (in meinen Augen) eine totale Fehlkonstruktion. Was ich z.B. total ätzend finde ist, dass man einen Smart-Pointer im Konstruktor nicht mit this initialisieren kann (wenn von enable_weak_from_this abgeleitet). Oder auch siehe zirkuklare Abhängigkeiten und memory leaks. Oder von Anfängern häufig gemachter Fehler ein Objekt per new zu erzeugen und dem Basisklassen-Pointer zuzuweisen anstatt die make_XXXX Varianten zu verwenden. Klar jetzt kann man sagen, das war der Fehler der Programmierers. Aber wenn z. B. in der Luftfahrt ein Fluggerät regelmäßig zu Abstürzen führt weil es für den Piloten schwer einhaltbare Limits hat kann man auch darüber streiten, ob die Piloten alle zu blöd sind und die verlorenen Menschenleben hinnehmen oder dem Gefährt die Betriebserlaubnis entziehen. Im Vietnam Krieg sind wohl mehr Hueys durch "Mast Bumping" abgestürzt als durch Feindbeschuss. Das Problem, ist dass irgendwann jeder mal in eine Situation kommt wo er die Maschine (z. B. nach Ausweichen einer Stromleitung die erst im letzten Moment erkannt wurde) außerhalb der Limits bringt. Auch die Robinson Schrottkisten verursachen regelmäßig tödliche Unfälle aber ich schweife vom Thema ab. Auch toll. Letztens hat mich ein Kollege verzeifelt um Hilfe gebeten weil er einen unerklärlichen Bug hatte. Er hatte das "auto" Schlüsselwort verwendet (dessen Verwendung zum Glück in jedem guten Coding Style verboten ist) und nicht erkannt, dass die Liste unerwartet kopiert wurde. Er hätte "auto&" schreiben müssen. Das ist Grund genug für mich auto zu verbieten. Highlight war vor einiger Zeit ein Boost Code Beispiel wo extensiv mit auto gearbeitet wurde. Die eigentlichen Typen waren dann tief verschachtelt irgendwelche Typedefs in irgendwelchen Klassen. Intellisense hat das auto dann nur noch als 10 Zeilen langes Templategeschwurbel aufgelöst und ich hatte keine Ahnung was der Code überhaupt macht bzw. was das für Objekte sind mit denen dort gearbeitet wurde. Und das in einem Beispiel für Leute die noch nie damit gearbeitet haben. Grausam. Und so könnte man die Liste von Problemen fortführen. Aber das ist hier sicherlich der falsche Ort um sich darüber zu beklagen :).



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

    Er hatte das "auto" Schlüsselwort verwendet (dessen Verwendung zum Glück in jedem guten Coding Style verboten ist)

    Blödsinn.

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

    und nicht erkannt, dass die Liste unerwartet kopiert wurde. Er hätte "auto&" schreiben müssen.

    Genauso wie er Type& schreiben müsste. Was hat das mit auto zu tun?



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

    [...]

    Bin beim lesen nur 3 mal in Ohnmacht gefallen 😵



  • @Enumerator Es muss nicht jeder mit C++ programmieren. Wenn es dir zu komplex ist und du es nicht verstanden hast, dann lass es bleiben. Für dich hat der Herrgott BASIC erfunden.

    Aber jetzt ernsthaft: genau so wie manche nie müde werden zu posaunen dass C ein Werkzeug für Profis ist, ist C++ eben auch ein Werkzeug für Profis. Wenn man weiss wie man es sinnvoll einsetzt, kann man damit schön arbeiten. Vor allem wenn es nicht auf den letzten Taktzyklus ankommt.

    Was dein auto vs. auto& Beispiel angeht: wenn dadurch irgendwas gecrasht ist, dann gibt es in eurem Code ein viel grundlegenderes Problem. Und wenn das Problem lediglich war dass eine Kopie verändert wurde statt des Originals, und die Änderung nicht dort angekommen ist wo sie hin sollte... naja dann ist die Ursache einfach dass jemand ein Sprachfeature verwendet hat von dem er nichtmal die grundlegensten Grundlagen verstanden hat. Nämlich dass autocv-ref wegmacht. Und das soll jetzt die Schuld von C++ sein?



  • @hustbaer, 5script, Jockelx
    Genau diese Einstellung ist es die der Threadersteller auch beklagt hat. Keinerlei Argumente bringen nur unverschämte Beleidigungen. Anstatt einzusehen, dass z.B. Smart-Pointer und auch z. B. das auto Schlüsselwort eine Fehlkonstruktion sind. Wie wäre es mal etwas über den Tellerrand hinauszuschauen :). Aber mit Hobbyentwicklern wie euch über soetwas zu diskutieren ist sowieso sinnlos. Die Verwendung von auto ist einfach extrem Fehleranfällig weil auto etwas suggeriert was es nicht ist und zu sehr schlecht lesbarem Code führt. Es gibt nunmal sicherheitskritische Bereiche in der Softwareentwicklung wo ein solches Fehlerpotenzial nicht akzeptabel ist. Als ich damals noch in der Luftfahrtbranche gearbeitet hatte war es nicht mal erlaubt dynamisch Speicher zu allokieren. Es gibt nunmal Bereiche wo es um Menschleben geht. Da würde niemand und wirklich niemand auch nur auf die Idee kommen "Smart-Pointer", "auto" & co zu verwenden. Aber jetzt lasse ich euch weiter eure "Hello World" Programme weiter frickeln...



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

    @hustbaer, 5script, Jockelx
    Keinerlei Argumente bringen nur unverschämte Beleidigungen. [...] Aber mit Hobbyentwicklern wie euch über soetwas zu diskutieren ist sowieso sinnlos.

    🤔



  • @Bashar
    Was die können kann ich auch ;).

    Zitat:
    @Enumerator Es muss nicht jeder mit C++ programmieren. Wenn es dir zu komplex ist und du es nicht verstanden hast, dann lass es bleiben. Für dich hat der Herrgott BASIC erfunden.

    @hustbaer
    Ich schätze deine Meinung hier im Forum ja sehr aber mit deinem "Experten"-Kommentar hast du dich wirklich lächerlich gemacht.
    Ich stelle mir gerade vor wie sich Boeing nach den beiden Abstürzen durch das MCAS Debakel hingestellt hätte:

    Die 737 MAX ist halt nur was für Experten zum Fliegen...
    Die Piloten haben den Flieger einfach falsch bedient.
    Man kann sich das Leben so schön einfach machen...

    Solche Statements kommen in der Regel nur von Personen die Pfusch schönreden wollen. Schade dass es in C++ scheinbar keine Diskussion über die vielen Fehlkonstruktionen geben darf. Und auto wird C++ einst den Gnadenstoß versetzen wie einst Dim Visual Basic das Genick gebrochen hat (Ich weiß auto ist "typsicher", von Referenzen mal abgesehen). In C# haben sie die Sprache nun leider auch noch nachträglich um diesen "var" Murks erweitert.



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

    Die Verwendung von auto ist einfach extrem Fehleranfällig weil auto etwas suggeriert was es nicht ist und zu sehr schlecht lesbarem Code führt. Es gibt nunmal sicherheitskritische Bereiche in der Softwareentwicklung wo ein solches Fehlerpotenzial nicht akzeptabel ist.

    OK. Und der Fehler wenn dein Kollege auto verwendet (obwohl er nicht weiss wie es funktioniert) ist dann nicht dass er etwas verwendet wovon er nicht weiss wie es funktioniert sondern dass C++ sowas wie auto überhaupt anbeitet. Komische Einstellung.

    Wie sollte auto denn deiner Meinung nach funktionieren?

    Kleiner Tip: auto var = expression; ergibt den selben Typ für var wie wenn du expression beim Aufruf eines function templates verwenden würdest:

    template <class T>
    void fun(T var);
    
    // ....
        fun(expression);
    

    Das macht mächtig viel Sinn. Alles andere wäre komisch und mMn. viel fehleranfälliger.



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

    Er hätte "auto&" schreiben müssen. Das ist Grund genug für mich auto zu verbieten.

    So ein Quatsch. Das ist ein Anfängerfehler den man ein, zweimal macht und dann nie wieder.



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

    @hustbaer
    Ich schätze deine Meinung hier im Forum ja sehr aber mit deinem "Experten"-Kommentar hast du dich wirklich lächerlich gemacht.

    OK. Lass es mich anders sagen: Wer Sprachkonstrukte verwendet von denen er einfach nicht weiss wie sie funktionieren, darf sich bitte nicht über die Sprache aufregen wenn sie nicht so funktionieren wie es das Stück Code das er damit gebastelt hat gerade brauchen würde.

    Ich stelle mir gerade vor wie sich Boeing nach den beiden Abstürzen durch das MCAS Debakel hingestellt hätte:

    Die 737 MAX ist halt nur was für Experten zum Fliegen...
    Die Piloten haben den Flieger einfach falsch bedient.
    Man kann sich das Leben so schön einfach machen...

    Du vergleichst hier Äpfel mit Birnen.

    Solche Statements kommen in der Regel nur von Personen die Pfusch schönreden wollen. Schade dass es in C++ scheinbar keine Diskussion über die vielen Fehlkonstruktionen geben darf.

    Du kannst mit mir jederzeit eine Diskussion über Fehlkonstruktionen im C++ Standard führen. Da gibt's mMn. einige. auto gehört bloss nicht dazu. Und eine Geschichte von jmd. der es falsch verwendet hat, weil er nichtmal ansatzweise Ahnung davon hatte wie es funktioniert, wird mich nicht vom Gegenteil überzeugen.

    Solche Leute sind ein grosses Problem in der Softwareentwicklung. Was meinst du was los ist wenn du so jemandem etwas wie Threads in die Hand gibtst? Der schreibt dann jahrelang kaputten Code weil's bisher eh immer funktioniert hat. Und irgendwann kommst du drauf dass das Programm manchmal falsch rechnet oder abkackt. Bloss ist dann alles schon so kaputt dass man es nicht mehr in vernünftiger Zeit reparieren kann.

    Und auto wird C++ einst den Gnadenstoß versetzen wie einst Dim Visual Basic das Genick gebrochen hat (Ich weiß auto ist "typsicher", von Referenzen mal abgesehen). In C# haben sie die Sprache nun leider auch noch nachträglich um diesen "var" Murks erweitert.

    Sehe ich anders.
    Und: was soll "von Referenzen mal abgesehen" heissen? Auch da ist es typsicher. Und mMn. auch sicherer gegenüber Falschverwendung als wenn es anders rum wäre.


Anmelden zum Antworten