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