- D (Programmiersprache)
-
D Paradigmen: imperativ, objektorientiert, funktional, parallel, generisch, modular Erscheinungsjahr: 2007 Entwickler: Walter Bright Aktuelle Version: 1.070 (stable), 2.055 (alpha) (9. September 2011[1][2]) Typisierung: Stark, statisch wichtige Implementierungen: DMD[3], GDC[4], LDC Einflüsse: C, C++, Java, C#, Python d-programming-language.org D ist eine Programmiersprache, die sich äußerlich stark an C++ anlehnt. Sie kombiniert die Effizienz von C/C++ mit der Produktivität höherer Programmiersprachen wie Ruby oder Python. Anders als bei Java oder .Net kommt keine virtuelle Maschine oder Zwischensprache zum Einsatz, sondern der Quelltext wird direkt in Maschinencode übersetzt, was D zur Systemprogrammierung qualifiziert. Dennoch wird Plattformunabhängigkeit erreicht, indem aus der Standardbibliothek je nach aktuellem System zur Übersetzungszeit der passende Quelltext eingebunden wird.
D wird seit 1999 von Walter Bright entwickelt und wurde am 3. Januar 2007 in der stabilen Version 1.0 veröffentlicht.[5]
Seit dem 17. Juni 2007 gibt es einen experimentellen 2.0-er-Versionszweig, in dem die Sprache weiterentwickelt wird.
Inhaltsverzeichnis
Sprachmittel
Die Sprache D übernimmt die meisten Sprachmittel der Sprache C, verwirft im Gegensatz zu C++ aber die Sprachkompatibilität dazu. Dadurch soll die Übernahme von Entwurfsnachteilen vermieden werden, durch ABI-Kompatibilität sind aber trotzdem alle in C geschriebenen Programme und Bibliotheken nutzbar. Der Aufruf von C++-Code unterliegt dagegen gewissen Einschränkungen [6].
D ist eine objektorientierte, imperative Programmiersprache und verfügt über Templates und überladbare Operatoren. Gegenüber C++ bietet es außerdem Design by contract, Module und eine integrierte automatische Speicherbereinigung. Letztere kann sowohl global als auch für einzelne Objekte deaktiviert und durch eine eigene Speicherverwaltung ersetzt werden.
Es ist möglich, Programme für eine Vielzahl von Anwendungsfeldern zu schreiben, ohne Zeiger benutzen zu müssen. So bestehen bspw. Felder transparent sowohl aus dem Ort ihrer Daten als auch aus ihrer Länge, wodurch Zeigerarithmetik überflüssig ist und außerdem vom Laufzeitsystem überprüft werden kann, ob Feldzugriffe zulässig sind. Im Gegensatz zu Java ist es aber dennoch möglich, Zeiger bei Bedarf wie in C zu benutzen und so maschinennah zu programmieren.
Compiler
DMD, der Digital Mars D Compiler[3], ist die Referenzimplementierung von Walter Bright und für die x86-Versionen von Windows, Linux, Mac OS X und FreeBSD erhältlich. Eine 64 Bit-Version ist in Arbeit.
Die wichtigsten inoffiziellen Übersetzer mit alternativen Backends sind das auf GCC aufbauende GDC[4] sowie LDC[7], das sich der Qualitäten von LLVM bemächtigt. Neben der hohen Effizienz des generierten Maschinencodes ermöglichen diese Backends außerdem die Bedienung von x86-64 und verschiedenster anderer Architekturen.
Des Weiteren gibt es inzwischen zwei Compiler für D, die selbst in D programmiert wurden: Dil[8] und Dang[9], die kompatibel zu LLVM sind.
Ferner gibt es einen Codegenerator für die .NET-Plattform, der aber eher einen Machbarkeitsnachweis darstellt als einen funktionstüchtigen Übersetzer[10].
Entwicklungsumgebungen
D wird zunehmend von verschiedenen IDEs unterstützt. Zum Einsatz kommen unter anderen die Editoren Entice Designer, Emacs, Vim, Scite, Scite4D, Smultron, TextMate, Zeus und Geany. Vim und Scite4D unterstützen Syntaxhervorhebung und Autovervollständigung. Für TextMate existiert eine Erweiterung und Code::Blocks unterstützt D teilweise. Allerdings werden Autovervollständigung und Refactoring momentan von keiner IDE für D komplett bereitgestellt. Darüber hinaus gibt es noch für Eclipse mit dem Plugin DDT[11] Unterstützung für D.
Zudem gibt es in D geschriebene IDEs, wie z. B. Poseidon. Letztere unterstützt Autovervollständigung, Refactoring und hat einen integrierten Debugger.
D-Anwendungen können mit jedem beliebigen C/C++-Debugger behandelt werden, wie z. B. GDB oder WinDbg, wobei die Unterstützung für bestimmte grundlegende Sprachfeatures stark eingeschränkt ist. Ein Debugger speziell für D ist Ddbg für Windows. Der kommerzielle ZeroBUGS-Debugger für Linux unterstützt D experimentell. Ddbg kann mit den verschiedensten IDEs oder von der Kommandozeile aus benutzt werden, während ZeroBUGS eine eigene GUI mitbringt.
Eine relativ neue IDE, die sowohl Autovervollständigung als auch Debugging unterstützt, ist D-IDE.
Programmbeispiel
// Programm, geschrieben in D, das seine Parameter ausgibt import std.stdio; // importiert die Funktion writefln() alias char[] string; void main(string[] args) { foreach(int i, string a; args) writefln("Parameter %d = '%s'", i, a); // Jeder Eintrag im Feld args wird ausgegeben. }
Erläuterung
Der
main
-Funktion werden die Kommandozeilenparameter als ein Feld von Zeichenketten (Strings) übergeben. Ruft man dieses Programm unter Windows mit beispiel.exe -win -s auf, dann gibt es diesen Text in einem Konsolen-Fenster aus:Parameter 0 = 'beispiel.exe' Parameter 1 = '-win' Parameter 2 = '-s'
Siehe auch: Hallo Welt in D
Weblinks
- offizielle Seite
-
Wikibooks: D Programming (englisch) – Lern- und Lehrmaterialien
- Die Programmiersprache D bei Digital Mars (Downloads, englisch)
- dsource.org D-Projektseite (englisch)
- Visual D D-Integration für Visual Studio 2005, 2008 und 2010 (englisch)
- D.NET D-Compiler für .NET (englisch)
- Manfred Hansen: Programmiersprache D. 2010, 167 S. (PDF-Datei, 1,9 MB)
Einzelnachweise
- ↑ D 1.0 Change Log, http://www.digitalmars.com/d/1.0/changelog.html
- ↑ D 2.0 Change Log, http://www.digitalmars.com/d/2.0/changelog.html
- ↑ a b DMD (Digital Mars D): DMD
- ↑ a b GDC (GNU D Compiler):GDC
- ↑ Heise Online: Eleganter programmieren: D ist da, 3. Januar 2007 – 14:52
- ↑ Interfacing to C++
- ↑ LDC-Projektseite
- ↑ DIL-Projektseite
- ↑ Dang-Projektseite
- ↑ http://dnet.codeplex.com/ D Compiler for .NET]
- ↑ DDT-Projektseite
Literatur
- Andrei Alexandrescu: The D Programming Language, 1. Auflage (Juni 2010), 460 Seiten, Addison Wesley, ISBN 978-0321635365.
- Tobias Wassermann, Christian Speer: Programmieren in D, 1. Auflage (November 2007), 165 Seiten, entwickler.press, ISBN 978-3939084693.
Wikimedia Foundation.