Re: Freizeit in D investieren?
Geizhals » Forum » Programmierung » Freizeit in D investieren? (9 Beiträge, 540 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.  Re: Freizeit in D investieren?  (Somnatic am 19.05.2007, 15:22:08)
.  Re: Freizeit in D investieren?  (nergal am 19.05.2007, 20:59:43)
..  Re(2): Freizeit in D investieren?  (Xmolch am 19.05.2007, 23:22:48)
.
Re: Freizeit in D investieren?
19.05.2007, 22:36:43
Hallo Arrris,

Kommt drauf an wo du derzeit mit deinen Erfahrungen in Sachen Programmierung stehst. Ansich ist D ein ausgereiftes Produkt eines Compilerexperten, der bei der 7-jährigen Entwicklung die Wünsche der Community oft zu Herzen genommen hat, aber es gibt leider noch wenige D-eigene Bibliotheken. In diesem Punkt sieht es etwas blass aus im Vergleich zu Java, C# und C++. Die Sprache selbst ist schon geeignet richtig große Programme zu schreiben, und das viel besser als C/C++ (wenn man nicht unbedingt masochistisch ist.) Erst vor kurzem hab ich in den D-Newsgroups gelesen, dass ein Studententeam in einem universitären Programmierwettbewerb den 2. Platz errungen hat; sie hatten ein Spiel "Deadlock" in D programmiert, das mehr als 70000 Zeilen hatte. Das ist nur ein Beispiel von vielen. D ist schon lange kein unbedeutsames Ein-Mann-Projekt mehr. Es wird sogar von Andrei Alexandrescu unterstützt, ein Mitglied des C++-Kommitees soweit ich weiß.

Ich hab schon viele Skeptiker erlebt, die sich Nase rümpfend negativ über D geäußert haben, ohne mal wirklich sich die Zeit genommen zu haben die Sprache für ein paar Stunden genau zu studieren. Das sind für gewöhnlich jene Leute, die in ihrer Meinung schon festgefahren sind oder sie haben einfach schon zu viel Zeit und Geld in das Studium einer Sprache wie Java od. C++ gesetzt, dass es sie zu viel Überwindung kostet was neues anzufangen. Für die fährt der Zug nur noch in eine Richtung, und es gibt kein zurück... Es gibt aber auch die Ausnahmen, das sind meintens jene, denen die Unzulänglichkeiten von C++ od. Java schon zum Hals raushängen, und deswegen nach einer besseren Alternative Ausschau halten.

Meiner Meinung nach macht D einige Dinge besser als die derzeit etablierten Sprachen. Ich streiche mal heraus welche Eigenschaften von D mir zusprechen:


  1. D hat eine kontext-unabhängige Grammatik. Das macht das Parsen von Sourcecode unheimlich schnell und die Implementierung eines D-Parsers ungemein einfach.

  2. D hat volle Unicodeunterstützung. Niemand will sich mehr mit Codepages herumschlagen und es ist eine gute Sache für internationalisierte Applikationen.

  3. D ist zwar nicht sourcekompatibel mit anderen Sprachen, aber man kann direkt zu C-Code linken (man muss nur die C-Headerdateien nach D konvertieren.) Direkte C++-Unterstützung wird es nie geben, da das einen kompletten C++-Compiler erfordern würde (Walter Bright sagte mal, dass er ca. 10 Jahre benötigte um einen C++-Compiler zu schreiben, der dem Standard entsprach). Man muss sich also einem C-Layer bedienen oder das COM-Feature von D verwenden.

  4. Code wird nativ zu Objektdateien kompiliert und er ist mindestens genauso schnell wie C/C++. Man ist nicht abhängig von einer virtuellen Maschine.

  5. Es gibt einen integrierten Garbagecollector. Den kann man sich in C++ zwar mühselig selbst installieren, aber wenn man über die Grenzen des eigenen Programmes Speicher weitergeben will, wird es knifflig (zugegeben: ich hab keine Erfahrung mit GC & C++, hab ich nur so gehört.) Wer denkt ein GC hat in einer systemnahen Sprache nichts zu suchen, der irrt. In zeitkritischem Code (wie Spiele oder Steuerung von Geräten) alloziert man den ganzen Speicher den man benötigt ohnehin schon von vornherein, malloc() & Co sind da genauso undeterministisch wie ein GC. In D kann man den GC selbst steuern, also für eine Zeit lang deaktivieren od. eine Aufräumung erzwingen (z.B. wenn ein Spieler mal Pause gedrückt hat.) Man kann natürlich auch weiterhin seinen Speicher explizit selbst verwalten mit malloc(), und mit dem Schlüsselwort scope kann man auch Klassen auf dem Stack allozieren und automatisch bei Scopeende zerstören lassen (RAII.) D lässt einem also völlig freie Hand was Speichermanagement angeht.

  6. Statt der Trennung zwischen Headerdateien und Quelltexten gibt es Module, wie in Java. Wenn man seine Bibliotheken nicht mit ganzem Sourcecode ausliefern kann, dann kann man D-Interfacedateien generieren (*.di), die nur Deklarationen und inline-Funktionen enthält. Manche halten Headerdateien für eine gute Übersicht, aber das denke ich nicht. Es ist völlig unnötig zwei Dateien verwalten zu müssen, wenn es eine einzige mit Dokumentationskommentaren auch tut (die mit Ddoc oder doxygen extrahiert werden können.)

  7. Templates sind um Welten besser als bei C++.

  8. Design by Contract, Unittests, scope guards...



Manche würden jetzt bestimmt einwenden, dass sie all diese Sachen schon in ihrer eigenen Lieblingssprache haben, oder dass sie manche Features nicht benötigen. Schön für euch.Für mich vereint D einfach alle Dinge, die das Programmieren äußerst bequem und zu einem Genuss machen. Es sind die vielen kleinen Dinge in einer Sprache, die entscheiden ob es Freude macht mit ihr zu programmieren, oder nicht. Java mag ich nicht, wegen der VM. C# mag ich nicht wegen Microsoft. Als Scriptsprache verwende ich Python, aber damit kann man keinen performanten Code schreiben. D ist einfach genau das, was C++ eigentlich hätte werden sollen.

Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
..  Re(2): Freizeit in D investieren?  (Xmolch am 19.05.2007, 22:41:27)
.  Re: Freizeit in D investieren?  (komplexler am 19.05.2007, 23:29:23)
..  Re(2): Freizeit in D investieren?  (Xmolch am 19.05.2007, 23:58:18)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung