D est un langage de programmation impératif orienté objet.
Le langage D a été créé par Walter Bright en décembre 1999 avec sa société Digital Mars, et il est présenté comme le successeur du C, d'où son nom (le langage C lui-même succédait au langage B, qui quant à lui ne dérive pas d'un langage A, mais du BCPL. Avant la création du C++, on se demanda longtemps si le successeur du C s’appellerait D, selon l’ordre alphabétique, ou P, selon l’ordre des lettres dans le nom de BCPL).
Il s’inspire de nombreux langages, dont C++, Java (avec lequel il partage la notion de « ramasse-miettes » et d’héritage simple), Eiffel (pour le paradigme de programmation par contrat)...
Le compilateur officiel cible le langage machine.
Walter Bright a imaginé ce langage en s’apercevant que l’expressivité du C ou du C++, qui leur donne leur puissance de traitement, rend leur utilisation sensible.
En particulier :
Pour pallier ces problèmes, le langage D possède une syntaxe épurée du C dont l’un des effets est de rendre la compilation plus rapide. Ainsi, couplé avec des notions modernes incluses dans le langage, la productivité est améliorée.
D est en version 2.00 (depuis le 17 juin 2007), et subit ponctuellement de légères modifications de spécification. Ces transformations sont réalisées exclusivement par Walter Bright, mais il prend en considération des remarques et requêtes de la communauté qui gravite autour de D.
Le compilateur officiel, dmd, est développé parallèlement avec la spécification du langage. Une partie de son code (le frontend) est ouvert, ce qui permet de corriger rapidement les problèmes que l’on peut rencontrer, et de réaliser son propre compilateur en utilisant une base (un des rêves de l’auteur est en effet d’en voir fleurir d’autres que le sien). Il existe actuellement pour les plates-formes Linux, Mac OS X et Windows.
Un compilateur GNU, gdc, mêlant le frontend de dmd et le backend de gcc était en développement jusqu'en 2007.
Un compilateur sous licence BSD, ldc, mêlant le frontend de dmd et le backend LLVM est encore en cours de développement. Il supporte l'essentiel du langage D dans sa version 1, mais ne supporte pas officiellement le langage D 2.0.
Le fameux « Hello World », exemple de référence pour tous les langages :
Et un second exemple :
// Programme en D qui affiche les arguments de la ligne de commande. import std.stdio; int main(char[][] args) { foreach (int i, char[] arg; args) { writefln("args[", i, "] = '", arg, "'"); } return 0; }
Les versions récentes telles que la 1.0 ou la 2.0 acceptent également le type string
comme un alias à char[]
.