Ceci dit, je suis convaincu que pour bien programmer portable,
il est utile de connaître les origines des défauts de portabilité.
J'y connais pas des masses, mais j'approuve. D'une manière générale, le
"non dit" dans le but d'être irréprochable dans son discours est, selon
moins, une erreur pédagogique. Je trouve plus pédagogique de dire et de
montrer.
Dans la discussion que j'ai mise en lien dans premier message de ce fil,
un certain -ed- me disait "non, ça, c'est pas toujours vrai. Dans ce
cas là ...". Il pouvait dire ça car, lui, il a probablement du voir et
constater (parfois à ces dépens) plein de problèmes du genre. Tant qu'on
a pas vu...
Autre exemple (désolé, j'en reviens au maths).
a) Définition avec non dit irréprochable
UNE primitive de f sur I est une fonction F dérivable sur I tq F'=f
b) Définition sans non dit, irréprochable aussi
UNE primitive de f sur I est une fonction F dérivable sur I tq F'=f
Attention, on dit UNE, car si on en trouve une, alors on en déduit plein
d'autres en additionnant une constante. exple ...
Tout ça pour dire juste ceci :
Le problème, c'est que, lorsqu'on évite le non-dit, c'est plus difficile
(plus fatiguant) d'être irréprochable.
Pour moi, la pédagogie que
j'aime, c'est celle de l'explicite (pas de non dit). Où le lecteur ne
doit pas jouer aux devinettes. Le tuto dont nous avons parlé avant
essaye de faire cela.
Bon d'accord, hélas, il y a des erreurs.
Avec K&R,
quant à lui, j'ai un peu l'impression qu'il faut parfois jouer aux
devinettes (cf : quelques messages avant à propos des tableau). C'est
une référence. Ca doit bien quand tu connais déjà très bien le C et que
dans ta tête les choses sont déjà bien en place.
Je passe à autre chose.
a) Pour nos histoire de formalisme (lvalue etc.). Finalement, n'est-ce
pas un peu vain. Cela apporte-t-il quelque chose au programmeur ?
J'ai vraiment l'impression que ce formalisme de toute façon n'est pas
clairement et officiellement défini (je me trompe peut-être ?)
et j'ai
l'impression aussi qu'au final, ce qui compte, c'est d'avoir sa propre
terminologie (en évitant quand même de faire un truc marginal) et
qu'elle soit cohérente. Non ?
b) Pouvez-vous me dire où je peux me procurer les normes C ?
Ceci dit, je suis convaincu que pour bien programmer portable,
il est utile de connaître les origines des défauts de portabilité.
J'y connais pas des masses, mais j'approuve. D'une manière générale, le
"non dit" dans le but d'être irréprochable dans son discours est, selon
moins, une erreur pédagogique. Je trouve plus pédagogique de dire et de
montrer.
Dans la discussion que j'ai mise en lien dans premier message de ce fil,
un certain -ed- me disait "non, ça, c'est pas toujours vrai. Dans ce
cas là ...". Il pouvait dire ça car, lui, il a probablement du voir et
constater (parfois à ces dépens) plein de problèmes du genre. Tant qu'on
a pas vu...
Autre exemple (désolé, j'en reviens au maths).
a) Définition avec non dit irréprochable
UNE primitive de f sur I est une fonction F dérivable sur I tq F'=f
b) Définition sans non dit, irréprochable aussi
UNE primitive de f sur I est une fonction F dérivable sur I tq F'=f
Attention, on dit UNE, car si on en trouve une, alors on en déduit plein
d'autres en additionnant une constante. exple ...
Tout ça pour dire juste ceci :
Le problème, c'est que, lorsqu'on évite le non-dit, c'est plus difficile
(plus fatiguant) d'être irréprochable.
Pour moi, la pédagogie que
j'aime, c'est celle de l'explicite (pas de non dit). Où le lecteur ne
doit pas jouer aux devinettes. Le tuto dont nous avons parlé avant
essaye de faire cela.
Bon d'accord, hélas, il y a des erreurs.
Avec K&R,
quant à lui, j'ai un peu l'impression qu'il faut parfois jouer aux
devinettes (cf : quelques messages avant à propos des tableau). C'est
une référence. Ca doit bien quand tu connais déjà très bien le C et que
dans ta tête les choses sont déjà bien en place.
Je passe à autre chose.
a) Pour nos histoire de formalisme (lvalue etc.). Finalement, n'est-ce
pas un peu vain. Cela apporte-t-il quelque chose au programmeur ?
J'ai vraiment l'impression que ce formalisme de toute façon n'est pas
clairement et officiellement défini (je me trompe peut-être ?)
et j'ai
l'impression aussi qu'au final, ce qui compte, c'est d'avoir sa propre
terminologie (en évitant quand même de faire un truc marginal) et
qu'elle soit cohérente. Non ?
b) Pouvez-vous me dire où je peux me procurer les normes C ?
Ceci dit, je suis convaincu que pour bien programmer portable,
il est utile de connaître les origines des défauts de portabilité.
J'y connais pas des masses, mais j'approuve. D'une manière générale, le
"non dit" dans le but d'être irréprochable dans son discours est, selon
moins, une erreur pédagogique. Je trouve plus pédagogique de dire et de
montrer.
Dans la discussion que j'ai mise en lien dans premier message de ce fil,
un certain -ed- me disait "non, ça, c'est pas toujours vrai. Dans ce
cas là ...". Il pouvait dire ça car, lui, il a probablement du voir et
constater (parfois à ces dépens) plein de problèmes du genre. Tant qu'on
a pas vu...
Autre exemple (désolé, j'en reviens au maths).
a) Définition avec non dit irréprochable
UNE primitive de f sur I est une fonction F dérivable sur I tq F'=f
b) Définition sans non dit, irréprochable aussi
UNE primitive de f sur I est une fonction F dérivable sur I tq F'=f
Attention, on dit UNE, car si on en trouve une, alors on en déduit plein
d'autres en additionnant une constante. exple ...
Tout ça pour dire juste ceci :
Le problème, c'est que, lorsqu'on évite le non-dit, c'est plus difficile
(plus fatiguant) d'être irréprochable.
Pour moi, la pédagogie que
j'aime, c'est celle de l'explicite (pas de non dit). Où le lecteur ne
doit pas jouer aux devinettes. Le tuto dont nous avons parlé avant
essaye de faire cela.
Bon d'accord, hélas, il y a des erreurs.
Avec K&R,
quant à lui, j'ai un peu l'impression qu'il faut parfois jouer aux
devinettes (cf : quelques messages avant à propos des tableau). C'est
une référence. Ca doit bien quand tu connais déjà très bien le C et que
dans ta tête les choses sont déjà bien en place.
Je passe à autre chose.
a) Pour nos histoire de formalisme (lvalue etc.). Finalement, n'est-ce
pas un peu vain. Cela apporte-t-il quelque chose au programmeur ?
J'ai vraiment l'impression que ce formalisme de toute façon n'est pas
clairement et officiellement défini (je me trompe peut-être ?)
et j'ai
l'impression aussi qu'au final, ce qui compte, c'est d'avoir sa propre
terminologie (en évitant quand même de faire un truc marginal) et
qu'elle soit cohérente. Non ?
b) Pouvez-vous me dire où je peux me procurer les normes C ?
Je trouve qu'il ne parle pas assez de la
"représentation des valeurs en C", ensuite il parle des 3 différentes
représentations classiques des entiers signés mais je suis resté sur ma
faim (il en parle là mais il n'en parle plus après donc c'est un peu
académique) puis il parle des opérations sur les bits d'entiers non
signés, très classique.
Que dire de plus ?
Je trouve qu'il ne parle pas assez de la
"représentation des valeurs en C", ensuite il parle des 3 différentes
représentations classiques des entiers signés mais je suis resté sur ma
faim (il en parle là mais il n'en parle plus après donc c'est un peu
académique) puis il parle des opérations sur les bits d'entiers non
signés, très classique.
Que dire de plus ?
Je trouve qu'il ne parle pas assez de la
"représentation des valeurs en C", ensuite il parle des 3 différentes
représentations classiques des entiers signés mais je suis resté sur ma
faim (il en parle là mais il n'en parle plus après donc c'est un peu
académique) puis il parle des opérations sur les bits d'entiers non
signés, très classique.
Que dire de plus ?
Et toi, tu voudrais un bouquin avec tout ?
Et toi, tu voudrais un bouquin avec tout ?
Et toi, tu voudrais un bouquin avec tout ?
Si on part de l'idée naïve qu'un pointeur est un entier représentant
l'adresse d'un char (représentation courante), alors, toutes les
subtilités de conversions entre pointeurs semblent là juste pour
compliquer les choses.
Tient, ce matin en TD "mais monsieur, pourquoi il faut mettre
'static' devant les fonctions qui sont dans le .c et pas dans le
.h ? Le compilo peut pas s'en appercevoir tout seul ?"
Ben si, il pourrait facile en 2008. Mais en 1974, c'était différent...
Si on part de l'idée naïve qu'un pointeur est un entier représentant
l'adresse d'un char (représentation courante), alors, toutes les
subtilités de conversions entre pointeurs semblent là juste pour
compliquer les choses.
Tient, ce matin en TD "mais monsieur, pourquoi il faut mettre
'static' devant les fonctions qui sont dans le .c et pas dans le
.h ? Le compilo peut pas s'en appercevoir tout seul ?"
Ben si, il pourrait facile en 2008. Mais en 1974, c'était différent...
Si on part de l'idée naïve qu'un pointeur est un entier représentant
l'adresse d'un char (représentation courante), alors, toutes les
subtilités de conversions entre pointeurs semblent là juste pour
compliquer les choses.
Tient, ce matin en TD "mais monsieur, pourquoi il faut mettre
'static' devant les fonctions qui sont dans le .c et pas dans le
.h ? Le compilo peut pas s'en appercevoir tout seul ?"
Ben si, il pourrait facile en 2008. Mais en 1974, c'était différent...
Et toi, tu voudrais un bouquin avec tout ?
Je comprends l'idée. C'est vrai, mais je plaide non coupable, je suis un
matheux.
Dans ce cas, il y a peut-être un bouquin qui te plairait, c'est
Ceci étant, j'aurais bien voulu un livre sur le C avec un chouille
d'architecture, parce que j'avais (peut-être à tort) l'impression que ça
m'aurait plu, je ferai sans.
Bref, je vais continuer à lire le K&R
Et toi, tu voudrais un bouquin avec tout ?
Je comprends l'idée. C'est vrai, mais je plaide non coupable, je suis un
matheux.
Dans ce cas, il y a peut-être un bouquin qui te plairait, c'est
Ceci étant, j'aurais bien voulu un livre sur le C avec un chouille
d'architecture, parce que j'avais (peut-être à tort) l'impression que ça
m'aurait plu, je ferai sans.
Bref, je vais continuer à lire le K&R
Et toi, tu voudrais un bouquin avec tout ?
Je comprends l'idée. C'est vrai, mais je plaide non coupable, je suis un
matheux.
Dans ce cas, il y a peut-être un bouquin qui te plairait, c'est
Ceci étant, j'aurais bien voulu un livre sur le C avec un chouille
d'architecture, parce que j'avais (peut-être à tort) l'impression que ça
m'aurait plu, je ferai sans.
Bref, je vais continuer à lire le K&R
En fait, pour arriver à comprendre et sentir, il faudrait que je me
trouve concrètement en situation de porter des programmes que j'aurais
écrits sur une architecture sur une autre. Justement la chose que je
voulais éviter
En fait, pour arriver à comprendre et sentir, il faudrait que je me
trouve concrètement en situation de porter des programmes que j'aurais
écrits sur une architecture sur une autre. Justement la chose que je
voulais éviter
En fait, pour arriver à comprendre et sentir, il faudrait que je me
trouve concrètement en situation de porter des programmes que j'aurais
écrits sur une architecture sur une autre. Justement la chose que je
voulais éviter
Et toi, tu voudrais un bouquin avec tout ?
Je comprends l'idée. C'est vrai, mais je plaide non coupable, je suis un
matheux. En maths, quand on présente un chapitre particulier, ce qui est
présenté l'est en principe de manière "complète".
Et toi, tu voudrais un bouquin avec tout ?
Je comprends l'idée. C'est vrai, mais je plaide non coupable, je suis un
matheux. En maths, quand on présente un chapitre particulier, ce qui est
présenté l'est en principe de manière "complète".
Et toi, tu voudrais un bouquin avec tout ?
Je comprends l'idée. C'est vrai, mais je plaide non coupable, je suis un
matheux. En maths, quand on présente un chapitre particulier, ce qui est
présenté l'est en principe de manière "complète".
Je trouve qu'il ne parle pas assez de la
"représentation des valeurs en C", ensuite il parle des 3 différentes
représentations classiques des entiers signés mais je suis resté sur ma
faim (il en parle là mais il n'en parle plus après donc c'est un peu
académique) puis il parle des opérations sur les bits d'entiers non
signés, très classique.
Que dire de plus ?
Ça je te le dirai une fois que j'aurai un peu plus roulé ma bosse.
Et c'est d'ailleurs peut-être moins une question de "qu'est-ce qu'il
faut dire" mais plutôt "comment le dire".
Comme j'avais déjà dit ici : c'est comme une histoire drôle dont tu
comprends tous les mots et toutes les phrases et qui ne te fait pas rire.
En fait, pour arriver à comprendre et sentir, il faudrait que je me
trouve concrètement en situation de porter des programmes que j'aurais
écrits sur une architecture sur une autre. Justement la chose que je
voulais éviter (un ouvrage bien écrit est justement censé te faire
l'économie de l'expérience).
Je trouve qu'il ne parle pas assez de la
"représentation des valeurs en C", ensuite il parle des 3 différentes
représentations classiques des entiers signés mais je suis resté sur ma
faim (il en parle là mais il n'en parle plus après donc c'est un peu
académique) puis il parle des opérations sur les bits d'entiers non
signés, très classique.
Que dire de plus ?
Ça je te le dirai une fois que j'aurai un peu plus roulé ma bosse.
Et c'est d'ailleurs peut-être moins une question de "qu'est-ce qu'il
faut dire" mais plutôt "comment le dire".
Comme j'avais déjà dit ici : c'est comme une histoire drôle dont tu
comprends tous les mots et toutes les phrases et qui ne te fait pas rire.
En fait, pour arriver à comprendre et sentir, il faudrait que je me
trouve concrètement en situation de porter des programmes que j'aurais
écrits sur une architecture sur une autre. Justement la chose que je
voulais éviter (un ouvrage bien écrit est justement censé te faire
l'économie de l'expérience).
Je trouve qu'il ne parle pas assez de la
"représentation des valeurs en C", ensuite il parle des 3 différentes
représentations classiques des entiers signés mais je suis resté sur ma
faim (il en parle là mais il n'en parle plus après donc c'est un peu
académique) puis il parle des opérations sur les bits d'entiers non
signés, très classique.
Que dire de plus ?
Ça je te le dirai une fois que j'aurai un peu plus roulé ma bosse.
Et c'est d'ailleurs peut-être moins une question de "qu'est-ce qu'il
faut dire" mais plutôt "comment le dire".
Comme j'avais déjà dit ici : c'est comme une histoire drôle dont tu
comprends tous les mots et toutes les phrases et qui ne te fait pas rire.
En fait, pour arriver à comprendre et sentir, il faudrait que je me
trouve concrètement en situation de porter des programmes que j'aurais
écrits sur une architecture sur une autre. Justement la chose que je
voulais éviter (un ouvrage bien écrit est justement censé te faire
l'économie de l'expérience).
In article <fr481f$ju8$,
Marc Boyer wrote:Si on part de l'idée naïve qu'un pointeur est un entier représentant
l'adresse d'un char (représentation courante), alors, toutes les
subtilités de conversions entre pointeurs semblent là juste pour
compliquer les choses.
Euh, ces temps-ci, les regles a la con, c'est plus des problemes d'alignement
sur les trucs plus gros, ou des octets de bourrage... ou alors, les
vrais problemes de difference signe/pas signe... D'ailleurs ptrdiff_t et
size_t ne font qu'ajouter a l'immonde bordel ambient.
Je ne vois plus trop l'interet de mentionner les autres cas bizarres.
Ah si, il y a les pointeurs de fonction, quand meme, les ABI ppc ayant
des choses rigolotes sur les passages de parametres.
Ou alors, ca me parait plus important d'evoquer les regles d'aliasing
de type, qui sont elles *vraiment* tordues.
Tient, ce matin en TD "mais monsieur, pourquoi il faut mettre
'static' devant les fonctions qui sont dans le .c et pas dans le
.h ? Le compilo peut pas s'en appercevoir tout seul ?"
Ben si, il pourrait facile en 2008. Mais en 1974, c'était différent...
Non, toujours pas en 2008... Comment tu fais la difference entre les
fonctions qui ne sont pas dans le .h de facon intentionnelle, et celles
qui n'y sont pas parce qu'on les a oubliees ?
(a cote de ca, je bosse sur un projet ou les fonctions locales du noyau
ne sont PAS annotees avec static, parce que sinon c'est trop la zone a
debugguer...)
In article <fr481f$ju8$1@news.cict.fr>,
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> wrote:
Si on part de l'idée naïve qu'un pointeur est un entier représentant
l'adresse d'un char (représentation courante), alors, toutes les
subtilités de conversions entre pointeurs semblent là juste pour
compliquer les choses.
Euh, ces temps-ci, les regles a la con, c'est plus des problemes d'alignement
sur les trucs plus gros, ou des octets de bourrage... ou alors, les
vrais problemes de difference signe/pas signe... D'ailleurs ptrdiff_t et
size_t ne font qu'ajouter a l'immonde bordel ambient.
Je ne vois plus trop l'interet de mentionner les autres cas bizarres.
Ah si, il y a les pointeurs de fonction, quand meme, les ABI ppc ayant
des choses rigolotes sur les passages de parametres.
Ou alors, ca me parait plus important d'evoquer les regles d'aliasing
de type, qui sont elles *vraiment* tordues.
Tient, ce matin en TD "mais monsieur, pourquoi il faut mettre
'static' devant les fonctions qui sont dans le .c et pas dans le
.h ? Le compilo peut pas s'en appercevoir tout seul ?"
Ben si, il pourrait facile en 2008. Mais en 1974, c'était différent...
Non, toujours pas en 2008... Comment tu fais la difference entre les
fonctions qui ne sont pas dans le .h de facon intentionnelle, et celles
qui n'y sont pas parce qu'on les a oubliees ?
(a cote de ca, je bosse sur un projet ou les fonctions locales du noyau
ne sont PAS annotees avec static, parce que sinon c'est trop la zone a
debugguer...)
In article <fr481f$ju8$,
Marc Boyer wrote:Si on part de l'idée naïve qu'un pointeur est un entier représentant
l'adresse d'un char (représentation courante), alors, toutes les
subtilités de conversions entre pointeurs semblent là juste pour
compliquer les choses.
Euh, ces temps-ci, les regles a la con, c'est plus des problemes d'alignement
sur les trucs plus gros, ou des octets de bourrage... ou alors, les
vrais problemes de difference signe/pas signe... D'ailleurs ptrdiff_t et
size_t ne font qu'ajouter a l'immonde bordel ambient.
Je ne vois plus trop l'interet de mentionner les autres cas bizarres.
Ah si, il y a les pointeurs de fonction, quand meme, les ABI ppc ayant
des choses rigolotes sur les passages de parametres.
Ou alors, ca me parait plus important d'evoquer les regles d'aliasing
de type, qui sont elles *vraiment* tordues.
Tient, ce matin en TD "mais monsieur, pourquoi il faut mettre
'static' devant les fonctions qui sont dans le .c et pas dans le
.h ? Le compilo peut pas s'en appercevoir tout seul ?"
Ben si, il pourrait facile en 2008. Mais en 1974, c'était différent...
Non, toujours pas en 2008... Comment tu fais la difference entre les
fonctions qui ne sont pas dans le .h de facon intentionnelle, et celles
qui n'y sont pas parce qu'on les a oubliees ?
(a cote de ca, je bosse sur un projet ou les fonctions locales du noyau
ne sont PAS annotees avec static, parce que sinon c'est trop la zone a
debugguer...)
--{ candide a plopé ceci: }--En fait, pour arriver à comprendre et sentir, il faudrait que je me
trouve concrètement en situation de porter des programmes que j'aurais
écrits sur une architecture sur une autre. Justement la chose que je
voulais éviter
C'est une chose que l'on ne peut jamais éviter tout à fait.
Par exemple quand tu travailles sur des fichiers binaires
comme les fichiers image (bpm, tga, pcx, tiff...) sur plusieurs
architectures différentes. Et pour aller dans le concret, une
vieille Sun genre ss20, ça se trouve à pas cher[1], et ça rend
modeste sur la "portabilité" du code que tu écris :)
[1] mais p'taing comment ça fait du bruit !
--{ candide a plopé ceci: }--
En fait, pour arriver à comprendre et sentir, il faudrait que je me
trouve concrètement en situation de porter des programmes que j'aurais
écrits sur une architecture sur une autre. Justement la chose que je
voulais éviter
C'est une chose que l'on ne peut jamais éviter tout à fait.
Par exemple quand tu travailles sur des fichiers binaires
comme les fichiers image (bpm, tga, pcx, tiff...) sur plusieurs
architectures différentes. Et pour aller dans le concret, une
vieille Sun genre ss20, ça se trouve à pas cher[1], et ça rend
modeste sur la "portabilité" du code que tu écris :)
[1] mais p'taing comment ça fait du bruit !
--{ candide a plopé ceci: }--En fait, pour arriver à comprendre et sentir, il faudrait que je me
trouve concrètement en situation de porter des programmes que j'aurais
écrits sur une architecture sur une autre. Justement la chose que je
voulais éviter
C'est une chose que l'on ne peut jamais éviter tout à fait.
Par exemple quand tu travailles sur des fichiers binaires
comme les fichiers image (bpm, tga, pcx, tiff...) sur plusieurs
architectures différentes. Et pour aller dans le concret, une
vieille Sun genre ss20, ça se trouve à pas cher[1], et ça rend
modeste sur la "portabilité" du code que tu écris :)
[1] mais p'taing comment ça fait du bruit !