Et si on se mettait au D?

Océane PAYET
4 min readApr 30, 2018

--

Le langage D, conçu par Walter Bright, en 1999 fait suite au C et C++. Il résulte de l’exprérience d’une dizaine d’années qu’à passé le détenteur de Digital Mars à concevoir les compilateurs Datalight C (maintenant Digital Mars C) et Zortech C++ (maintenant DMC++).

Pourquoi Walter Bright se lance dans la conception du D ?

Vous me direz sûrement « Il existe une multitude de langages. Pourquoi utiliser le langage D ? »
Ce langage a été conçu dans un but précis, aussi un petit historique nous permettra de mieux comprendre les intêrets du langage.

Deux axes sont privilégiés lorsqu’il s’agit de concevoir un langage. D’une part sa productivité, c’est à dire la complexité d’écriture du code, et d’autre part, son temps d’éxécution. En 1999, D a été capable de lier ces deux aspects. Walter Bright disait : « If a language can capture 90% of the power of C++ with 10% of its complexity, I argue that is a worthwhile tradeoff. »

Le D possède beaucoup d’avantages : son temps d’éxécution est très rapide, ce qui permet de faire par exemple du calcul de haut niveau ou encore de la programmation 3D. Contrairement à ces prédecesseurs, il n’y a que des fichiers soucres (les fichiers d’extension .h ont disparu). De plus, il est capable de supporter plusieurs paradigmes ( POO, fonctionnel et concurrentiel, impératif) .

Quelques points forts de D

Tout d’abord, D est un langage qui permet de gérer la mémoire manuellement, si le programmeur le souhaite. En effet, D possède 3 niveaux de sécurité mémoire pour les fonctions : @system, @trusted, @safe. Par défaut la sécurité est mise à @system. @safe est un sous ensemble de D qui empêche les bugs mémoire. Le code @safe peut seulement appeler des fonctions @safe ou @trusted. Les fonctions @trusted sont des fonctions manuellement vérifiées qui permettent de faire la liaision entre SafeD et le code machine. Cependant, la gestion manuelle de la mémoire est sujet aux erreurs et le langage utilise par défaut un ramasse-miette pour l’allocation mémoire.

Ensuite, du côté fonctions, D possède plusieurs spécificités. En effet, le langage autorise des retours de fonctions de type auto. Si ce type est spécifié par le programmeur, le compilateur D détermine automatiquement le type de la valeur retournée. Par conséquent plusieurs déclarations de retour doivent renvoyer des valeurs avec des types compatibles. Le langage permet également de définir des arguments par défaut. Ceci évite au programmeur de déclarer de manière redondante les mêmes arguments. Cependant, une fois le premier argument par défaut spécifié, les arguments suivants doivent aussi être par défaut.

Il est aussi possible de définir des fonctions à l’intérieur d’autres fonctions. Elles ne sont évidemment pas visibles à l’extérieur de la fonction.

Vous avez dit puissant et peu complexe?

Si vous êtes programmeur C++ et que vous n’êtes toujours pas convaincu, je vous propose d’illustrer les différences de ces deux langages. Ces exemples vous permettront de juger par vous-mêmes de l’efficacité de D.

Comparaison de structures :

Bien qu’il soit facile d’assigner simplement une structure en C++, il est moins évident de pouvoir en comparer l’égalité :

Comparaison de structures en C++ (source : www.dlang.org)

En D, cela se fait de manière plus simple et directe.

Comparaison de structures en D (source : www.dlang.org)

Les attributs :

En programmation orientée objet, il est commun de définir les fonctions set( ) et get( ) pour obtenir les attributs d’une classe.

Une classe en C++ (source : www.dlang.org)

En D, il n’y a plus besoin d’invoquer ces méthodes. On accède aux attributs directement en les appelant à partir de l’objet.

Une classe en D (source : www.dlang.org)

Alors, convaincus ?

Vous l’aurez compris, D se veut adapté au monde moderne du programmeur. En combinant la performance d’exécution des langages compilés et l’intuition des langages de script, le langage D se dévoile comme extrêmement puissant. Pour vous aider à vous lancer dans cette grande aventure, je vous présente quelques outils de développement.

Les compilateurs :

Trois choix s’offrent à vous : DMD, GDC et LDC. Si vous êtes débutant DMD est le choix recommandé; c’est l’impémentation la plus proche des spécifications du langage D. Avec LDC, vous pourrez développer sur plus de plateformes qu’avec GDC telles que iOS, Android ou OpenSolaris. De plus GDC et LDC génèrent tous les deux des fichiers binaires plus rapides que DMD.

Les Environnements de Développement Intégrés (IDE) :

Suivant la plateforme sur laquelle vous développez, plusieurs options s’offrent à vous. Code::Blocks, Dlang IDE ou encore Visual-D vous offrent la possibilité de créer des projets D, de la coloration syntaxique, de la complétion de code, et du débogage. Vous pouvez consulter toutes les possibilités sur : www.wiki.dlang.org/IDEs

Enfin, si vous souhaitez en apprendre plus sur le langage D, n’hésitez pas à vous rendre sur : www.dlang.org

--

--