Moi je remarque surtout que des langages massivement plus lents que ça sont lourdement utilisés en production (Javascript, Ruby, PHP, Python, etc.),
Python n'utilise pas de garbage collector mais un compteur de référence, tout comme Swift et PHP. PHP a une fonction "GC", mais que de nom, c'est en réalité un simple détecteur de référence cyclique.
Ceci dit, je suis entièrement d'accord avec toi. Les languages à GC sont populaires, ils tendent à rendre le memory model des applications grand publique plus simple et plus safe et, j'ai envie de dire, c'est tant mieux !
Ce qui tend par contre à m'énerver, c'est cette légende populaire (largement véhiculé par le monde académique d'ailleurs) qui prétend que les garbages collectors ont un coût en terme de performance nulle, qu'ils sont une solution parfaite et sans effet de bords... et qu'ils vont tôt ou tard conquérir le monde et remplacer tous les langages à memory management fine grain, C inclu.
Je ne compte même plus le nombre de petit boutonneux sortis de l'école qui m'ont débalé ce genre d’âneries.
Non, tous les langages qui supporte un memory management sans GC ( C, C++, Rust, Ada, Swift, Python ) n'ont pas été inventé par des imbéciles. Il y a des raisons à un memory management manuel ou à un ref counter: un GC a un coût, en terme de performance, en terme de ressources ( 2x à 8x la quantité de mémoire ), en terme de déterminisme, en terme de latence.
Si ce coût est acceptable pour des services de petite et moyenne taille, il l'est beaucoup moins quand on parle de jeux videos, de 3D, d'application système lourde, de calcul scientifique ou simplement de systèmes embarqués.
Je pense qu'il serait bon d’arrêter l’hypocrisie et d'enseigner la programmation un poil plus pragmatiquement. Spécialement en ce qui concerne certains aspects comme le memory management ou le multi-theading.
[^] # Re: Destructeurs
Posté par Firwen (site web personnel) . En réponse à la dépêche Crystal, un langage proche de Ruby, en version 0.16. Évalué à 6. Dernière modification le 09 mai 2016 à 21:36.
Python n'utilise pas de garbage collector mais un compteur de référence, tout comme Swift et PHP. PHP a une fonction "GC", mais que de nom, c'est en réalité un simple détecteur de référence cyclique.
Ceci dit, je suis entièrement d'accord avec toi. Les languages à GC sont populaires, ils tendent à rendre le memory model des applications grand publique plus simple et plus safe et, j'ai envie de dire, c'est tant mieux !
Ce qui tend par contre à m'énerver, c'est cette légende populaire (largement véhiculé par le monde académique d'ailleurs) qui prétend que les garbages collectors ont un coût en terme de performance nulle, qu'ils sont une solution parfaite et sans effet de bords... et qu'ils vont tôt ou tard conquérir le monde et remplacer tous les langages à memory management fine grain, C inclu.
Je ne compte même plus le nombre de petit boutonneux sortis de l'école qui m'ont débalé ce genre d’âneries.
Non, tous les langages qui supporte un memory management sans GC ( C, C++, Rust, Ada, Swift, Python ) n'ont pas été inventé par des imbéciles. Il y a des raisons à un memory management manuel ou à un ref counter: un GC a un coût, en terme de performance, en terme de ressources ( 2x à 8x la quantité de mémoire ), en terme de déterminisme, en terme de latence.
Si ce coût est acceptable pour des services de petite et moyenne taille, il l'est beaucoup moins quand on parle de jeux videos, de 3D, d'application système lourde, de calcul scientifique ou simplement de systèmes embarqués.
Je pense qu'il serait bon d’arrêter l’hypocrisie et d'enseigner la programmation un poil plus pragmatiquement. Spécialement en ce qui concerne certains aspects comme le memory management ou le multi-theading.