• [^] # Re: SUN annonce Mad Hatter

    Posté par . En réponse à la dépêche SUN annonce Mad Hatter. Évalué à 3.

    Même sans parler d'utiliser les smart pointers de boost, [...]

    Je ne parlais pas de ceux de boost en particuliers, je me suis mal exprimé, je voulais parler des pointeurs intelligents en général (smartpointers ... mélanger le français et l'anglais dans un commentaire n'est pas une bonne idée) style auto_ptr de la lib standard. Il y'a surement d'autres implémentations de pointeurs intelligents mais j'avoue que je ne fais plus beaucoup de C++ et que je ne me tiens plus vraiment au courant.

    rien qu'en utilisant bien la bibltiohèque C++ et en n'utilisant de la mémoire dynamique qu'en dernier recours, on évite bien des pièges. Beaucoup de gens n'utilisent pas assez ce qu'a apporté C++, c'est compréhensible pour plein de raisons, mais ça fausse la comparaison à mon avis.

    Qu'on implémente des pointeurs intelligents qui comptent les références sur eux montre bien que ce n'est pas aussi évident et que des fois ce n'est pas une question de maitrise du C++ : par exemple une méthode qui lève une exception et qui execute donc le code correspondant à la place du code prévu, des pointeurs qui pointent sur null ... ce genre de choses, sans compter les erreurs d'étourderie, qu'on ne peut pas toujours éviter bon codeur ou mauvais, font qu'un code n'a pas le comportement attendu. C'est un refrain connu le programmeur responsable qui alloue et désalloue la mémoire parfaitement sans jamais une erreur mais dans la vraie vie c'est rare ... très rare. Quant à utiliser l'allocation dynamique qu'en dernier recours c'est à mon avis très illusoire dès qu'on a besoin de conteneurs tels que vector ce qui est le cas dans beaucoup de programmes (voire la majorité), supposons que je souhaite aficher une liste de comptes rapatriés d'une base je suis clairement obligé d'allouer dynamiquement une liste, ce n'est qu'un exemple mais il y'en a des centaines dans les programmes.

    Je suis d'accord avec toi pour dire que beaucoup de gens n'utilisent pas ce qu'a apporté le C++ mais ça n'enlève rien au fait que confier la gestion de la mémoire au programmeur n'est pas forcement une bonne idée et que justement Java corrige cette erreur (ça en induit d'autre comme par exemple quand la heap atteint le seuil de garbage collection trop vite et force le GC à s'executer dans des intervalles très courts ce qui impacte clairement la performance mais bon ce n'est pas le propos du thread). Pour moi le tort du C++ est clairement d'avoir voulu garder un rapport avec le C pour ne pas dépayser, Java a su au moins rompre l'héritage en utilisant un GC.