"Loïc Joly" a écrit dans le message news:
ca5bgl$fnk$Je ne vois pas plus de magie dans le passage par référence que dans
celui par valeur. Tu te rend compte, ta fonction, tu lui passe une
variable bien gentille, et pour une raison mystérieuse, elle décide de
ne pas l'utiliser mais de la copier ailleur et d'utiliser la copie !
La question n'est pas de syntaxe ; c'est une convention comme une
autre que "pas par référence" veut dire "par valeur", ce n'est pas le
point en cause de savoir pourquoi la fonction "décide de copier".
Ce qui est en cause, c'est que c'est facile de comprendre que la
modification d'une copie n'affecte pas l'original,
et que, par contre,
il n'est pas évident d'expliquer comment fonctionne une référence
sans parler d'adresse.
Le pointeur, c'est juste l'émergence de la notion
d'adresse dans le langage (s'il le permet). Une indirection, une variable
qui contient une adresse, c'est tout de même fondamental !
Même un bête "programmeur" Excel est obligé de se coltiner ça, alors,
si ça n'est pas à la portée d'un débutant C++ ..., que dire ?
"Loïc Joly" <loic.actarus.joly@wanadoo.fr> a écrit dans le message news:
ca5bgl$fnk$1@news-reader3.wanadoo.fr...
Je ne vois pas plus de magie dans le passage par référence que dans
celui par valeur. Tu te rend compte, ta fonction, tu lui passe une
variable bien gentille, et pour une raison mystérieuse, elle décide de
ne pas l'utiliser mais de la copier ailleur et d'utiliser la copie !
La question n'est pas de syntaxe ; c'est une convention comme une
autre que "pas par référence" veut dire "par valeur", ce n'est pas le
point en cause de savoir pourquoi la fonction "décide de copier".
Ce qui est en cause, c'est que c'est facile de comprendre que la
modification d'une copie n'affecte pas l'original,
et que, par contre,
il n'est pas évident d'expliquer comment fonctionne une référence
sans parler d'adresse.
Le pointeur, c'est juste l'émergence de la notion
d'adresse dans le langage (s'il le permet). Une indirection, une variable
qui contient une adresse, c'est tout de même fondamental !
Même un bête "programmeur" Excel est obligé de se coltiner ça, alors,
si ça n'est pas à la portée d'un débutant C++ ..., que dire ?
"Loïc Joly" a écrit dans le message news:
ca5bgl$fnk$Je ne vois pas plus de magie dans le passage par référence que dans
celui par valeur. Tu te rend compte, ta fonction, tu lui passe une
variable bien gentille, et pour une raison mystérieuse, elle décide de
ne pas l'utiliser mais de la copier ailleur et d'utiliser la copie !
La question n'est pas de syntaxe ; c'est une convention comme une
autre que "pas par référence" veut dire "par valeur", ce n'est pas le
point en cause de savoir pourquoi la fonction "décide de copier".
Ce qui est en cause, c'est que c'est facile de comprendre que la
modification d'une copie n'affecte pas l'original,
et que, par contre,
il n'est pas évident d'expliquer comment fonctionne une référence
sans parler d'adresse.
Le pointeur, c'est juste l'émergence de la notion
d'adresse dans le langage (s'il le permet). Une indirection, une variable
qui contient une adresse, c'est tout de même fondamental !
Même un bête "programmeur" Excel est obligé de se coltiner ça, alors,
si ça n'est pas à la portée d'un débutant C++ ..., que dire ?
Ce qui est en cause, c'est que c'est facile de comprendre que la
modification d'une copie n'affecte pas l'original,
et que, par contre, il n'est pas évident d'expliquer comment
fonctionne une référence sans parler d'adresse.
Le pointeur, c'est juste l'émergence de la notion d'adresse dans le
langage (s'il le permet).
Une indirection, une variable qui contient une adresse, c'est tout
de même fondamental !
Ce qui est en cause, c'est que c'est facile de comprendre que la
modification d'une copie n'affecte pas l'original,
et que, par contre, il n'est pas évident d'expliquer comment
fonctionne une référence sans parler d'adresse.
Le pointeur, c'est juste l'émergence de la notion d'adresse dans le
langage (s'il le permet).
Une indirection, une variable qui contient une adresse, c'est tout
de même fondamental !
Ce qui est en cause, c'est que c'est facile de comprendre que la
modification d'une copie n'affecte pas l'original,
et que, par contre, il n'est pas évident d'expliquer comment
fonctionne une référence sans parler d'adresse.
Le pointeur, c'est juste l'émergence de la notion d'adresse dans le
langage (s'il le permet).
Une indirection, une variable qui contient une adresse, c'est tout
de même fondamental !
Tout d'abord, il y a le fait de savoir ce qu'est un pointeur, et
l'utiliser de manière fiable. Tout programmeur C++ sais ce qu'est un
pointeur. Pour ce qui est de l'employer de manière fiable ...
Puis je trouve les références plus simples à comprendre que les
pointeurs. Pas d'allocation ou de désallocation dont tenir compte.
Tout d'abord, il y a le fait de savoir ce qu'est un pointeur, et
l'utiliser de manière fiable. Tout programmeur C++ sais ce qu'est un
pointeur. Pour ce qui est de l'employer de manière fiable ...
Puis je trouve les références plus simples à comprendre que les
pointeurs. Pas d'allocation ou de désallocation dont tenir compte.
Tout d'abord, il y a le fait de savoir ce qu'est un pointeur, et
l'utiliser de manière fiable. Tout programmeur C++ sais ce qu'est un
pointeur. Pour ce qui est de l'employer de manière fiable ...
Puis je trouve les références plus simples à comprendre que les
pointeurs. Pas d'allocation ou de désallocation dont tenir compte.
En Java, le passage se fait par référence
En pascal, le passage se fait par valeur par défaut, mais var autorise
le passage par référence
et ne fait nullement appel à la notion de
pointeur, et je n'ai jamais vu un cours d'introduction à l'un de ces
langages l'expliquer en disant "c'est un peu comme si c'était un
pointeur".
Je ne vois pas plus de magie dans le passage par référence que dans
celui par valeur. Tu te rend compte, ta fonction, tu lui passe une
variable bien gentille, et pour une raison mystérieuse, elle décide de
ne pas l'utiliser mais de la copier ailleur et d'utiliser la copie ! Si
ça c'est pas de la magie maléfique qui a influencé les concepteurs du
langage !
En Java, le passage se fait par référence
En pascal, le passage se fait par valeur par défaut, mais var autorise
le passage par référence
et ne fait nullement appel à la notion de
pointeur, et je n'ai jamais vu un cours d'introduction à l'un de ces
langages l'expliquer en disant "c'est un peu comme si c'était un
pointeur".
Je ne vois pas plus de magie dans le passage par référence que dans
celui par valeur. Tu te rend compte, ta fonction, tu lui passe une
variable bien gentille, et pour une raison mystérieuse, elle décide de
ne pas l'utiliser mais de la copier ailleur et d'utiliser la copie ! Si
ça c'est pas de la magie maléfique qui a influencé les concepteurs du
langage !
En Java, le passage se fait par référence
En pascal, le passage se fait par valeur par défaut, mais var autorise
le passage par référence
et ne fait nullement appel à la notion de
pointeur, et je n'ai jamais vu un cours d'introduction à l'un de ces
langages l'expliquer en disant "c'est un peu comme si c'était un
pointeur".
Je ne vois pas plus de magie dans le passage par référence que dans
celui par valeur. Tu te rend compte, ta fonction, tu lui passe une
variable bien gentille, et pour une raison mystérieuse, elle décide de
ne pas l'utiliser mais de la copier ailleur et d'utiliser la copie ! Si
ça c'est pas de la magie maléfique qui a influencé les concepteurs du
langage !
Euh... J'ai l'impression que tu mélange deux choses : pointeur et
allocation dynamique.
En-dehors des différences d'écritures, une référence ou un pointeur,
c'est pareil -- à ceci près qu'un pointeur peut être NULL, pas une
référence.
Le problème survient quand :
- il faut désallouer la mémoire ainsi allouée. Non seulement il
ne faut pas oublier de le faire [et, sur le principe, l'écriture
allocation+désallocation me paraît inutilement tortueuse], mais il
faut également savoir à quel(s) endroit(s) le faire. Déjà en C c'est
passablement pénible, mais en C++, avec la gestion des exceptions,
c'est encore moins faisable.
- on veut allouer un certain nombre d'objets, nombre qu'on ne
connaît pas à la compilation. Heureusement, on a assez de types de
conteneurs à notre disposition pour se l'éviter :-)
Euh... J'ai l'impression que tu mélange deux choses : pointeur et
allocation dynamique.
En-dehors des différences d'écritures, une référence ou un pointeur,
c'est pareil -- à ceci près qu'un pointeur peut être NULL, pas une
référence.
Le problème survient quand :
- il faut désallouer la mémoire ainsi allouée. Non seulement il
ne faut pas oublier de le faire [et, sur le principe, l'écriture
allocation+désallocation me paraît inutilement tortueuse], mais il
faut également savoir à quel(s) endroit(s) le faire. Déjà en C c'est
passablement pénible, mais en C++, avec la gestion des exceptions,
c'est encore moins faisable.
- on veut allouer un certain nombre d'objets, nombre qu'on ne
connaît pas à la compilation. Heureusement, on a assez de types de
conteneurs à notre disposition pour se l'éviter :-)
Euh... J'ai l'impression que tu mélange deux choses : pointeur et
allocation dynamique.
En-dehors des différences d'écritures, une référence ou un pointeur,
c'est pareil -- à ceci près qu'un pointeur peut être NULL, pas une
référence.
Le problème survient quand :
- il faut désallouer la mémoire ainsi allouée. Non seulement il
ne faut pas oublier de le faire [et, sur le principe, l'écriture
allocation+désallocation me paraît inutilement tortueuse], mais il
faut également savoir à quel(s) endroit(s) le faire. Déjà en C c'est
passablement pénible, mais en C++, avec la gestion des exceptions,
c'est encore moins faisable.
- on veut allouer un certain nombre d'objets, nombre qu'on ne
connaît pas à la compilation. Heureusement, on a assez de types de
conteneurs à notre disposition pour se l'éviter :-)
D'autre part, la distinction entre le passage d'argument par
valeur ou par adresse existe depuis la nuit des temps, et je
ne vois pas comment expliquer cela (ou une référence) sans
donner la notion de pointeur.
Ou alors par effet papillon, téléportation, magie noire,
inégalité de Bell ?? Bon, je sais, on est dans la
civilisation presse-bouton, alors voilà, c'est magique, et on
t'expliquera plus tard... Là je me rebiffe !
D'autre part, la distinction entre le passage d'argument par
valeur ou par adresse existe depuis la nuit des temps, et je
ne vois pas comment expliquer cela (ou une référence) sans
donner la notion de pointeur.
Ou alors par effet papillon, téléportation, magie noire,
inégalité de Bell ?? Bon, je sais, on est dans la
civilisation presse-bouton, alors voilà, c'est magique, et on
t'expliquera plus tard... Là je me rebiffe !
D'autre part, la distinction entre le passage d'argument par
valeur ou par adresse existe depuis la nuit des temps, et je
ne vois pas comment expliquer cela (ou une référence) sans
donner la notion de pointeur.
Ou alors par effet papillon, téléportation, magie noire,
inégalité de Bell ?? Bon, je sais, on est dans la
civilisation presse-bouton, alors voilà, c'est magique, et on
t'expliquera plus tard... Là je me rebiffe !
ne vois pas comment expliquer cela (ou une référence) sans
donner la notion de pointeur.
Tu manques d'imagination et/ou tu ne pourrais pas enseigner (ni
utiliser) un langage qui n'a pas ce principe !
ne vois pas comment expliquer cela (ou une référence) sans
donner la notion de pointeur.
Tu manques d'imagination et/ou tu ne pourrais pas enseigner (ni
utiliser) un langage qui n'a pas ce principe !
ne vois pas comment expliquer cela (ou une référence) sans
donner la notion de pointeur.
Tu manques d'imagination et/ou tu ne pourrais pas enseigner (ni
utiliser) un langage qui n'a pas ce principe !
On Wed, 09 Jun 2004 00:31:09 +0200, drkm
wrote:Tout d'abord, il y a le fait de savoir ce qu'est un pointeur, et
l'utiliser de manière fiable. Tout programmeur C++ sais ce qu'est un
pointeur. Pour ce qui est de l'employer de manière fiable ...
Puis je trouve les références plus simples à comprendre que les
pointeurs. Pas d'allocation ou de désallocation dont tenir compte.
Euh... J'ai l'impression que tu mélange deux choses : pointeur et
allocation dynamique.
En-dehors des différences d'écritures, une référence ou un pointeur,
c'est pareil
On Wed, 09 Jun 2004 00:31:09 +0200, drkm <usenet.fclcxx@fgeorges.org>
wrote:
Tout d'abord, il y a le fait de savoir ce qu'est un pointeur, et
l'utiliser de manière fiable. Tout programmeur C++ sais ce qu'est un
pointeur. Pour ce qui est de l'employer de manière fiable ...
Puis je trouve les références plus simples à comprendre que les
pointeurs. Pas d'allocation ou de désallocation dont tenir compte.
Euh... J'ai l'impression que tu mélange deux choses : pointeur et
allocation dynamique.
En-dehors des différences d'écritures, une référence ou un pointeur,
c'est pareil
On Wed, 09 Jun 2004 00:31:09 +0200, drkm
wrote:Tout d'abord, il y a le fait de savoir ce qu'est un pointeur, et
l'utiliser de manière fiable. Tout programmeur C++ sais ce qu'est un
pointeur. Pour ce qui est de l'employer de manière fiable ...
Puis je trouve les références plus simples à comprendre que les
pointeurs. Pas d'allocation ou de désallocation dont tenir compte.
Euh... J'ai l'impression que tu mélange deux choses : pointeur et
allocation dynamique.
En-dehors des différences d'écritures, une référence ou un pointeur,
c'est pareil