|
Publicité ' | ||||||||||||||||||||||||
|
|
#201 | |
|
Inactif
Inscription : septembre 2008 Messages : 357 ![]() |
Citation:
Par contre, les GC ont fait des progrès tels qu'il n'existe plus d'application où il est préférable d'avoir une gestion manuelle de la mémoire. (à cet endroit là je devrais mettre un lien vers une vidéo d'une prez sur le GC et le temps réel, mais je ne l'ai pas sous la main... peut être ce soir si je n'ai pas oublié !) |
|
|
|
00
|
|
|
#202 | |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
Citation:
as-tu déjà entendu parlé de WCET ? si oui peux-tu expliquer l'absence de risque d'un GC dans ce domaine |
|
|
|
00
|
|
|
#203 |
|
Invité(e)
Messages : n/a ![]() |
|
00
|
|
|
#204 | |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
Citation:
si tu ne vois pas le rapport entre l'utilisation d'un GC et les problèmes de WCET... je te conseillerais juste de ne jamais faire de certification de code temps réel. à part dans ce domaine, ce n'est pas très important
|
|
|
|
00
|
|
|
#205 |
|
Invité(e)
Messages : n/a ![]() |
Le problème est-il intrinsèquement lié à la notion de GC, ou au fait que la plupart des implémentations ne soient pas "real time proof" ? J'ai vu une présentation sur un GC temps réel pour Java, et ça avait l'air de plutôt bien marcher, non ? Après, je ne sais pas quels sont exactement les garanties avancées par les concepteurs du système. Mais effectivement, le temps réel est loin d'être mon domaine !
|
00
|
|
|
#206 | |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
Citation:
disons que si l'on n'est pas trop contraignant, le JIT et le GC peuvent passer... mais en gros, on aura une puissance de calcul nettement supérieure au besoin réel afin de s'assurer d'un délai correct de réponses dans le pire des cas. cela aura un cout en terme de consommation électrique, de dissipation thermique, etc après si l'on doit vraiment faire petit, les GC ajoutent un offset dont on arrive à se passer grace à la gestion manuelle de la mémoire sur les softs utilisés en pratique (on ne fait pas tourner un ERP sur un micro-controleur, donc ça reste "simple") en outre, je ne comprends vraiment pas pourquoi tant de personnes crachent sur la gestion manuelle à la C++ et tous ces types de pointeurs, qui permettent justement de faire bien plus fiable d'un GC avec compteur de référence, et bien plus performant qu'un GC moderne |
|
|
|
00
|
|
|
#207 | ||
|
Invité(e)
Messages : n/a ![]() |
Citation:
Citation:
En revanche, "bien plus performant qu'un GC moderne", tu sors ça d'où? Il y a des tests fiable à ce sujet là ? Je me permets de me méfier de ce genre de phrase parce que ça sent un peu le "il faut écrire en assembleur parce que c'est bien meilleurs que le code produit par un compilo". Ensuite, un GC est un morceau de code très complexe, donc sujet à des erreurs, je ne dirai pas le contraire. Mais j'avoue avoir plus confiance en la qualité de ce morceau de code testé par des milliers (dans le cas de OCaml) ou des millions (dans le cas de Java) d'utilisateurs qu'en la qualité de la gestion manuelle spécifique à telle ou telle application. Je veux bien croire qu'un excellent programmeur parfaitement talentueux pourra obtenir un meilleur résultat avec une gestion manuelle de la mémoire (et encore...), mais pour le commun des mortels, j'ai de sérieux doutes. Il n'y a qu'à voir le nombre de programmes souffrant de fuite de mémoire ou encore la quantité de temps passé par certains à lire des résultats de Valgrind avant d'obtenir un programme correct. Et si on me répond "ce ne sont pas de bons programmeurs", peut être qu'il faut se faire une raison : on manque de "bons" programmeurs par rapport aux besoins informatiques, donc trouver des solutions pour permettre aux "moins bons" programmeurs de tout de même faire des programmes sûrs et fiables me semble être un but en soi. De plus, un GC est capable de faire de la désallocation par bloc, un mark and sweep pour défragmenter la mémoire, du traitement générationnel, etc etc. qui me semblent bien lourd à faire à la main. |
||
00
|
|
|
#208 | |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
Citation:
mais si on gère à la main, on a rarement besoin d'avoir des choses aussi lourdes |
|
|
|
00
|
|
|
#209 | |
|
Invité(e)
Messages : n/a ![]() |
Citation:
Mais on en revient un peu à ce que je disais tout à l'heure. Est ce qu'on n'a rarement besoin de ça parce que c'est intrinsèquement inutile ou parce que pour pouvoir gérer sa mémoire à la main on est bien obligé de se restreindre ? Que pour avoir une chance de comprendre ce qu'il se passe, il faut se priver d'un certain nombre de solutions potentiellement claires, élégantes, efficaces, rapides etc. ? Je parlais des structures avec partages (et il arrive qu'il y ait des cycles, donc les smarts pointers ne sont pas suffisant), mais on peut poser le même genre de questions avec les fermetures et les suspensions (faire du lazy et gérer sa mémoire à la main, miam..), ces petits bonheur de la programmation fonctionnelle. Bien sûr il est possible de programmer sans GC, la preuve, on le fait depuis longtemps |
|
00
|
|
|
#210 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : août 2003 Messages : 4 325 ![]() |
Parce que de nouveau tu n'as pas besoin de déterminisme sur les ressources encapsulées dans tes instances dont tu n'as plus besoin.
De mon point de vue, les GC (à la Java du moins) sont largement inférieurs au comptage de référence -- d'un autre côté, je n'ai pas de problème de cycles contrairement à toi visiblement (d'ailleurs, tu n'as jamais besoin de faire des RAZ de pointeurs pour aider ton GC à se dépatouiller de ses cycles ou pour améliorer le WCET probable ?)
__________________
FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++ Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. |
|
|
00
|
|
|
#211 |
|
Inactif
Inscription : septembre 2008 Messages : 357 ![]() |
De toute façon, ce n'est pas un débat quand on voit les arguments (tout le monde fait du temps réel tous les jours, c'est évident).
Quand les plus courageux se seront retroussés les manches et que C++ aura aussi sont GC (comme Stroustrup l'a suggéré soit dit en passant), tout le monde trouvera le GC génial. |
|
|
00
|
|
|
#212 | |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
Citation:
heureusement que l'informatique est l'un des rares domaines où les guerres de religion ne font pas de morts
|
|
|
|
00
|
|
|
#213 |
|
Inactif
Inscription : septembre 2008 Messages : 357 ![]() |
Ah les attaques personnelles ...
|
|
|
00
|
|
|
#214 |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
d'un côté tu prends les gens de haut en leur disant qu'ils ne sont que des moutons qui ne comprennent rien, mais qui suivront ce qui se fera quoi qu'il arrive... mais d'un autre, tu ne supportes pas qu'on te prenne pour une sorte d'intégriste. va falloir revoir ton point de vue... car la tolérance n'est pas une notion à sens unique
|
|
|
00
|
|
|
#215 |
|
Inactif
Inscription : septembre 2008 Messages : 357 ![]() |
Je n'ai pris personne de haut, je dis juste que les arguments que je vois ici n'en sont pas, ou alors que dans des cas très particuliers qui vous permette ensuite de justifier des généralités. Ce n'est pas ce que j'appelle un débat.
De plus, vus les progrès faits dans les GC, vus également la démocratisation des multicores, tous les langages à terme utiliseront des GC et ça ne dérangera plus du tout les intégristes d'aujourd'hui. |
|
|
00
|
|
|
#216 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : août 2003 Messages : 4 325 ![]() |
Citation:
Pour les curieux, le C++ en est là pour l'instant: http://open-std.org/jtc1/sc22/wg21/d...2008/n2670.htm Et sur ce sujet, il y a des discussions pointues et interminables sur clc++m. Quant aux arguments, cela fait longtemps que ce fil tourne en rond. Étrangement la seule vraie conclusion (There is no Silver bullet) tarde à être reconnue.
__________________
FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++ Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. |
|
|
|
00
|
|
|
#217 | |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
Citation:
le hic est que ce n'est pas parce que tu vois le multi-core et les 4 Go de Ram sur ton PC, qu'ils sont sur le point d'arriver dans tous les secteurs... et il faut savoir quand éviter de gaspiller son temps, quand adapter ce qui a été développé et testé depuis des dizaines d'années, etc en bref, quand être pragmatique, et se dire que le progrès c'est bien... mais que chacun doit le faire à son rythme
|
|
|
|
00
|
|
|
#218 | ||||
|
Invité(e)
Messages : n/a ![]() |
Citation:
Soyons honnête, ce que je dis pour la gestion manuelle de la mémoire va aussi dans l'autre sens. Quand on ne la gère jamais à la main, on met en place des méthodes potentiellement contraignantes et non naturelle pour faire différemment et plus lourdement ce qui serait trivial en gestion manuelle (comme la libération de certaines ressources naturellement liées à un objet). Ca ressemble d'ailleurs probablement aux méthodes mis en place pour la gestion de la mémoire. Mais pour prêcher pour ma paroisse, disons que c'est peut être plus local (uniquement pour les ouvertures de fichiers par exemple, ou les connexions réseau, pas pour tout :-)) Citation:
Citation:
Citation:
Pour ce qui est de la remise à zéro des pointeurs, je ne peux pas, j'utilise un langage qui ne fait pas ça :-) En OCaml, les variables ne le sont pas, et il n'y a pas de pointeur null ! Mais il me semble que le paradigme crée naturellement moins de "fuite de pointeur" (je n'ai évidement aucun chiffre à l'appui, ni même d'argument "formel", juste une sensation). La porté des variables est particulièrement bien définie, elles sont souvent locales à l'appel d'une fonction (ce qui en paradigme fonctionnel signifie qu'elles sont vraiment local puisque le corps d'une fonction est généralement plus petit que dans le cas d'un langage impératif), etc. |
||||
00
|
|
|
#219 |
|
Invité(e)
Messages : n/a ![]() |
En même temps quand on dit que les gens qui n'utilisent pas un GC sont des débiles, il ne faut pas s'attendre à avancer bien vite... Surtout que je ne connais pas luc, mais pour gorgonite, je te rassure, il a de vague notion de ce qu'est un bon langage à GC :-)
|
00
|
|
|
#220 | |
![]() ![]() Inscription : juin 2005 Messages : 8 570 ![]() |
Citation:
Toutefois, il a été décidé à la réunion du commité à Sophia-Antipolis en Juin dernier que le GC ne serait absolument pas d'actualité pour C++0x. En plus, avec des pointeurs intelligents dans la bibliothèque standard, ça peut attendre. Le comptage de référence et de manière plus générale les différents types de pointeurs intelligents, permettent mieux que le GC à moindre coût : le GC détruit les choses inutilisées un peu quand il veut et peut, de manière donc absolument non déterministe. Un smart pointer qui marche à compteur de références se détruira dès lors que plus personne ne se servira de lui. C'est déterministe. Il y a même des comportements plus personnalisés que ça... Voir pour ça les pointeurs intelligents de Boost ainsi que le modèle de pointeur intelligent de Loki, écrit pas Andrei Alexandrescu. Il est en fait paramétré par plusieurs politiques ce qui permet d'avoir un pointeur intelligent sur mesure pour notre besoin (puisqu'on peut nous même implémenter les politiques et les lui fournir). Je ne peux donc que soutenir les arguments de Luc.
__________________
/!\ A French community for Haskell /!\ Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++ Le guide pour bien débuter en C++ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com