D (Programmiersprache)

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

Einzelnachweise

  1. D 1.0 Change Log, http://www.digitalmars.com/d/1.0/changelog.html
  2. D 2.0 Change Log, http://www.digitalmars.com/d/2.0/changelog.html
  3. a b DMD (Digital Mars D): DMD
  4. a b GDC (GNU D Compiler):GDC
  5. Heise Online: Eleganter programmieren: D ist da, 3. Januar 2007 – 14:52
  6. Interfacing to C++
  7. LDC-Projektseite
  8. DIL-Projektseite
  9. Dang-Projektseite
  10. http://dnet.codeplex.com/ D Compiler for .NET]
  11. 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.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Programmiersprache — Programmiersprache …   Deutsch Wörterbuch

  • Programmiersprache/Zeittafel — Jahr Name Entwickler, Hersteller Vorläufer, Vorgänger 1840 Erstes Programm Ada Lovelace * 1946 Plankalkül Konrad Zuse * 1952 A 0 Grace Hopper * …   Deutsch Wikipedia

  • Programmiersprache C — C Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Dennis Ritchie Bell Labs wichtige Implementierungen …   Deutsch Wikipedia

  • Programmiersprache Perl — Perl Paradigmen: prozedural, modular, teilweise objektorientiert Erscheinungsjahr: 1987 Entwickler: Larry Wall, Perl Porter Aktuelle  …   Deutsch Wikipedia

  • Programmiersprache — Quelltext eines Programms in der Programmiersprache C++. Eine Programmiersprache ist eine formale Sprache, die zur Formulierung von Computerprogrammen verwendet wird. Die Anweisungen (Befehle) können dabei entweder in Maschinencode geschrieben… …   Deutsch Wikipedia

  • Programmiersprache Smalltalk — Smalltalk Logo von Smalltalk Basisdaten Entwickler: diverse Aktuelle Version: Smalltalk 80  (1980) …   Deutsch Wikipedia

  • Programmiersprache Haskell — Haskell Basisdaten Paradigmen: funktional, nicht strikt, modular …   Deutsch Wikipedia

  • Programmiersprache Java — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia

  • Programmiersprache Eiffel — Eiffel ist eine universelle, rein objektorientierte Programmiersprache und wurde 1985 von dem französischen Informatiker Bertrand Meyer und seiner Firma Interactive Software Engineering Inc. (Goleta, Kalifornien) als Alternative zu C++ entworfen …   Deutsch Wikipedia

  • Programmiersprache D — D Paradigmen: imperativ, objekt orientiert, generisch, modular Erscheinungsjahr: 2007 Entwickler: Walter Bright Aktuelle  …   Deutsch Wikipedia

  • Programmiersprache Pascal — Pascal Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Niklaus Wirth Dialekte: UCSD Pascal …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”