j'aime cette philosophie, la coexistence de variables
statiques ET dynamiques me va très bien également; non, je
ne vois pas comment efficacement sans passer.
Ben justement, il ne devrait pas y avoir coexistance.
Si tu veux du code de qualité, c'est-à-dire du code
exception-safe, toute donnée allouée dynamiquement est stockée
dans un conteneur qui gère sa durée de vie et qui répond à des
sémantiques de valeur.
Donc le dynamique c'est uniquement dans des couches plus
basses.
je suis également d'accord avec les exigences du contrat de
vector<>, je soulignais le trait pour indiquer qu'il a
*IMHO* un caractère négatif.
Il n'y a pas de caractère négatif, c'est juste qu'on peut pas
faire autrement pour stocker des valeurs.
l'organisation interne de vector<> passe nécessairement par des
pointeurs de la classe template
Non.
Comme il a déjà été dit, on stocke des T, pas des T*. Je sais
pas d'où te vient l'idée qu'on stocke des pointeurs des
données et pas les données elles-mêmes.
Tu aurais pourtant du, dans ton apprentissage du C++, réecrire
un truc semblable à std::vector.
si la question était ouverte ("si" parce que heureusement
99% des utilisateurs se foutent de l'avis qui suit), le
mérite de vector<> est son mécanisme allocator customisable
Oui enfin, ça sert uniquement à utiliser des mécanismes comme
le pooling, ce qui est plus le travail du système
d'exploitation et de l'environnement.
j'aime cette philosophie, la coexistence de variables
statiques ET dynamiques me va très bien également; non, je
ne vois pas comment efficacement sans passer.
Ben justement, il ne devrait pas y avoir coexistance.
Si tu veux du code de qualité, c'est-à-dire du code
exception-safe, toute donnée allouée dynamiquement est stockée
dans un conteneur qui gère sa durée de vie et qui répond à des
sémantiques de valeur.
Donc le dynamique c'est uniquement dans des couches plus
basses.
je suis également d'accord avec les exigences du contrat de
vector<>, je soulignais le trait pour indiquer qu'il a
*IMHO* un caractère négatif.
Il n'y a pas de caractère négatif, c'est juste qu'on peut pas
faire autrement pour stocker des valeurs.
l'organisation interne de vector<> passe nécessairement par des
pointeurs de la classe template
Non.
Comme il a déjà été dit, on stocke des T, pas des T*. Je sais
pas d'où te vient l'idée qu'on stocke des pointeurs des
données et pas les données elles-mêmes.
Tu aurais pourtant du, dans ton apprentissage du C++, réecrire
un truc semblable à std::vector.
si la question était ouverte ("si" parce que heureusement
99% des utilisateurs se foutent de l'avis qui suit), le
mérite de vector<> est son mécanisme allocator customisable
Oui enfin, ça sert uniquement à utiliser des mécanismes comme
le pooling, ce qui est plus le travail du système
d'exploitation et de l'environnement.
j'aime cette philosophie, la coexistence de variables
statiques ET dynamiques me va très bien également; non, je
ne vois pas comment efficacement sans passer.
Ben justement, il ne devrait pas y avoir coexistance.
Si tu veux du code de qualité, c'est-à-dire du code
exception-safe, toute donnée allouée dynamiquement est stockée
dans un conteneur qui gère sa durée de vie et qui répond à des
sémantiques de valeur.
Donc le dynamique c'est uniquement dans des couches plus
basses.
je suis également d'accord avec les exigences du contrat de
vector<>, je soulignais le trait pour indiquer qu'il a
*IMHO* un caractère négatif.
Il n'y a pas de caractère négatif, c'est juste qu'on peut pas
faire autrement pour stocker des valeurs.
l'organisation interne de vector<> passe nécessairement par des
pointeurs de la classe template
Non.
Comme il a déjà été dit, on stocke des T, pas des T*. Je sais
pas d'où te vient l'idée qu'on stocke des pointeurs des
données et pas les données elles-mêmes.
Tu aurais pourtant du, dans ton apprentissage du C++, réecrire
un truc semblable à std::vector.
si la question était ouverte ("si" parce que heureusement
99% des utilisateurs se foutent de l'avis qui suit), le
mérite de vector<> est son mécanisme allocator customisable
Oui enfin, ça sert uniquement à utiliser des mécanismes comme
le pooling, ce qui est plus le travail du système
d'exploitation et de l'environnement.
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. Et c'est plus facile d'installer et de configurer le
collecteur de Boehm que d'installer et de configurer Boost, pour
avoir shared_ptr. (Mais ça vaut la peine d'installer Boost et de
s'en servir pour beaucoup d'autres raisons.)
Qu'il y a des lacunes dans la connaissance de la STL chez
Sylvain, c'est fort possible. Mais j'imagine quand même mal
quelqu'un qui a réécri un truc semblable de std::vector dans
leur apprentissage. Écrire un truc pareil exige l'utilisation
d'un certain nombre d'astuces que le programmeur moyen n'a pas
vraiment besoin de connaître (comme la séparation de
l'allocation et de l'initialisation), et qui font partie
vraiement du C++ avancé.
Pas forcément. Je m'en suis déjà servi dans un std::map, pour le
mettre dans de la mémoire partagée entre plusieurs processus.
(Mais comme j'ai dit, historiquement, c'était pour pouvoir créer
un std::vector de plus de 64 Ko tout en compilant en modèle
small.)
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. Et c'est plus facile d'installer et de configurer le
collecteur de Boehm que d'installer et de configurer Boost, pour
avoir shared_ptr. (Mais ça vaut la peine d'installer Boost et de
s'en servir pour beaucoup d'autres raisons.)
Qu'il y a des lacunes dans la connaissance de la STL chez
Sylvain, c'est fort possible. Mais j'imagine quand même mal
quelqu'un qui a réécri un truc semblable de std::vector dans
leur apprentissage. Écrire un truc pareil exige l'utilisation
d'un certain nombre d'astuces que le programmeur moyen n'a pas
vraiment besoin de connaître (comme la séparation de
l'allocation et de l'initialisation), et qui font partie
vraiement du C++ avancé.
Pas forcément. Je m'en suis déjà servi dans un std::map, pour le
mettre dans de la mémoire partagée entre plusieurs processus.
(Mais comme j'ai dit, historiquement, c'était pour pouvoir créer
un std::vector de plus de 64 Ko tout en compilant en modèle
small.)
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. Et c'est plus facile d'installer et de configurer le
collecteur de Boehm que d'installer et de configurer Boost, pour
avoir shared_ptr. (Mais ça vaut la peine d'installer Boost et de
s'en servir pour beaucoup d'autres raisons.)
Qu'il y a des lacunes dans la connaissance de la STL chez
Sylvain, c'est fort possible. Mais j'imagine quand même mal
quelqu'un qui a réécri un truc semblable de std::vector dans
leur apprentissage. Écrire un truc pareil exige l'utilisation
d'un certain nombre d'astuces que le programmeur moyen n'a pas
vraiment besoin de connaître (comme la séparation de
l'allocation et de l'initialisation), et qui font partie
vraiement du C++ avancé.
Pas forcément. Je m'en suis déjà servi dans un std::map, pour le
mettre dans de la mémoire partagée entre plusieurs processus.
(Mais comme j'ai dit, historiquement, c'était pour pouvoir créer
un std::vector de plus de 64 Ko tout en compilant en modèle
small.)
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. [...]
Tu supposes l'utilisation d'un ramasse-miettes [...]
Néanmoins si on n'utilise pas ce genre de choses cela devrait être fait,
que ce soit dans des shared_ptr ou dans des trucs plus appropriés.
[...] je code plutôt des
trucs expérimentaux pour mon plaisir et que j'utilise très peu le
polymorphisme (pour du pimpl essentiellement) préférant la généricité.
Tu aurais pourtant du, dans ton apprentissage du C++, réecrire
un truc semblable à std::vector.
Qu'il y a des lacunes dans la connaissance de la STL chez
Sylvain, c'est fort possible.
Mais j'imagine quand même mal
quelqu'un qui a réécri un truc semblable de std::vector dans
leur apprentissage. Écrire un truc pareil exige l'utilisation
d'un certain nombre d'astuces que le programmeur moyen n'a pas
vraiment besoin de connaître [...], et qui font partie
vraiement du C++ avancé.
Truc semblable c'est à dire fort simplifié.
Il me paraît tout de même important de savoir réecrire les structures de
données pour savoir exactement comment elles fonctionnent et pouvoir en
déduire le coût de chacune des opérations.
[] mettre dans de la mémoire partagée entre plusieurs processus.
J'ai jamais eu l'occasion d'utiliser ce genre de trucs cependant. Quand
je dois faire communiquer des processus j'utilise plutôt des pipes ou
des sockets.
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. [...]
Tu supposes l'utilisation d'un ramasse-miettes [...]
Néanmoins si on n'utilise pas ce genre de choses cela devrait être fait,
que ce soit dans des shared_ptr ou dans des trucs plus appropriés.
[...] je code plutôt des
trucs expérimentaux pour mon plaisir et que j'utilise très peu le
polymorphisme (pour du pimpl essentiellement) préférant la généricité.
Tu aurais pourtant du, dans ton apprentissage du C++, réecrire
un truc semblable à std::vector.
Qu'il y a des lacunes dans la connaissance de la STL chez
Sylvain, c'est fort possible.
Mais j'imagine quand même mal
quelqu'un qui a réécri un truc semblable de std::vector dans
leur apprentissage. Écrire un truc pareil exige l'utilisation
d'un certain nombre d'astuces que le programmeur moyen n'a pas
vraiment besoin de connaître [...], et qui font partie
vraiement du C++ avancé.
Truc semblable c'est à dire fort simplifié.
Il me paraît tout de même important de savoir réecrire les structures de
données pour savoir exactement comment elles fonctionnent et pouvoir en
déduire le coût de chacune des opérations.
[] mettre dans de la mémoire partagée entre plusieurs processus.
J'ai jamais eu l'occasion d'utiliser ce genre de trucs cependant. Quand
je dois faire communiquer des processus j'utilise plutôt des pipes ou
des sockets.
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. [...]
Tu supposes l'utilisation d'un ramasse-miettes [...]
Néanmoins si on n'utilise pas ce genre de choses cela devrait être fait,
que ce soit dans des shared_ptr ou dans des trucs plus appropriés.
[...] je code plutôt des
trucs expérimentaux pour mon plaisir et que j'utilise très peu le
polymorphisme (pour du pimpl essentiellement) préférant la généricité.
Tu aurais pourtant du, dans ton apprentissage du C++, réecrire
un truc semblable à std::vector.
Qu'il y a des lacunes dans la connaissance de la STL chez
Sylvain, c'est fort possible.
Mais j'imagine quand même mal
quelqu'un qui a réécri un truc semblable de std::vector dans
leur apprentissage. Écrire un truc pareil exige l'utilisation
d'un certain nombre d'astuces que le programmeur moyen n'a pas
vraiment besoin de connaître [...], et qui font partie
vraiement du C++ avancé.
Truc semblable c'est à dire fort simplifié.
Il me paraît tout de même important de savoir réecrire les structures de
données pour savoir exactement comment elles fonctionnent et pouvoir en
déduire le coût de chacune des opérations.
[] mettre dans de la mémoire partagée entre plusieurs processus.
J'ai jamais eu l'occasion d'utiliser ce genre de trucs cependant. Quand
je dois faire communiquer des processus j'utilise plutôt des pipes ou
des sockets.
(tiens, je connaissais
pas le terme "glaneur de cellules")
(tiens, je connaissais
pas le terme "glaneur de cellules")
(tiens, je connaissais
pas le terme "glaneur de cellules")
un "truc" comme un beau pointeur global ?
?!? tu peux m'expliquer "traitement polymorphe" vs "traitement
générique", stp ?
peut-être penses-tu à ce que l'on nomme parfois un "polymorphisme
statique" (ie des classes templates).
hein ??!!??
il me semble que Stepanov a présenté ce projet au comité ANSI/ISO C++
entre fin 1993 et début 1994; à cette date, vois-tu, je n'étais plus à
l'école!
je sais écrire des "trucs" qui s'adaptent à ma ""philosophie"" (ici un
vecteur de T* qui retourne des T&), pour autant comprendre l'intérêt des
algo de la STL et en évaluer le coût, ne requiert pas IMHO de réécrire
la même chose (si on obtient bien la "même chose" autant utiliser
l'original, si - plus vraisemblable - on empile les erreurs de
compréhension et de codage, on mesurera un truc sans rapport).
James parlait de *partage* de données (une donnée dispo pour plusieurs
process distincts) pas de *communication* d'une donnée entre process.
sous Windows qui propose (impose) des APIs spécifiques pour de tels
données partagées, les allocators sont très utiles, sur PDA pour gérer
des objets persistants sur différentes cartes mémoires également (ce ne
sont que des exemples).
un "truc" comme un beau pointeur global ?
?!? tu peux m'expliquer "traitement polymorphe" vs "traitement
générique", stp ?
peut-être penses-tu à ce que l'on nomme parfois un "polymorphisme
statique" (ie des classes templates).
hein ??!!??
il me semble que Stepanov a présenté ce projet au comité ANSI/ISO C++
entre fin 1993 et début 1994; à cette date, vois-tu, je n'étais plus à
l'école!
je sais écrire des "trucs" qui s'adaptent à ma ""philosophie"" (ici un
vecteur de T* qui retourne des T&), pour autant comprendre l'intérêt des
algo de la STL et en évaluer le coût, ne requiert pas IMHO de réécrire
la même chose (si on obtient bien la "même chose" autant utiliser
l'original, si - plus vraisemblable - on empile les erreurs de
compréhension et de codage, on mesurera un truc sans rapport).
James parlait de *partage* de données (une donnée dispo pour plusieurs
process distincts) pas de *communication* d'une donnée entre process.
sous Windows qui propose (impose) des APIs spécifiques pour de tels
données partagées, les allocators sont très utiles, sur PDA pour gérer
des objets persistants sur différentes cartes mémoires également (ce ne
sont que des exemples).
un "truc" comme un beau pointeur global ?
?!? tu peux m'expliquer "traitement polymorphe" vs "traitement
générique", stp ?
peut-être penses-tu à ce que l'on nomme parfois un "polymorphisme
statique" (ie des classes templates).
hein ??!!??
il me semble que Stepanov a présenté ce projet au comité ANSI/ISO C++
entre fin 1993 et début 1994; à cette date, vois-tu, je n'étais plus à
l'école!
je sais écrire des "trucs" qui s'adaptent à ma ""philosophie"" (ici un
vecteur de T* qui retourne des T&), pour autant comprendre l'intérêt des
algo de la STL et en évaluer le coût, ne requiert pas IMHO de réécrire
la même chose (si on obtient bien la "même chose" autant utiliser
l'original, si - plus vraisemblable - on empile les erreurs de
compréhension et de codage, on mesurera un truc sans rapport).
James parlait de *partage* de données (une donnée dispo pour plusieurs
process distincts) pas de *communication* d'une donnée entre process.
sous Windows qui propose (impose) des APIs spécifiques pour de tels
données partagées, les allocators sont très utiles, sur PDA pour gérer
des objets persistants sur différentes cartes mémoires également (ce ne
sont que des exemples).
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. Et c'est plus facile d'installer et de configurer le
collecteur de Boehm que d'installer et de configurer Boost, pour
avoir shared_ptr. (Mais ça vaut la peine d'installer Boost et de
s'en servir pour beaucoup d'autres raisons.)
Tu supposes l'utilisation d'un ramasse-miettes (tiens, je connaissais
pas le terme "glaneur de cellules") ce qui te permet effectivement de ne
pas avoir à "wrapper" tes pointeurs vers des objets alloués
dynamiquement dans des objets à gestion mémoire automatique.
Néanmoins si on n'utilise pas ce genre de choses cela devrait être fa it,
que ce soit dans des shared_ptr ou dans des trucs plus appropriés.
Je ne suis pas non plus un grand fan des shared_ptr.
En fait dans les développements que j'ai fait je n'ai jamais eu besoin
de ce genre de choses, mais cela vient sûrement du fait que je n'ai
jamais été confronté à des contraintes business, que je code plut ôt des
trucs expérimentaux pour mon plaisir et que j'utilise très peu le
polymorphisme (pour du pimpl essentiellement) préférant la généri cité.
Qu'il y a des lacunes dans la connaissance de la STL chez
Sylvain, c'est fort possible. Mais j'imagine quand même mal
quelqu'un qui a réécri un truc semblable de std::vector dans
leur apprentissage. Écrire un truc pareil exige l'utilisation
d'un certain nombre d'astuces que le programmeur moyen n'a pas
vraiment besoin de connaître (comme la séparation de
l'allocation et de l'initialisation), et qui font partie
vraiement du C++ avancé.
Truc semblable c'est à dire fort simplifié.
Il me paraît tout de même important de savoir réecrire les structur es de
données pour savoir exactement comment elles fonctionnent et pouvoir en
déduire le coût de chacune des opérations.
Pas forcément. Je m'en suis déjà servi dans un std::map, pour le
mettre dans de la mémoire partagée entre plusieurs processus.
(Mais comme j'ai dit, historiquement, c'était pour pouvoir créer
un std::vector de plus de 64 Ko tout en compilant en modèle
small.)
Oui en effet il y a aussi la possibilité de la mémoire partagée.
Mais bon dans ce cas-là ça ne s'utilise pas "normalement", il faut
passer par un framework genre boost.interprocess (anciennement boost.shme m)
J'ai jamais eu l'occasion d'utiliser ce genre de trucs cependant. Quand
je dois faire communiquer des processus j'utilise plutôt des pipes ou
des sockets.
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. Et c'est plus facile d'installer et de configurer le
collecteur de Boehm que d'installer et de configurer Boost, pour
avoir shared_ptr. (Mais ça vaut la peine d'installer Boost et de
s'en servir pour beaucoup d'autres raisons.)
Tu supposes l'utilisation d'un ramasse-miettes (tiens, je connaissais
pas le terme "glaneur de cellules") ce qui te permet effectivement de ne
pas avoir à "wrapper" tes pointeurs vers des objets alloués
dynamiquement dans des objets à gestion mémoire automatique.
Néanmoins si on n'utilise pas ce genre de choses cela devrait être fa it,
que ce soit dans des shared_ptr ou dans des trucs plus appropriés.
Je ne suis pas non plus un grand fan des shared_ptr.
En fait dans les développements que j'ai fait je n'ai jamais eu besoin
de ce genre de choses, mais cela vient sûrement du fait que je n'ai
jamais été confronté à des contraintes business, que je code plut ôt des
trucs expérimentaux pour mon plaisir et que j'utilise très peu le
polymorphisme (pour du pimpl essentiellement) préférant la généri cité.
Qu'il y a des lacunes dans la connaissance de la STL chez
Sylvain, c'est fort possible. Mais j'imagine quand même mal
quelqu'un qui a réécri un truc semblable de std::vector dans
leur apprentissage. Écrire un truc pareil exige l'utilisation
d'un certain nombre d'astuces que le programmeur moyen n'a pas
vraiment besoin de connaître (comme la séparation de
l'allocation et de l'initialisation), et qui font partie
vraiement du C++ avancé.
Truc semblable c'est à dire fort simplifié.
Il me paraît tout de même important de savoir réecrire les structur es de
données pour savoir exactement comment elles fonctionnent et pouvoir en
déduire le coût de chacune des opérations.
Pas forcément. Je m'en suis déjà servi dans un std::map, pour le
mettre dans de la mémoire partagée entre plusieurs processus.
(Mais comme j'ai dit, historiquement, c'était pour pouvoir créer
un std::vector de plus de 64 Ko tout en compilant en modèle
small.)
Oui en effet il y a aussi la possibilité de la mémoire partagée.
Mais bon dans ce cas-là ça ne s'utilise pas "normalement", il faut
passer par un framework genre boost.interprocess (anciennement boost.shme m)
J'ai jamais eu l'occasion d'utiliser ce genre de trucs cependant. Quand
je dois faire communiquer des processus j'utilise plutôt des pipes ou
des sockets.
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. Et c'est plus facile d'installer et de configurer le
collecteur de Boehm que d'installer et de configurer Boost, pour
avoir shared_ptr. (Mais ça vaut la peine d'installer Boost et de
s'en servir pour beaucoup d'autres raisons.)
Tu supposes l'utilisation d'un ramasse-miettes (tiens, je connaissais
pas le terme "glaneur de cellules") ce qui te permet effectivement de ne
pas avoir à "wrapper" tes pointeurs vers des objets alloués
dynamiquement dans des objets à gestion mémoire automatique.
Néanmoins si on n'utilise pas ce genre de choses cela devrait être fa it,
que ce soit dans des shared_ptr ou dans des trucs plus appropriés.
Je ne suis pas non plus un grand fan des shared_ptr.
En fait dans les développements que j'ai fait je n'ai jamais eu besoin
de ce genre de choses, mais cela vient sûrement du fait que je n'ai
jamais été confronté à des contraintes business, que je code plut ôt des
trucs expérimentaux pour mon plaisir et que j'utilise très peu le
polymorphisme (pour du pimpl essentiellement) préférant la généri cité.
Qu'il y a des lacunes dans la connaissance de la STL chez
Sylvain, c'est fort possible. Mais j'imagine quand même mal
quelqu'un qui a réécri un truc semblable de std::vector dans
leur apprentissage. Écrire un truc pareil exige l'utilisation
d'un certain nombre d'astuces que le programmeur moyen n'a pas
vraiment besoin de connaître (comme la séparation de
l'allocation et de l'initialisation), et qui font partie
vraiement du C++ avancé.
Truc semblable c'est à dire fort simplifié.
Il me paraît tout de même important de savoir réecrire les structur es de
données pour savoir exactement comment elles fonctionnent et pouvoir en
déduire le coût de chacune des opérations.
Pas forcément. Je m'en suis déjà servi dans un std::map, pour le
mettre dans de la mémoire partagée entre plusieurs processus.
(Mais comme j'ai dit, historiquement, c'était pour pouvoir créer
un std::vector de plus de 64 Ko tout en compilant en modèle
small.)
Oui en effet il y a aussi la possibilité de la mémoire partagée.
Mais bon dans ce cas-là ça ne s'utilise pas "normalement", il faut
passer par un framework genre boost.interprocess (anciennement boost.shme m)
J'ai jamais eu l'occasion d'utiliser ce genre de trucs cependant. Quand
je dois faire communiquer des processus j'utilise plutôt des pipes ou
des sockets.
loufoque wrote on 20/09/2006 16:17:Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. [...]
Tu supposes l'utilisation d'un ramasse-miettes [...]
Néanmoins si on n'utilise pas ce genre de choses cela devrait être fait,
que ce soit dans des shared_ptr ou dans des trucs plus appropriés.
un "truc" comme un beau pointeur global ?
[...] je code plutôt des
trucs expérimentaux pour mon plaisir et que j'utilise très peu le
polymorphisme (pour du pimpl essentiellement) préférant la géné ricité.
?!? tu peux m'expliquer "traitement polymorphe" vs "traitement
générique", stp ?
peut-être penses-tu à ce que l'on nomme parfois un "polymorphisme
statique" (ie des classes templates).
Tu aurais pourtant du, dans ton apprentissage du C++, réecrire
un truc semblable à std::vector.
hein ??!!??
il me semble que Stepanov a présenté ce projet au comité ANSI/ISO C ++
entre fin 1993 et début 1994; à cette date, vois-tu, je n'étais plu s à
l'école!
loufoque wrote on 20/09/2006 16:17:
Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. [...]
Tu supposes l'utilisation d'un ramasse-miettes [...]
Néanmoins si on n'utilise pas ce genre de choses cela devrait être fait,
que ce soit dans des shared_ptr ou dans des trucs plus appropriés.
un "truc" comme un beau pointeur global ?
[...] je code plutôt des
trucs expérimentaux pour mon plaisir et que j'utilise très peu le
polymorphisme (pour du pimpl essentiellement) préférant la géné ricité.
?!? tu peux m'expliquer "traitement polymorphe" vs "traitement
générique", stp ?
peut-être penses-tu à ce que l'on nomme parfois un "polymorphisme
statique" (ie des classes templates).
Tu aurais pourtant du, dans ton apprentissage du C++, réecrire
un truc semblable à std::vector.
hein ??!!??
il me semble que Stepanov a présenté ce projet au comité ANSI/ISO C ++
entre fin 1993 et début 1994; à cette date, vois-tu, je n'étais plu s à
l'école!
loufoque wrote on 20/09/2006 16:17:Et pour les exceptions, au moins qu'ils ont une sémantique
particulière associée à la fin de leur vie (ce qui est quand
même assez exceptionnel), le glaneur de cellules s'en occupe
très bien. [...]
Tu supposes l'utilisation d'un ramasse-miettes [...]
Néanmoins si on n'utilise pas ce genre de choses cela devrait être fait,
que ce soit dans des shared_ptr ou dans des trucs plus appropriés.
un "truc" comme un beau pointeur global ?
[...] je code plutôt des
trucs expérimentaux pour mon plaisir et que j'utilise très peu le
polymorphisme (pour du pimpl essentiellement) préférant la géné ricité.
?!? tu peux m'expliquer "traitement polymorphe" vs "traitement
générique", stp ?
peut-être penses-tu à ce que l'on nomme parfois un "polymorphisme
statique" (ie des classes templates).
Tu aurais pourtant du, dans ton apprentissage du C++, réecrire
un truc semblable à std::vector.
hein ??!!??
il me semble que Stepanov a présenté ce projet au comité ANSI/ISO C ++
entre fin 1993 et début 1994; à cette date, vois-tu, je n'étais plu s à
l'école!
un "truc" comme un beau pointeur global ?
Si l'objet doit exister jusqu'à la fermeture du programme, ça
convient. Mais bon c'est pas vraiment de ça que je parlais.
?!? tu peux m'expliquer "traitement polymorphe" vs "traitement
générique", stp ?
peut-être penses-tu à ce que l'on nomme parfois un "polymorphisme
statique" (ie des classes templates).
Ça dépend du sens qu'on donne à polymorphisme, je parlais du
polymorphisme dynamique d'inclusion, qui introduit un coût à l'exéc ution
via l'utilisation de fonctions membres virtuelles et qui s'utilise via
des pointeurs ou références sur des bases.
Je préfère l'usage des templates avec notamment le
policy-based design.
hein ??!!??
il me semble que Stepanov a présenté ce projet au comité
ANSI/ISO C++ entre fin 1993 et début 1994; à cette date,
vois-tu, je n'étais plus à l'école!
Quel rapport ?
Si tu veux développer en C++, il faut bien apprendre à un
moment ou à un autre. Que ce soit à l'école, en autodidacte,
ou dans un stage.
un "truc" comme un beau pointeur global ?
Si l'objet doit exister jusqu'à la fermeture du programme, ça
convient. Mais bon c'est pas vraiment de ça que je parlais.
?!? tu peux m'expliquer "traitement polymorphe" vs "traitement
générique", stp ?
peut-être penses-tu à ce que l'on nomme parfois un "polymorphisme
statique" (ie des classes templates).
Ça dépend du sens qu'on donne à polymorphisme, je parlais du
polymorphisme dynamique d'inclusion, qui introduit un coût à l'exéc ution
via l'utilisation de fonctions membres virtuelles et qui s'utilise via
des pointeurs ou références sur des bases.
Je préfère l'usage des templates avec notamment le
policy-based design.
hein ??!!??
il me semble que Stepanov a présenté ce projet au comité
ANSI/ISO C++ entre fin 1993 et début 1994; à cette date,
vois-tu, je n'étais plus à l'école!
Quel rapport ?
Si tu veux développer en C++, il faut bien apprendre à un
moment ou à un autre. Que ce soit à l'école, en autodidacte,
ou dans un stage.
un "truc" comme un beau pointeur global ?
Si l'objet doit exister jusqu'à la fermeture du programme, ça
convient. Mais bon c'est pas vraiment de ça que je parlais.
?!? tu peux m'expliquer "traitement polymorphe" vs "traitement
générique", stp ?
peut-être penses-tu à ce que l'on nomme parfois un "polymorphisme
statique" (ie des classes templates).
Ça dépend du sens qu'on donne à polymorphisme, je parlais du
polymorphisme dynamique d'inclusion, qui introduit un coût à l'exéc ution
via l'utilisation de fonctions membres virtuelles et qui s'utilise via
des pointeurs ou références sur des bases.
Je préfère l'usage des templates avec notamment le
policy-based design.
hein ??!!??
il me semble que Stepanov a présenté ce projet au comité
ANSI/ISO C++ entre fin 1993 et début 1994; à cette date,
vois-tu, je n'étais plus à l'école!
Quel rapport ?
Si tu veux développer en C++, il faut bien apprendre à un
moment ou à un autre. Que ce soit à l'école, en autodidacte,
ou dans un stage.
Je vois pas trop l'intérêt d'avoir des choses persistantes en dehors
d'un programme.
Je vois pas trop l'intérêt d'avoir des choses persistantes en dehors
d'un programme.
Je vois pas trop l'intérêt d'avoir des choses persistantes en dehors
d'un programme.
(En passant : pourquoi est-ce que parler de l'« ownership »
d'un objet me semble tout à fait naturel en anglais, mais que
l'utilisation du mot « propriété » dans le même contexte en
français ne me semble pas juste ?)
De même façon que dans le langage courant de l'informatique en
dehors de la communité C++, la généricité s'implémente souvent
au moyen de l'héritage.
(En passant : pourquoi est-ce que parler de l'« ownership »
d'un objet me semble tout à fait naturel en anglais, mais que
l'utilisation du mot « propriété » dans le même contexte en
français ne me semble pas juste ?)
De même façon que dans le langage courant de l'informatique en
dehors de la communité C++, la généricité s'implémente souvent
au moyen de l'héritage.
(En passant : pourquoi est-ce que parler de l'« ownership »
d'un objet me semble tout à fait naturel en anglais, mais que
l'utilisation du mot « propriété » dans le même contexte en
français ne me semble pas juste ?)
De même façon que dans le langage courant de l'informatique en
dehors de la communité C++, la généricité s'implémente souvent
au moyen de l'héritage.