Marc Boyer a écrit :Après quelques années de recherche, en effet, j'ai finis par
trouver uniquement 5 bouquins
"C Programming -- A modern approach" pour débuter
Pour débuter et même aller plus loin.K&R 2d pour continuer
Incontournable mais apporte bien peu par rapport à une lecture complète
du précédent.
Harbison & Steele pour consolider
Livre très mauvais selon moi. Jargoneux et mal organisé et contenant
beaucoup d'erreurs (consulter l'impressionnant errata).
Tiens hier soir, je cherchais à m'informer sur les "trap
représentations", je vais dans l'index, je cherche "trap" : rien. A
"representation" dans l'index, aucun renvoi vers "trap" alors que cette
notion est vraiment importante et nouvelle en C99.
En principe la notion devrait être développée dans le chapitre 6,
intitulé "Conversions an representations" [qu'il aurait d'ailleurs fallu
appeler "Representations and Conversions" puisque -- et c'est logique --
leur exposé commence par les /representations/ pour se poursuivre avec
les /conversions/]. je parcours tout le § 6.1 sur les representations et
je ne vois rien sur les /traps/, bref, à l'heure actuelle, e ne sais pas
où ils en parle dans leur livre.
Et ça se prétend un livre de référence (c'est le sous-titre) et en plus
à la 5ème édition ! je rigole. Les auteurs connaissent peut-être le C
mais ils ne savent pas écrire un livre clair et organisé
C unsleashe pour en ajouter
Non, livre très surfait, les trois-quarts de l'ouvrage (que dis-je, les
4/5 voire les 9/10) sont un affreux hors-sujet, par contre un tas de
questions très intéressantes ont été ignorées.
La norme....
ben un excellent document, souvent lisible malgré ce qu'on dit (même si
je trouverais quand même aussi pas mal à redire mais il est possible que
je n'ai pas le niveau pour tout comprendre), des exemples assez souvent
bien choisis. Au moins eux (les auteurs) ils donnent des définitions des
notions qu'ils étudient.
Tu oublies un excellent livre, le meilleur selon moi :
Plauger, "The C standard library".
Le problème des bouquins/tutoriels faciles et faux, c'est
qu'ils sont gentils avec le débutant (c'est facile) mais
qu'il risque de se rendre compte après qu'une partie de ce
qu'il croit juste ne l'est pas.
La gamme des documents dont tu parles est tellement large qu'on ne peut
parler en généralité.Comment jugeriez vous un professeur chinois de langue
française qui expliquerait que le français, c'est
facile, et qu'il n'y a que 2 groupes de conjugaisons
des verbes ?
Tu caricatures. Je ne serais pas choqué qu'on fasse _comme si_ il n'y
avait que des verbes du premier groupe pour expliquer ce que c'est que
le passé simple en français et mieux le distinguer du passé composé. Que
fera l'auteur lambda d'un cours de C confronté à la même tâche (je vais
caricaturer moi aussi) : il va t'enseigner d'abord toutes les formes
conjuguées à tous les groupes et à tous les temps en dérivant au passage
sur la notion collatérale de préfixe, suffixe et infixe puis il va
traiter du passé simple vs le passé composé en prenant des exemples dans
toute la gamme de ce qu'il a déjà expliqué, histoire de bien surcharger.
Marc Boyer a écrit :
Après quelques années de recherche, en effet, j'ai finis par
trouver uniquement 5 bouquins
"C Programming -- A modern approach" pour débuter
Pour débuter et même aller plus loin.
K&R 2d pour continuer
Incontournable mais apporte bien peu par rapport à une lecture complète
du précédent.
Harbison & Steele pour consolider
Livre très mauvais selon moi. Jargoneux et mal organisé et contenant
beaucoup d'erreurs (consulter l'impressionnant errata).
Tiens hier soir, je cherchais à m'informer sur les "trap
représentations", je vais dans l'index, je cherche "trap" : rien. A
"representation" dans l'index, aucun renvoi vers "trap" alors que cette
notion est vraiment importante et nouvelle en C99.
En principe la notion devrait être développée dans le chapitre 6,
intitulé "Conversions an representations" [qu'il aurait d'ailleurs fallu
appeler "Representations and Conversions" puisque -- et c'est logique --
leur exposé commence par les /representations/ pour se poursuivre avec
les /conversions/]. je parcours tout le § 6.1 sur les representations et
je ne vois rien sur les /traps/, bref, à l'heure actuelle, e ne sais pas
où ils en parle dans leur livre.
Et ça se prétend un livre de référence (c'est le sous-titre) et en plus
à la 5ème édition ! je rigole. Les auteurs connaissent peut-être le C
mais ils ne savent pas écrire un livre clair et organisé
C unsleashe pour en ajouter
Non, livre très surfait, les trois-quarts de l'ouvrage (que dis-je, les
4/5 voire les 9/10) sont un affreux hors-sujet, par contre un tas de
questions très intéressantes ont été ignorées.
La norme....
ben un excellent document, souvent lisible malgré ce qu'on dit (même si
je trouverais quand même aussi pas mal à redire mais il est possible que
je n'ai pas le niveau pour tout comprendre), des exemples assez souvent
bien choisis. Au moins eux (les auteurs) ils donnent des définitions des
notions qu'ils étudient.
Tu oublies un excellent livre, le meilleur selon moi :
Plauger, "The C standard library".
Le problème des bouquins/tutoriels faciles et faux, c'est
qu'ils sont gentils avec le débutant (c'est facile) mais
qu'il risque de se rendre compte après qu'une partie de ce
qu'il croit juste ne l'est pas.
La gamme des documents dont tu parles est tellement large qu'on ne peut
parler en généralité.
Comment jugeriez vous un professeur chinois de langue
française qui expliquerait que le français, c'est
facile, et qu'il n'y a que 2 groupes de conjugaisons
des verbes ?
Tu caricatures. Je ne serais pas choqué qu'on fasse _comme si_ il n'y
avait que des verbes du premier groupe pour expliquer ce que c'est que
le passé simple en français et mieux le distinguer du passé composé. Que
fera l'auteur lambda d'un cours de C confronté à la même tâche (je vais
caricaturer moi aussi) : il va t'enseigner d'abord toutes les formes
conjuguées à tous les groupes et à tous les temps en dérivant au passage
sur la notion collatérale de préfixe, suffixe et infixe puis il va
traiter du passé simple vs le passé composé en prenant des exemples dans
toute la gamme de ce qu'il a déjà expliqué, histoire de bien surcharger.
Marc Boyer a écrit :Après quelques années de recherche, en effet, j'ai finis par
trouver uniquement 5 bouquins
"C Programming -- A modern approach" pour débuter
Pour débuter et même aller plus loin.K&R 2d pour continuer
Incontournable mais apporte bien peu par rapport à une lecture complète
du précédent.
Harbison & Steele pour consolider
Livre très mauvais selon moi. Jargoneux et mal organisé et contenant
beaucoup d'erreurs (consulter l'impressionnant errata).
Tiens hier soir, je cherchais à m'informer sur les "trap
représentations", je vais dans l'index, je cherche "trap" : rien. A
"representation" dans l'index, aucun renvoi vers "trap" alors que cette
notion est vraiment importante et nouvelle en C99.
En principe la notion devrait être développée dans le chapitre 6,
intitulé "Conversions an representations" [qu'il aurait d'ailleurs fallu
appeler "Representations and Conversions" puisque -- et c'est logique --
leur exposé commence par les /representations/ pour se poursuivre avec
les /conversions/]. je parcours tout le § 6.1 sur les representations et
je ne vois rien sur les /traps/, bref, à l'heure actuelle, e ne sais pas
où ils en parle dans leur livre.
Et ça se prétend un livre de référence (c'est le sous-titre) et en plus
à la 5ème édition ! je rigole. Les auteurs connaissent peut-être le C
mais ils ne savent pas écrire un livre clair et organisé
C unsleashe pour en ajouter
Non, livre très surfait, les trois-quarts de l'ouvrage (que dis-je, les
4/5 voire les 9/10) sont un affreux hors-sujet, par contre un tas de
questions très intéressantes ont été ignorées.
La norme....
ben un excellent document, souvent lisible malgré ce qu'on dit (même si
je trouverais quand même aussi pas mal à redire mais il est possible que
je n'ai pas le niveau pour tout comprendre), des exemples assez souvent
bien choisis. Au moins eux (les auteurs) ils donnent des définitions des
notions qu'ils étudient.
Tu oublies un excellent livre, le meilleur selon moi :
Plauger, "The C standard library".
Le problème des bouquins/tutoriels faciles et faux, c'est
qu'ils sont gentils avec le débutant (c'est facile) mais
qu'il risque de se rendre compte après qu'une partie de ce
qu'il croit juste ne l'est pas.
La gamme des documents dont tu parles est tellement large qu'on ne peut
parler en généralité.Comment jugeriez vous un professeur chinois de langue
française qui expliquerait que le français, c'est
facile, et qu'il n'y a que 2 groupes de conjugaisons
des verbes ?
Tu caricatures. Je ne serais pas choqué qu'on fasse _comme si_ il n'y
avait que des verbes du premier groupe pour expliquer ce que c'est que
le passé simple en français et mieux le distinguer du passé composé. Que
fera l'auteur lambda d'un cours de C confronté à la même tâche (je vais
caricaturer moi aussi) : il va t'enseigner d'abord toutes les formes
conjuguées à tous les groupes et à tous les temps en dérivant au passage
sur la notion collatérale de préfixe, suffixe et infixe puis il va
traiter du passé simple vs le passé composé en prenant des exemples dans
toute la gamme de ce qu'il a déjà expliqué, histoire de bien surcharger.
Bonsoir,
Je ne me vois pas lire un livre pour experts (K&R) alors que je débute et de
plus en anglais.
Non, ce livre n'est pas de Delannoy. Il s'agit d'un livre édité par
MicroApplication dont le copyright date de 1997 mais achevé d'imprimer en
juillet 1998. Ce livre vient de Data Becker Gmbh & Co KG, auteur Gerhard
Willms.
Voilà, je vais vous laisser sur cette situation. Je continue mon étude avec
les 2 et jusqu'à ce jour, cela fonctionne bien.
Je suis aux saisies formatées de nombres octaux et hexadécimaux.
Bonsoir,
Je ne me vois pas lire un livre pour experts (K&R) alors que je débute et de
plus en anglais.
Non, ce livre n'est pas de Delannoy. Il s'agit d'un livre édité par
MicroApplication dont le copyright date de 1997 mais achevé d'imprimer en
juillet 1998. Ce livre vient de Data Becker Gmbh & Co KG, auteur Gerhard
Willms.
Voilà, je vais vous laisser sur cette situation. Je continue mon étude avec
les 2 et jusqu'à ce jour, cela fonctionne bien.
Je suis aux saisies formatées de nombres octaux et hexadécimaux.
Bonsoir,
Je ne me vois pas lire un livre pour experts (K&R) alors que je débute et de
plus en anglais.
Non, ce livre n'est pas de Delannoy. Il s'agit d'un livre édité par
MicroApplication dont le copyright date de 1997 mais achevé d'imprimer en
juillet 1998. Ce livre vient de Data Becker Gmbh & Co KG, auteur Gerhard
Willms.
Voilà, je vais vous laisser sur cette situation. Je continue mon étude avec
les 2 et jusqu'à ce jour, cela fonctionne bien.
Je suis aux saisies formatées de nombres octaux et hexadécimaux.
LMC a écrit :Il s'agit d'un livre édité par MicroApplication dont le copyright date de
1997 mais achevé d'imprimer en juillet 1998. Ce livre vient de Data
Becker Gmbh & Co KG, auteur Gerhard Willms.
OK, je ne connais pas.Voilà, je vais vous laisser sur cette situation. Je continue mon étude
avec les 2 et jusqu'à ce jour, cela fonctionne bien. Je suis aux saisies
formatées de nombres octaux et hexadécimaux.
Les nombres ne sont ni octaux ni hexadécimaux, c'est leur représentation
mathématique qui l'est. Bon sinon, les saisies formatées en octal et en
hexa !!! mais le débutant s'en fout et ça lui sert à rien pour apprendre
le C, c'est que de la prise de tête, ça oblige en plus à connaître pas mal
de choses alors qu'on peut faire plein de choses amusantes et
intéressantes sans connaître ça.
LMC a écrit :
Il s'agit d'un livre édité par MicroApplication dont le copyright date de
1997 mais achevé d'imprimer en juillet 1998. Ce livre vient de Data
Becker Gmbh & Co KG, auteur Gerhard Willms.
OK, je ne connais pas.
Voilà, je vais vous laisser sur cette situation. Je continue mon étude
avec les 2 et jusqu'à ce jour, cela fonctionne bien. Je suis aux saisies
formatées de nombres octaux et hexadécimaux.
Les nombres ne sont ni octaux ni hexadécimaux, c'est leur représentation
mathématique qui l'est. Bon sinon, les saisies formatées en octal et en
hexa !!! mais le débutant s'en fout et ça lui sert à rien pour apprendre
le C, c'est que de la prise de tête, ça oblige en plus à connaître pas mal
de choses alors qu'on peut faire plein de choses amusantes et
intéressantes sans connaître ça.
LMC a écrit :Il s'agit d'un livre édité par MicroApplication dont le copyright date de
1997 mais achevé d'imprimer en juillet 1998. Ce livre vient de Data
Becker Gmbh & Co KG, auteur Gerhard Willms.
OK, je ne connais pas.Voilà, je vais vous laisser sur cette situation. Je continue mon étude
avec les 2 et jusqu'à ce jour, cela fonctionne bien. Je suis aux saisies
formatées de nombres octaux et hexadécimaux.
Les nombres ne sont ni octaux ni hexadécimaux, c'est leur représentation
mathématique qui l'est. Bon sinon, les saisies formatées en octal et en
hexa !!! mais le débutant s'en fout et ça lui sert à rien pour apprendre
le C, c'est que de la prise de tête, ça oblige en plus à connaître pas mal
de choses alors qu'on peut faire plein de choses amusantes et
intéressantes sans connaître ça.
Thierry B. a écrit :
Justement, le débutant a parfois envie de comprendre, et ce genre
Mais il même essentiel qu'il comprenne. Le tout est que les choses soient
faites dans le bon ordre.d'exercice est formateur: il faut lire la doc des fonctions de la
bibliothèque, se bagarrer avec les chaines de caractères, plein de
trucs, quoi.
Bref pour toi apprendre est un combat, une lutte. Pour moi, apprendre
c'est comme quand je vais au cinéma ou quand on me raconte une histoire ou
que je fais un voyage. En tous cas, c'est comme ça que je veux que ce
soit.
Thierry B. a écrit :
Justement, le débutant a parfois envie de comprendre, et ce genre
Mais il même essentiel qu'il comprenne. Le tout est que les choses soient
faites dans le bon ordre.
d'exercice est formateur: il faut lire la doc des fonctions de la
bibliothèque, se bagarrer avec les chaines de caractères, plein de
trucs, quoi.
Bref pour toi apprendre est un combat, une lutte. Pour moi, apprendre
c'est comme quand je vais au cinéma ou quand on me raconte une histoire ou
que je fais un voyage. En tous cas, c'est comme ça que je veux que ce
soit.
Thierry B. a écrit :
Justement, le débutant a parfois envie de comprendre, et ce genre
Mais il même essentiel qu'il comprenne. Le tout est que les choses soient
faites dans le bon ordre.d'exercice est formateur: il faut lire la doc des fonctions de la
bibliothèque, se bagarrer avec les chaines de caractères, plein de
trucs, quoi.
Bref pour toi apprendre est un combat, une lutte. Pour moi, apprendre
c'est comme quand je vais au cinéma ou quand on me raconte une histoire ou
que je fais un voyage. En tous cas, c'est comme ça que je veux que ce
soit.
On 2008-08-27, LMC wrote:Bonsoir,
Je ne me vois pas lire un livre pour experts (K&R) alors que je débute et
de
plus en anglais.
Le K&R n'est pas un livre pour expert: il a des qualités et des
défauts, mais il se veut être un bouquin pour débutant en C
(mais pas pour débutant en programmation).
De plus, il a été traduit en français.Non, ce livre n'est pas de Delannoy. Il s'agit d'un livre édité par
MicroApplication dont le copyright date de 1997 mais achevé d'imprimer en
juillet 1998. Ce livre vient de Data Becker Gmbh & Co KG, auteur Gerhard
Willms.
Inconnu au bataillon.Voilà, je vais vous laisser sur cette situation. Je continue mon étude
avec
les 2 et jusqu'à ce jour, cela fonctionne bien.
Bien sur que "jusqu'à ce jour, cela fonctionne bien"... En
informatique, faire un code de 400 lignes qui marche deux jours sur
la machine du développeur, ce n'est pas très compliqué. Et C n'est
pas forcément le meilleur outil pour faire cela.
La question, c'est: "est-ce que j'apprend aujourd'hui me servira
dans 5 ans?".Je suis aux saisies formatées de nombres octaux et hexadécimaux.
Pas vraiment une notion essentielle.
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
On 2008-08-27, LMC <mlalmant@tp.ul> wrote:
Bonsoir,
Je ne me vois pas lire un livre pour experts (K&R) alors que je débute et
de
plus en anglais.
Le K&R n'est pas un livre pour expert: il a des qualités et des
défauts, mais il se veut être un bouquin pour débutant en C
(mais pas pour débutant en programmation).
De plus, il a été traduit en français.
Non, ce livre n'est pas de Delannoy. Il s'agit d'un livre édité par
MicroApplication dont le copyright date de 1997 mais achevé d'imprimer en
juillet 1998. Ce livre vient de Data Becker Gmbh & Co KG, auteur Gerhard
Willms.
Inconnu au bataillon.
Voilà, je vais vous laisser sur cette situation. Je continue mon étude
avec
les 2 et jusqu'à ce jour, cela fonctionne bien.
Bien sur que "jusqu'à ce jour, cela fonctionne bien"... En
informatique, faire un code de 400 lignes qui marche deux jours sur
la machine du développeur, ce n'est pas très compliqué. Et C n'est
pas forcément le meilleur outil pour faire cela.
La question, c'est: "est-ce que j'apprend aujourd'hui me servira
dans 5 ans?".
Je suis aux saisies formatées de nombres octaux et hexadécimaux.
Pas vraiment une notion essentielle.
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
On 2008-08-27, LMC wrote:Bonsoir,
Je ne me vois pas lire un livre pour experts (K&R) alors que je débute et
de
plus en anglais.
Le K&R n'est pas un livre pour expert: il a des qualités et des
défauts, mais il se veut être un bouquin pour débutant en C
(mais pas pour débutant en programmation).
De plus, il a été traduit en français.Non, ce livre n'est pas de Delannoy. Il s'agit d'un livre édité par
MicroApplication dont le copyright date de 1997 mais achevé d'imprimer en
juillet 1998. Ce livre vient de Data Becker Gmbh & Co KG, auteur Gerhard
Willms.
Inconnu au bataillon.Voilà, je vais vous laisser sur cette situation. Je continue mon étude
avec
les 2 et jusqu'à ce jour, cela fonctionne bien.
Bien sur que "jusqu'à ce jour, cela fonctionne bien"... En
informatique, faire un code de 400 lignes qui marche deux jours sur
la machine du développeur, ce n'est pas très compliqué. Et C n'est
pas forcément le meilleur outil pour faire cela.
La question, c'est: "est-ce que j'apprend aujourd'hui me servira
dans 5 ans?".Je suis aux saisies formatées de nombres octaux et hexadécimaux.
Pas vraiment une notion essentielle.
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
Bonjour,
Dénigrer ne sert à rien.
Le livre est inconnu dans ton bataillon, pourtant je l'ai bien devant moi,
il n'est pas illusion !
Ce que tu as appris à l'école, cela te sert-il encore ?
Ce qui importe c'est le résultat : l'ouverture de l'esprit. Le reste suivra.
On ne met pas la charrue avant les boeufs ! La maison se construit brique par
brique !
Bonjour,
Dénigrer ne sert à rien.
Le livre est inconnu dans ton bataillon, pourtant je l'ai bien devant moi,
il n'est pas illusion !
Ce que tu as appris à l'école, cela te sert-il encore ?
Ce qui importe c'est le résultat : l'ouverture de l'esprit. Le reste suivra.
On ne met pas la charrue avant les boeufs ! La maison se construit brique par
brique !
Bonjour,
Dénigrer ne sert à rien.
Le livre est inconnu dans ton bataillon, pourtant je l'ai bien devant moi,
il n'est pas illusion !
Ce que tu as appris à l'école, cela te sert-il encore ?
Ce qui importe c'est le résultat : l'ouverture de l'esprit. Le reste suivra.
On ne met pas la charrue avant les boeufs ! La maison se construit brique par
brique !
BOn, je préviens tout de suite que les les deux livres de Delannoy dont
tu parles, à savoir :
(i) Programmer en Langage C, Eyrolles (1997),
(ii) Le livre du C premier langage, Eyrolles (1994 & 2002),
sont pour moi de mauvais livres d'un point de vue de la qualité
pédagogique et je ne les connais que très mal.
Pareil pour ses
"Exercices en Langage C". Moi, le livre de Delannoy auquel je me réfère
est le suivant
(iii) Claude Delannoy, "Langage C", Eyrolles (1999 & 2002), 920 pages.
Marc Boyer a écrit :Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...
Oui, pour moi c'est inexcusable en effet. Dans son livre "Langage C", on
trouve aussi de tels exemples d'emploi de main() à de nombreuses
reprises. C'est d'autant plus étonnant que l'auteur dit lui-même, pages
820-821 :
"[L'en-tête de la fonction main()] ne peut toutefois s'écrire que sous
l'une des deux formes suivantes, la seconde étant indispensable
lorsqu'on souhaite récupérer les informations fournies par l'environnement :
int main(void) /* forme usuelle */
int main(int nbarg, char *argv[]);"
Et il ajoute, ce qui est contestable :
"on rencontre souvent des formes différentes, théoriquement hors norme :
main() /* théoriquement hors norme mais généralement accepté */
int main() /* théoriquement hors norme mais généralement accepté */
ces en-têtes sont cependant acceptés par toutes les implémentations,
quitte à provoquer un message d'avertissement (warning)."
Néanmoins, pour me faire l'avocat du diable, voici le /hello word/ de K&R2 :
------------------------------ 8<-----------------------------------
In C, the program to print ``hello, world'' is
#include <stdio.h>
main()
{
printf("hello, worldn");
}
------------------------------ >8 -----------------------------------
Je passe sur l'indentation étrange de l'exemple du §1.9
if (op == '+') printf("leur somme est : %d", n1+n2) ;
else printf("leur produit est : %d", n1+n2) ;
Bon OK, mais ça c'est une question de style,
le tout est d'être constant
dans ces choix (je n'ai pas vérifié en l'espèce).
liste chainée. Déjà, pas de type liste, on manipule
directement les chainons. Mais surtout, dans tous les
exos corrigés, on a un seul malloc (solution de l'exo 11.1)
qui fait un cast (transtypage) de la valeur de retour,
et pas de test de la valeur de retour de malloc.
La page avant, pas de test de valeur de retour de fopen...
Pas un seul free, pas un seul realloc dans les exemples...
Oui, pas terrible en effet. Je vérifie dans son bouquin (iii) cité
ci-dessus où il y a un chapitre complet là-dessus : il teste bien
malloc() dans ses exemples, il libère, il donne un exemple de realloc.
Au passage, j'ai noté que dans ce même chapitre, son traitement des
listes chaînées est beaucoup trop succint. Dans ses "Exercices corrigés
en langage C", il teste le retour de fopen().
Aller, un autre bouquin: "Le livre du C premier langage"
Bon,je répète ce bouquin est particulièrement indigent.dont des pages sont dispos en ligne. Le choix de présenter
le "switch" comme un complément en fin de livre et non
avec les structures de controle de base me semble discutable.
Bon, ça c'est un partie pris pédagogique qui me semble en effet
discutable mais bon, c'est le libre arbitre de l'enseignant.
(...) Et sur la page 4, la déclaration
de la fonction cube dans le main (plutôt vieux jeu comme façon
de coder).
OK et dans son livre (iii) il utilise occasionnelement ce genre de
déclarations. T'as pas un autre argument que "vieux jeu" ?
Sur la page 2 du chapitre sur les variables, il pourrait quand même
mentionner les identifiants valides mais réservés (ou faire une note
de bas de page disant que çaa existe).
OK mais c'est censé être un livre (je te cite le sous-titre) "pour les
vrais débutants en programmation". Le débutant il va jamais penser à écrire
int __toto;
donc ça c'est pas très grave, dans un premier temps.
Page 15, il explique que
"le code dit ASCII (abréviation de American Standard Code for
Information Interchange) a tendance à se généraliser." (ce qui
en 2008 me laisse pantois)
Tu penses à quoi ? UTF-8 ?
Bon, un texte ascii qui passe en UTF-8, ça ne
se voit pas, non ? Et puis au moins, il parle du jeu de caractères, tu
as plein de livres qui laissent penser que le seul jeu de caractères est
l'ascii sans même le citer. Par ailleurs, l'affirmation de Delannoy est
reprise par exemple dans le livre de King (§ 7.3 Character Types) :
"Todays' most popular character set is ASCII."
Tous les exemples dans K&R sont en ascii, même si les auteurs précisent
bien que c'est propre à ce jeu de caractères.
Les jeux de caractères européens contiennent l'ascii, difficile
d'échapper à l'ascii-centrisme.
Donc je ne suis pas du tout choqué par cela dans une première approche.
Quand aux "conversions
non dégradantes" entre int et float, là aussi, ça m'amuserait
de voir ce que signifie "non dégradante" pour
float f= INT_MAX - 7;
Effectivement, ça manque de précautions de contexte mais quand on
s'adresse à des débutants, il faut passer outre ce genre de détail,
BOn, je préviens tout de suite que les les deux livres de Delannoy dont
tu parles, à savoir :
(i) Programmer en Langage C, Eyrolles (1997),
(ii) Le livre du C premier langage, Eyrolles (1994 & 2002),
sont pour moi de mauvais livres d'un point de vue de la qualité
pédagogique et je ne les connais que très mal.
Pareil pour ses
"Exercices en Langage C". Moi, le livre de Delannoy auquel je me réfère
est le suivant
(iii) Claude Delannoy, "Langage C", Eyrolles (1999 & 2002), 920 pages.
Marc Boyer a écrit :
Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...
Oui, pour moi c'est inexcusable en effet. Dans son livre "Langage C", on
trouve aussi de tels exemples d'emploi de main() à de nombreuses
reprises. C'est d'autant plus étonnant que l'auteur dit lui-même, pages
820-821 :
"[L'en-tête de la fonction main()] ne peut toutefois s'écrire que sous
l'une des deux formes suivantes, la seconde étant indispensable
lorsqu'on souhaite récupérer les informations fournies par l'environnement :
int main(void) /* forme usuelle */
int main(int nbarg, char *argv[]);"
Et il ajoute, ce qui est contestable :
"on rencontre souvent des formes différentes, théoriquement hors norme :
main() /* théoriquement hors norme mais généralement accepté */
int main() /* théoriquement hors norme mais généralement accepté */
ces en-têtes sont cependant acceptés par toutes les implémentations,
quitte à provoquer un message d'avertissement (warning)."
Néanmoins, pour me faire l'avocat du diable, voici le /hello word/ de K&R2 :
------------------------------ 8<-----------------------------------
In C, the program to print ``hello, world'' is
#include <stdio.h>
main()
{
printf("hello, worldn");
}
------------------------------ >8 -----------------------------------
Je passe sur l'indentation étrange de l'exemple du §1.9
if (op == '+') printf("leur somme est : %d", n1+n2) ;
else printf("leur produit est : %d", n1+n2) ;
Bon OK, mais ça c'est une question de style,
le tout est d'être constant
dans ces choix (je n'ai pas vérifié en l'espèce).
liste chainée. Déjà, pas de type liste, on manipule
directement les chainons. Mais surtout, dans tous les
exos corrigés, on a un seul malloc (solution de l'exo 11.1)
qui fait un cast (transtypage) de la valeur de retour,
et pas de test de la valeur de retour de malloc.
La page avant, pas de test de valeur de retour de fopen...
Pas un seul free, pas un seul realloc dans les exemples...
Oui, pas terrible en effet. Je vérifie dans son bouquin (iii) cité
ci-dessus où il y a un chapitre complet là-dessus : il teste bien
malloc() dans ses exemples, il libère, il donne un exemple de realloc.
Au passage, j'ai noté que dans ce même chapitre, son traitement des
listes chaînées est beaucoup trop succint. Dans ses "Exercices corrigés
en langage C", il teste le retour de fopen().
Aller, un autre bouquin: "Le livre du C premier langage"
Bon,je répète ce bouquin est particulièrement indigent.
dont des pages sont dispos en ligne. Le choix de présenter
le "switch" comme un complément en fin de livre et non
avec les structures de controle de base me semble discutable.
Bon, ça c'est un partie pris pédagogique qui me semble en effet
discutable mais bon, c'est le libre arbitre de l'enseignant.
(...) Et sur la page 4, la déclaration
de la fonction cube dans le main (plutôt vieux jeu comme façon
de coder).
OK et dans son livre (iii) il utilise occasionnelement ce genre de
déclarations. T'as pas un autre argument que "vieux jeu" ?
Sur la page 2 du chapitre sur les variables, il pourrait quand même
mentionner les identifiants valides mais réservés (ou faire une note
de bas de page disant que çaa existe).
OK mais c'est censé être un livre (je te cite le sous-titre) "pour les
vrais débutants en programmation". Le débutant il va jamais penser à écrire
int __toto;
donc ça c'est pas très grave, dans un premier temps.
Page 15, il explique que
"le code dit ASCII (abréviation de American Standard Code for
Information Interchange) a tendance à se généraliser." (ce qui
en 2008 me laisse pantois)
Tu penses à quoi ? UTF-8 ?
Bon, un texte ascii qui passe en UTF-8, ça ne
se voit pas, non ? Et puis au moins, il parle du jeu de caractères, tu
as plein de livres qui laissent penser que le seul jeu de caractères est
l'ascii sans même le citer. Par ailleurs, l'affirmation de Delannoy est
reprise par exemple dans le livre de King (§ 7.3 Character Types) :
"Todays' most popular character set is ASCII."
Tous les exemples dans K&R sont en ascii, même si les auteurs précisent
bien que c'est propre à ce jeu de caractères.
Les jeux de caractères européens contiennent l'ascii, difficile
d'échapper à l'ascii-centrisme.
Donc je ne suis pas du tout choqué par cela dans une première approche.
Quand aux "conversions
non dégradantes" entre int et float, là aussi, ça m'amuserait
de voir ce que signifie "non dégradante" pour
float f= INT_MAX - 7;
Effectivement, ça manque de précautions de contexte mais quand on
s'adresse à des débutants, il faut passer outre ce genre de détail,
BOn, je préviens tout de suite que les les deux livres de Delannoy dont
tu parles, à savoir :
(i) Programmer en Langage C, Eyrolles (1997),
(ii) Le livre du C premier langage, Eyrolles (1994 & 2002),
sont pour moi de mauvais livres d'un point de vue de la qualité
pédagogique et je ne les connais que très mal.
Pareil pour ses
"Exercices en Langage C". Moi, le livre de Delannoy auquel je me réfère
est le suivant
(iii) Claude Delannoy, "Langage C", Eyrolles (1999 & 2002), 920 pages.
Marc Boyer a écrit :Prenons "Programmer en langage C avec exercices corrigés",
édition de 1997, Eyrolle, §1.1
main(){
...
}
Tiens, pas de type de retour de main...
Oui, pour moi c'est inexcusable en effet. Dans son livre "Langage C", on
trouve aussi de tels exemples d'emploi de main() à de nombreuses
reprises. C'est d'autant plus étonnant que l'auteur dit lui-même, pages
820-821 :
"[L'en-tête de la fonction main()] ne peut toutefois s'écrire que sous
l'une des deux formes suivantes, la seconde étant indispensable
lorsqu'on souhaite récupérer les informations fournies par l'environnement :
int main(void) /* forme usuelle */
int main(int nbarg, char *argv[]);"
Et il ajoute, ce qui est contestable :
"on rencontre souvent des formes différentes, théoriquement hors norme :
main() /* théoriquement hors norme mais généralement accepté */
int main() /* théoriquement hors norme mais généralement accepté */
ces en-têtes sont cependant acceptés par toutes les implémentations,
quitte à provoquer un message d'avertissement (warning)."
Néanmoins, pour me faire l'avocat du diable, voici le /hello word/ de K&R2 :
------------------------------ 8<-----------------------------------
In C, the program to print ``hello, world'' is
#include <stdio.h>
main()
{
printf("hello, worldn");
}
------------------------------ >8 -----------------------------------
Je passe sur l'indentation étrange de l'exemple du §1.9
if (op == '+') printf("leur somme est : %d", n1+n2) ;
else printf("leur produit est : %d", n1+n2) ;
Bon OK, mais ça c'est une question de style,
le tout est d'être constant
dans ces choix (je n'ai pas vérifié en l'espèce).
liste chainée. Déjà, pas de type liste, on manipule
directement les chainons. Mais surtout, dans tous les
exos corrigés, on a un seul malloc (solution de l'exo 11.1)
qui fait un cast (transtypage) de la valeur de retour,
et pas de test de la valeur de retour de malloc.
La page avant, pas de test de valeur de retour de fopen...
Pas un seul free, pas un seul realloc dans les exemples...
Oui, pas terrible en effet. Je vérifie dans son bouquin (iii) cité
ci-dessus où il y a un chapitre complet là-dessus : il teste bien
malloc() dans ses exemples, il libère, il donne un exemple de realloc.
Au passage, j'ai noté que dans ce même chapitre, son traitement des
listes chaînées est beaucoup trop succint. Dans ses "Exercices corrigés
en langage C", il teste le retour de fopen().
Aller, un autre bouquin: "Le livre du C premier langage"
Bon,je répète ce bouquin est particulièrement indigent.dont des pages sont dispos en ligne. Le choix de présenter
le "switch" comme un complément en fin de livre et non
avec les structures de controle de base me semble discutable.
Bon, ça c'est un partie pris pédagogique qui me semble en effet
discutable mais bon, c'est le libre arbitre de l'enseignant.
(...) Et sur la page 4, la déclaration
de la fonction cube dans le main (plutôt vieux jeu comme façon
de coder).
OK et dans son livre (iii) il utilise occasionnelement ce genre de
déclarations. T'as pas un autre argument que "vieux jeu" ?
Sur la page 2 du chapitre sur les variables, il pourrait quand même
mentionner les identifiants valides mais réservés (ou faire une note
de bas de page disant que çaa existe).
OK mais c'est censé être un livre (je te cite le sous-titre) "pour les
vrais débutants en programmation". Le débutant il va jamais penser à écrire
int __toto;
donc ça c'est pas très grave, dans un premier temps.
Page 15, il explique que
"le code dit ASCII (abréviation de American Standard Code for
Information Interchange) a tendance à se généraliser." (ce qui
en 2008 me laisse pantois)
Tu penses à quoi ? UTF-8 ?
Bon, un texte ascii qui passe en UTF-8, ça ne
se voit pas, non ? Et puis au moins, il parle du jeu de caractères, tu
as plein de livres qui laissent penser que le seul jeu de caractères est
l'ascii sans même le citer. Par ailleurs, l'affirmation de Delannoy est
reprise par exemple dans le livre de King (§ 7.3 Character Types) :
"Todays' most popular character set is ASCII."
Tous les exemples dans K&R sont en ascii, même si les auteurs précisent
bien que c'est propre à ce jeu de caractères.
Les jeux de caractères européens contiennent l'ascii, difficile
d'échapper à l'ascii-centrisme.
Donc je ne suis pas du tout choqué par cela dans une première approche.
Quand aux "conversions
non dégradantes" entre int et float, là aussi, ça m'amuserait
de voir ce que signifie "non dégradante" pour
float f= INT_MAX - 7;
Effectivement, ça manque de précautions de contexte mais quand on
s'adresse à des débutants, il faut passer outre ce genre de détail,
Pas besoin d'aller super dans les détails: tiens,
je donne un exemple simple: faire le calcul n * 1/n
en utilisant une boucle, pour des valeurs de n entre
1 et 10.
for(int n= 1; n< ; n++){
double somme=0.0;
for(int i= 0; i < n ; i++){
somme+= 1.0 / (double) n;
}
if (somme == 1.0){
printf("Pour n=%d, somme exacten", n);
} else {
printf("Pour n=%d somme-1.0=%fn", n, somme-1.0);
}
}
Puis remplacer %f par %e
Ca suffit à marquer les débutants et à comprendre que
tout n'est pas si simple.
Pas besoin d'aller super dans les détails: tiens,
je donne un exemple simple: faire le calcul n * 1/n
en utilisant une boucle, pour des valeurs de n entre
1 et 10.
for(int n= 1; n< ; n++){
double somme=0.0;
for(int i= 0; i < n ; i++){
somme+= 1.0 / (double) n;
}
if (somme == 1.0){
printf("Pour n=%d, somme exacten", n);
} else {
printf("Pour n=%d somme-1.0=%fn", n, somme-1.0);
}
}
Puis remplacer %f par %e
Ca suffit à marquer les débutants et à comprendre que
tout n'est pas si simple.
Pas besoin d'aller super dans les détails: tiens,
je donne un exemple simple: faire le calcul n * 1/n
en utilisant une boucle, pour des valeurs de n entre
1 et 10.
for(int n= 1; n< ; n++){
double somme=0.0;
for(int i= 0; i < n ; i++){
somme+= 1.0 / (double) n;
}
if (somme == 1.0){
printf("Pour n=%d, somme exacten", n);
} else {
printf("Pour n=%d somme-1.0=%fn", n, somme-1.0);
}
}
Puis remplacer %f par %e
Ca suffit à marquer les débutants et à comprendre que
tout n'est pas si simple.
donne ceci chez moi :
Pour n=1, somme exacte
Pour n=2, somme exacte
Pour n=3, somme exacte
Pour n=4, somme exacte
Pour n=5 somme-1.0=-0.000000 (%f)
Pour n=5 somme-1.0=-1.110223e-16 (%e)
Pour n=6 somme-1.0=-0.000000 (%f)
Pour n=6 somme-1.0=-1.110223e-16 (%e)
Pour n=7, somme exacte
Pour n=8, somme exacte
Pour n=9 somme-1.0=0.000000 (%f)
Pour n=9 somme-1.0=2.220446e-16 (%e)
Pour n somme-1.0=-0.000000 (%f)
Pour n somme-1.0=-1.110223e-16 (%e)
Ca suffit à marquer les débutants et à comprendre que
tout n'est pas si simple.
OK. Mais je dirais "tout n'est pas si simple avec les flottants" (en
particulier, tester une égalité de flottants après avoir fait des
opérations qui conduisent àd es erreurs d'arrondis est quand même
douteux).
Le comportement qui peut sembler surprenant ici (_pourquoi_ la
somme est considérée comme exacte pour n=7 et pas pour n=6 ? ce qui
m'échappe à vrai dire) n'est pas véritablement du ressort du langage C.
D'ailleurs, ne se peut-il pas que le programme ci-dessus exécuté sur une
autre machine donne des résultats différents ?
Faut dire que je connais rien aux flottants en général (j'aime pas
l'approximation ;) ) va falloir que je m'y mette sérieusement un de ces
quatre !
donne ceci chez moi :
Pour n=1, somme exacte
Pour n=2, somme exacte
Pour n=3, somme exacte
Pour n=4, somme exacte
Pour n=5 somme-1.0=-0.000000 (%f)
Pour n=5 somme-1.0=-1.110223e-16 (%e)
Pour n=6 somme-1.0=-0.000000 (%f)
Pour n=6 somme-1.0=-1.110223e-16 (%e)
Pour n=7, somme exacte
Pour n=8, somme exacte
Pour n=9 somme-1.0=0.000000 (%f)
Pour n=9 somme-1.0=2.220446e-16 (%e)
Pour n somme-1.0=-0.000000 (%f)
Pour n somme-1.0=-1.110223e-16 (%e)
Ca suffit à marquer les débutants et à comprendre que
tout n'est pas si simple.
OK. Mais je dirais "tout n'est pas si simple avec les flottants" (en
particulier, tester une égalité de flottants après avoir fait des
opérations qui conduisent àd es erreurs d'arrondis est quand même
douteux).
Le comportement qui peut sembler surprenant ici (_pourquoi_ la
somme est considérée comme exacte pour n=7 et pas pour n=6 ? ce qui
m'échappe à vrai dire) n'est pas véritablement du ressort du langage C.
D'ailleurs, ne se peut-il pas que le programme ci-dessus exécuté sur une
autre machine donne des résultats différents ?
Faut dire que je connais rien aux flottants en général (j'aime pas
l'approximation ;) ) va falloir que je m'y mette sérieusement un de ces
quatre !
donne ceci chez moi :
Pour n=1, somme exacte
Pour n=2, somme exacte
Pour n=3, somme exacte
Pour n=4, somme exacte
Pour n=5 somme-1.0=-0.000000 (%f)
Pour n=5 somme-1.0=-1.110223e-16 (%e)
Pour n=6 somme-1.0=-0.000000 (%f)
Pour n=6 somme-1.0=-1.110223e-16 (%e)
Pour n=7, somme exacte
Pour n=8, somme exacte
Pour n=9 somme-1.0=0.000000 (%f)
Pour n=9 somme-1.0=2.220446e-16 (%e)
Pour n somme-1.0=-0.000000 (%f)
Pour n somme-1.0=-1.110223e-16 (%e)
Ca suffit à marquer les débutants et à comprendre que
tout n'est pas si simple.
OK. Mais je dirais "tout n'est pas si simple avec les flottants" (en
particulier, tester une égalité de flottants après avoir fait des
opérations qui conduisent àd es erreurs d'arrondis est quand même
douteux).
Le comportement qui peut sembler surprenant ici (_pourquoi_ la
somme est considérée comme exacte pour n=7 et pas pour n=6 ? ce qui
m'échappe à vrai dire) n'est pas véritablement du ressort du langage C.
D'ailleurs, ne se peut-il pas que le programme ci-dessus exécuté sur une
autre machine donne des résultats différents ?
Faut dire que je connais rien aux flottants en général (j'aime pas
l'approximation ;) ) va falloir que je m'y mette sérieusement un de ces
quatre !
Tu oublies un excellent livre, le meilleur selon moi :
Plauger, "The C standard library".
Comment jugeriez vous un professeur chinois de langue
française qui expliquerait que le français, c'est
facile, et qu'il n'y a que 2 groupes de conjugaisons
des verbes ?
Tu caricatures.
le passé simple en français et mieux le distinguer du passé composé.
Tu oublies un excellent livre, le meilleur selon moi :
Plauger, "The C standard library".
Comment jugeriez vous un professeur chinois de langue
française qui expliquerait que le français, c'est
facile, et qu'il n'y a que 2 groupes de conjugaisons
des verbes ?
Tu caricatures.
le passé simple en français et mieux le distinguer du passé composé.
Tu oublies un excellent livre, le meilleur selon moi :
Plauger, "The C standard library".
Comment jugeriez vous un professeur chinois de langue
française qui expliquerait que le français, c'est
facile, et qu'il n'y a que 2 groupes de conjugaisons
des verbes ?
Tu caricatures.
le passé simple en français et mieux le distinguer du passé composé.