J'ai récemment vu deux conférences sur les langages vraiment intéressantes et instructives :
La première par Herb Sutter, présente toutes les fonctionnalités intéressantes et cool de C++0x, pourquoi l'avenir de C++ semble plus brillant que jamais, et comment M$ est dit être un bon joueur dans ce jeu. La conversation tourne autour de l'efficacité et comment minimiser l'activité sur le tas améliore très souvent les performances.
L'autre, par Andrei Alexandrescu, motive une transition de C/C++ vers son nouveau changement de jeu D. La plupart des choses de D semblent vraiment bien motivées et conçues. Une chose, cependant, m'a surpris, à savoir que D pousse pour la collecte des ordures et que toutes les classes sont créées uniquement par référence. Encore plus déroutant, le livre The D Programming Language Ref Manuel spécifiquement dans la section sur Resource Management déclare ce qui suit, citation:
La collecte des ordures élimine le code fastidieux et sujet aux erreurs de suivi de l'allocation de mémoire nécessaire en C et C++. Cela signifie non seulement un temps de développement beaucoup plus rapide et des coûts de maintenance plus bas, mais le programme résultant fonctionne fréquemment plus rapidement!
Cela entre en conflit avec le discours constant de Sutter sur la minimisation de l'activité sur le tas. Je respecte vivement les idées de Sutter et d'Alexandrescou, donc je me sens un peu confus concernant ces deux questions clés
-
Le fait de créer des instances de classe uniquement par référence ne se traduit-il pas par beaucoup d'activité inutile sur le tas?
-
Dans quels cas pouvons-nous utiliser la collecte des ordures sans sacrifier les performances en temps d'exécution?