Warum C++?



  • Was ich mich schon die ganze Zeit frage ist, warum C/C++ die verbreiteter ist, als D. D wird meinem Wissen nasch, beim Kompilieren, in nativen Maschinencode umgewandelt und sollte daher, was die Performance angeht, ähnlich wie C/C++ sein.
    Darüber hinaus ist die Syntax fast identisch, was es leicht macht, umzusteigen.

    Das Umsteigen ist daher sinnvoll, weil D viele Vorteile bietet, wie zum Beispiel einen GC und elementare Features, wie den nativen Umgang mit Arrays und Strings zum Standard gehört.

    Desertieren frage ich mich, warum ich so wenige Programmierbeispiele in D finde (vielleicht formuliere ich auch einfach meine Suchanfrage bei Google falsch).

    Dieser Post ist gerne ein Diskussionsansatz, weil dadurch die verschiedensten Argumente zusammenkommen.

    Greetz vom Neuling



  • ist eigentlich logisch, c++ (und c) bestehen schon jahrzehnte, so hat sich auch dementsprechend viel code und eine grosse community entwickelt.

    ausserdem:
    -inwiefern ist ein gc besser als raii?
    -arrays (und noch viele andere container) und strings hat c++ auch nativ. die stl gehört zur sprache.



  • Benutsche dosch di Fornsuch und les die Srgumentas selbst.



  • In manchen Bereichen, in denen C oder C++ dominieren (etwa bei der Programmierung ressourcenbeschränkter Systeme, z.B. Mikrocontroller, Industrie-PCs) ist eine Portierung auf D auch einfach nicht erwünscht, eben weil man sich dadurch "Krücken" wie Garbage Collection einkauft.

    Die Welt besteht nicht nur aus XML-verarbeitenden Quadcore-Servern 🙂


  • Mod

    Zu starken Argumenten für C++ (allgemein, nicht (nur) im Gegensatz zu D) zählt mitunter auch die Verbreitung:
    -Anzahl vorhandener Programmierer
    -Anzahl vorhandener Lehrwerke
    -Anzahl und Qualität vorhandener Bibliotheken
    -Menge vorhandenen Codes
    -Anzahl und Verfügbarkeit von guten Compilern auf vielen Systemen

    Nun kommt eine Sprache, die ist fast wie C++, vielleicht ein bisschen besser, aber sie hat diese Vorteile nicht. Da müsste das was D besser kann schon ganz gewaltig viel besser sein, um zu überwiegen. Ich sehe nicht, dass dies der Fall wäre.

    Ein ähnlicher Effekt tritt auch bei C vs. C++ ein. Letzte Woche hat im C-Forum jemand gefragt, warum C immer noch benutzt wird. Die Verbreitung von C ist eben so groß, dass es schwer ist, ohne extrem gute Gründe davon weg zu kommen. (Bei C vs. C++ kommt aber noch hinzu, dass C++ auch einen deutlichen Nachteil gegenüber C hat: Die Schwierigkeit des Einstiegs. Bei D vs. C++ sollte diese Hürde wohl ungefähr gleich hoch sein.)



  • Neuling92 schrieb:

    Das Umsteigen ist daher sinnvoll, weil D viele Vorteile bietet, wie zum Beispiel einen GC

    Der GC ist einer der größten Gründe warum ich z.B. kein D nutze. (Und ja, man kann ihn abstellen, aber die Sprache ist darauf nicht ausgelegt.)



  • Von 1000 Entwicklern wirst du nicht 10 finden die C++ wirklich können. Dies ist auch mir ein Grund warum man C++ meidet, wenn es irgendwie geht. Wenn du wissen willst was aktuall ist, dann schau einfach mal bei den Fachzeitschriften nach. C++ wirst du dort noch weniger als C finden.



  • Das ist wohl so ähnlich wie bei JPEG und JPEG2000. JPEG2000 ist kaum im Einsatz, weil JPEG gut genug ist und eine größere Unterstützung genießt.

    D ist einfach nicht besser genug und die Tools drumherum ggf nicht ausgereift genug. D ist einfach ein bisschen anders. Garbage Collection ist nicht etwas, was man immer unbedingt haben will. Garbage Collection kostet, kümmert sich nur um den Arbeitsspeicher als einzige Resource und ist für alles andere nicht verlässlich zu gebrauchen. Gut, sowas wie RAII haben sie in D auch. Fein. Aber das ist in Kombination mit GC meines Wissens nach nicht mehr unbedingt deterministisch.

    D erinnert mich eher an ein C#, was nativ kompiliert wird. Die haben da auch diese class/struct Unterscheidung wobei Variablen von class-Typen immer Referenzen sind. Man hat also diese aufgezwungene Indirektion, was u.U. unpraktisch ist, wenn man seine Objekte aus anderen zusammenbauen will. In C++ hättest du einen zusammenhängenden Speicherblock, in D dann eher einen verpointerten Baum. Und dann macht das auch mit ihrem "transitiven const" einigermaßen Sinn. Das const in C und C++ ist IMHO solide.

    D interessierte mich schon soweit, dass ich mich darüber schlau machen wollte, was daran jetzt "besser" sein soll. Aber die Infos, die man im Web dazu findet, hatten mich nicht überzeugt und ich war dann auch zu geizig/faul, mir das D-Buch von Alexandrescu zu besorgen. Habe aber auch keine großen Erwartungen an das Buch, ehrlich gesagt.

    Als Newcomer hat man's aber immer schwerer. Das ist wohl bei D nicht anders.


Anmelden zum Antworten