
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
- la clause Catch ne doit prendre en compte que les exceptions constantes ou mutables ;
- améliorations de la génération d'en-têtes C ;
- une fonction avec une classe de stockage enum est maintenant dépréciée, ce n'est pas une erreur ;
- ajout de l'option -nothrow au compilateur ;
- ajout du support pour la protection Intel CET (Control-flow Enforcement Technology) IBT (Indirect Branch Tracking) ;
- la création d'une instance de classe scope avec un constructeur non-scope est @system uniquement avec DIP1000 ;
- les variables constantes globales ne peuvent plus être initialisées à partir d'un constructeur statique non partagé ;
- les variables globales peuvent maintenant être initialisées avec des tableaux associatifs ;
- les tableaux associatifs _d_newarray{U,T,iT} sont convertis en modèles.
Changements dans l'environnement d'exécution
- 4 fonctions core.memory.GC ont été marquées @safe
Changements dans la bibliothèque
- 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 ; - ajout de Unshared à std.traits.
Changements dans Dub
- ajout de l'option --deep= à la construction de dub ;
- 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 ; - 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
- 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
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.