Warum ist C++ so schwer zu lernen?



  • 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++?



  • 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)?

    ebay benutzt Java? Wohl weil sie nur kleine Mädchen als Programmierer anwerben konnten. :p



  • CppLerner schrieb:

    Warum wird dann Java auf fast allen Smartphones eingesetzt?

    Weil "fast alle" Smartphones Android fahren?



  • Caligulaminus schrieb:

    CppLerner schrieb:

    Warum wird dann Java auf fast allen Smartphones eingesetzt?

    Weil "fast alle" Smartphones Android fahren?

    Ja und? Android kann man auch mit dem NDK komplett in C++ programmieren.



  • Der Grundvorteil von Java ist einfach die Verbreitung.

    Du findest leichter Leute die etwas in Java zum Laufen kriegen, als Leute die etwas in C++ zum laufen kriegen.

    Für ein lebendiges Smartphone ecosystem ist die Verbreitung und die Anzahl an Apps einfach wichtig.



  • CppLerner schrieb:

    Warum wird dann Java auf fast allen Smartphones eingesetzt?

    Java wird eigentlich nur auf Android eingesetzt. Android hat halt einen recht großen Marktanteil...

    CppLerner schrieb:

    Und warum so stark im Wissenschaftlichen-Bereich, oder in Hochschulen und dem Web(ebay etc)?

    Also ich arbeite im "Wissenschaftlichen Bereich" und bei uns verwendet niemand Java. Generell hält sich der Einsatz von Java auf unserer Uni auch in der Lehre glücklicherweise in Grenzen, anderswo ist das leider nicht so...

    CppLerner schrieb:

    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?

    Geht weniger um das Mitschleppen von Fehlern, sondern viel mehr darum, dass Java einem von vorn herein die Möglichkeit nimmt, einige ganz fundamentale Dinge zu lernen und damit zu einem nicht besonders tollen Programmierstil erzieht...

    CppLerner schrieb:

    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?

    Der "native Support" auf Android ist leider ein Witz. Zum Glück muss ich mich nicht damit herumschlagen. Wenn du Apps für mehrere Plattformen entwickeln willst, dann wirst du auf jeden Fall den Kern in C++ schreiben wollen, weil Java nicht portable ist...



  • Ich dachte immer das Entwickeln mit dem NDK wäre dem mit Java ebenbürdig. Naja egal, das ist eh ein weinig offtopic. Also ist C++ schwerer zu lernen, weil es einfach viel mehr Möglichkeiten bietet ein Programm zu formen und zu steuern.

    Wie sieht es mit der Entwicklungszeit aus, ist man mit C++ eher schneller, langsamer oder gleich schnell fertig als mit anderen Sprachen? Sprachkenntnisse der vielen Programmiersprachen natürlich vorrausgesetzt. Worauf ich hinhaus will, ist das Folgende. Wie sehr entscheiden Libs den Einsatz einer Sprache im Verhältnis zur Sprache selbst. Ist es klüger in Java, Python oder PHP ein Projekt abzuschließen, weil einfach einige Libs besser handhabbar sind als in C++? Wie relevant ist es für ein Projekt, ob ich auch genügend guten Mitarbeiter bekomme, die die Sprache gut können? Was nutzt mir die optimale Sprache für mein Projekt, wenn ich ewig nach qualifizierten Programmierern suchen muss? Machen denn Kosten für Arbeitszeit und Suche nach Mitarbeiter die Vorteile von C++ nicht wieder wett? Ich meine, es gibt Projekte da muss es aus Sicht der Performance schon C++ sein, aber was ist mit den ganzen Projekten wo es eben nicht auf das letzte bisschen Speed und Speicherplatzersparnis ankommt?

    Sorry, für soviele Fragen, mein Kopf ist voll davon und es tun sich immer neue auf.



  • Gute Frage!
    wenn jemand das hinreichend beantworten kann, kann er damit viel Geld verdienen.

    Leute von Microsoft, die für die Entwicklung des Visual Studios mit verantwortlich sind, haben mir mal gesagt, dass der Hauptgrund für den Einsatz von C++ letzlich Performance ist.
    Zumindest wird dieser Grund immer genannt! Performance ist immer ein Killerargument, womit man jede Diskussion schnell beenden kann. Bjarne Stroustrup soll mal sinngemäß gesagt haben, dass der Erfolg einer Sprache davon abhängt, wie viel Spaß der Programmierer damit hat. Das lässt sich als Argument an Projektleitung und Geldgeber aber schwerlich unterbringen!

    Ich glaube, dass Du genau dann viel in wenig Zeit schaffst, wenn Du eine auf Dein Problem passende Library zur Verfügung hast - unabhängig von der Sprache selbst. Das kann auch eine in C++ selbst entwickelte Domain-spezifische 'Sprache' sein - aber so etwas bauen können nur sehr wenige wirklich gut.



  • Ich empfehle den Struppi zum 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