La version 2.106.0 du langage de programmation D est livrée avec des changements notables dans la bibliothèque standard et le compilateur
mais ce rival du C/C++ n'a jamais réussi à s'imposer

D est un langage de programmation généraliste avec un typage statique, un accès au niveau du système et une syntaxe semblable à celle du C. Il s'inspire d'un grand nombre de langages de programmation, dont C++, Java, Python, Ruby, C# et Eiffel. La première version de D a été publiée le 8 décembre 2001 dans le cadre d'un effort visant à intégrer les meilleures caractéristiques de ces langages dans un nouveau langage. Décris une alternative conviviale aux langages C et C++, le langage D n'a jamais réussi à s'imposer et occupe, par exemple, la 27e place dans le classement TIOBE de novembre 2023. La version 2.105.3 du langage vient d'être publiée avec plusieurs nouveautés.

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 quelconque langage A, mais du BCPL). Avec le langage D, Bright souhaite conserver les performances des langages C et C++ tout en palliant les problèmes liés à la syntaxe et à la sémantique. Ainsi, D supprimerait certains compromis de ces prédécesseurs imposés par le manque de mémoire (par exemple, les déclarations en avant ne seraient pas nécessaires avec D). Il s'adresse principalement aux utilisateurs de C et de C++.


L'expertise de ces langages serait facilement transférable. La documentation indique que D est un langage de haut niveau avec lequel vous pouvez écrire un code et une interface très performants qui interagissent directement avec les API du système d'exploitation et le matériel. Il contiendrait de nombreuses fonctionnalités qui aident le programmeur et est bien adapté à la technologie d'optimisation agressive du compilateur. L'interface avec le C a été conçue pour être à coût nul. La dernière version de D, v2.105.3, a été publiée le 1er décembre avec 17 changements majeurs et 65 problèmes Bugzilla corrigés. Voici ci-dessus, l'essentiel de cette mise à jour :

Changements dans le compilateur

  1. la clause Catch ne doit prendre en compte que les exceptions constantes ou mutables ;
  2. améliorations de la génération d'en-têtes C ;
  3. une fonction avec une classe de stockage enum est maintenant dépréciée, ce n'est pas une erreur ;
  4. ajout de l'option -nothrow au compilateur ;
  5. ajout du support pour la protection Intel CET (Control-flow Enforcement Technology) IBT (Indirect Branch Tracking) ;
  6. la création d'une instance de classe scope avec un constructeur non-scope est @system uniquement avec DIP1000 ;
  7. les variables constantes globales ne peuvent plus être initialisées à partir d'un constructeur statique non partagé ;
  8. les variables globales peuvent maintenant être initialisées avec des tableaux associatifs ;
  9. les tableaux associatifs _d_newarray{U,T,iT} sont convertis en modèles.


Changements dans l'environnement d'exécution

  1. 4 fonctions core.memory.GC ont été marquées @safe


Changements dans la bibliothèque

  1. annulation de la dépréciation de etc.c.odbc et activation de son utilisation sur les systèmes autres que Windows ;
    C=D]isInputRange prend maintenant un type d'élément optionnel ;
  2. ajout de Unshared à std.traits.


Changements dans Dub

  1. ajout de l'option --deep= à la construction de dub ;
  2. ajout des données default-config, configs, default-build, builds à dub describe ;
    C=D]Dub init[/C] a maintenant un menu de sélection pour le format du paquet et la licence ;
  3. ajout de --recipe= à DUB.


L'utilisation croissante du langage D dans les années 2010 a créé un élan pour la formalisation et la gestion du développement. À cette fin, la D Language Foundation a été créée en septembre 2015 en tant que société à but non lucratif supervisant le travail sur la définition et la mise en œuvre de D, les publications, les conférences et les collaborations avec les universités. Maos malgré ses promesses et les nombreuses fonctionnalités qu'il propose, le langage D n'a pas réussi à s'imposer comme une alternative au C/C++. Contrairement au langage Rust, dont la notoriété n'a fait qu'accroître depuis sa sortie en 2006, D semble être resté un langage de niche.

Il existe un débat très animé sur les raisons pour lesquelles le langage D n'a pas connu une évolution semblable à celle de Rust. Selon les critiques, les promesses du langage D n'ont pas happé grand monde. « Tous ces langages (D, Nim, Crystal, etc.) ont l'air bien, mais le manque d'adoption signifie peu de ressources et une petite communauté qui à son tour signifie un manque d'adoption dans un cercle vicieux. Je pense que la compétence la plus précieuse qu'un créateur de langage puisse avoir est d'être capable de créer du battage médiatique (à condition que le langage lui-même soit suffisamment bon bien sûr) », a commenté un critique.

« L'engouement est nécessaire pour aider un langage à sortir de ce cercle vicieux. Mais il est assez amusant de voir que les développeurs sont particulièrement hostiles à la promotion/publicité des nouveaux langages. J'ai vu beaucoup de protestations sur la toile de la part de personnes qui ont l'impression que le langage actuellement populaire leur est "enfoncé dans la gorge". Dans le même temps, si les gens n'étaient pas ouverts à cela, les bases de code seraient encore largement écrites en C, sans parler du C++ ou du Java (qui ont eu leurs propres cycles de battage médiatique) », a écrit un autre critique. Un troisième critique note ce qui suit :


D est un langage de niche qui n'a pas réussi à s'imposer. Je suis tombé sur un excellent article qui explique pourquoi le langage de programmation F# n'a pas réussi à s'imposer et je pense que les conclusions peuvent s'appliquer à d'autres langages. Voici mon résumé :

- l'adoption de toute technologie suit une distribution normale ;

- les segments sont les adopteurs précoces, les pragmatiques, les adopteurs tardifs et les retardataires ;

- si vous voulez qu'une technologie devienne courante, vous devez faire en sorte que les pragmatiques l'adoptent ;

- il s'agit d'un comportement rationnel et il est inutile d'essayer de convaincre les pragmatiques du contraire. Ils choisiront toujours "prévisiblement décevant" plutôt qu'"excellent et non prouvé" ;

- pour eux, la technologie n'est qu'un outil. Ils se moquent de savoir si elle est amusante ou non, tant qu'elle permet de faire le travail ;

- le succès du courant dominant est impossible sans l'adhésion des pragmatiques. Jusqu'à ce moment-là, la curiosité n'est utilisée que par les premiers utilisateurs.

- comment franchir le gouffre ? Il recommande de trouver un pragmatique qui souffre et de résoudre ses problèmes. Convertir progressivement les pragmatiques un par un.

Je ne pense pas que le langage D ait jamais été capable d'expliquer aux pragmatiques pourquoi ils devraient l'adopter plutôt que C++ ou d'autres langages. Corriger quelques défauts du C++ n'était pas suffisant.

Pendant ce temps, Rust a réussi à séduire les pragmatiques en disant : « nous savons que vous utilisez C et C++ à cause des performances malgré les problèmes qu'ils posent. Pourquoi n'essayez-vous pas un langage avec les mêmes performances, qui corrige également certains des problèmes (surtout les débordements de mémoire tampon) au moment de la compilation ? ».

Rust était loin d'être parfait lorsqu'il a commencé à être adopté par les pragmatiques, et il reste loin d'être parfait aujourd'hui. Mais la perfection n'est pas l'objectif, pas plus qu'un langage "amusant" pour les premiers utilisateurs. Ce qui compte, c'est de résoudre un problème auquel les pragmatiques sont confrontés et de les convaincre de vous donner une chance. Dans la pratique, la barre est suffisamment haute pour que la plupart des langages ne la franchissent jamais.
À croire les différentes critiques, le langage D n'est pas resté un langage de niche en raison de sa courbe d'apprentissage, mais parce qu'il n'a pas su convaincre les développeurs à l'essayer. Mais certains critiques indiquent que les fonctionnalités qu'il propose incitent difficilement à franchir le pas et beaucoup préfèrent l'approche de Rust. La raison la plus importante pour laquelle ils ont choisi Rust est : « avec Rust, il est possible de détecter de nombreuses erreurs lors de la compilation. Cela est extrêmement utile pour le débogage, en particulier par rapport aux langages à typage dynamique qui peuvent échouer silencieusement pendant l'exécution ».

Comme le langage D, le langage Nim est présenté comme un langage de programmation "moderne" aussi performant que le C (souvent indiqué comme une référence à ce niveau) : le langage apporte un maximum de puissance à l’utilisateur sans sacrifier la performance (comme Rust ou Julia). Mais il peine à s'imposer. Les langages tels que C, C++ et Java restent très populaires. Malgré son attrait, Rust a encore du chemin à parcourir pour s'imposer. Selon l'index TIOBE, D est le 27e langage le plus populaire, tandis que Rust occupe la 20e place du classement et continue de gagner en popularité. (TIOBE reste néanmoins un index controversé.)

Source : D (1, 2)

Et vous ?

Quel est votre avis sur le sujet ?
Que pensez-vous du langage de programmation D ?
Que pensez-vous des nouveautés introduites par la version 2.105.3 ?
Utilisez-vous le langage de programmation D ? Si oui, pourquoi l'utilisez-vous ?
Pourquoi le langage de programmation D n'a pas réussi à remplacer les langages C et C++ ?
Pourquoi le langage de programmation D a été surclassé par Rust qui est pourtant un langage plus jeune ?
Quid de tous ces langages "modernes" qui visent à remplacer les langages C et C++ ? Ont-ils la capacité de le faire ?
Selon vous, pourquoi les langages C et C++ restent-ils si populaires ? Rust sera-t-il en mesure de les détrôner à l'avenir ?

Voir aussi

Le potentiel du langage de programmation Julia pour le calcul en physique des hautes énergies, un domaine qui nécessite d'énormes quantités de calcul et de stockage, selon une étude scientifique

La version 1.6.2 de Nim, le langage doté d'un transcompilateur vers C, C++ est disponible, elle corrige plus de 15 problèmes signalés et apporte quelques améliorations

Kotlin continue son ascension dans l'index de popularité des langages de programmation de TIOBE, le rival de Java se hisse à la 15e place dans le classement de novembre 2023