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;
  // i = 1
  int i = dg();	
}

int* getPointer() {   
  int b;
  closure();
  // Folgende Zuweisung ist in Ordnung,
  // da a in einer Closure ist und existiert
  int i = dg();	
  // Das geht nicht, da b nach Verlassen von getPointer()
  // ungültig wird
  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