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 évangéliser?
La principale raison pour laquelle je pose la question 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 avancer. Même COBOL a fait son temps et Java a à bien des égards défait le C ++. Alors, quelle est la prochaine étape? Est-ce que D remplit la facture?
Réponses:
Ce qui détermine le succès et la popularité d'un langage de programmation pour le développement de logiciels dans le monde réel n'est que partiellement lié à la qualité du langage lui-même. En tant que langage pur, D a sans doute de nombreux avantages par rapport à C ++ et Java. À tout le moins, c'est une alternative crédible en tant que langage pur, toutes choses égales par ailleurs.
Cependant, d'autres choses comptent pour le développement logiciel - 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, prise en charge de l'IDE, qualité de la bibliothèque standard, prise en charge de la bibliothèque dynamique, liaisons pour les API communes, documentation, le développeur soutien communautaire, dynamique et commercial, pour n'en nommer que quelques-uns. Dans chacun de ces aspects, D est désespérément derrière Java, C ++ et C #. En fait, je dirais que c'est même derrière les soi-disant langages 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,
aucune prise en charge dans les IDE modernes(il existe des plugins pour Visual Studio et Xamarin Studio / MonoDevelop), limité support de bibliothèque dynamique / partagée, et peu de liaisons avec 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 stade, si D veut réussir, ce dont il a vraiment besoin, c'est que plus de gens l'utilisent silencieusement et résolvent ses principales lacunes 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 C ++ dans le cadre d'un mélange sain de langages 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 nécessaires.
la source
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 utilisions D comme langue principale. Nous l'avons choisi en partie comme une 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 qu'il semble avoir par rapport au C ++.
Nous avons adoré l'utiliser. C'était rapide à apprendre et facile à écrire. Beaucoup de ses fonctionnalités se sont avérées inestimables, et elles me manquent étant retournées au C ++.
Cependant, les points suivants ont rendu nos vies plus difficiles:
Dans l'ensemble, nous avons adoré écrire D. Cela a rendu l'écriture de code facile et a été 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 cœur de celui-ci est solide.
la source
Je suis d'accord que C ++ est en train de devenir un langage sans issue - et cela me peine 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 tout ce qu'il faut» (même si je ne suis pas d'accord avec chaque minute de décision). Je pense qu'avec le déclin du C et du C ++, il n'y a pas d'autre langage de niveau système qui puisse vraiment faire ce qu'il fait, tout en se tenant debout dans le monde des langages modernes - sauf D! Non seulement D remplit ce rôle - il y excelle! Un coup d'œil à D1.x devrait suffire à vous en convaincre - mais lorsque vous regardez D2.0, cela vous épate. Je suis d'avis qu'il n'y a pas d'autre langage aujourd'hui qui fonctionne aussi bien que D2.0 pour relier les paradigmes de programmation impératifs et fonctionnels - ce qui ne fera que devenir plus significatif dans les années à venir.
Le manque d'acceptation générale - ou même de visibilité - ainsi que les bibliothèques matures à grande échelle - sont un obstacle bien sûr. Cependant, je ne pense pas que vous puissiez l'annuler à cause de cela. Je suis convaincu que D va se développer pour devenir l' une des langues les plus importantes autour dans les prochaines années - et ceux qui prennent ce vont être bien placé au sérieux maintenant prendre la tête le moment venu.
Je pense que la différence sera due, en grande partie, à l'implication d'Andrei Alexandrescu. Cela ne discrédite en aucun cas Walter Bright, qui a fait un travail considérable pour amener D au monde. Mais Alexandrescu est une figure importante et convaincante de la communauté C ++ - et c'est de là que la plupart des commutateurs D potentiels vont venir. Et il a également apporté une contribution significative et importante à D2.0 dans son soutien à la programmation fonctionnelle.
Il se peut encore que D soit condamné à être le Betamax des langages de niveau système - mais mon argent est là pour tourner dans les deux prochaines années.
la source
J'aime que D soit le travail d'un génie, avant tout d'un esprit - Walter Bright, dont le compilateur Zortech était fantastique en son temps.
En revanche, C ++ est trop conçu par un comité, même si Bjarne est une influence. Trop de fonctionnalités complémentaires et une nouvelle syntaxe étrange. Cette différence se traduit par la facilité d'apprentissage et la facilité d'utilisation au quotidien, moins de bugs.
Les langages plus cohérents conduisent à une meilleure productivité et à la joie des programmeurs - mais c'est subjectif et discutable! (Je suppose que je devrais voter ma propre réponse)
la source
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 de langues qui s'appliquent au programme et, surtout, au programme lui-même. Si vous avez le temps, je vous recommande vivement d'apprendre D. Le pire des cas, vous ne l'utiliserez jamais. Plus probablement, vous apprendrez quels sont les aspects que vous aimez le plus, et dans quelles conditions il brille le plus, et en profiterez pour créer de nouveaux programmes.
Je recommanderais de consulter le tableau de comparaison D pour voir quelles sont les fonctionnalités de la langue et voir si cela vous convient.
la source
Le langage D est moderne. Aucune langue n'est parfaite et cela ne fait aucun doute. Mais les langues sont nées pour rendre la vie plus facile. 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. S'il vous plaît voir aussi: pour plus de détails sur D et d'autres langues
D vs C ++, c'est la compatibilité, où d'énormes langages C ++ sont impliqués et nécessitent une compatibilité avec D. D permettent 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 sympa, mais difficile à coder, et prend 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 suis pas sûr que C ++ le fasse, mais D n'autorise aucune affectation de variable de restriction de type en utilisant "auto", ce qui est bon d'avoir une variable dynamique, lorsque vous le souhaitez, vous pouvez créer un type strict
D vs C ++, si vous avez une autre expérience linguistique, vous pouvez commencer directement avec lui, il a une feuille de route d'apprentissage facile, et il est conçu par une équipe expérimentée et le support de l'entreprise
D vs C ++, la très belle chose que j'ai trouvée de D, est le style de code, il donne l'apparence et la sensation exactement les mêmes que C / C ++, tout en codant cela 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 une langue, c'est toujours le choix de l'utilisateur.
la source
Cela dépend vraiment de vos besoins - des applications commerciales à grande échelle écrites en D do exister sur le côté serveur, et que D (typiquement en utilisant Tango / Mango) est un ajustement parfait, et vous êtes susceptibles d'être en mesure de servir plus de demandes qu'avec toute autre langue / plateforme.
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 est susceptible de vous affecter davantage.
la source
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 plate-forme. GDC peut, au fil du temps, être la réponse aux deux.
Avez-vous vu cette?
«Le débogueur GNU ajoute la prise en charge 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 traitant de l'interfaçage avec C et C ++ (pour les bibliothèques dont vous ne pouvez tout simplement pas vous passer). Je me demande s'il existe des outils qui, étant donné un fichier d'en-tête C, tenteront d'écrire les prototypes D.
Personnellement, je ne voudrais pas à ce stade pousser pour faire un grand projet en D, mais je le ferais utiliser D pour les outils en interne, acquérir de l' expérience avec elle et en introduisant d' autres à lui.
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 rivaliser dans la pratique; D est en concurrence avec C ++ et maintenant Go. D'autres questions abordent 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 marge de manœuvre qui lui reste pour respirer entre C ++, l'actuel roi de la colline, et Go, l'alternative beaucoup plus facile qui bénéficie du 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 discussion Loooong sur les mérites relatifs / objectifs / approches de Go et D .
la source
Il semble que la question ait été répondue. D est le meilleur langage par rapport au C ++.
La question de savoir si, à des fins pratiques, D dispose d'une meilleure infrastructure autour est secondaire.
Bref, si ce sont tous les deux de nouvelles langues sans aucun support autour d'elles, D est la meilleure langue, ergo c'est la meilleure langue.
la source
En tant que langage, j'ai toujours pensé que D était plus proche du C # que du C ++. Pas dans les fonctionnalités et les bibliothèques, mais dans le "feeling". C'est beaucoup plus propre, plus agréable ... amusant (que C ++). IMHO le plus grand obstacle à devenir une alternative crédible est les outils, l'IDE et le débogueur. Si D surmonte certains obstacles d'une utilisation / adoption généralisée, davantage d'outils et de bibliothèques se manifesteront. (Je reviendrai moi-même sur D, s'il y a un IDE et un débogueur utilisables.)
la source
Fonctionne très bien pour mes propres projets pour animaux de compagnie. Je l'utiliserais pour les projets des employeurs mais pour ne pas savoir à quel point il leur serait difficile de trouver quelqu'un pour reprendre la source après mon départ. Il n'y a aucune raison technique de l'éviter, du moins sur les plateformes prises en charge. (touchons du bois)
la source
Une approche consiste à rechercher des emplois dans votre région. Trouvez les emplois que vous aimeriez faire et voyez quelles compétences ils recherchent. S'ils demandent C ++ ou Ruby ou Oracle ou D, c'est la compétence qui est principalement pour vous aider à obtenir l'emploi que vous voulez.
la source
Cela ressemble à un langage très bien conçu; bien mieux que C - C ++ - Objective C. Je peux vivre sans IDE ou débogueur pendant un certain temps, mais pas sans une bonne bibliothèque documentée pour D 2.0.
Je reviendrai dans 6 mois ...
la source