Non mais un code qui contient un UB ne peut rien prouver.
Non mais un code qui contient un UB ne peut rien prouver.
Non mais un code qui contient un UB ne peut rien prouver.
D'un coté il y a les codeurs qui font des trucs (qui marchent ou
plantent peu importe) et demandent des coups de main, et de l'autre il y
a les avocats ou les curés qui ne cherchent qu'à décourager les premiers
en arguant que de toute façon leur programme est non conforme aux
aspects +/- obscures de à la norme, et qu'en conséquence ils finirons en
enfer et ne peuvent prétendre à aucun coup de main. Par contre les coup
de pieds au c*l, oui ca ils peuvent en prendre... ya tout un stock à
écouler.
D'un coté il y a les codeurs qui font des trucs (qui marchent ou
plantent peu importe) et demandent des coups de main, et de l'autre il y
a les avocats ou les curés qui ne cherchent qu'à décourager les premiers
en arguant que de toute façon leur programme est non conforme aux
aspects +/- obscures de à la norme, et qu'en conséquence ils finirons en
enfer et ne peuvent prétendre à aucun coup de main. Par contre les coup
de pieds au c*l, oui ca ils peuvent en prendre... ya tout un stock à
écouler.
D'un coté il y a les codeurs qui font des trucs (qui marchent ou
plantent peu importe) et demandent des coups de main, et de l'autre il y
a les avocats ou les curés qui ne cherchent qu'à décourager les premiers
en arguant que de toute façon leur programme est non conforme aux
aspects +/- obscures de à la norme, et qu'en conséquence ils finirons en
enfer et ne peuvent prétendre à aucun coup de main. Par contre les coup
de pieds au c*l, oui ca ils peuvent en prendre... ya tout un stock à
écouler.
In article <4b156ee5$0$11542$,
Samuel Devulder wrote:D'un coté il y a les codeurs qui font des trucs (qui marchent ou
plantent peu importe) et demandent des coups de main, et de l'autre il y
a les avocats ou les curés qui ne cherchent qu'à décourager les premiers
en arguant que de toute façon leur programme est non conforme aux
aspects +/- obscures de à la norme, et qu'en conséquence ils finirons en
enfer et ne peuvent prétendre à aucun coup de main. Par contre les coup
de pieds au c*l, oui ca ils peuvent en prendre... ya tout un stock à
écouler.
Verifier les entrees, c'est la base.
J'ai verifie experimentalement: meme en repetant 25 fois aux etudiants
*qu'il faut toujours verifier que ce qu'on fait reussit* a partir du
moment ou ca peut echouer, j'en ai toujours qui viennent me voir apres
avoir cherche un bug pendant 30 mn, generalement 15 lignes plus loin que
l'endroit ou est le bug. Genre, une segfault, parce que le pointeur qu'ils
dereferencent, ben ils n'ont jamais verifie qu'il contenait quelque chose
de sense au moment de l'appel de fonction qui l'a initialise. Ou, sous
Unix, une tentative d'ecriture sur un fd... qui echoue parce que le fd
vaut -1, vu qu'ils n'ont jamais verifie que le open/socket/connect/pipe
avait fait quelque chose d'intelligent.
Apres un moment ca lasse. Tu te fixes une regle simple: tu refuses de
regarder du code ou au moins ce travail minimal de verification des erreurs
a ete fait. Ca te gagne enormement de temps, et la qualite du code produit
par les etudiants monte en fleche...
In article <4b156ee5$0$11542$426a74cc@news.free.fr>,
Samuel Devulder <samuel-dot-devulder@geensys.com> wrote:
D'un coté il y a les codeurs qui font des trucs (qui marchent ou
plantent peu importe) et demandent des coups de main, et de l'autre il y
a les avocats ou les curés qui ne cherchent qu'à décourager les premiers
en arguant que de toute façon leur programme est non conforme aux
aspects +/- obscures de à la norme, et qu'en conséquence ils finirons en
enfer et ne peuvent prétendre à aucun coup de main. Par contre les coup
de pieds au c*l, oui ca ils peuvent en prendre... ya tout un stock à
écouler.
Verifier les entrees, c'est la base.
J'ai verifie experimentalement: meme en repetant 25 fois aux etudiants
*qu'il faut toujours verifier que ce qu'on fait reussit* a partir du
moment ou ca peut echouer, j'en ai toujours qui viennent me voir apres
avoir cherche un bug pendant 30 mn, generalement 15 lignes plus loin que
l'endroit ou est le bug. Genre, une segfault, parce que le pointeur qu'ils
dereferencent, ben ils n'ont jamais verifie qu'il contenait quelque chose
de sense au moment de l'appel de fonction qui l'a initialise. Ou, sous
Unix, une tentative d'ecriture sur un fd... qui echoue parce que le fd
vaut -1, vu qu'ils n'ont jamais verifie que le open/socket/connect/pipe
avait fait quelque chose d'intelligent.
Apres un moment ca lasse. Tu te fixes une regle simple: tu refuses de
regarder du code ou au moins ce travail minimal de verification des erreurs
a ete fait. Ca te gagne enormement de temps, et la qualite du code produit
par les etudiants monte en fleche...
In article <4b156ee5$0$11542$,
Samuel Devulder wrote:D'un coté il y a les codeurs qui font des trucs (qui marchent ou
plantent peu importe) et demandent des coups de main, et de l'autre il y
a les avocats ou les curés qui ne cherchent qu'à décourager les premiers
en arguant que de toute façon leur programme est non conforme aux
aspects +/- obscures de à la norme, et qu'en conséquence ils finirons en
enfer et ne peuvent prétendre à aucun coup de main. Par contre les coup
de pieds au c*l, oui ca ils peuvent en prendre... ya tout un stock à
écouler.
Verifier les entrees, c'est la base.
J'ai verifie experimentalement: meme en repetant 25 fois aux etudiants
*qu'il faut toujours verifier que ce qu'on fait reussit* a partir du
moment ou ca peut echouer, j'en ai toujours qui viennent me voir apres
avoir cherche un bug pendant 30 mn, generalement 15 lignes plus loin que
l'endroit ou est le bug. Genre, une segfault, parce que le pointeur qu'ils
dereferencent, ben ils n'ont jamais verifie qu'il contenait quelque chose
de sense au moment de l'appel de fonction qui l'a initialise. Ou, sous
Unix, une tentative d'ecriture sur un fd... qui echoue parce que le fd
vaut -1, vu qu'ils n'ont jamais verifie que le open/socket/connect/pipe
avait fait quelque chose d'intelligent.
Apres un moment ca lasse. Tu te fixes une regle simple: tu refuses de
regarder du code ou au moins ce travail minimal de verification des erreurs
a ete fait. Ca te gagne enormement de temps, et la qualite du code produit
par les etudiants monte en fleche...
Perso je préfère faire des trucs qui marchent que de passer ma vie à
trouver pourquoi selon la norme le truc ne devrait pas marcher alors
qu'il marche effectivement dans les faits.
Perso je préfère faire des trucs qui marchent que de passer ma vie à
trouver pourquoi selon la norme le truc ne devrait pas marcher alors
qu'il marche effectivement dans les faits.
Perso je préfère faire des trucs qui marchent que de passer ma vie à
trouver pourquoi selon la norme le truc ne devrait pas marcher alors
qu'il marche effectivement dans les faits.
Samuel Devulder a écrit :Perso je préfère faire des trucs qui marchent que de passer ma vie à
trouver pourquoi selon la norme le truc ne devrait pas marcher alors
qu'il marche effectivement dans les faits.
Tiens une girouette courageuse qui vient de tourner avec le vent !
Sinon, le degré zéro : ça marche chez moi donc c'est bon ! La caricature
te conduit à raconter n'importe quoi.
Samuel Devulder a écrit :
Perso je préfère faire des trucs qui marchent que de passer ma vie à
trouver pourquoi selon la norme le truc ne devrait pas marcher alors
qu'il marche effectivement dans les faits.
Tiens une girouette courageuse qui vient de tourner avec le vent !
Sinon, le degré zéro : ça marche chez moi donc c'est bon ! La caricature
te conduit à raconter n'importe quoi.
Samuel Devulder a écrit :Perso je préfère faire des trucs qui marchent que de passer ma vie à
trouver pourquoi selon la norme le truc ne devrait pas marcher alors
qu'il marche effectivement dans les faits.
Tiens une girouette courageuse qui vient de tourner avec le vent !
Sinon, le degré zéro : ça marche chez moi donc c'est bon ! La caricature
te conduit à raconter n'importe quoi.
Marc Espie a écrit :Il y a deux sortes de gens par ici: ceux qui programment, et ceux qui sont
la juste pour chercher la petite bete. Tu trouverais sans doute plus ton
bonheur sur comp.lang.std.c...
Non, justement pas lang mais comp.std.c ;)
Tu as raison, la programmation en C au sens du travail d'un programmeur
ne m'intéresse pas plus que ça, pour l'instant en tous cas. Ce qui
m'intéresse c'est pas de chercher la petite bête mais réfléchir à des
moyens plus efficaces d'apprendre le C (ou d'autres langages), qu'on
s'adresse à des débutants ou à des programmeurs ayant déjà une certaine
expérience. Je me réfère à la Norme parce qu'elle propose en général des
informations beaucoup plus précises voire plus cohérentes, lisibles et
didactiques que la majorité des sources d'information.
Et si tu m'/nous expliquais plutôt pourquoi il est tellement scandaleux
d'initialiser par défaut à zéro les variables automatiques ?
Marc Espie a écrit :
Il y a deux sortes de gens par ici: ceux qui programment, et ceux qui sont
la juste pour chercher la petite bete. Tu trouverais sans doute plus ton
bonheur sur comp.lang.std.c...
Non, justement pas lang mais comp.std.c ;)
Tu as raison, la programmation en C au sens du travail d'un programmeur
ne m'intéresse pas plus que ça, pour l'instant en tous cas. Ce qui
m'intéresse c'est pas de chercher la petite bête mais réfléchir à des
moyens plus efficaces d'apprendre le C (ou d'autres langages), qu'on
s'adresse à des débutants ou à des programmeurs ayant déjà une certaine
expérience. Je me réfère à la Norme parce qu'elle propose en général des
informations beaucoup plus précises voire plus cohérentes, lisibles et
didactiques que la majorité des sources d'information.
Et si tu m'/nous expliquais plutôt pourquoi il est tellement scandaleux
d'initialiser par défaut à zéro les variables automatiques ?
Marc Espie a écrit :Il y a deux sortes de gens par ici: ceux qui programment, et ceux qui sont
la juste pour chercher la petite bete. Tu trouverais sans doute plus ton
bonheur sur comp.lang.std.c...
Non, justement pas lang mais comp.std.c ;)
Tu as raison, la programmation en C au sens du travail d'un programmeur
ne m'intéresse pas plus que ça, pour l'instant en tous cas. Ce qui
m'intéresse c'est pas de chercher la petite bête mais réfléchir à des
moyens plus efficaces d'apprendre le C (ou d'autres langages), qu'on
s'adresse à des débutants ou à des programmeurs ayant déjà une certaine
expérience. Je me réfère à la Norme parce qu'elle propose en général des
informations beaucoup plus précises voire plus cohérentes, lisibles et
didactiques que la majorité des sources d'information.
Et si tu m'/nous expliquais plutôt pourquoi il est tellement scandaleux
d'initialiser par défaut à zéro les variables automatiques ?
Oui... mais pas se prendre la tête la dessus quand c'est pas l'essentiel
du propos, ni même le problème original de l'OP.
D'une part ca n'aide en
rien l'OP, mais en plus ca part souvent dans des digression a n'en plus
finir entre telle ou telle interprètation de la norme qui n'influence en
rien l'usage réél.
De toute facon pour les tests et le débug, moi je recommande de ne pas
se baser sur un environnement ou les choses ne sont pas reproductibles
(une saisie au clavier par exemple), et je préfère écrire les chaînes en
dur dans le code pour mettre au point le coeur de l'algo. Une fois ce
dernier validé, et les tests proprement mis dans un code de test
unitaire (pour détecter des régressions), on peut y aller des milles et
unes façon de saisir les paramètres dans un prog C (entrée clavier,
utilisation arc/argv, lecture de socket, du port série, que sais-je
encore).
Le truc a faire, et c'est pareil avec des stagiaires: tu les laisses
galérer un peu et corriger le problème eux-meme.. Ils verront que c'est
difficile, mais c'est normal: "c'est le métier qui rentre".
S'ils n'y
arrivent pas, tu jette un œil à leur code en leur disant de ré-écrire
telle ou telle partie "en faisant comme ca, cela marchera" et qu'ils
viennent t'expliquer la différence entre leur code et l'implémentation
que tu suggère pour voir s'ils ont compris le truc.
Il est connu qu'on apprends plus
de ses erreurs que du reste.
Oui: il faut leur laisser galèrer un peu, ca ne fait pas de mal et après
qu'ils ont compris leur douleur,
Mais bon, il ne faut pas oublier non plus qu'il y a de vrai
neu-neus dont on se demande pourquoi ils font ou veulent faire de
l'info. Bon pour eux, une seule solution: stage dans l'équipe de qualité
à exercer bêtement mais scrupuleusement des fiches de tests.. ce sera
moins dangereux pour tout le monde.. quoi que ;)
Oui... mais pas se prendre la tête la dessus quand c'est pas l'essentiel
du propos, ni même le problème original de l'OP.
D'une part ca n'aide en
rien l'OP, mais en plus ca part souvent dans des digression a n'en plus
finir entre telle ou telle interprètation de la norme qui n'influence en
rien l'usage réél.
De toute facon pour les tests et le débug, moi je recommande de ne pas
se baser sur un environnement ou les choses ne sont pas reproductibles
(une saisie au clavier par exemple), et je préfère écrire les chaînes en
dur dans le code pour mettre au point le coeur de l'algo. Une fois ce
dernier validé, et les tests proprement mis dans un code de test
unitaire (pour détecter des régressions), on peut y aller des milles et
unes façon de saisir les paramètres dans un prog C (entrée clavier,
utilisation arc/argv, lecture de socket, du port série, que sais-je
encore).
Le truc a faire, et c'est pareil avec des stagiaires: tu les laisses
galérer un peu et corriger le problème eux-meme.. Ils verront que c'est
difficile, mais c'est normal: "c'est le métier qui rentre".
S'ils n'y
arrivent pas, tu jette un œil à leur code en leur disant de ré-écrire
telle ou telle partie "en faisant comme ca, cela marchera" et qu'ils
viennent t'expliquer la différence entre leur code et l'implémentation
que tu suggère pour voir s'ils ont compris le truc.
Il est connu qu'on apprends plus
de ses erreurs que du reste.
Oui: il faut leur laisser galèrer un peu, ca ne fait pas de mal et après
qu'ils ont compris leur douleur,
Mais bon, il ne faut pas oublier non plus qu'il y a de vrai
neu-neus dont on se demande pourquoi ils font ou veulent faire de
l'info. Bon pour eux, une seule solution: stage dans l'équipe de qualité
à exercer bêtement mais scrupuleusement des fiches de tests.. ce sera
moins dangereux pour tout le monde.. quoi que ;)
Oui... mais pas se prendre la tête la dessus quand c'est pas l'essentiel
du propos, ni même le problème original de l'OP.
D'une part ca n'aide en
rien l'OP, mais en plus ca part souvent dans des digression a n'en plus
finir entre telle ou telle interprètation de la norme qui n'influence en
rien l'usage réél.
De toute facon pour les tests et le débug, moi je recommande de ne pas
se baser sur un environnement ou les choses ne sont pas reproductibles
(une saisie au clavier par exemple), et je préfère écrire les chaînes en
dur dans le code pour mettre au point le coeur de l'algo. Une fois ce
dernier validé, et les tests proprement mis dans un code de test
unitaire (pour détecter des régressions), on peut y aller des milles et
unes façon de saisir les paramètres dans un prog C (entrée clavier,
utilisation arc/argv, lecture de socket, du port série, que sais-je
encore).
Le truc a faire, et c'est pareil avec des stagiaires: tu les laisses
galérer un peu et corriger le problème eux-meme.. Ils verront que c'est
difficile, mais c'est normal: "c'est le métier qui rentre".
S'ils n'y
arrivent pas, tu jette un œil à leur code en leur disant de ré-écrire
telle ou telle partie "en faisant comme ca, cela marchera" et qu'ils
viennent t'expliquer la différence entre leur code et l'implémentation
que tu suggère pour voir s'ils ont compris le truc.
Il est connu qu'on apprends plus
de ses erreurs que du reste.
Oui: il faut leur laisser galèrer un peu, ca ne fait pas de mal et après
qu'ils ont compris leur douleur,
Mais bon, il ne faut pas oublier non plus qu'il y a de vrai
neu-neus dont on se demande pourquoi ils font ou veulent faire de
l'info. Bon pour eux, une seule solution: stage dans l'équipe de qualité
à exercer bêtement mais scrupuleusement des fiches de tests.. ce sera
moins dangereux pour tout le monde.. quoi que ;)
Fais gaffe, tu es au bord du *plonk*.
Fais gaffe, tu es au bord du *plonk*.
Fais gaffe, tu es au bord du *plonk*.
Samuel Devulder a écrit :Oui... mais pas se prendre la tête la dessus quand c'est pas l'essentiel
du propos, ni même le problème original de l'OP.
Ah bon tu l'as compris le problème original de l'OP ?
Il me semble que le PO a reçu toutes les explications nécessaires et le
recadrage qu'il fallait, après ça on peut discuter,
Samuel Devulder a écrit :
Oui... mais pas se prendre la tête la dessus quand c'est pas l'essentiel
du propos, ni même le problème original de l'OP.
Ah bon tu l'as compris le problème original de l'OP ?
Il me semble que le PO a reçu toutes les explications nécessaires et le
recadrage qu'il fallait, après ça on peut discuter,
Samuel Devulder a écrit :Oui... mais pas se prendre la tête la dessus quand c'est pas l'essentiel
du propos, ni même le problème original de l'OP.
Ah bon tu l'as compris le problème original de l'OP ?
Il me semble que le PO a reçu toutes les explications nécessaires et le
recadrage qu'il fallait, après ça on peut discuter,
Samuel Devulder a écrit :Perso je préfère faire des trucs qui marchent que de passer ma vie à
trouver pourquoi selon la norme le truc ne devrait pas marcher alors
qu'il marche effectivement dans les faits.
Tiens une girouette courageuse qui vient de tourner avec le vent !
Sinon, le degré zéro : ça marche chez moi donc c'est bon !
Samuel Devulder a écrit :
Perso je préfère faire des trucs qui marchent que de passer ma vie à
trouver pourquoi selon la norme le truc ne devrait pas marcher alors
qu'il marche effectivement dans les faits.
Tiens une girouette courageuse qui vient de tourner avec le vent !
Sinon, le degré zéro : ça marche chez moi donc c'est bon !
Samuel Devulder a écrit :Perso je préfère faire des trucs qui marchent que de passer ma vie à
trouver pourquoi selon la norme le truc ne devrait pas marcher alors
qu'il marche effectivement dans les faits.
Tiens une girouette courageuse qui vient de tourner avec le vent !
Sinon, le degré zéro : ça marche chez moi donc c'est bon !