web-dev-qa-db-fra.com

D est-il une alternative crédible à Java et C ++?

Le langage D est-il une alternative crédible à Java et C++? Que faudra-t-il pour devenir une alternative crédible? Dois-je prendre la peine de l'apprendre? Mérite-t-il d'être évangélisé?

La principale raison pour laquelle je demande, c'est qu'avec le nouveau standard C++ (c ++ 0x) presque ici, il est clair pour moi que le langage a bien dépassé le point de non-retour par rapport à quiconque l'a jamais compris. Je sais que C/C++ ne mourra jamais, mais à un moment donné, nous devons continuer. Même COBOL a fait son temps et Java a à bien des égards défait C++. Alors, quelle est la prochaine étape? D remplit-il la facture?

160
Mark Kegel

Ce qui détermine le succès et la popularité d'un langage de programmation pour le développement de logiciels réels n'est que partiellement lié à la qualité du langage lui-même. En tant que langage pur, D présente sans doute de nombreux avantages par rapport à C++ et Java. C'est à tout le moins une alternative crédible en tant que langue pure, toutes choses étant égales par ailleurs.

Cependant, d'autres choses importent pour le développement de logiciels - presque plus que le langage lui-même: portabilité (sur combien de plates-formes s'exécute-t-il), prise en charge du débogueur, IDE, qualité de bibliothèque standard, prise en charge de bibliothèque dynamique, des liaisons pour les API communes, la documentation, la communauté des développeurs, l'élan et le support commercial, pour n'en nommer que quelques-uns. À tous ces égards, D est désespérément derrière Java, C++ et C #. En fait, je dirais que c'est même derrière des langages dits de "scripting" comme Python, Perl, PHP, Ruby et même JavaScript à cet égard.

Pour être franc, vous ne pouvez tout simplement pas créer une application multiplateforme à grande échelle à l'aide de D. Avec une bibliothèque standard immature, aucun support dans aucun IDE moderne (il existe des plugins pour Visual Studio et Xamarin Studio/MonoDevelop), une prise en charge limitée des bibliothèques dynamiques/partagées et peu de liaisons vers d'autres langages, D n'est tout simplement pas une option aujourd'hui.

Si vous aimez ce que vous voyez de D, par tous les moyens, apprenez-le - cela ne devrait pas prendre longtemps si vous connaissez déjà Java et C++. Je ne pense pas que l'évangélisation serait utile - à ce point si D va réussir, ce dont il a vraiment besoin, c'est de plus de gens qui l'utilisent tranquillement et qui corrigent ses principaux défauts comme la bibliothèque standard et le support IDE.

Enfin, comme pour C++, alors que la plupart conviennent que le langage est trop complexe, des milliers d'entreprises utilisent avec succès le C++ dans le cadre d'un mélange sain de langues en n'autorisant qu'un sous-ensemble plus petit et bien défini du langage. Il est toujours difficile de battre C++ lorsque des performances brutes et une faible utilisation de la mémoire sont requises.

127
dmazzoni

Juste pour ajouter mes propres expériences au mélange:

Il y a environ un an, j'ai travaillé sur un projet de jeu à petite échelle (3 codeurs) d'une durée de 3 mois, où nous avons utilisé D comme langue principale. Nous l'avons choisi en partie comme expérience, en partie parce qu'il avait déjà des liaisons pour SDL et certains autres outils que nous utilisions, et surtout pour les avantages qui semblent avoir sur C++.

Nous avons adoré l'utiliser. C'était rapide à apprendre et facile à écrire. Beaucoup de ses fonctionnalités se sont révélées inestimables, et elles me manquent étant revenu au C++.

Cependant, les points suivants ont rendu notre vie plus difficile:

  1. Il n'y avait pas de bon IDE à l'époque, ce qui était un problème majeur. Nous avons fini par fabriquer le vôtre en personnalisant Scite. Cela a bien fonctionné, mais n'était pas idéal.
  2. Il n'y avait pas de débogueur à l'époque. Nous avons réussi à faire fonctionner WINDBG sur une base aléatoire, mais ce n'était pas fiable. Le débogage de code sans débogueur a parfois rendu la vie infernale.
  3. Il y avait 2 bibliothèques standard à choisir à l'époque (Tango et Phobos). Nous avons commencé avec l'un, nous sommes passés à l'autre et nous avions vraiment besoin d'un mélange de fonctionnalités des deux (Tangobos!). Cela a provoqué des maux de tête et une réécriture de code.
  4. Liaisons à d'autres outils non disponibles. À la fin, nous avons dû passer à DirectX (pour des raisons que je n'entrerai pas dans). Il n'y avait pas de liaisons disponibles pour DirectX, nous avons donc dû écrire les nôtres en C++, les créer en tant que .dll et les lier à cela. C'était un travail assez désagréable et a pris du temps.

Dans l'ensemble, nous avons adoré écrire D. Cela a rendu l'écriture de code facile et rapide à apprendre. Les problèmes que j'ai mentionnés font écho à la réponse qui a été acceptée pour cette question - ce sont les bits "supplémentaires" qui doivent être adressés en D, le noyau est solide.

105
xan

Je suis d'accord que le C++ devient un langage sans issue - et cela me fait mal de le dire, après l'avoir utilisé pendant les 17 dernières années.

Je pense que D est le successeur légitime de C++. Du point de vue de la langue, il "fait toutes les bonnes choses" (même si je ne suis pas d'accord avec chaque minute de décision). Je pense qu'avec C et C++ sur le déclin, il n'y a pas d'autre langage de niveau système qui puisse vraiment faire ce qu'il fait, tout en se tenant dans le monde des langages modernes - sauf D! Non seulement D remplit ce rôle, mais il excelle dans ce domaine! Un coup d'œil à D1.x devrait suffire à vous en convaincre - mais quand vous regardez D2.0, cela vous épate. À mon avis, il n'y a pas d'autre langage aujourd'hui qui fonctionne aussi bien que D2.0 pour combler les paradigmes de programmation impératifs et fonctionnels - ce qui ne fera que gagner en importance dans les années à venir.

Le manque d'acceptation générale - ou même de visibilité - ainsi que les bibliothèques à grande échelle et matures - sont un obstacle bien sûr. Cependant, je ne pense pas que vous puissiez le radier à cause de cela. Je suis convaincu que D will grandira pour devenir l'une des langues les plus importantes dans les prochaines années - et ceux qui le prennent au sérieux maintenant seront bien placés pour prendre la tête à ce moment-là vient.

Je pense que la différence va se produire en raison, en grande partie, de l'implication d'Andrei Alexandrescu. Cela ne doit en aucun cas discréditer Walter Bright, qui a fait un travail capital pour apporter D au monde. Mais Alexandrescu est une figure importante et convaincante de la communauté C++, et c'est de là que proviendront la plupart des commutateurs D potentiels. Et il a également apporté une contribution significative et importante à D2.0 dans son soutien à la programmation fonctionnelle.

Il peut encore s'avérer que D est voué à être le Betamax des langages au niveau des systèmes - mais mon argent est en train de tourner dans les deux prochaines années.

60
philsquared

J'aime que D soit l'œuvre d'un génie, principalement un seul esprit - Walter Bright, dont le compilateur Zortech était fantastique à l'époque.

En revanche, C++ est trop conçu par le comité, même si Bjarne est une influence. Trop de fonctionnalités supplémentaires et une nouvelle syntaxe étrange. Cette différence se reflète dans la facilité d'apprentissage et la facilité d'utilisation quotidienne, moins de bugs.

Les langages les plus cohérents conduisent à une meilleure productivité et à la joie du programmeur - mais c'est subjectif et discutable! (Je suppose que je devrais voter ma propre réponse)

21
DarenW

D est une bonne langue et décemment populaire , mais comme toutes les langues, ce n'est qu'un autre outil. L'outil à utiliser dépend du type de personne que vous êtes, de votre façon de penser, de l'environnement dans lequel vous travaillez, des restrictions des langues qui appliquent le programme et, surtout, du programme lui-même. Si vous avez le temps, je recommanderais certainement d'apprendre le pire scénario de D., vous ne l'utiliserez jamais. Plus probablement, vous apprendrez quels aspects de celui-ci vous aimez le plus, et dans quelles conditions il brille le plus, et en profiterez pour créer de nouveaux programmes.

Je recommanderais de regarder le tableau de comparaison D pour voir quelles sont les fonctionnalités de la langue et voir si cela vous convient.

15
Spodi

Le langage D est moderne. Aucune langue n'est parfaite et cela ne fait aucun doute. Mais les langues sont nées pour vous faciliter la vie. Là où le langage D par rapport au C++ a beaucoup de bonnes fonctionnalités, en termes de complexité. De nombreuses autres spécialités de combinaison de langues sont impliquées, ce qui aide les codeurs à coder plus rapidement, avec des fonctionnalités TOP introduites par d'autres langues. Veuillez également voir: pour plus de détails sur D et d'autres langues

  • D vs C++, est la compatibilité, où d'énormes langages C++ sont impliqués et nécessite une compatibilité avec D. D permet déjà une compatibilité à 100% avec C, ce qui est encore une bonne victoire.

  • D vs C++, C++ est à mon avis un langage très agréable, mais difficile à coder et prenant du temps, nécessite de plus en plus d'expérience pour réussir, mais D permet de faire de même avec simplicité

  • D vs C++, je ne sais pas si C++ le fait, mais D n'autorise aucune affectation de variable de restriction de type en utilisant "auto", ce qui est bien d'avoir une dynamique de variable, lorsque vous le souhaitez, vous pouvez faire un type strict

  • D vs C++, si vous avez une autre expérience linguistique, vous pouvez commencer directement avec elle, elle a une feuille de route d'apprentissage facile, et sa conception par une solide équipe expérimentée et le support de l'entreprise

  • D vs C++, la chose très agréable que j'ai trouvée de D, est le style de code, il donne l'apparence et la sensation exactement comme C/C++, tandis que le codage rappelle que je fais du C/C++ vraiment moderne qui a appelé D

Il y a beaucoup plus de bonnes raisons pour le langage D, il n'y a aucune raison de sous-estimer n'importe quelle langue, c'est toujours le choix de l'utilisateur.

10
YumYumYum

Cela dépend vraiment de vos besoins - des applications commerciales à grande échelle écrites en D do existent du côté serveur, et pour cela D (en utilisant généralement Tango/Mango) est un ajustement parfait, et vous êtes probablement pour pouvoir répondre à plus de demandes qu'avec n'importe quelle autre langue/plate-forme.

Pour des solutions plus spécialisées en termes de protocoles et d'interactivité (qui sont nombreuses), vous aurez plus de difficultés à trouver les bibliothèques nécessaires, et le manque d'outils risque de vous affecter davantage.

7
larsivi

D est assez impressionnant, et le livre d'Andrei à ce sujet est bien écrit. Mais comme d'autres l'ont dit, vous avez besoin des outils et du support de la plateforme. GDC peut, avec le temps, être la réponse aux deux.

Avez-vous vu cette?

"Le débogueur GNU ajoute le support du langage D": http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

En outre, le site digitalmars contient des pages sur l'interfaçage avec C et C++ (pour les bibliothèques dont vous ne pouvez pas vous passer). Je me demande s'il existe des outils qui, étant donné un fichier d'en-tête C, essayeront d'écrire les prototypes D.

Personnellement, je ne voudrais pas à ce stade pousser pour faire un grand projet en D, mais je utiliser D pour les outils internes, acquérir de l'expérience avec et en présenter d'autres.

La question initiale était de savoir si D est une alternative crédible à Java et C++. Je ne pense pas que D et Java vont vraiment beaucoup rivaliser dans la pratique; D est en concurrence avec C++ et maintenant Go. D'autres questions portent sur les différences entre D et Go, mais Go est généralement considéré comme plus facile à utiliser. Je soupçonne donc que l'avenir de D dépend beaucoup de la place qu'il lui reste pour respirer entre C++ , l'actuel roi de la colline, et Go, l'alternative beaucoup plus facile qui a le soutien de Google.

MISE À JOUR: Je viens de découvrir que mon chapitre préféré du livre d'Andrei , celui sur la concurrence, est disponible gratuitement en ligne. Vaut vraiment le détour!

Et voici une longue discussion sur les mérites/objectifs/approches relatifs de Go et D .

7
AmigoNico

Il semble que la question ait été répondue. D est le meilleur langage par rapport à C++.

La question de savoir si, à des fins pratiques, D a une meilleure infrastructure autour est secondaire.

En bref, si ce sont deux langues toutes nouvelles sans aucun support autour d'eux D est la meilleure langue, ergo c'est la meilleure langue.

4
vfclists

En tant que langage, j'ai toujours pensé que D était plus proche de C # que de C++. Pas dans les fonctionnalités et les bibliothèques, mais dans le "feeling". C'est beaucoup plus propre, plus agréable ... amusant (qu'en C++). À mon humble avis, le plus grand obstacle pour devenir une alternative crédible est les outils, l'IDE et le débogueur. Si D surmonte certains obstacles d'une utilisation/adoption répandue, davantage d'outils et de bibliothèques se manifesteront. (Je reviendrai moi-même en D, s'il y aura un IDE et un débogueur.)

4
gerleim

Fonctionne très bien pour mes propres projets pour animaux de compagnie. Je l'emploierais pour des projets d'employeurs mais pour ne pas savoir à quel point il serait difficile pour eux de trouver quelqu'un pour reprendre la source après avoir déménagé. Il n'y a aucune raison technique de l'éviter, du moins sur les plateformes prises en charge. (touchons du bois)

3
DarenW

Une approche consiste à rechercher des emplois dans votre région. Trouvez les emplois que vous aimeriez faire et voyez quelles compétences ils demandent. S'ils demandent C++ ou Ruby ou Oracle ou D, alors c'est la compétence qui est principalement pour vous aider à obtenir le travail que vous voulez.

3
Peter Lawrey

Cela ressemble à une langue très bien conçue; bien mieux que C - C++ - Objectif C. Je peux vivre sans un IDE ou un débogueur pendant un certain temps, mais pas sans une bonne bibliothèque documentée pour D 2.0.

Je reviendrai dans 6 mois ...

2
glen