Zusammenfassung
Inhalt <- Einleitung <- D im Vergleich mit C <- Neuerungen gegenüber C <- Zusammenfassung -> Literaturhinweise
Ausblick
In der nächsten Version der Sprache (2.0) sollen weitere neue Konzepte integriert werden. Dies sind unter anderem
die Traits, die zur Übersetzungszeit Informationen für den Programmierer bereitstellen können. So können zum Beispiel
Informationen über Klassen erfragt werden (isAbstractClass, classInstanceSize, ...) oder allgemeine Informationen über
Sprachkonstrukte (isAssociativeArray, isSame, isUnsigned, ...).
Eine weitere Neuerung werden die Closures sein, die vor allem in funktionalen Programmiersprachen weit verbreitet sind,
aber in imperativen Programmiersprachen immer weiter Einzug halten (Perl, PHP, Ruby, Delphi, uvm.). Eine Closure wird
als Funktionsabschluss bezeichnet und stellt ihren Kontext außerhalb ihres Gültigkeitsbereiches zur Verfügung. Die
Closure soll in D über Delegates realisierbar werden. Das folgende Beispiel soll die Umsetzung eines Delegate mit
verschachtelten Funktionen in D erläutern (derzeit in Version 1.0 nicht lauffähig).
int delegate() dg;
void closure() {
int a = 0;
int inca() {
return (a + 1);
}
dg = &inca;
int i = dg();
}
int* getPointer() {
int b;
closure();
int i = dg();
return &b;
}
Des Weiteren wird selbstverständlich auch die Standardbibliothek Phobos mit neuen Funktionalitäten erweitert.
Welche noch hinzukommen, wird sich in der nächsten Zeit herausstellen. Es ist durchaus eine Community vorhanden,
die an der Weiterentwicklung von D interessiert ist.
Kommentar
D ist noch eine relativ neue Sprache, die leider zur Zeit nicht weit verbreitet ist. Es gibt wenige Projekte
und vor allem keine Großen, die in D umgesetzt sind. Die Gründe dafür können vielfältig sein, meiner
Meinung nach ist für viele der Umstieg auf eine noch nicht ganz ausgereifte Sprache zu riskant. Der Compiler
und der Linker geben oft noch destruktive Fehlermeldungen aus, die eine Rückverfolgung schwierig gestalten.
D ist außerdem nur eine Alternative und existiert parallel zu C++ und C, die zwar umständliche Eigenschaften
aufweisen, sich aber trotzdem über Jahrzehnte bewährt haben.
Trotzdem hält D seine Versprechen. Alles, was C ausgezeichnet hat und in moderneren Programmiersprachen
bewährt ist, vereint D in einer klaren Syntax und ermöglicht im Vergleich zu C++ leichte Erlernbarkeit. Sehr
nützlich ist einerseits die Garbage Collection und andererseits die Möglichkeit, hochperformante, eigene
Speicherverwaltung zu realisieren. Wer Erfahrungen mit C und Java hat, findet mit D das passende Werkzeug,
einerseits auf hoher Abstraktionsebene objektorientiert zu entwickeln, andererseits bei rechenzeitsensiblen
Operationen auf die Mächtigkeit von C und sogar einen Inline-Assembler zurückzugreifen. Der Umstieg auf
D ist für einen erfahrenen C-Programmierer allerdings mit einigen Hürden versehen. Zum Beispiel fehlt
der Präprozessor, auf den ein routinierter C-Programmierer plötzlich nicht mehr zurückgreifen kann und
sich dann in die Alternativen, die D stattdessen bietet, einarbeiten muss.
Trotz dieser doch vorhandenen Umstände ist D eine Sprache, deren Konzept eine gelungene Idee ist, deren
Umsetzung sich allerdings noch in der Entwicklung befindet. Es lohnt sich allemal, die Entwicklung dieser
Sprache zu beobachten und zu fördern. Zur Zeit ist man mit den zahlreich vorhandenen Alternativen sicherlich
noch auf der sicheren Seite, was sich aber mit ausgereifteren Compilern und wachsener Community in den
nächsten Jahren ändern kann.
Inhalt <- Einleitung <- D im Vergleich mit C <- Neuerungen gegenüber C <- Zusammenfassung -> Literaturhinweise