Warum ist C++ so schwer zu lernen?



  • CppLerner schrieb:

    Warum ist C++ so schwer zu lernen?

    Aus dem gleichen Grund, warum es so schwer ist zu lernen, ein Formel-1-Auto zu fahren.
    Es ist etwas ganz besonderes für ganz besondere Anlässe, nämlich wenn man ganz besonders schnell fahren will/muss oder Spaß damit haben will. Es geht oft kaputt, erfordert häufig viel manuelle Wartung und wenn man aus Versehen mal falsch zuckt, hat mans aus schon vor die Wand gefahren. Für den Alltag von normalen Entwicklern, äh Autofahrern, ist es absolut unbrauchbar.



  • Dafür, dass C++ oft unbrauchbar sein soll, so wie F1 im normalen Straßenverkehr, wird es aber häufig eingesetzt.



  • Rennfahrer schrieb:

    CppLerner schrieb:

    Warum ist C++ so schwer zu lernen?

    Aus dem gleichen Grund, warum es so schwer ist zu lernen, ein Formel-1-Auto zu fahren.
    Es ist etwas ganz besonderes für ganz besondere Anlässe, nämlich wenn man ganz besonders schnell fahren will/muss oder Spaß damit haben will. Es geht oft kaputt, erfordert häufig viel manuelle Wartung und wenn man aus Versehen mal falsch zuckt, hat mans aus schon vor die Wand gefahren. Für den Alltag von normalen Entwicklern, äh Autofahrern, ist es absolut unbrauchbar.

    Hast du dich ueberhaupt mit C++ beschaeftigt? Solange man nichts dummes macht, also nicht versucht, mit dem Auto durchs Gelaende zu fahren, geht C++ normalerweise nicht kaputt. Dafuer ist man aber gezwungen, sein Programm gut zu strukturieren, sonst geht gar nichts. In anderen Sprachen kann man einfach drauflosprogrammieren, hat aber im Idealfall die gleiche Struktur, wie bei C++ und wenn man das nicht hat, laeuft man wahrscheinlich sowieso in Probleme rein.

    Bei irgendeinem grossangelegten Audit ist vor kurzem rausgekommen, dass die untersuchten Java-Programme durchschnittlich mehr Speicherfehler durch ungebrauchte, aber noch gueltige Referenzen (vergessen auf null zu setzen) haben, als die in C++ mit Memory leaks und solchen Fehlern zusammen.



  • CppLerner schrieb:

    Dafür, dass C++ oft unbrauchbar sein soll, so wie F1 im normalen Straßenverkehr, wird es aber häufig eingesetzt.

    Der Unterschied ist halt nicht so offensichtlich (und auch nicht so stark ausgeprägt) wie in der Auto-Analogie.

    Marthog schrieb:

    Hast du dich ueberhaupt mit C++ beschaeftigt?

    Jo, gibt keine Sprache, in der ich bisher mehr Kot geschrieben habe. Beruflich wie auch privat. Aber der Vorsprung schrumpft. 😉

    Marthog schrieb:

    Solange man nichts dummes macht, also nicht versucht, mit dem Auto durchs Gelaende zu fahren, geht C++ normalerweise nicht kaputt. Dafuer ist man aber gezwungen, sein Programm gut zu strukturieren, sonst geht gar nichts. In anderen Sprachen kann man einfach drauflosprogrammieren, hat aber im Idealfall die gleiche Struktur, wie bei C++ und wenn man das nicht hat, laeuft man wahrscheinlich sowieso in Probleme rein.

    Ich finde, dass man auch in C++ ziemlich schnell rumsaut im Vergleich zu z.B. Clojure.

    Marthog schrieb:

    Bei irgendeinem grossangelegten Audit ist vor kurzem rausgekommen, dass die untersuchten Java-Programme durchschnittlich mehr Speicherfehler durch ungebrauchte, aber noch gueltige Referenzen (vergessen auf null zu setzen) haben, als die in C++ mit Memory leaks und solchen Fehlern zusammen.

    Lol, Java und vorallem die Leute, die sich dafür entscheiden, sind ja auch noch scheisserer. 😃



  • CppLerner schrieb:

    Warum wird dann Java auf fast allen Smartphones eingesetzt? Und warum so stark im Wissenschaftlichen-Bereich, oder in Hochschulen und dem Web(ebay etc)?

    Nicht falsch verstehen, aber hier wird sehr oft propergiert, dass man sich mit Java später den Fuß abschießt, weil man die ganzen Fehler, die C++ schon zu Anfang moniert, bis zum bitteren Ende mitschleppt. Was is da in der Praxis dran? Da müssten ja die ganzen App-Entwickler ständig auf die Nase fallen mit Java und dann doch lieber C++ mit dem NDK nehmen?

    Für was ist denn Java nun geeignet und für was C++?

    Grundidee war wohl das ein Java Programm ohne neu übersetzt werden zu müssen auf beliebigen OS identisch funktioniert.
    Einmal Programmieren und auf allen OS die eine JVM zur Verfügung stellen ausführen lassen.

    Ehrenvoller Gedanke. Funktioniert sogar manchmal hab ich mir sagen lassen. Bin nur in C/C++ unterwegs und manchmal auch ein bisschen SQL.



  • Rennfahrer schrieb:

    Jo, gibt keine Sprache, in der ich bisher mehr Kot geschrieben habe. Beruflich wie auch privat. Aber der Vorsprung schrumpft. 😉

    😃 War das jetzt ein freudscher Verschreiber?
    Wahrscheinlich schon. 🤡



  • Rennfahrer schrieb:

    Marthog schrieb:

    Solange man nichts dummes macht, also nicht versucht, mit dem Auto durchs Gelaende zu fahren, geht C++ normalerweise nicht kaputt. Dafuer ist man aber gezwungen, sein Programm gut zu strukturieren, sonst geht gar nichts. In anderen Sprachen kann man einfach drauflosprogrammieren, hat aber im Idealfall die gleiche Struktur, wie bei C++ und wenn man das nicht hat, laeuft man wahrscheinlich sowieso in Probleme rein.

    Ich finde, dass man auch in C++ ziemlich schnell rumsaut im Vergleich zu z.B. Clojure.

    Funktionale Sprachen sind halt sehr viel strikter, weil sie von sowas wie Addressen und Side-effects abstrahieren. Dafuer ist es oft sehr viel schwieriger, Zustaende darzustellen oder echtzeitfaehige Systeme zu schreiben.
    Ausserdem glaube ich, dass 90% der Programmierer sich mit solchen Sprachen gar nicht erst beschaeftigen wuerden, weil sie funktionale Programmierung fuer akademischen Schwachsinn halten und sie es nicht anders kennen als imperativ.



  • Rennfahrer schrieb:

    Ich finde, dass man auch in C++ ziemlich schnell rumsaut im Vergleich zu z.B. Clojure.

    Also meine Progs in Brainfuck sind auch viel besser überlegt als die in C++.
    Da erkenne ich ein Muster.


  • Mod

    volkard schrieb:

    Rennfahrer schrieb:

    Ich finde, dass man auch in C++ ziemlich schnell rumsaut im Vergleich zu z.B. Clojure.

    Also meine Progs in Brainfuck sind auch viel besser überlegt als die in C++.
    Da erkenne ich ein Muster.

    Bedenkenswert. Immerhin gibt es keine obfuscation-Wettbewerbe für Brainfuck. Muss wohl bedeuten, dass man in brainfuck gar nicht rumsauen kann 😃



  • CppLerner schrieb:

    Wie sieht es mit der Entwicklungszeit aus, ist man mit C++ eher schneller, langsamer oder gleich schnell fertig als mit anderen Sprachen?

    Hab ich schon paar mal in anderen Threads geschrieben. Meiner Meinung nach ist man bei kleineren Projekten mit anderen Sprachen meist schneller, bei größeren Projekten relativiert sich das aber stark und dann ist man mit C++ produktiver.
    Ich habe früher Enterprise Anwendungen mit C# und Java geschrieben. Bei den typischen Projekten wären wir mit C++ sicherlicher langsamer gewesen. Das waren alles Projekte, bei denen man mit den Standardmitteln von C# schon viel erreichen konnte. GUI ist dabei, Datenbanken sind dabei, ein Webframework auch, da muss man sich nichts großartig zusammensuchen und sich reindenken, ist alles da und konsistent. Reflection oder dynamischer Code ist bei so kleinen Projekten auch oft ein Killerfeature. Damit erschlägt man fast automatisch Data Binding an die GUI, ORM für die Datenbank, dynamische Webseiten, Konfigurationen usw. Und die meisten Projekte, die wir gemacht haben, waren klein, da macht es halt viel aus, wenn man sich komplett auf die Business Logik konzentrieren kann und vieles geschenkt bekommt. In dem Umfeld verpasst auch keiner was, der kein C++ kann.
    Bei vielen großen Projekten spielt das alles nicht mehr so wirklich eine Rolle.


Anmelden zum Antworten