Que ce soit la pile ou un registre specialisé dans un processeur
particulier, ca ne change rien.
Mon propos est de dire qu'il vaut mieux connaitre ces mecanismes,
ca aide a comprendre certains effets pervers de programmes en phase
de debug.
Et le mien était de dire que ton assertion « Les arguments des
fonctions passent TOUJOURS par la pile. Je suis surpris qu'un
programmeur C++ ne sache pas ca » est fausse.
Tu joues sur les mots.
Peut-être, mais sur un mot écris en MAJUSCULE. Disons que ça attire
un peu plus l'attention des gens. Surtout quand c'est faux.
Que ce soit la pile ou un registre specialisé dans un processeur
particulier, ca ne change rien.
Mon propos est de dire qu'il vaut mieux connaitre ces mecanismes,
ca aide a comprendre certains effets pervers de programmes en phase
de debug.
Et le mien était de dire que ton assertion « Les arguments des
fonctions passent TOUJOURS par la pile. Je suis surpris qu'un
programmeur C++ ne sache pas ca » est fausse.
Tu joues sur les mots.
Peut-être, mais sur un mot écris en MAJUSCULE. Disons que ça attire
un peu plus l'attention des gens. Surtout quand c'est faux.
Que ce soit la pile ou un registre specialisé dans un processeur
particulier, ca ne change rien.
Mon propos est de dire qu'il vaut mieux connaitre ces mecanismes,
ca aide a comprendre certains effets pervers de programmes en phase
de debug.
Et le mien était de dire que ton assertion « Les arguments des
fonctions passent TOUJOURS par la pile. Je suis surpris qu'un
programmeur C++ ne sache pas ca » est fausse.
Tu joues sur les mots.
Peut-être, mais sur un mot écris en MAJUSCULE. Disons que ça attire
un peu plus l'attention des gens. Surtout quand c'est faux.
"Jonathan Mcdougall" a écrit dans le message
news: IxEeb.104890$Connaitre la machine a ajourd'hui (et heureusement) beaucoup moins
d'importance qu'avant. Le décalage est d'après moi un très mauvais
exemple de "savoir programmer avec la connaissance de la machine
qu'on programme". Et je n'arrive pas à en trouver de bons.
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Et tu expliques comment a des etudiants que le passage d'argument
par adresse ou par valeur ?
"Jonathan Mcdougall" <jonathanmcdougall@DELyahoo.ca> a écrit dans le message
news: IxEeb.104890$Wk2.1761191@weber.videotron.net...
Connaitre la machine a ajourd'hui (et heureusement) beaucoup moins
d'importance qu'avant. Le décalage est d'après moi un très mauvais
exemple de "savoir programmer avec la connaissance de la machine
qu'on programme". Et je n'arrive pas à en trouver de bons.
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Et tu expliques comment a des etudiants que le passage d'argument
par adresse ou par valeur ?
"Jonathan Mcdougall" a écrit dans le message
news: IxEeb.104890$Connaitre la machine a ajourd'hui (et heureusement) beaucoup moins
d'importance qu'avant. Le décalage est d'après moi un très mauvais
exemple de "savoir programmer avec la connaissance de la machine
qu'on programme". Et je n'arrive pas à en trouver de bons.
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Et tu expliques comment a des etudiants que le passage d'argument
par adresse ou par valeur ?
M.B. wrote:
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Je traduit ça par : Ya trop de variables locales à des fonctions qui
s'appellent les unes les autres (possibilité de récurssivité mal bornée
?). On dépasse la taille d'une zone mémoire. Je n'ai nullelment besoin
de savoir pourquoi cette zone se nomme stack ou comment elle est
typiquement utilisée.
Et tu expliques comment a des etudiants que le passage d'argument
par adresse ou par valeur ?
Très simplement comme je l'ai appris :
Un passage par valeur fait que la fonction utilise une copie de la
valeur, et donc peut la modifier, mais ça n'impactera pas le code
appelant.
Un passage par référence fait que la fonction voit directement la
variable du code appelant (d'où nécessité que ce soit une variable, et
pas une expression)
Un passage par référence à une constante, c'est pareil, sauf que comme
la fonction promet de ne pas modifier, on peut aussi lui passer le
résultat d'une expression, le compilo se dédrouille.
M.B. wrote:
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Je traduit ça par : Ya trop de variables locales à des fonctions qui
s'appellent les unes les autres (possibilité de récurssivité mal bornée
?). On dépasse la taille d'une zone mémoire. Je n'ai nullelment besoin
de savoir pourquoi cette zone se nomme stack ou comment elle est
typiquement utilisée.
Et tu expliques comment a des etudiants que le passage d'argument
par adresse ou par valeur ?
Très simplement comme je l'ai appris :
Un passage par valeur fait que la fonction utilise une copie de la
valeur, et donc peut la modifier, mais ça n'impactera pas le code
appelant.
Un passage par référence fait que la fonction voit directement la
variable du code appelant (d'où nécessité que ce soit une variable, et
pas une expression)
Un passage par référence à une constante, c'est pareil, sauf que comme
la fonction promet de ne pas modifier, on peut aussi lui passer le
résultat d'une expression, le compilo se dédrouille.
M.B. wrote:
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Je traduit ça par : Ya trop de variables locales à des fonctions qui
s'appellent les unes les autres (possibilité de récurssivité mal bornée
?). On dépasse la taille d'une zone mémoire. Je n'ai nullelment besoin
de savoir pourquoi cette zone se nomme stack ou comment elle est
typiquement utilisée.
Et tu expliques comment a des etudiants que le passage d'argument
par adresse ou par valeur ?
Très simplement comme je l'ai appris :
Un passage par valeur fait que la fonction utilise une copie de la
valeur, et donc peut la modifier, mais ça n'impactera pas le code
appelant.
Un passage par référence fait que la fonction voit directement la
variable du code appelant (d'où nécessité que ce soit une variable, et
pas une expression)
Un passage par référence à une constante, c'est pareil, sauf que comme
la fonction promet de ne pas modifier, on peut aussi lui passer le
résultat d'une expression, le compilo se dédrouille.
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Je traduit ça par : Ya trop de variables locales à des fonctions qui
s'appellent les unes les autres (possibilité de récurssivité mal bornée
?). On dépasse la taille d'une zone mémoire. Je n'ai nullelment besoin
de savoir pourquoi cette zone se nomme stack ou comment elle est
typiquement utilisée.
Et on revient au poste d'origine. Il faut savoir ce qu'est une zone
memoire, donc un tableau.
Donc int tab[2] plus simple que std::vector<int> Tab (2)
CQFD
Et tu expliques comment a des etudiants que le passage d'argument
par adresse ou par valeur ?
Très simplement comme je l'ai appris :
Un passage par valeur fait que la fonction utilise une copie de la
valeur, et donc peut la modifier, mais ça n'impactera pas le code
appelant.
Un passage par référence fait que la fonction voit directement la
variable du code appelant (d'où nécessité que ce soit une variable, et
pas une expression)
Un passage par référence à une constante, c'est pareil, sauf que comme
la fonction promet de ne pas modifier, on peut aussi lui passer le
résultat d'une expression, le compilo se dédrouille.
Ca fait que ... Ca fait que ...
Si tu as des etudiants satisfaits avec ce genre de reponse, tu
as bien de la chance.
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Je traduit ça par : Ya trop de variables locales à des fonctions qui
s'appellent les unes les autres (possibilité de récurssivité mal bornée
?). On dépasse la taille d'une zone mémoire. Je n'ai nullelment besoin
de savoir pourquoi cette zone se nomme stack ou comment elle est
typiquement utilisée.
Et on revient au poste d'origine. Il faut savoir ce qu'est une zone
memoire, donc un tableau.
Donc int tab[2] plus simple que std::vector<int> Tab (2)
CQFD
Et tu expliques comment a des etudiants que le passage d'argument
par adresse ou par valeur ?
Très simplement comme je l'ai appris :
Un passage par valeur fait que la fonction utilise une copie de la
valeur, et donc peut la modifier, mais ça n'impactera pas le code
appelant.
Un passage par référence fait que la fonction voit directement la
variable du code appelant (d'où nécessité que ce soit une variable, et
pas une expression)
Un passage par référence à une constante, c'est pareil, sauf que comme
la fonction promet de ne pas modifier, on peut aussi lui passer le
résultat d'une expression, le compilo se dédrouille.
Ca fait que ... Ca fait que ...
Si tu as des etudiants satisfaits avec ce genre de reponse, tu
as bien de la chance.
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Je traduit ça par : Ya trop de variables locales à des fonctions qui
s'appellent les unes les autres (possibilité de récurssivité mal bornée
?). On dépasse la taille d'une zone mémoire. Je n'ai nullelment besoin
de savoir pourquoi cette zone se nomme stack ou comment elle est
typiquement utilisée.
Et on revient au poste d'origine. Il faut savoir ce qu'est une zone
memoire, donc un tableau.
Donc int tab[2] plus simple que std::vector<int> Tab (2)
CQFD
Et tu expliques comment a des etudiants que le passage d'argument
par adresse ou par valeur ?
Très simplement comme je l'ai appris :
Un passage par valeur fait que la fonction utilise une copie de la
valeur, et donc peut la modifier, mais ça n'impactera pas le code
appelant.
Un passage par référence fait que la fonction voit directement la
variable du code appelant (d'où nécessité que ce soit une variable, et
pas une expression)
Un passage par référence à une constante, c'est pareil, sauf que comme
la fonction promet de ne pas modifier, on peut aussi lui passer le
résultat d'une expression, le compilo se dédrouille.
Ca fait que ... Ca fait que ...
Si tu as des etudiants satisfaits avec ce genre de reponse, tu
as bien de la chance.
Si tu expliques le fonctionnement interne d'un ordi à un étudiant qui
commence à apprendre la programmation, ils n'ont pas beaucoup de chance.
Si tu expliques le fonctionnement interne d'un ordi à un étudiant qui
commence à apprendre la programmation, ils n'ont pas beaucoup de chance.
Si tu expliques le fonctionnement interne d'un ordi à un étudiant qui
commence à apprendre la programmation, ils n'ont pas beaucoup de chance.
"Michaël Monerau" wrote in message
news:<tJgeb.200085$...wrote:L'auteur de la question initiale a repondu en disant 'merci' la ou
il fallait.
Tu veux dire : après l'explication erronée ?
Explication erronnée ? Si j'ai fait une erreur, je suis tout ouïe ;-)
Je l'ai signalé cependant dans ma réponse à ton posting.
Je ne doute pas que tu saches comment les choses se passent en vérité,
mais ce que tu as écrit en guise de simplification était bel et bien
faux. Et à mon avis, c'était une simplification qui n'en était pas
une, parce qu'elle laissait des mécompréhensions qui poserait d'autres
problèmes à l'avenir.
"Michaël Monerau" <cort@meloo.com> wrote in message
news:<tJgeb.200085$hd6.2580643@news.chello.at>...
kanze@gabi-soft.fr wrote:
L'auteur de la question initiale a repondu en disant 'merci' la ou
il fallait.
Tu veux dire : après l'explication erronée ?
Explication erronnée ? Si j'ai fait une erreur, je suis tout ouïe ;-)
Je l'ai signalé cependant dans ma réponse à ton posting.
Je ne doute pas que tu saches comment les choses se passent en vérité,
mais ce que tu as écrit en guise de simplification était bel et bien
faux. Et à mon avis, c'était une simplification qui n'en était pas
une, parce qu'elle laissait des mécompréhensions qui poserait d'autres
problèmes à l'avenir.
"Michaël Monerau" wrote in message
news:<tJgeb.200085$...wrote:L'auteur de la question initiale a repondu en disant 'merci' la ou
il fallait.
Tu veux dire : après l'explication erronée ?
Explication erronnée ? Si j'ai fait une erreur, je suis tout ouïe ;-)
Je l'ai signalé cependant dans ma réponse à ton posting.
Je ne doute pas que tu saches comment les choses se passent en vérité,
mais ce que tu as écrit en guise de simplification était bel et bien
faux. Et à mon avis, c'était une simplification qui n'en était pas
une, parce qu'elle laissait des mécompréhensions qui poserait d'autres
problèmes à l'avenir.
Si tu expliques le fonctionnement interne d'un ordi à un étudiant qui
commence à apprendre la programmation, ils n'ont pas beaucoup de chance.
J'ai deja repondu. Essaye et en rediscutera.
Si tu expliques le fonctionnement interne d'un ordi à un étudiant qui
commence à apprendre la programmation, ils n'ont pas beaucoup de chance.
J'ai deja repondu. Essaye et en rediscutera.
Si tu expliques le fonctionnement interne d'un ordi à un étudiant qui
commence à apprendre la programmation, ils n'ont pas beaucoup de chance.
J'ai deja repondu. Essaye et en rediscutera.
"Loïc Joly" a écrit dans le message news:
blf7n9$g3p$M.B. wrote:Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Je traduit ça par : Ya trop de variables locales à des fonctions qui
s'appellent les unes les autres (possibilité de récurssivité mal bornée
?). On dépasse la taille d'une zone mémoire. Je n'ai nullelment besoin
de savoir pourquoi cette zone se nomme stack ou comment elle est
typiquement utilisée.
Et on revient au poste d'origine. Il faut savoir ce qu'est une zone
memoire,
donc un tableau.
Un passage par référence fait que la fonction voit directement la
variable du code appelant (d'où nécessité que ce soit une variable, et
pas une expression)
Un passage par référence à une constante, c'est pareil, sauf que comme
la fonction promet de ne pas modifier, on peut aussi lui passer le
résultat d'une expression, le compilo se dédrouille.
Ca fait que ... Ca fait que ...
Si tu as des etudiants satisfaits avec ce genre de reponse, tu
as bien de la chance.
"Loïc Joly" <loic.actarus.joly@wanadoo.fr> a écrit dans le message news:
blf7n9$g3p$1@news-reader2.wanadoo.fr...
M.B. wrote:
Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Je traduit ça par : Ya trop de variables locales à des fonctions qui
s'appellent les unes les autres (possibilité de récurssivité mal bornée
?). On dépasse la taille d'une zone mémoire. Je n'ai nullelment besoin
de savoir pourquoi cette zone se nomme stack ou comment elle est
typiquement utilisée.
Et on revient au poste d'origine. Il faut savoir ce qu'est une zone
memoire,
donc un tableau.
Un passage par référence fait que la fonction voit directement la
variable du code appelant (d'où nécessité que ce soit une variable, et
pas une expression)
Un passage par référence à une constante, c'est pareil, sauf que comme
la fonction promet de ne pas modifier, on peut aussi lui passer le
résultat d'une expression, le compilo se dédrouille.
Ca fait que ... Ca fait que ...
Si tu as des etudiants satisfaits avec ce genre de reponse, tu
as bien de la chance.
"Loïc Joly" a écrit dans le message news:
blf7n9$g3p$M.B. wrote:Et quand tu as un bug 'Stack Overflow', tu fais quoi si tu
ne sais pas ce qu'est une 'stack' ?
Je traduit ça par : Ya trop de variables locales à des fonctions qui
s'appellent les unes les autres (possibilité de récurssivité mal bornée
?). On dépasse la taille d'une zone mémoire. Je n'ai nullelment besoin
de savoir pourquoi cette zone se nomme stack ou comment elle est
typiquement utilisée.
Et on revient au poste d'origine. Il faut savoir ce qu'est une zone
memoire,
donc un tableau.
Un passage par référence fait que la fonction voit directement la
variable du code appelant (d'où nécessité que ce soit une variable, et
pas une expression)
Un passage par référence à une constante, c'est pareil, sauf que comme
la fonction promet de ne pas modifier, on peut aussi lui passer le
résultat d'une expression, le compilo se dédrouille.
Ca fait que ... Ca fait que ...
Si tu as des etudiants satisfaits avec ce genre de reponse, tu
as bien de la chance.
Ca tombe bien, j'ai 18 annees d'experience d'enseignement.
On ne peut pas apprendre un langage informatique sans le comprendre,
c'est ridicule et grotesque.
Ca tombe bien, j'ai 18 annees d'experience d'enseignement.
On ne peut pas apprendre un langage informatique sans le comprendre,
c'est ridicule et grotesque.
Ca tombe bien, j'ai 18 annees d'experience d'enseignement.
On ne peut pas apprendre un langage informatique sans le comprendre,
c'est ridicule et grotesque.