Einleitung
Inhalt <- Einleitung -> D im Vergleich mit C -> Neuerungen gegenüber C -> Zusammenfassung -> Literaturhinweise
Über dieses Dokument
Diese Ausarbeitung richtet sich vor allem an Leser, die bereits einige Grundlagen in Programmierung besitzen.
Es werden Kenntnisse über Zuweisungen, Schleifen, imperative Programmierung, objektorientierte Programmierung,
Funktionen, Zeiger und Arrays vorausgesetzt. Diese Fachbegriffe sowohl erste Erfahrungen in C und Java sind somit Voraussetzung
zum Verständnis dieser Einführung. Dies kommt durch den Umstand, dass D eine Sprache ist, die aus der Praxis
entstanden ist und die sich an Entwickler richtet, die die Vorteile der genannten Sprachen vereinen wollen, zustande.
Die zwei großen Themengebiete sind ein Sprachvergleich zwischen C und D, als auch das Gebiet der Neuerungen, die
es gegenüber C nun gibt. Die Konzepte stammen dabei teilweise aus anderen Sprachen wie C++ und Java.
Der Grundgedanke
Walter Bright, der Erfinder der Programmiersprache D, hatte die Absicht, einen
Nachfolger der populären Programmiersprache C zu entwickeln. Die Eigenschaften
der Sprache sollten dabei einerseits die hohe Performance von C, andererseits
aber auch eine leichte Handhabung und die Implementierung moderner Sprachmittel
wie die objektorientierte Programmierung umfassen. D ist somit keine
wissenschaftliche Sprache, die neue Paradigmen vermitteln soll, sondern eine
bodenständige Sprache, die aus der Praxis heraus entstanden ist.
Das Ergebnis der Entwicklung ist eine Sprache, die syntaktisch sehr C und Java
ähnelt, ohne die bekannte Fehleranfälligkeit zu beinhalten und die ein
durchdachtes Sprachkonzept bietet. D ist eine komplette Neuentwicklung, und
ermöglicht somit stimmigen Sourcecode. Nebenbei
stellt die Sprache eine ausreichend große Bibliothek für Standardfunktionen
bereit. Dadurch wird es dem Programmierer leicht gemacht, auf schnelle,
unkomplizierte und effiziente Art und Weise Funktionalität in sein Programm zu
bringen, ohne das Rad neu erfinden zu müssen.
Aufgrund dieser Eigenschaften eignet sich D sowohl zur Systemprogrammierung als
auch zur Entwicklung von Anwenderprogrammen. D kommt ohne große Anpassungen mit
unterschiedlichen Systemen zurecht. Die hohe Portabilität
wird nicht durch eine virtuelle Maschine wie in Java gewährleistet, sondern
durch neue Konzepte wie das Cross-Compiling.
Die Sprache richtet sich an die Programmierer, die die Performance von C/C++
Anwendungen schätzen, auf der anderen Seite aber die Fehleranfälligkeit durch
die eigene Speicherverwaltung und Zeigerhandhabung vermeiden wollen. Somit
bietet D eine gute Basis zur effizienten Entwicklung von hochfunktionalen
Programmen mit sehr guter Performance.
Die Compiler
Zur Zeit gibt es zwei gängige Compiler, die die Übersetzung von D-Sourcecode
ermöglichen. Auf der einen Seite ist dies der DMD-Compiler in der Version 1.053
und der GDC-Compiler in der Version 0.24. Beide Compiler sind sowohl für Windows,
als auch für Linux verfügbar. Der DMD steht auch unter Mac OS X zur Verfügung.
Die Besonderheit am GDC ist die Tatsache, dass er auf der GCC aufsetzt und somit
deren Installation voraussetzt.
Es ist zu beachten, dass die Codierung in UTF-8 stattfindet. Man bekommt mit
Umlauten (auch in Kommentaren) unglücklicherweise viele Probleme, wenn sie direkt
im Quellcode stehen. Die Compiler verweigern dann mit "invalid UTF-8 sequence" ihren
Dienst.
Verwandtschaft zu anderen Sprachen
D lehnt sich von der primären Funktionalität und von der Sytax sehr an C an.
Das Konzept und die Syntax der Objektorientierung wurden von Java übernommen und
unterscheiden sich nur in wenigen Punkten. Das Konzept der Templates ist bereits
aus C++ bekannt. In Java entspricht dieses den Generics. D hat diesbezüglich allerdings seine
einige Syntax. Diese Punkte werden alle ausführlich in den folgenden Kapiteln behandelt. Aufgrund seiner
Verwandtschaftsverhältnisse ist natürlich auch D den imperativen, objektorientierten,
generischen Programmiersprachen zuzuordnen.
Garbage Collection
D bietet im Gegensatz zu C und C++ eine Garbage Collection. Diese bezieht sich auf alle vom Programm
nicht mehr benötigten Speicherbereiche, mit Ausnahme derer, die manuell über malloc() und realloc()
verwaltet werden. Dort ist weiterhin die explizite Freigabe über free() vom Entwickler vorzunehmen.
Sobald keine Referenzen mehr auf Objekte existieren, werden die Speicherbereiche von der Garbage Collection
automatisch wieder zur Verfügung gestellt. Dies ist aus anderen Sprachen wie in Java bereits bekannt und
stellt eine wichtige Neuerung in D dar.
Standardbibliothek
Die Standardbibliothek für D trägt den Namen Phobos und enthält bereits sehr viele, vom Betriebssystem
unabhängige Standardfunktionen, die dem Entwickler eine wichtige Hilfe sein können. Darüber hinaus gibt es
noch eine inoffizielle Library mit dem Namen Tango, die darüber hinaus noch zusätzliche Funktionalität bietet,
welche aber nicht in Phobos enthalten sind. Die Bibliotheken lassen sich auch gegenseitig tauschen oder parallel
betreiben, was wie immer mit Migrationsaufwand verbunden ist. Es empfiehlt sich, sich auf eine Bibliothek
festzulegen. Die Wahl bleibt dem Entwickler überlassen und richtet sich nach Einsatzzweck und persönlichen Präferenzen.
Inhalt <- Einleitung -> D im Vergleich mit C -> Neuerungen gegenüber C -> Zusammenfassung -> Literaturhinweise