Question

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

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

Était-ce utile?

La solution

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 présente sans aucun 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 étant égales par ailleurs.

Cependant, le développement logiciel a une importance capitale - presque plus que le langage lui-même: portabilité (nombre de plates-formes utilisées), prise en charge du débogueur, prise en charge de l'EDI, qualité des bibliothèques standard, prise en charge des bibliothèques dynamiques, liaisons pour les API communes, documentation , la communauté des développeurs, l’élan et le support commercial, pour n'en nommer que quelques-uns. À chacun de ces égards, D est désespérément derrière Java, C ++ et C #. En fait, je dirais même que cela se cache derrière ce qu'on appelle le "scripting". langages comme Python, Perl, PHP, Ruby et même JavaScript dans ces domaines.

Pour être franc, vous ne pouvez tout simplement pas créer une application multi-plateforme à grande échelle avec D. Avec une bibliothèque standard immature, ne prend en charge aucun IDE moderne (il existe des plugins pour les deux Visual Studio et Xamarin Studio / MonoDevelop), prise en charge limitée des bibliothèques dynamiques / partagées et peu de liaisons vers d’autres langues, D n’est tout simplement pas une option à l’heure actuelle.

Si vous aimez ce que vous voyez de D, je vous en prie, 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 doit réussir, ce dont elle a vraiment besoin, c'est d'un plus grand nombre de personnes qui l'utilisent en silence et corrigent ses principales lacunes telles que la bibliothèque standard et le support IDE.

Enfin, comme pour le C ++, bien que la plupart des gens s’accordent à dire que le langage est trop complexe, des milliers d’entreprises utilisent avec succès le C ++ dans le cadre d’une combinaison judicieuse de langages en ne permettant qu’un sous-ensemble plus petit et bien défini du langage. Il est toujours difficile de battre le C ++ lorsque des performances brutes et une faible utilisation de la mémoire sont nécessaires.

Autres conseils

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é le D comme langue principale. Nous l'avons choisi en partie à titre d'expérience, en partie parce qu'il contenait déjà des liaisons pour SDL et quelques autres outils que nous utilisions, et principalement 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 révélées inestimables et elles me manquent depuis que je suis retourné 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 créer le nôtre en personnalisant Scite. Cela a fonctionné correctement, mais ce 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 un débogueur a parfois rendu la vie infernale.
  3. Il y avait 2 bibliothèques standard au choix à la fois (Tango et Phobos). Nous avons commencé avec l’un, basculé vers l’autre, et nous avions réellement besoin d’un mélange de fonctionnalités (Tangobos!). Cela a provoqué des maux de tête et une réécriture du code.
  4. Les liaisons avec d'autres outils ne sont pas disponibles. À la fin, nous avons dû passer à DirectX (pour des raisons que je n'entrerai pas dans les détails). Aucune liaison pour DirectX n'étant disponible, nous avons donc dû écrire notre propre fichier en C ++, le construire en tant que fichier .dll et le lier à celui-ci. C’était un travail assez pénible et qui prenait du temps.

Dans l’ensemble, nous aimions écrire D. Cela simplifiait réellement l’écriture de code et était rapide à apprendre. Les questions que j'ai mentionnées font écho à la réponse qui a été acceptée pour cette question - c'est le "extra" bits nécessitant un adressage en D, le noyau est solide.

Je conviens que le C ++ est en train de devenir un langage sans issue - et cela me fait de la peine de dire qu'après l'avoir utilisé pendant 17 ans.

Je pense que D est le successeur légitime du C ++. Du point de vue de la langue, il "fait tout ce qui est juste" (même si je ne suis pas d'accord avec chaque décision minute). Je pense qu'avec le déclin du C et du C ++, il n'y a pas d'autre langage système capable de faire ce qu'ils font, tout en se tenant dans le monde des langages modernes - à l'exception de D! Non seulement D remplit ce rôle - il y excelle! Un coup d’œil sur D1.x devrait suffire à vous convaincre de cela - mais quand vous regardez D2.0, vous en serez ébloui. J’estime qu’aucun autre langage d’aujourd’hui ne fonctionne aussi bien que D2.0 pour établir un lien entre les paradigmes de programmation impératifs et fonctionnels - qui ne feront que devenir plus significatifs dans les années à venir.

Le manque d'acceptation par le grand public - 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 l'écrire pour cette raison. Je suis convaincu que D deviendra l'un des langages les plus importants dans les prochaines années - et ceux qui le prennent au sérieux maintenant seront bien placés pour prendre les devants à ce moment-là. vient.

Je pense que la différence sera due en grande partie à l'implication d'Andrei Alexandrescu. Cela ne doit en aucun cas discréditer Walter Bright, qui a fait un travail important pour amener D au monde. Mais Alexandrescu est une figure importante et convaincante dans la communauté C ++ - et il y a d’où proviendront la plupart des commutateurs D potentiels. Et il a également apporté une contribution importante et significative à D2.0 dans son soutien à la programmation fonctionnelle.

Il est encore possible que D soit condamné à être le Betamax des langages de niveau système - mais mon argent est en train de tourner dans les deux prochaines années.

J'aime le fait que D soit l’œuvre d’un génie, au premier chef un esprit - Walter Bright, dont le compilateur Zortech était fantastique à son époque.

En revanche, C ++ est trop conçu par un 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 plus cohérents améliorent la productivité et la joie des programmeurs - mais c’est subjectif et discutable! (Je suppose que je devrais voter ma propre réponse vers le bas)

D est un bon langage et relativement populaire . , mais comme toutes les langues, c’est juste 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 dans lesquelles le programme est appliqué et, plus important encore, du programme lui-même. Si vous avez le temps, je recommanderais certainement d'apprendre D. Le pire scénario, vous ne l'utiliserez jamais. Il est plus probable que vous appreniez quels aspects de celui-ci vous plaisent le plus et dans quelles conditions il brille de mille feux, et en tirez parti lorsque vous créez de nouveaux programmes.

Je vous conseillerais de consulter le tableau de comparaison pour connaître les fonctionnalités. sont pour la langue et voir si cela sonne juste pour vous.

Le langage D est moderne. Aucune langue n'est parfaite, et cela ne fait aucun doute. Mais les langues naissent pour rendre la vie plus facile. Où le langage D comparé au C ++ a beaucoup de bonnes fonctionnalités, en termes de complexité. Beaucoup d'autres spécialités de combinaisons de langues sont impliquées, ce qui aide les codeurs à coder plus rapidement, avec les fonctionnalités TOP introduites par d'autres langues. S'il vous plaît voir aussi: pour plus d'informations sur D et d'autres langues

  • D vs C ++, c’est la compatibilité, où d’énormes langages C ++ sont impliqués et nécessite une compatibilité avec D. D autorisons déjà une compatibilité à 100% avec C, ce qui est tout de même une bonne victoire.

  • D vs C ++, le C ++ est à mon avis un très beau langage, mais difficile à coder et prenant beaucoup de temps, il nécessite de plus en plus d’expérience pour réussir, mais D permet de faire la même chose avec simplicité

  • D vs C ++, je ne suis pas sûr que C ++ le permette, mais D n'autorise aucune affectation de variable de restriction de type avec "auto", ce qui est bien d'avoir une variable dynamique, si nécessaire, vous pouvez créer un type strict

  • D vs C ++, si vous avez une autre expérience linguistique, vous pouvez vous en servir, il a une feuille de route pour l’apprentissage et il est conçu par une solide équipe expérimentée et le soutien de la société

  • D vs C ++, la très belle chose que j’ai trouvée de D, c’est le style du code, il donne exactement le même aspect que C / C ++, tout en codant cela me rappelle que je fais du C / C ++ très moderne qui a appelé D

Il y a beaucoup plus de bonnes raisons pour le langage D, il n’ya aucune raison de sous-estimer un langage, c’est toujours le choix de l’utilisateur.

Cela dépend vraiment de vos besoins - des applications commerciales à grande échelle écrites en D existe-t-il sur le serveur, et pour cela, D (généralement avec Tango / Mango) convient parfaitement, vous serez probablement en mesure de répondre à plus de demandes qu'avec toute autre langue / plate-forme.

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

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. Au fil du temps, GDC pourrait être la solution à ces deux problèmes.

Avez-vous vu cela?

"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

De plus, le site digitalmars contient des pages traitant de l’interfaçage entre C et C ++ (pour les bibliothèques sans lesquelles vous ne pouvez pas vivre). Je me demande s’il existe des outils qui, à partir d’un fichier d’en-tête en C, prendront le risque d’écrire les prototypes D.

Personnellement, à ce stade-ci, je n’insisterais pas pour un grand projet en D mais j’aimerais utiliser D pour créer des outils internes, acquérir de l’expérience 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 concurrencer beaucoup dans la pratique; D est en concurrence avec C ++ et va maintenant. D'autres questions traitent des différences entre D et Go, mais Go est généralement considéré comme plus facile à utiliser. Je suppose donc que l'avenir de D dépend beaucoup de la marge de manœuvre dont il dispose pour respirer entre C ++, l'actuel roi de la colline, et Go, l'alternative beaucoup plus simple bénéficiant du soutien de Google.

UPDATE: Je viens de découvrir que mon chapitre préféré du livre de Andrei , celui sur la concurrence, est disponible gratuitement en ligne. Vaut vraiment la peine d'être lu!

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

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

La question de savoir si, pour des raisons pratiques, D dispose d’une meilleure infrastructure est secondaire.

En bref, s’ils sont tous deux de nouvelles langues sans aucun support autour d'eux, D est la meilleure langue, bien qu’elle soit la meilleure.

En tant que langage, j’ai toujours pensé que D était plus proche de C # que C ++. Pas dans les fonctionnalités et les bibliothèques, mais dans le "sentiment". C'est beaucoup plus propre, plus agréable ... amusant (que C ++). À mon humble avis, les outils, l’IDE ??et le débogueur sont le principal obstacle à la création d’une alternative crédible. Si D surmonte certains obstacles liés à une utilisation / adoption généralisée, davantage d'outils et de bibliothèques se manifesteront. (Je reviendrai moi-même en D, s'il y aura un IDE utilisable et un débogueur.)

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 prendre en charge la source après mon départ. Il n'y a aucune raison technique pour l'éviter, du moins sur les plates-formes prises en charge. (touchez du bois)

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 ++, Ruby, Oracle ou D, c'est la compétence qui vous aidera principalement à trouver le travail que vous souhaitez.

Cela ressemble à un langage très bien conçu; bien meilleur que C - C ++ - Objective C. Je peux vivre sans IDE ni débogueur pendant un moment, mais pas sans une bonne bibliothèque documentée pour D 2.0.

Je reviens dans 6 mois ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top