Programmation D

Bouyssi
Ecosystèmes des langages de programmation
3 min readApr 20, 2017

En 1969, Ken Thompson dévoile B : son nouveau langage de programmation succédant au BCPL, dont le nom fut inspiré d’un ancien langage, “Bon”, du nom de son épouse “Bonnie” ! La caractéristique importante de ce langage est qu’un seul type de données est reconnu : les mots word. Les opérations sont donc effectuées en les considérant soit comme des entiers soit comme des adresses mémoire.

De la, Dennis Ritchie propose en 1972 une évolution de ce langage, notamment par l’introduction de la notion de type ainsi qu’un usage intensif des calculs d’adresses mémoire par le biais des pointeurs, de telle sorte qu’il est devenu un des langages les plus utilisés.

C’est dans cette dynamique d’amélioration et d’innovation des langages de programmation, que se développe D, un des nombreux langages créés dans l’optique de succéder au C. Imaginé par Walter Bright et apparu en 1999 : D n’a pas eu la notoriété de son prédécesseur. Il trouve tout de même un intérêt dans la programmation système en s’inspirant de langages tels que C++ et JAVA.

Historique

Avec une première version parue en 1999 (1.x), D avait pour objectif de combiner puissance de calcul et productivité. Allier la performance d’exécution des langages compilés (traduction en langage machine par un compilateur avant une exécution) avec l’intuitivité des langages de script (ou langage interprété, impliquant une traduction au fur et à mesure de l’exécution par l’interpréteur).

« Si un langage peut récupérer 90 % de la puissance du C++ mais seulement 10 % de sa complexité, cela vaut largement le coup. »

— Walter Bright

S’en suit une seconde version (2.x) dévoilée en 2007, apportant la notion de langage multi-paradigmes ainsi que d’autres optimisations. Nous sommes aujourd’hui et depuis le 27 juin 2016 dans la version D 2.071.1. A noter que la première version est obsolète et abandonnée depuis le 31 décembre 2012.

Caractéristiques

Comme nous l’avons vu précédemment D tend à combiner les avantages apportés par les langages compilés avec l’intuitivité des langages interprétés. En effet si vous avez déjà touché au C, vous avez du remarquer que la syntaxe, parfois non-intuitive, introduit des erreurs difficiles à corriger, s’ajoute à cela une difficulté importante en ce qui concerne la création et la maintenance de compilateurs. En voici un exemple :

int tripleHandShake (int desc_co, char buffer[], char* port_data, struct sockaddr_in * client, socklen_t alen, struct timeval * RTT);
//Header d'une fonction réalisant le HandShake TCP

Analysons ce bout de code, les paramètres sont : un entier, un tableau de char, non modifiable car il aurait fallut passer un pointeur vers ce tableau si nous avions souhaité le modifier, soit un pointeur de pointeur, un autre tableau de char ou bien un pointeur vers un unique char que nous souhaitons modifier un pointeur de structure (à nouveau cela peut également être un tableau de structure), etc. On comprend que jouer avec les pointeurs (même si cela peut être fortement utile) peut s’avérer source d’erreurs si l’on n’en comprend pas les subtilités.

C’est ce genre de problème de syntaxe et de sémantique que D souhaite corriger à l’aide de modules, d’une syntaxe claire ainsi que l’affranchissement du préprocesseur menant à une considérable accélération de la vitesse de compilation et, par la même occasion, l’implémentation d’outils d’analyse de code (debuggeur).

Parlons bien, parlons capacités ! Attardons nous sur ce que ce langage a sous le capot :

Programmation Orientée Objet, Fonctionnelle, Concurrentielle, Impérative, Contrat et Méta-programmation, soit un large panel de paradigmes pris dans les langages existants.

Très clairement inspiré de nombreux langages (C++, Java, C, etc), D regroupe de nombreux principes tels que les pointeurs, l’héritage, les bibliothèques dynamiques ainsi que les exceptions pour la gestion d’erreurs.

Un exemple ? Que serait un article de présentation de langages sans le fameux “Hello World” !

import std.stdio;void main() {
writeln("Hello world!");
}

Et pourtant …

Nous avons ainsi vu que D semble apporter des solutions à nombre de problèmes, pourtant il ne reste que modestement reconnu, étonnant ? Et bien oui et non ! S’il est encore “peu” utilisé en France ce n’est pas le cas outre atlantique, selon github D se situe même en 25ème position concernant le nombre de projets faisant appel à ce langage !

Ainsi il ne vous reste plus qu’à vous familiariser aux caractéristiques syntaxiques et à juger par vous même !

--

--