Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction
ordonnée par GC" est-il plus aléatoire - donc plus problématique - que
l'évènement "destruction suite à clic sur bouton de fermeture" ?
Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction
ordonnée par GC" est-il plus aléatoire - donc plus problématique - que
l'évènement "destruction suite à clic sur bouton de fermeture" ?
Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction
ordonnée par GC" est-il plus aléatoire - donc plus problématique - que
l'évènement "destruction suite à clic sur bouton de fermeture" ?
Ca me paraît bizarre qu'il ait fait une erreur ;-)
Bof. C'est un type assez fort, mais c'est un être humain quand
même. C'est assez fréquent de trouver des erreurs dans des livres,
même des livres des auteurs compétents. Je trouve, d'ailleurs, que
c'est assez fréquent que lorsqu'un auteur explique une chose, il a
une tendance à oublier les autres aspects. Stroutrup s'en tire mieux
que la plupart à cet égard, mais ça ne veut pas dire qu'il est
parfait.
Le plus simple, c'est de lui écrire un email et le lui démander :
comment on fait pour vérifier des erreurs éventuelles detectées
lors de la fermaturer si la fermature a lieu dans le destructeur ?
(Et que penser de cette technique si on a paramètré les ostream
pour lever une exception en cas d'erreur ?) Il ne mord pas.
Ca me paraît bizarre qu'il ait fait une erreur ;-)
Bof. C'est un type assez fort, mais c'est un être humain quand
même. C'est assez fréquent de trouver des erreurs dans des livres,
même des livres des auteurs compétents. Je trouve, d'ailleurs, que
c'est assez fréquent que lorsqu'un auteur explique une chose, il a
une tendance à oublier les autres aspects. Stroutrup s'en tire mieux
que la plupart à cet égard, mais ça ne veut pas dire qu'il est
parfait.
Le plus simple, c'est de lui écrire un email et le lui démander :
comment on fait pour vérifier des erreurs éventuelles detectées
lors de la fermaturer si la fermature a lieu dans le destructeur ?
(Et que penser de cette technique si on a paramètré les ostream
pour lever une exception en cas d'erreur ?) Il ne mord pas.
Ca me paraît bizarre qu'il ait fait une erreur ;-)
Bof. C'est un type assez fort, mais c'est un être humain quand
même. C'est assez fréquent de trouver des erreurs dans des livres,
même des livres des auteurs compétents. Je trouve, d'ailleurs, que
c'est assez fréquent que lorsqu'un auteur explique une chose, il a
une tendance à oublier les autres aspects. Stroutrup s'en tire mieux
que la plupart à cet égard, mais ça ne veut pas dire qu'il est
parfait.
Le plus simple, c'est de lui écrire un email et le lui démander :
comment on fait pour vérifier des erreurs éventuelles detectées
lors de la fermaturer si la fermature a lieu dans le destructeur ?
(Et que penser de cette technique si on a paramètré les ostream
pour lever une exception en cas d'erreur ?) Il ne mord pas.
"Alain Naigeon" a écrit dans le message de
news:3f6d7d35$0$10407$Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction ordonnée par GC" est-il plus aléatoire - donc plus
problématique - que l'évènement "destruction suite à clic sur bouton
de fermeture" ?
Quelqu'un a dit (je sais plus qui) que tu n'avais pas la garantie que
le GC supprime effectivement l'objet, ce qui fait que le destructeur
n'est pas nécessairement appelé.
"Alain Naigeon" <anaigeon@free.fr> a écrit dans le message de
news:3f6d7d35$0$10407$626a54ce@news.free.fr...
Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction ordonnée par GC" est-il plus aléatoire - donc plus
problématique - que l'évènement "destruction suite à clic sur bouton
de fermeture" ?
Quelqu'un a dit (je sais plus qui) que tu n'avais pas la garantie que
le GC supprime effectivement l'objet, ce qui fait que le destructeur
n'est pas nécessairement appelé.
"Alain Naigeon" a écrit dans le message de
news:3f6d7d35$0$10407$Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction ordonnée par GC" est-il plus aléatoire - donc plus
problématique - que l'évènement "destruction suite à clic sur bouton
de fermeture" ?
Quelqu'un a dit (je sais plus qui) que tu n'avais pas la garantie que
le GC supprime effectivement l'objet, ce qui fait que le destructeur
n'est pas nécessairement appelé.
Oui, bon, je comprends ton exemple, mais comme d'autres l'ont
souligné,
il s'agit plus d'un problème de fond lié à ce cas que d'un problème de
langage.
On ne sait pas quand le destructeur est appelé, ok, mais il se peut
qu'il y ait tout de même des choses à faire en toutes circonstances,
et quel
que soit le moment où un objet est détruit. Alors ce code, j'imaginais
qu'on puisse le loger dans un "OnDelete", une sorte de programmation
évènementielle. Après tout, il y a plein de choses à faire pour
détruire une fenêtre, mais on ne sait pas non plus quand
l'utilisateur va cliquer pour la fermer. Alors il y a sans doute
quelque chose qui m'échappe...
Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction ordonnée par GC" est-il plus aléatoire - donc plus
problématique - que l'évènement "destruction suite à clic sur bouton
de fermeture" ?
Oui, bon, je comprends ton exemple, mais comme d'autres l'ont
souligné,
il s'agit plus d'un problème de fond lié à ce cas que d'un problème de
langage.
On ne sait pas quand le destructeur est appelé, ok, mais il se peut
qu'il y ait tout de même des choses à faire en toutes circonstances,
et quel
que soit le moment où un objet est détruit. Alors ce code, j'imaginais
qu'on puisse le loger dans un "OnDelete", une sorte de programmation
évènementielle. Après tout, il y a plein de choses à faire pour
détruire une fenêtre, mais on ne sait pas non plus quand
l'utilisateur va cliquer pour la fermer. Alors il y a sans doute
quelque chose qui m'échappe...
Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction ordonnée par GC" est-il plus aléatoire - donc plus
problématique - que l'évènement "destruction suite à clic sur bouton
de fermeture" ?
Oui, bon, je comprends ton exemple, mais comme d'autres l'ont
souligné,
il s'agit plus d'un problème de fond lié à ce cas que d'un problème de
langage.
On ne sait pas quand le destructeur est appelé, ok, mais il se peut
qu'il y ait tout de même des choses à faire en toutes circonstances,
et quel
que soit le moment où un objet est détruit. Alors ce code, j'imaginais
qu'on puisse le loger dans un "OnDelete", une sorte de programmation
évènementielle. Après tout, il y a plein de choses à faire pour
détruire une fenêtre, mais on ne sait pas non plus quand
l'utilisateur va cliquer pour la fermer. Alors il y a sans doute
quelque chose qui m'échappe...
Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction ordonnée par GC" est-il plus aléatoire - donc plus
problématique - que l'évènement "destruction suite à clic sur bouton
de fermeture" ?
Gourgouilloult wrote:Par contre, je n'ai plus fait de Java depuis des lustres...
quelqu'un peut me rappeler si toutes les méthodes ne sont pas
virtuelles, en Java ?
Par défaut elles sont virtuelles. Ont peut les rendre non virtuelles
avec final. Il n'est pas dit explicitement que les méthodes final ne
sont pas aussi appelées via la v-table, mais il est indiqué qu'elles
peuvent être inlinées, ce qui laisserait supposer qu'elles sont
effectivement appelées directement.
Gourgouilloult wrote:
Par contre, je n'ai plus fait de Java depuis des lustres...
quelqu'un peut me rappeler si toutes les méthodes ne sont pas
virtuelles, en Java ?
Par défaut elles sont virtuelles. Ont peut les rendre non virtuelles
avec final. Il n'est pas dit explicitement que les méthodes final ne
sont pas aussi appelées via la v-table, mais il est indiqué qu'elles
peuvent être inlinées, ce qui laisserait supposer qu'elles sont
effectivement appelées directement.
Gourgouilloult wrote:Par contre, je n'ai plus fait de Java depuis des lustres...
quelqu'un peut me rappeler si toutes les méthodes ne sont pas
virtuelles, en Java ?
Par défaut elles sont virtuelles. Ont peut les rendre non virtuelles
avec final. Il n'est pas dit explicitement que les méthodes final ne
sont pas aussi appelées via la v-table, mais il est indiqué qu'elles
peuvent être inlinées, ce qui laisserait supposer qu'elles sont
effectivement appelées directement.
Christophe Lephay wrote:"Alain Naigeon" a écrit dans le message de
news:3f6d7d35$0$10407$Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction ordonnée par GC" est-il plus aléatoire - donc plus
problématique - que l'évènement "destruction suite à clic sur bouton
de fermeture" ?
Quelqu'un a dit (je sais plus qui) que tu n'avais pas la garantie que
le GC supprime effectivement l'objet, ce qui fait que le destructeur
n'est pas nécessairement appelé.
Ca c'est une limitation d'implémentation de Java (particulièrement stupide
AMHA) : Tu peux très bien écrire un GC qui appelle les finaliseurs de tous
les objets.
Christophe Lephay wrote:
"Alain Naigeon" <anaigeon@free.fr> a écrit dans le message de
news:3f6d7d35$0$10407$626a54ce@news.free.fr...
Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction ordonnée par GC" est-il plus aléatoire - donc plus
problématique - que l'évènement "destruction suite à clic sur bouton
de fermeture" ?
Quelqu'un a dit (je sais plus qui) que tu n'avais pas la garantie que
le GC supprime effectivement l'objet, ce qui fait que le destructeur
n'est pas nécessairement appelé.
Ca c'est une limitation d'implémentation de Java (particulièrement stupide
AMHA) : Tu peux très bien écrire un GC qui appelle les finaliseurs de tous
les objets.
Christophe Lephay wrote:"Alain Naigeon" a écrit dans le message de
news:3f6d7d35$0$10407$Du point de vue de celui qui écrit le destructeur, l'évènement
"destruction ordonnée par GC" est-il plus aléatoire - donc plus
problématique - que l'évènement "destruction suite à clic sur bouton
de fermeture" ?
Quelqu'un a dit (je sais plus qui) que tu n'avais pas la garantie que
le GC supprime effectivement l'objet, ce qui fait que le destructeur
n'est pas nécessairement appelé.
Ca c'est une limitation d'implémentation de Java (particulièrement stupide
AMHA) : Tu peux très bien écrire un GC qui appelle les finaliseurs de tous
les objets.
Sauf que Java, ce n'est pas qu'un langage, c'est un langage + une
machine virtuelle. Et la portabilité de Java implique une forte
homogénéité entre les comportemets des VM.
Le GC fait partie de Java.
Sauf que Java, ce n'est pas qu'un langage, c'est un langage + une
machine virtuelle. Et la portabilité de Java implique une forte
homogénéité entre les comportemets des VM.
Le GC fait partie de Java.
Sauf que Java, ce n'est pas qu'un langage, c'est un langage + une
machine virtuelle. Et la portabilité de Java implique une forte
homogénéité entre les comportemets des VM.
Le GC fait partie de Java.
Mais avec Java, il te faudrait distribuer la JVM, et ça devient
plus compliqué.
Mais avec Java, il te faudrait distribuer la JVM, et ça devient
plus compliqué.
Mais avec Java, il te faudrait distribuer la JVM, et ça devient
plus compliqué.