Outils pour utilisateurs

Outils du site


d

Complexité du langage

D n'est pas beaucoup plus simple que le C++ qu'il prétend remplacer. Il faut des années de pratique pour le connaître, et le langage évolue en permanence. La rétro-compatibilité n'est absolument pas assurée, même en cas de “feature-freeze” et rien ne compile du premier coup.

Il est quasiment impossible d'écrire du code compatible à la fois avec D1 et D2. D'ailleurs beaucoup envisagent de ne pas faire la transition. Pas mal de choses ne sont documentées nulle part et DMDFE sert de spécification ad-hoc.

Complexité de l'éco-système

Il existe une bonne dizaine de build tools plus ou moins buggés, et la communauté est fragmentée selon le compilateur + bibliothèque standard utilisée.

  • D1 + Phobos
  • D1 + Tango
  • D2 + Phobos
  • LDC + Tango (linux-only)

De plus certaines choses laissent à penser que Tango ne sera jamais porté vers D2 et que la communauté va se déchirer.

Les opérateurs == et is

Personne ne sait vraiment ce que font == et is, ni lequel appeler dans quelles circonstances. Par exemple, il faut comparer des références d'objets avec is, et on peut utiliser les deux pour des pointeurs.

Pas d'implicit cast

Contrairement au C++ un constructeur ou une surcharge de l'opérateur de cast ne crée pas de cast implicit, ce qui est à la fois un avantage et un inconvénient.

Documentation

La documentation et les exemples sont le plus souvent assez vieux, et seule l'expérience permet de savoir que :

  • le type “bit” a été remplacé par “bool”
  • “inout” a été remplacé par “ref”
  • le mot-clef “invariant” de D2 a été remplacé par “immutable”

Les critiques

http://www.jfbillingsley.com/blog/?p=53 (certaines critiques sont maintenant invalides)

http://h3.gd/devlog/?p=16 (ditto)

http://h3.gd/devlog/?p=22 (appel au fork !)

d.txt · Dernière modification: 2013/05/06 13:23 (modification externe)