D ist eine seit 1999 von Walter Bright entwickelte Programmiersprache, die sich stark an C++ anlehnt. Das gilt vor allem für die Syntax, während sie auf anderen Gebieten zu stark abweicht, um noch als C++-Variante gesehen zu werden. D soll sich ebenso wie C++ für die Systemprogrammierung eignen. Sie unterstützt im Unterschied zu ihren Vorläufern unter anderem eine integrierte automatische Speicherbereinigung, Design By Contract und Module. Andere Sprachmittel wie überladbare Operatoren und Templates sind dagegen von C++ inspiriert. Im Laufe der Entwicklung wurde sie auch von anderen Sprachen, besonders Java und C#, beeinflusst.
Am 3. Januar 2007 wurde Version 1.0 nach fast sieben Jahren Entwicklungszeit veröffentlicht.[1]
Compiler
DMD
DMD (Digital Mars D) ist ein Compiler der immer aktuell ist, er ist ein Referenzcompiler von Walter Bright. Er ist für Windows und Linux verfügbar. Das Backend ist aber nicht Open Source.
GDC
GDC (GNU D Compiler) ist ein quelloffener Compiler, der GCC als Backend verwendet. Allerdings unterstützt er neue Features von D erst, wenn diese auch in DMD integriert worden sind. Dazu wird das Frontend von DMD übernommen und angepasst.
Features
Speicherverwaltung
Der Speicher wird durch einen Garbage Collector verwaltet. Wenn mehr Kontrolle über die Speicherverwaltung erforderlich ist, kann der Garbage Collector für einzelne Objekte – oder auch für das ganze Programm – deaktiviert werden. Durch überladene Operatoren und die C-Funktionen malloc und free können auch eigene Speicherverwaltungsmechanismen implementiert werden.
Interaktion
Die C-Binärschnittstelle (ABI) wird genau so wie alle grundlegenden C-Typen unterstützt, wodurch Kompatibilität zu in C geschriebenen Bibliotheken gewährleistet ist. Weiterhin ist die C-Standardbibliothek teil des D-Standards. Die C++-ABI hingegen wird nicht unterstützt.
Beispiel
// Programm, geschrieben in D, das seine Parameter ausgibt
import std.stdio; // für writefln()
void main(char[][] args) // Der main-Funktion werden die Parameter als ein Array von Strings übergeben
{ // Strings sind Arrays von Buchstaben (char[]), deswegen ist ein Array von Strings char[][].
foreach(int i, char[] a; args) // Für jeden Eintrag im Array args wird der Index in
{ // i und der Inhalt in a gespeichert und ausgegeben.
writefln("args[%d] = '%s'", i, a);
}
}
Ruft man dieses Programm unter Windows mit beispiel.exe -win -s auf, dann gibt es diesen Text in einem Konsolen-Fenster aus:
args[0] = 'beispiel.exe' args[1] = '-win' args[2] = '-s'
Siehe auch: Hallo Welt in D
Literatur
- Manfred Hansen: Programmiersprache D (PDF-Datei, 1,1 MB)
Siehe auch
Weblinks
- Wikibooks: D Programming (englisch) – Lern- und Lehrmaterialien
- Die Programmiersprache D bei Digital Mars (Downloads, englisch)
- dsource.org D-Projektseite (englisch)
Quellen
- ↑ Heise Online: Eleganter programmieren: D ist da, 3. Januar 2007 – 14:52