Moi je suis biensur pour l'utilisation d'un GC dans la majorité des dev.
Certes ce n'est pas adapté à tous les types de projets mais depuis le temps s'il y avait une techno ou un langage qui convenait à tout type de projet ça se saurait
Tout d'abord je ne suis absolument pas d'accord quand je lis : "avec le GC on doit quand même faire attention à sa mémoire alors autant gérer toute la mémoire par le code de A à Z".
La gestion correcte de la mémoire en C++ demande la mise en place de patherns spécifiques, de l'expérience, du temps et pas mal de réflexion en amont sur un gros projet.
Quand on utilise un GC c'est assez simple : je casse les références entre les objets que je n'utilise plus.
Quand je lis que le GC "débarque" et fait exploser le CPU, je trouve que certain en font un peu trop . Dans la majorité des cas la libération de la mémoire se fait de manière transparente en utilisant trés peu de ressources processeur car la priorité du GC est trés faible. Donc à moins d'avoir une applis sur un serveur qui pousse les ressources systèmes dans ses retranchement je n'ai jamais vu de ralentissement flagrant d'applis à cause du GC collect.
Ce qui peut faire peur c'est la consomation mémoire d'une applis qui peut sembler excessive, mais en fait les GC allouent souvent plus de mémoire que nécéssaire afin d'éviter de faire beaucoup de petites réallocations. En .NET si le système à besoin de mémoire il peut même demander au GC de libérer ce qu'il à alloué mais qu'il n'utilise pas.
En .NET on peut forcer le GC à passer avec la commande GC.Collect().
Forcément une utilisation abusive n'est pas conseillée mais ça permet de voir l'impact qu'a le passage du garbage collector sur les performances de l'applis. Franchement pas de quoi paniquer, quand mon anti-virus se met à jours automatiquement ça me consomme plus de ressources sur mon pc
Alors aprés je dis pas que ce qui ont énormément d'expérience en C++ avec leurs paterns tout pret vont pas forcément gagner du temps avec l'utilisation d'un GC.
Mais pour une écrasante majoritée des développeurs le GC apporte une certainne sécurité au niveau de la gestion de la mémoire (optimisation, gestion des ressources, sécurité du code). Comme avec toutes les technologies il ne faut pas faire n'importe quoi avec mais le GC permet de plus réfléchir à l'architecture et au code métier sans ce soucier de la mémoire.
C'est d'ailleur la tendance du moment la partie "système" (mémoire, processeur, os, ...) ne doit plus préocuper le développeur. Java et .NET ou globalement le code managé doit permettre de faire abstraction du système cible.
Certes si on veut absolument les meilleures performances possibles il faudra toujours resté proche du système mais ça a un coût. Le GC fait gagner du temps et le temps c'est de l'argent. Alors si je peux faire avec un GC je fais avec
Partager