C++ VS D

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Naja, Nachfolger hin oder her...
    C++ erweitert C durch OOP, Generics und weiteren Konzepten.

    Wo aber die Sprache C immernoch unübertroffen gute Arbeit leistet ist bei Betriebssystemkernen. Diese werden zu 100% neben Assembler, mit C entwickelt.

    Was Compiler angeht, wie will man einen C++ Compiler basteln, wenn es noch gar keinen für C++ gibt? Dennoch ist es quasi egal ob man nun mit Assembler, C, C++ oder gar C# einen Compiler schreibt. Jedoch muss man immer einen Kompromiss in sachen Effizienz und - nennen wir es mal - Programmierkomfort eingehen. Immerhin ist das Programmieren mit Assembler ein Krampf - Dagegen ist C# schon wieder deutlich ineffizienter als C.

    C hat aber tatsächlich noch stark Einfluss im Embeddet Bereich. Es ist aber ebenso möglich andere Sprachen wie C++ auf Embedded Systeme einzuführen.



    Was D angeht, so scheint mir das irgendwie eine Totgeburt zu sein. Mit C++ stehen dem Programmierer alle Möglichkeiten zur Verfügung und es ist stark verbreitet. Zumal, was D wirklich so außergewöhnlich macht, ist mir schleierhaft.


    /€1:
    Sou, ich hab mich da mal eingelesen.
    D ist, genauso wie C++, kompatibel zu C. D ist aber nicht kompatibel zu C++. Im großen und ganzen bietet D die selben Konzepte wie C++. Hinzu kommen dann noch eine Garbage Collection und andere Feature, die aus der C# und Java Welt kommen sollen.

    Wer noch mehr wissen will: Heise online - Eleganter programmieren: D ist da

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Blue ()

  • Ich ziehe daraus einfach mal folgendes: D hat die gleichen funktionen und möglichkeiten wie C++ nur D ist verwirrender da man mehrere Sprachkentnisse braucht. C# ist eher für NET.

    C++ soll aber auch geeignet sein für Hardwarenahes und Spiele.

    Wie steht D zur Spielprogrammierung?

    C und C++ sind sich also gewisserweise ähnlich.

    Stimmt das Gerücht mit C++ kann man alle funktionen die Assebler kann?

    Ist C++ gut zu gebrauchen für Internet-Kommunikationen? C# wird da natürlich bevorzugt nehme ich an.
  • SK8 schrieb:

    Ich ziehe daraus einfach mal folgendes: D hat die gleichen funktionen und möglichkeiten wie C++ nur D ist verwirrender da man mehrere Sprachkentnisse braucht. C# ist eher für NET.

    C++ soll aber auch geeignet sein für Hardwarenahes und Spiele.

    Wie steht D zur Spielprogrammierung?

    C und C++ sind sich also gewisserweise ähnlich.

    Stimmt das Gerücht mit C++ kann man alle funktionen die Assebler kann?

    Ist C++ gut zu gebrauchen für Internet-Kommunikationen? C# wird da natürlich bevorzugt nehme ich an.


    Nicht wirklich verwirrender. Insgesamt sind die Sprachen relativ gleich. D bietet nur weitere Feature, die das Programmieren bequemer machen sollen (Es kommen halt Konzepte aus C++ mit denen aus Java oder C# zusammen).

    C++ und auch D laufen nativ auf dem System, und nicht erst in einer virtuellen Umgebung - Wie Java oder C#. Das macht C++/D sehr schnell. D und auch C++ sind beide für die Spieleprogrammierung geeignet. Den meisten Support wirst im Internet und auch in Büchern aber nur bei C++ finden, das schließt D schon fast aus.

    In C (Und somit auch in C++) kannst du Assembler schreiben.

    Internet Kommunikation kannst du mit jeder Sprache realisieren. Hier werden oft Java und C# genutzt.
  • Ich weiss nicht inwiefern du meinst, dass Objective-C heutzutage vernachlässigt wird, aber die Sprache ist durch das iPhone wieder voll im Rennen ;)
    OSX ist für die iPhone SDK, sowie ein virtuelles iPhone zum testen, Vorraussetzung!


    Zum Thema Spieleprogrammierung:
    Die DirectX SDK ist komplett in C++ geschrieben, da wird man mit anderen Sprachen keinen Spass haben.
    Wie es mit openGL aussieht weiss ich nicht.
  • Ich weiss nicht inwiefern du meinst, dass Objective-C heutzutage vernachlässigt wird, aber die Sprache ist durch das iPhone wieder voll im Rennen
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    Wie steht C++ zu iPhone?

    __________________________________________________________________________________
    bei Betriebssystemkernen. Diese werden zu 100% neben Assembler, mit C entwickelt.
    __________________________________________________________________________________

    Ist es mit C++ nicht auch möglich bei Betriebssystemkernen mitzuhelfen?

    Hier können die vergleiche von C und C++ komen schätze ich mal.

    Ein neues gerät kann eine Programmiersprache wieder in schwung bringen interessant. :D
  • SK8 schrieb:

    Ist es mit C++ nicht auch möglich bei Betriebssystemkernen mitzuhelfen?


    Natürlich ist es das.

    Aber du musst anders an die Sache ran gehen.

    Nach den Konzeptionierung eines neuen Projektes erfolgt ja meistens irgendwann die Umsetzung. Genau an diesem Punkt sollte man wissen welche Sprache man nutzt ;)

    Da spielen mehrere Faktoren eine Rolle. Sei es Geschwindigkeit, Platform unabhänhihkeit, erweiterbarkeit ... usw.

    Für ein OS ist es nunmal sehr wichtig, dass es schnell ist. Zudem muss man gucken, auf welchen Architekturen es laufen muss (AMD, Intel, Sparc, PowerPc, AIX ... etc.)
    Das sind nur 2 Faktoren, aber es ist nunmal Fakt, dass man am Ende sehr oft bei C landet, was nicht heisst, dass du es nutzen musst.

    Grade in der Handybranche tauchen immer wieder neue Programmiersprachen auf.
    Für Programme und Spiele ist Java sehr weit vorne, aber man sieht an dem iPhone und den anderen Geräten, dass immer mehr Perfromance in die kleinen Geräte gesteckt wird, so dass man als Programmierer viel mehr Möglichkeiten hat bzw. bekommen wird.

    Ich glaube Samsung war das, die in ihr neues Handy einen 1Ghz Prozessor eingebaut haben.

    Je mehr Ressourcen du hast, je mehr Möglichkeiten hast du. Und dann wird es auch zunehmend Alternativen zu Java geben.


    Wenn du insgesamt wissen möchtest, wie zukunftssicher C++ ist, dann bist du definitv auf dem richtigen Weg.
    Es ist wie bei den richtigen Sprachen. Wenn du spanisch kannst, dann ist es nicht mehr schwierig italienisch, französich oder auch englisch zu lernen. Mit Russisch oder chinesisch, würdest du dann aber Probleme bekommen. ;)
  • hi,

    da D hier etwas vernachlässigt wird gebe ich mal dazu ein paar infos die mir gerade so einfallen:

    • nette und helfende Gemeinschaft
    • extrem schneller Compiler (DMD)
    • keine Header (*.h) Dateien (gibt es zwar, aber braucht man so gut wie nie)
    • Compiler für Windows/Linux/MacOSX/*BSD und x32_86, x64_x86, PPC; ARM* / MIPS* z.Z. nur begrenzt
    • wer Java/C++/C#/C schon kann findnet sich schnell in D zurecht, ähnlich Syntax
    • in D geschrieben Bibliotheken gibt es einige (besonders für Spiele), aber natürlich nicht so viele wie für C/C++
    • Anbindungen zu GTK, SWT, QT etc.
    • das Linken von C code ist mit minimalem Aufwand möglich (für C++ nur recht begrenzt, anonsten über C Brücke)
    • assoziative arrays und arrays sind eingebaute Datentypen
    • D ist einfach zu lernen als C++, da viele Altlasten und probleme entfernt wurden
    • mächtige und einfache template syntax (viel einfacher als C++)
    • es gibt anonyme funktionen
    • sehr schneller binärcode
    • garbage collector (auch austauschbar oder abschaltbar)
    • es ist z.B. nicht nötig das Semikolon hinter Klassedefinitionen zu setzen
    • strings können utf8 utf16 utf32 codiert sein (keine problem bei der i18n)
    • kein Präprozessor/ Makroprozessor, in D generell nicht nötig
    • volle UTF8 Unterstützung, d.h. z.B Variablen aus dem griechischen Alphabet oder chinesisch ;)
    • Assembler Code kann man einbetten wie bei C/C++
    • Alle Variablen werden automatisch vorinitialisiert (hilft Fehler zu vermeiden), man kann aber auch explizit void zuweisen.


    Alles in allem is D eine einfache aber mächtige und schnelle (System-) Programmiersprache.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von foobar ()

  • oh, das hätte ich fast vergessen:
    • eingebaute Datentypenhaben eine feste Größe, ansonsten gibt es size_t (hat Größe eines Zeigers)
    • Es gibt kein foo->bar; für den Zugriff gibt es nur foo.bar, egal ob foo ein Pointer ist oder nicht.


    ok, den Rest gibt es u.a. hier.

    Bzgl. Spieleprogrammierung. Hier ein paar Spiele die in D geschrieben wurden:

    Deadlock
    Open Morrowind
    Titanion

    Meiner Meinung nacht ist D ist einfacher zu lernen als C++ (weniger Fallstricke, bessere Fehlermeldungen).
    Ich selber habe vorher C++ programmiert.
    Für D gibt es bei weitem nicht so viele Bibliotheken wie für C/C++,
    aber immerhin ist das Dazulinken von C Code kein Problem.
    Es gibt einige Debugger für D, z.B. gdb oder Zerobugs.
    IDEs sind etwas sparsam gestreut, aber schaut selbst.

    Ansonsten gibt es eine ganze Reihe von D Projekten auf dsource.org.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von foobar ()

  • Kritikpunkte gibt es natürlich auch:
    • z.Z. zwei inkompatible Standard Bibliotheken (Phobosund Tango); Phobos ist die offiziele. Phobos vs. Tango
    • Die Compiler haben deutlich mehr Bugs als C/C++ Compiler (aber nichts um das man nicht herumkommt oder ständig drüber stolpert)
    • D ist noch nicht sehr verbreitet, daher gibt es kaum Bücher (aber es gibt sie 1 2, ansonsten gibt es viel Onlinematerial)
    • Der Garbage Collector und ein paar Features benötigen Typinformationen zur Laufzeit die die Binaries größer machen als bei C/C++


    D geht in einigen Konzepten aus meiner Sicht nicht so weit wie ich es gerne hätte,
    aber es ist Welten besser als C++.
    Aber es ist zu bedenken das D noch recht jung ist (D1 gibt es erst ab 2007).
    Es gibt sogar alternative Compiler als die Referenzimplementation von digitalmars.com.
    Zudem ist D2 ist in der Entwicklung.
    Es geht vorwärts. :)
  • guten morgen,

    es ist wohl übertrieben zu sagen java == C#, aber ich finde wenn man das eine einigermaßen kann ist das andere flott gelernt.
    wie schon einigemale gesagt wird C jetzt fast ausschließlich im embadded bereich verwendet. außerdem kann man nicht sagen das das eine "nur" in dieser und das andere nur in jener sprache programmiert wird. es ist oft ein zusammenspiel bzw. es gibt immer ausnahmen.
    C bietet gegenüber C++ den entscheidenden geschwindigkeitsvorteil. ich bring da immer gerne das beispiel mit der ansteuerung des airbags im auto... da können ne paar millisekunden verdammt lange sein ^^
    auf der anderen seite hast du in C++ OOP was dir in C fehlt.

    mit D habe leider absolut keine erfahrungen und kann dir da auch nicht weiterhelfen.

    mich würde noch interessieren was genau du vor hast... das ganze liest sich für mich so als ob du etwas planst und nicht 100% weißt mit was du an die sache ran gehen musst.


    thx, truespin
  • Wo aber die Sprache C immernoch unübertroffen gute Arbeit leistet ist bei Betriebssystemkernen. Diese werden zu 100% neben Assembler, mit C entwickelt.

    ____________________________________________________________________________________________________________________________________

    Ist D denn jetzt auch schon für die Arbeit an Betriebssystemkernel geeignet?

    Wenn D wirklich so gut ist warum ist sie dann so unbekannt?