Je travaille en bioinformatique en D. Pour moi, l'essentiel à propos de D est qu'il adopte une approche très équilibrée des compromis et reconnaît le principe des rendements décroissants.
Contrairement au C ++, qui adhère rigoureusement au principe de zéro surcoût, D autorise des fonctionnalités qui peuvent avoir un faible coût en termes de performances / d'espace si elles rendent le langage beaucoup plus utilisable. Ceux-ci incluent le garbage collection, un objet de surveillance pour chaque classe, des informations sur le type d'exécution, etc.
Contrairement à Ruby, Python, PHP, etc., D essaie d'être presque aussi rapide que C, même s'il est moins dynamique et légèrement plus difficile à programmer que les langages de script.
Le résultat est un langage optimal lorsque le temps de développement et le temps d'exécution comptent à peu près également, ce qui dans mon domaine est la plupart du temps.
De même, D adopte une approche très équilibrée de la sécurité par rapport à la flexibilité. Cela suppose que les programmeurs savent ce qu'ils font, mais font des erreurs.
Contrairement à C et C ++, il suppose que vous ne voulez pas utiliser de pointeurs, de casts non sécurisés, de gestion manuelle de la mémoire, etc. partout dans votre code, car ils sont sujets aux erreurs et suppose que vous ne voulez pas passer au crible plusieurs -des messages d'erreur de modèle de page lorsque vous vous trompez juste pour utiliser des tableaux redimensionnables.
Contrairement à Java et à d'autres langages de bondage et de discipline, D suppose que parfois les pointeurs, les casts dangereux, la gestion manuelle de la mémoire, etc. sont un mal nécessaire, et suppose que vous êtes assez intelligent pour gérer de vrais modèles, la surcharge d'opérateurs, etc. sans écrire. code obscurci. Cela suppose également que vous pouvez bousiller et accéder à un tableau hors des limites, mais que le programmeur sait le mieux quel compromis devrait être fait entre sécurité et vitesse dans une situation donnée. Par conséquent, si les tableaux sont des limites vérifiées est simplement déterminé par un commutateur de compilateur.