27 votes

La langue D2 est-elle prête pour la production ?

J'ai appris avec enthousiasme le langage D ces derniers jours. Cela ressemble à un rêve pour moi qui suis responsable de plusieurs millions de lignes de code C++. Nous soutenons des systèmes à haute performance et à faible latence et il est clair que le C++ était la seule option au cours des dix dernières années. Maintenant, je vois D.

Mes questions sont donc assez évidentes. Puis-je commencer à penser à la migration de produits logiciels commerciaux vers le langage D ? Existe-t-il un exemple d'une telle migration ou un gros logiciel commercial existant écrit en D à partir de zéro ?

Est-il prudent d'investir dans cette langue aujourd'hui ? Disposons-nous d'un compilateur et d'un débogueur de qualité de production ? Pouvons-nous supposer qu'ils seront supportés et développés ?

Si vous avez une expérience de la migration de C++ vers D, nous serions heureux de l'entendre de votre part.

PS. Par D, je veux dire D2

Merci.

11voto

Peter Alexander Points 31990

Existe-t-il un exemple d'une telle migration ou d'un grand logiciel commercial existant commercial existant écrit sur D à partir de zéro ?

Je ne crois pas qu'il y ait eu de grandes migrations commerciales vers D, bien que quelques entreprises utilisent D1 . Je ne connais pas encore d'entreprises qui utilisent D2.

Comment est-il possible d'investir dans cette langue maintenant ?

Avons-nous la qualité de production compilateur et d'un débogueur de qualité ?

Le compilateur DMD est très solide et s'améliore continuellement, mais il présente encore des lacunes dans certains domaines clés. Par exemple, sa génération de code pour les opérations en virgule flottante est assez faible, et le support 64 bits est bancal (bien qu'en amélioration). Il y a aussi GDC, que je n'ai pas utilisé, mais j'ai l'impression qu'il est plus faible que DMD.

Pouvons-nous supposer qu'ils seront soutenus et développés ?

Je pense qu'il est très sûr de supposer que les compilateurs seront soutenus et développés. Il suffit de regarder les Page github pour D . L'activité est forte et croissante. Le nombre de corrections de bogues arrive à un rythme rapide et je ne vois aucun signe de ralentissement.

11voto

Jonathan M Davis Points 19569

Je ne considère pas que D2 soit encore prêt pour la production, mais il s'en rapproche. La définition du langage est assez stable. Très peu de changements de rupture devraient avoir lieu à ce stade (bien que certains changements additifs destinés à aplanir les problèmes clés du langage puissent avoir lieu). Le développement du compilateur progresse très rapidement et de nombreux bogues sont corrigés. Mais à ce stade, si vous utilisez D2 de manière intensive, vous sera rencontrer des bogues de compilateur, en particulier si vous utilisez des fonctionnalités de langage plus récentes. De plus, toutes ces fonctionnalités n'ont pas encore été entièrement implémentées (par ex. alias this y inout ), alors que TDPL est en grande partie correct, mais Dmd est encore un peu en retard.

De plus, bien que la bibliothèque standard, Phobos, soit très bonne dans l'ensemble et qu'une grande partie soit stable, il s'agit toujours d'un travail en cours. Nous essayons d'éviter de provoquer des changements immédiats en soumettant les éléments que nous supprimons à la procédure de dépréciation appropriée (généralement 6 mois pour la dépréciation programmée et 6 mois pour la dépréciation avant la suppression complète), mais il arrive que des changements immédiats soient provoqués. faire se produisent (et parfois le compilateur provoque des changements de rupture pendant qu'il est travaillé). Dans certains cas, des modules entiers vont être révisés (par exemple std.xml et std.stream). Le plus gros ennui à cet égard est probablement std.container, qui est assez nouveau, ne contient pas encore grand-chose et pourrait faire l'objet d'une refonte importante lorsque Andrei Alexandrescu déterminera comment gérer la mémoire dans ce module. Ainsi, la prise en charge des conteneurs s'améliore mais est généralement insuffisante. Dans l'ensemble, une grande partie de Phobos est assez stable, mais ce n'est certainement pas gravé dans la pierre.

Il y a définitivement un support pour dmd et Phobos dans la mesure où si vous postez des choses sur le site de bugzilla ou les discuter sur le newsgroup Les gens sont généralement très serviables et les développeurs s'efforcent de corriger les bogues en temps utile, mais la plupart des personnes qui travaillent sur le projet le font pendant leur temps libre, ce qui peut parfois prendre un certain temps. Le passage à github a définitivement amélioré les choses. Je sais que Digital Mars fournit un support supplémentaire pour dmc si vous payez pour cela, mais je ne sais pas s'ils feront la même chose pour dmd. Je pense qu'il y a de fortes chances qu'ils le fassent (en tout cas, s'ils ne le font pas maintenant, je m'attends à ce qu'ils le fassent à l'avenir).

En ce qui concerne la qualité du compilateur, dmd utilise dmc de Digital Mars comme backend, et dmc est la plus récente incarnation du premier compilateur C++ à compiler du code nativement (par opposition à la traduction en C d'abord), et Walter Bright, le créateur de D, a travaillé dessus depuis qu'il l'a créé. Il est l'un des meilleurs auteurs de compilateurs et a créé un certain nombre d'optimisations qui sont devenues standard dans les compilateurs C++ (telles que Optimisation de la valeur de retour ), mais le dmc n'a pas beaucoup de personnes qui travaillent dessus, et il y a certains domaines dans lesquels il a pris du retard (comme les optimisations de la virgule flottante), et D est suffisamment nouveau pour qu'il y ait beaucoup de travail à faire pour l'optimiser. Au fur et à mesure que les bogues sont corrigés, je suis sûr que l'accent sera mis sur l'optimisation du langage et qu'il sera finalement au même niveau que le C++ dans la plupart des cas (et meilleur dans certains cas), mais pour l'instant, cela dépend vraiment de votre code. Parfois, D est à égalité, parfois non.

Certaines personnes faire utilisent D2 dans du code de production (en particulier, je sais qu'Adam D. Ruppe l'utilise pour le développement web avec les entreprises avec lesquelles il travaille - il est un posteur fréquent sur le newsgroup D), mais je ne pense pas qu'ils soient très nombreux, et ils évitent généralement les nouvelles fonctionnalités plus sophistiquées du langage (qui est généralement là où se trouvent les pires bogues). La stabilité du langage dépendra vraiment de ce que vous en ferez.

Le wiki a de bonnes informations sur le travail qui reste à faire, et ce récent fil de discussion sur le groupe de discussion a également de bonnes informations.

D est définitivement proche du point où je le considérerais comme prêt pour la production, mais il y a définitivement un certain risque à ce stade. C'est grand pour les loisirs, mais si votre gagne-pain en dépend, je ne sais pas si le risque en vaut la peine pour le moment. Mais ça se rapproche. Cela vaut probablement la peine de s'y intéresser, de l'essayer, de l'expérimenter, etc. Mais je ne me contenterais pas de plonger dans votre code de production et de tout convertir en D. Cela pourrait fonctionner parfaitement, mais peut-être pas. Je pense que dans un an, je serai en mesure de dire que D2 est prêt pour la production, mais je ne sais pas combien de temps avant cela je me sentirai à l'aise pour le dire.

5voto

he_the_great Points 3893

Eh bien, la recommandation générale pour tout langage est de ne pas réécrire une base de code existante. L'écriture d'un nouveau code ou la conversion de portions, où les bogues doivent être corrigés, peut être une bonne stratégie.

Le replay rapide et sale : Si vous devez demander, vous ne devriez pas encore utiliser D en production.

Certains ne considèrent pas D comme une amélioration et d'autres pensent qu'il restera dans les "sphères de l'insignifiance". L'examen de son histoire montre qu'elle a ce qu'il faut pour survivre.

Personnellement, si je devais lancer l'idée d'avoir un produit de production utilisant D, je l'envisagerais probablement :

  • La taille de l'équipe. Combien de développeurs doivent être formés sur D dans les premières étapes jusqu'à son achèvement.
  • Quelles bibliothèques seront nécessaires et aurons-nous le temps et la force de travail pour construire ou envelopper une bibliothèque.
  • Serions-nous capables de gérer les bugs de Parcheando dans les bibliothèques utilisées.
  • Une architecture qui n'est pas supportée par DMD serait-elle nécessaire ?

Ce sont des préoccupations qui feront partie de toute discussion, surtout pour un jeune langage comme D, qui a même rompu la compatibilité avec les bibliothèques existantes, ce qui fait qu'il n'a que 4 ans (et qu'il a toujours survécu). Je n'utilise pas d'autres compilateurs, donc ne pas avoir le support de DMD serait inquiétant, l'histoire des autres compilateurs n'est pas brillante et il est bon de savoir qu'il pourrait y avoir un autre compilateur sur lequel se rabattre. Bien sûr, si vous avez une équipe qui peut maintenir un compilateur...

Je pense que D peut être utilisé en production, mais c'est quelque chose qui devrait probablement être très contrôlé. Vous voudriez que quelqu'un qui connaît bien D fasse partie d'une équipe qui va fabriquer un produit de production avec, pour l'instant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X