# C et C++ > C > Livres >  question sur un livre pour debutant

## sybil

bonsoir,

en fait je voudrais acheter un livre pour apprendre la programmation C, j'ai deja "langage C" de G. willms, il est vraiment tres bien mais trop detaill(750 pages) en faite je cherche quelque chose de plus rapide a lire pour apres reprendre le Willms. 
J'ai trouv 2 choix: 
Langage C norme ANSI(le classique, editions Dunod) et  "Programmer en langage C" par Claude Delannoy , en fait je sais pas lequel des deux me conviendrai plus
?
(si c'est necessaire: j'utilise codeblocks sous windows)

----------


## Sve@r

> bonsoir,
> 
> en fait je voudrais acheter un livre pour apprendre C, j'ai deja "langage C" de G. willms, il est vraiment tres bien mais trop detaill(750 pages) en faite je cherche quelque chose de plus rapide a lire pour apres reprendre le Willms. 
> J'ai trouv 2 choix: 
> Langage C norme ANSI(le classique, editions Dunod) et  "Programmer en langage C" par Claude Delannoy , en fait je sais pas lequel des deux me conviendrai plus
> ?
> (si c'est necessaire: j'utilise codeblocks sous windows)


Pourquoi tu veux "acheter" ? T'as plein de tutos sur le net, crit par une rfrence => http://emmanuel-delahaye.developpez.com
D'autres encore mme sur dveloppez.net.

Une fois que t'auras acquis des bases, si a te plait et que tu veux fouiller en profondeur ben tu pourras regarder le livre "Le langage C" de K&R. Et ensuite...

----------


## diogene

D'accord avec Sve@r. C'est une solution conomique et sense. Tu as de bons cours et tutoriels C sur notre site DVP pour tous les niveaux;
Consulte ce document pour quelques pistes

----------


## c-candide

> Consulte ce document pour quelques pistes


Disons que c'est acceptable comme document de prsentation pour des dbutants, c'est vrai que a donne un panorama qui peut aider  se reprer
(quoique il y aurait des choses  reformuler).

En regardant le sommaire, je tombe sur :

_Qu'est-ce que le C ?
Cr au dbut des annes 70 par Dennis Ritchie et Brian Kernighan,_ 

Ce n'est pas tout  fait exact, c'est Ritchie seul le crateur du langage C, Kernighan n'est que (si je puis dire) le co-auteur de la Bible (on dit souvent que Kernighan en aurait crit la partie "pdagogique" et DMR les annexes lesquelles sont un condens de la norme ANSI).

----------


## Emmanuel Delahaye

> Ensuite un autre diffrent mais crit par une rfrence => http://emmanuel-delahaye.developpez.com


Mes quelques pages ne sont pas un tutoriel, mais une srie de complments sur certains points souvent peu dtaills dans les cours et dans les livres.

----------


## Melem

> Bonsoir.
> 
> En fait je voudrais acheter un livre pour apprendre C, j'ai deja "langage C" de G. willms, il est vraiment tres bien mais trop detaill(750 pages) en faite je cherche quelque chose de plus rapide a lire pour apres reprendre le Willms.
> 
> J'ai trouv 2 choix :
> 
> Langage C norme ANSI(le classique, editions Dunod) et "Programmer en langage C" par Claude Delannoy , en fait je sais pas lequel des deux me conviendrai plus?
> (si c'est necessaire : j'utilise codeblocks sous windows)


Il y a plein de tutos sur le net, je ne saurais te recommander l'excellent cours de langage C de Henri Garreta. Mais il est aussi un peu trop dtaill ... pourtant, je peux te rassurer que c'est surtout les dtails qu'il faut connatre pour tre un vrai programmeur C. Mais je reconnais que ce n'est pas forcment ncessaire lorsqu'on dbute. Dans ce cas, le livre de Claude Delannoy peut te convenir, mais tu dois *imprativement* lire un autre cours aprs l'avoir lu (crois-moi, je l'ai dj lu) ! Le livre de Kernighan et Ritchie est aussi trs bien (normal, c'est la rfrence !) mais il suppose que le lecteur n'est pas un nouveau venu dans le monde de la programmation (en effet, le C n'est pas un langage fait pour les dbutants!). Tu peux aussi te rendre sur mon espace perso : http://melem.developpez.com/, il oriente petit  petit le dbutant ou l'expert vers l'apprentissage (et la matrise !) du langage C. J'aimerais galement avoir ton avis  sur mes tutoriels, afin que je puisse amliorer leur qualit.

----------


## sybil

merci a c-candide et melem pour leurs post informatif.

----------


## c-candide

> l'excellent cours de langage C de Henri Garreta.


Tant mieux si tu l'as apprci. Pour moi, c'est horriblement pdant et jargonneux, a ne s'adresse pas  un utilisateur du langage C, a s'adresse  quelqu'un qui en aurait une vision de linguiste, il faut se taper un vocabulaire mtalinguistique avant de comprendre de quoi il parle (la table des matires est dcompose selon des units syntaxiques : _considrations lexicales, oprateurs, instructions,_ etc. Mais on ne voit les choses sous cet angle qu'aprs avoir longtemps pratiqu le langage). L'exposition est abstraite, il n'y a aucune motivation, trs peu d'exemples, et ceux qu'on trouve sont dcontextualiss. Il m'a fallu environ 8 mois de C pour commencer  comprendre son charabia, c'est incroyable comment sous prtexte de pseudo gnralit il est capable de dire de manire complique des choses simples. Un des  documents les plus abscons que j'aie lus, encore pire que K&R. En outre , c'est assez incomplet.  Je le prcise pour le PO : ce n'est absolument pas un document pour dbutant. Par contre la prsentation est assez soigne, merci LaTeX, les typos rares et l'orthographe presque parfaite et je ne doute pas du srieux et des bonnes intentions de l'auteur. Je dirais que son document peut permettre de se prparer  lire la Norme. Mais que le dbutant passe son chemin.





> Dans ce cas, le livre de Claude Delannoy peut te convenir,


Il a crit quatre livres sur le C, faudrait tre un peu plus prcis.




> Le livre de Kernighan et Ritchie est ussi trs bien (normal, c'est la rfrence!)


OK, si je comprends bien tu te contentes de rpter l'opinion gnrale. Le K&R est en ralit  une abomination pdagogique, rempli d'incohrences dans l'exposition. Je ne dis pas que tout soit  rejeter, il y a mme quelques bones ides de-ci, de-l. Mais c'est un livre crit sur un coin de table. Je n'aurais aucune difficlut  le montrer ou en tous les cas  prsenter des arguments cohrents allant dans ce sens mais j'ai autre chose  faire. Le K&R a une valeur sentimentale, a oui. Personnellement, c'est l'ouvrage que je consulte en premier lorsque j'ai un doute sur quoi que ce soit. Mais je suis souvent du par leur laconisme ou leur manque de prcision. Et le K&R vaut aussi pour le magnifique code qui y est prsent (modulo quand mme les nombreuses erreurs, cf. l'errata sur le site de Ritchie et les commentaires sur le site de Richard Heathfield). En conclusion, le K&R n'est pas un mauvais ouvrage mais il faut le ramener  ce qu'il est.




> http://aurora-x.myartsonline.com/, il oriente petit  petit le dbutant ou l'expert vers l'apprentissage (et la matrise !) du langage C.


Tu t'es relu ?Tu viens d'crire _ le site oriente l'expert vers la matrise_ ? mais un expert est au-del de la matrise. Si je veux devenir un expert, ce n'est certainement pas vers ton site que j'irai (1). 

Juste pour voir je me suis pench un peu en dtail sur ton document intitul "La pratique du C". Rien que le titre : il ne correspond pas au contenu des 4 pages de texte qui est d'ailleurs assez htroclite.  Faisons une brve analyse de son contenu : tu dfinis, assez peu clairement et de faon trs incomplte selon moi, ce qu'est un projet, tu expliques sans dtail et sans motivation conceptuelle comment compiler le projet sous codeblocks, ton exemple est surcharg, tu parles de *extern* et *static* (ce dernier est polysmique) de manire abstraite, rapide et sans motivation alors qu'il s'agit de notions trs complexes pour ceux qui les dcouvrent, tes explications sur les fichiers d'en-tte (pas de "s" je pense) sont plus que sommaires alors que l aussi il s'agit d'une question fondamentale dans l'apprentissage du langage (en fait tu te limites  la question de la protection contre les inclusions multiples, c'est accompagn d'un exemple mais l encore il y a de quoi rester sur sa faim), enfin tu termines avec un exemple assez bien fait et sobre de structure opaque, sans doute un des meilleurs que j'aie vus mais a manque de motivation et de contextualisation.  
D'aprs ce que je lis sur ton site, ce document tait cens illustrer la compilation spare. Pour moi, c'est un traitement indigent et brouillon d'une question essentielle et dlicate. 

Voil pourquoi, moi j'attends quelques annes avant de faire un site sur le langage C.

__________
(1)Enfin, toi qui prtends t'adresser aux experts, tu ferais bien de te relire ou de lire des documents un peu srieux (par exemple la norme), je te laisse rectifier ces extraits du document analys ci-dessus (page 2) :

_tout objet (variable ou fonction) doit avoir t dclar avant dtre utilis.__Evidemment si lobjet dclar est une fonction_


EDIT 
Orthographe

----------


## Sve@r

> a m'a l'air trs conventionnel. Et a commence mal : 
> 
> *) dans le titre,  pourquoi des guillemets autour de C, c'est la premire fois que je vois a,  moins que ce ne soit un nouveau langage, le langage "C" comme il y a C# ...
> H oui. Il y a le C, le shell, le COBOL, le BASIC, le Ada et un paquet d'autres...
> 
> Mais, je vais quand mme regarder le contenu (1) et surtout le mode de prsentation des notions, il y a peut-tre quelques ides qui sortent de l'ordinaire.
> 
> Je parcours sans ordre et sans suite ton document. Je ne trouve pas clair l'expos sur les pointeurs, c'est un point capital dans l'apprentissage du C. Les exemples sont mal choisis et redondants, il n'y pas de CCC ("code complet compilable") permettant de rendre immdiatement tangibles les exemples proposs (le lecteur doit le crer lui-mme). Mais je reconnais qu'un bon expos sur les pointeurs est difficile  faire.
> 
> ...


Qui peut se vanter de tout connatre ? Lorsqu'on m'a propuls "instructeur"  l'cole d'informatique de la Marine (situe  l'poque sur la Base Aronavale de Rochefort/mer), il a fallu monter le cours et il a donc bien fallu que je m'y mette et il a aussi fallu aller assez vite. J'ai donc crit  l'poque ce que je savais du C. Je l'ai ensuite repris au fil du temps en fonction pour "essayer" d'amliorer certains points ou simplement pour en corriger d'autres. Tout n'est pas parfait mais c'est au-moins un bon dpart (et comme je l'ai dit ailleurs, pour passer la ligne d'arrive il faut d'abord avoir pass la ligne de dpart).

Tu as quand-mme quelques remarques utiles, notamment un manque de ccc que j'avais moi-aussi constat (j'avais d'ailleurs intgr l'tude de cas "Triangle de Pascal" pour essayer de combler). Mais malheureusement je n'enseigne plus le C depuis 2002 et donc j'ai un peu la flemme de m'y replonger. Et puis aujourd'hui avec internet il y a une flope de tutos (et le tien ? Ca en est o ?) donc j'ai moins de scrupules. Mais comme tu remarqueras, ce bouquin est sous licence libre. Donc si tu veux le reprendre pour y apporter des modif ben tu peux et me le renvoyer ensuite. Il sera remis en ligne avec un nouveau n de version et avec ton nom inscrit comme intervenant...

----------


## c-candide

> Et puis aujourd'hui avec internet il y a une flope de tutos (et le tien ? Ca en est o ?)


Comme je l'ai dj indiqu, il faut connatre suffisamment bien le C avant de se lancer dans ce genre d'opration (je considre qu'il faut une marge trs importante quand on enseigne quelque chose). Et je considre que ce n'est pas le cas actuellement. Je pense avoir suffisamment lu sur le C, il me reste surtout un ou deux projets d'envergure  faire, a prendra quelques mois et a va beaucoup m'apprendre.

Et l'apprentissage du C ne se rsume pas au contenu formel de la norme, c'est beaucoup plus que a  (comprendre un IDE, installer une bibliothque, lire la doc d'une bibliothque, utiliser un dbugger, utiliser Valgrind, comprendre les aspects propres  une implmentation, etc) et mis--part le fait de dchiffrer les docs mal faites, ambiges ou confuses, c'est cette activit qui prend le plus du temps. Avec le recul, le C n'est pas spcialement difficile, il est surtout mal expliqu. On peut me rtorquer : mais comment faisaient ceux qui l'apprenaient sans Internet, avec juste trois exemplaires de K&R disponibles  la BU ?  vrai dire je n'en sais rien mais il me semble inconcevable aujourd'hui qu'il faille investir plusieurs annes pour acqurir un langage de programmation. Il faut juste que les mthodes d'apprentissage voluent pour que cette dure soit rduite.

EDIT Copier coller mal plac

----------


## Emmanuel Delahaye

> mais comment faisaient ceux qui l'apprenaient sans Internet, avec juste trois exemplaires de K&R disponibles  la BU ?  vrai dire je n'en sais rien mais il me semble inconcevable aujourd'hui qu'il faille investir plusieurs annes pour acqurir un langage de programmation.


Bah, en tant que fidle de Borland, j'ai appris le Turbo Pascal 3.0, puis 4.0 tout seul ds mon premier PC en 1987 avec les bouquins livrs avec, puis le Turbo C pareil en 1988 (TC 2.01), puis avec le K&R2 ds qu'il est sorti (1990) avec BC++ 3.0 (bugg), puis 3.1 (stable et toujours en service !).

Ensuite, beaucoup de pratique, des minis projets personnels, de l'exprience professionnelle, puis,  partir de 1999 et l'arrive de l'Internet Haut Dbit chez moi, la pratique des forums c.l.c., puis f.c.l.c. Ensuite, beaucoup de remise en cause, de reflexion sur la pratique, la lecture de la norme au coup par coup, la dfinition claires de mes limites ...

Sinon, tes remarques sur 'le C mal expliqu', 'il faut rduire le temps d'apprentissage', oui, bien sr.

Pour faire un parallle, je suis musicien pratiquant la musique traditionnelle irlandaise en France depuis plus de 30 ans. J'ai dmarr en 1973  une poque o cette musique tait totalement inconnue en France.

C'est  coup de recherches personnelles, de rares disques, de rencontres entre les rares musiciens qui la pratiquaient en France, puis de voyages en Irlande (le premier en 1976) et normment de pratique, dont quelques groupes amateurs, puis professionnels, que j'ai fini, au bout d'une quinzaine d'anne, par comprendre 'comment a marche' ! (et encore, j'en apprends tous les jours, mme aujourd'hui, et heureusement, d'ailleurs...)

Maintenant, je suis un des animateurs d'une association sur Paris qui, depuis plus de 20 ans, donne des cours de musique chant et danse  des gens qui veulent tre 'oprationnels' en 3 ans.

L'aspect 'pionnier', 'dfricheur de terrain', me va assez bien, mais je comprends qu'on veuille aller plus vite.

C'est un peu le sens de mon site sur le C, qui essaye de mettre  disposition des techniques, pratiques, ficelles de mtiers non ou peu enseignes.

----------


## pmier

Je penses que ce qu'on oublie souvent, lorsqu'on juge les cours disponibles, c'est que chaqu'un n'a pas forcement la mme manire d'apprendre ni les mmes motivation.

Il est donc me semble t-il un peu exagr de critiquer avec tant de vhmence et de certitude les diffrents cours sur la forme. En outre je doute que quelqu'un aussi tranchant dans ses jugements puisse tre bon pdagogue mais bon la n'est pas le sujet.

Personellement je suis quelqu'un qui aime comprendre tous les dtails, pour pouvoir progresser. Tant qu'une question me trotte dans la tte je n'arrive pas  avancer. Et je dois dire que le cours de C de Mr Garretta qui est mentionn dans la page des cours et tutoriels C pour apprendre C m'a beaucoup plu.

Cela ne m'a pas paru jargoneux, et au contraire j'ai trouv que des notions qui ailleurs taient pass rapidement et sur lesquels je me posait des questions taient ici abord.

Toutefois je pense qu'effectivement il peut rebuter par trop de dtail et qu'il ne convient pas forcment  tout le monde.

En outre je trouve qu'il manque d'exemple et reste trs thorique, je pense qu'en parallle de ce cours ils faut se procurer des exercices.

 Donc regarde un peu partout pour voir ce qui te convient  :;):

----------


## Melem

> Tant mieux si tu l'as apprci. Pour moi, c'est horriblement pdant et jargonneux, a ne s'adresse pas  un utilisateur du langage C, a s'adresse  quelqu'un qui en aurait une vision de linguiste, il faut se taper un vocabulaire mtalinguistique avant de comprendre de quoi il parle (la table des matires est dcompose selon des units syntaxiques : considrations lexicales, oprateurs, instructions, etc. Mais on ne voit les choses sous cet angle qu'aprs avoir longtemps pratiqu le langage).


Et je vais continuer  l'aimer. Jargoneux tu dis, je te demande ce que c'est qu'un programmeur (ou un mdecin) qui ne matrise pas son jargon.




> Il a crit quatre livres sur le C, faudrait tre un peu plus prcis.


Je voulais parler du livre 'Programmer en langage C'.




> Le K&R est en ralit une abomination pdagogique, rempli d'incohrences dans l'exposition


J'ai appris le C avec avec ce livre, et j'ai appris plutt vite parce que j'ai dj programm, dans cet ordre, en VB, en BASIC (QuickBasic), et en Pascal avant de de dcouvrir (et d'en tomber amoureux) le C. C'est un livre principalement crit pour des gens plutt cals en informatique et qui ont certainement dj programm dans d'autres langages comme je l'ai dj dit plus haut.




> Tu t'es relu ?Tu viens d'crire  le site oriente l'expert vers la matrise ? mais un expert est au-del de la matrise. Si je veux devenir un expert, ce n'est certainement pas vers ton site que j'irai.


Plus on en sait plus on se rend compte qu'on ne sait pas ! Une dcouverte entrane deux mystres ...




> tu dfinis, assez peu clairement et de faon trs incomplte selon moi, ce qu'est un projet, tu expliques sans dtail et sans motivation conceptuelle comment compiler le projet sous codeblocks, ton exemple est surcharg,


Parce que a n'a rien  voir avec le langage C. J'ai dcrit ce qu'est un projet et montr entre autres comment compiler avec Code::Blocks dans un tutorial plus gnrique : La programmation d'un coup d'oeil.




> tu parles de extern et static (ce dernier est polysmique) de manire abstraite, rapide et sans motivation alors qu'il s'agit de notions trs complexes pour ceux qui les dcouvrent, tes explications sur les fichiers d'en-tte (pas de "s" je pense) sont plus que sommaires alors que l aussi il s'agit d'une question fondamentale dans l'apprentissage du langage (en fait tu te limites  la question de la protection contre les inclusions multiples, c'est accompagn d'un exemple mais l encore il y a de quoi rester sur sa fin), enfin tu termines avec un exemple assez bien fait et sobre de structure opaque, sans doute un des meilleurs que j'aie vus mais a manque de motivation et de contextualisation.


Le mot-cl static a dj t prsent dans les tutoriaux prcdents, l il tait question de compilation spare. Et comment a sans motivation? Si on a compris on sait  quoi sa peut servir! Et quand tu dis que je laisse le lecteur a sa faim, je te dis tout simplement que mes tutoriaux ne s'arrteront pas l, cette anne je n'ai pas pu crire aucun (faute de temps), mais je bosse l dessus. Et sommaire ... un long discours sur le C et les concepts de ce langage ne ferait rien de plus que le desservir. Il faut comprendre le langage, pas apprendre  copier coller.




> Enfin, toi qui prtends t'adresser aux experts, tu ferais bien de te relire ou de lire des documents un peu srieux (par exemple la norme), je te laisse rectifier ces extraits du document analys ci-dessus


Etre expert ne veut pas dire tre grincheux. Je ne vois pas le mal  mettre un peu d'humour dans mes tutoriaux. Melem est humain, il peut faire des erreurs. Regarde mme combien j'ai t plusieurs fois corrig sur ces forums. Je ne suis pas n avec un compilateur dans la main, mais je peux aider les autres  s'amliorer, comme nous tous qui sommes ici nous nous aidons  nous amliorer. Puis essaie aussi d'crire un tutorial, tu te rendras compte que trouver les bonnes dfinitions, les bons exemples, etc. c'est pas toujours si vident.

----------


## sybil

Le livre Langage C de Gerhard Willms est excellent, quelqu'un le connait?

----------

