# C et C++ > C > Livres >  choix de livres sur le C

## AnozerOne

Bonjour.

Je cherche  apprendre le C, j'ai bien consult cette page :
http://c.developpez.com/livres/#L2100490184, mais comme la mise  jour date du  23/12/2009, je ne voudrais pas acheter un livre "dpass".

J'ai des connaissance en langage script interprt haut niveau, multi paradigmes dont la POO.
J'ai bien conscience que cela n'a rien  voir avec le C, langage compil bas niveau, je voulais juste prciser que je n'tais pas compltement novice en programmation.

Je programmerais en C sans but professionnel et  titre personnel (du moins pour l'instant), mais je dsires quand mme respecter les dernires normes en vigueur, et surtout la norme qui permet la portabilit du code sous diffrents OS (POSIX.1 ?)

Je sais aussi qu'il y a de nombreux tutoriels en ligne, mais pour moi rien n'gale le support papier, mme  l'heure des e-book.

Donc pour l'instant je partirais sur l'achat de ces livres :

Mthodologie de la programmation en C - Norme C 99 - API POSIX

Matrise des algorithmes en C

C prcis et concis

Voir aussi ce livre :

C en action - Solutions et exemples pour les programmeurs en C

Mais peut tre que c'est trop tt pour ce dernier.

Existe t'il une nome plus rcente que la C99 , et la POSIX1 ?

----------


## Malikemal

Bonjour,

  Il n'existe pas  ma connaissances de nouvelles normes depuis C99. Nanmoins si il y a un livre que tu doit acheter, c'est bien le K&R ! Bien qu'il reprenne seulement la norme C89, c'est vraiment une perle  possder ! Il existe aussi en francais sur developpez.com : La langage C, Norme ANSI crit par Kernighan et Ritchie aux dition Dunod. 
 Si tu tiens toujours a avoir un livre sur le C99, mon choix se porterait sur celui des algorithmes. Je prcise que je ne possde pas, mais les algorithmes sont une notion prsente dans tous les langages de programmation et paradigme ! 

Aprs c'est mon avis, tu devrais en avoir d'autres avant de choisir !

----------


## romfox17

Bonjour, 

Je suis d'accord avec Malikermal, dans le sens ou, tu devrais acheter un livre le plus gnral possible sur le C, afin de te lancer. Mais si tu ne veux pas, je suis aussi d'accord avec le choix du livre portant sur les algorithmes.

----------


## AnozerOne

Merci pour vos suggestions, je survalue peut tre l'importance que "Le langage C Norme ANSI, 2me dition" de Brian W. Kernighan et Dennis M. Ritchie prsente la norme C90 comme nouvelle (plus  jour au niveau de la nouvelle norme).

"Mthodologie de la programmation en C Norme C 99 - API POSIX" de Achille Braquelaire me semble un bon choix d'aprs le commentaire de la rdaction, mais peut tre est t'il moins complet, et/ou moins gnraliste que le livre cit plus haut.

Quand  "Matrise des algorithmes en C", je vais l'acheter un peu d'algorithmie ne peut pas faire de mal.

----------


## Thierry Chappuis

L'ouvrage de Braquelaire est sans doute le meilleurs des ouvrage que tu cites. Si tu n'est pas dbutant en programmation, K&R 2me dition me semble effectivement une proposition raisonnable, mais il ne traite que du standard C90 qui est actuellement le standard de fait en C, puisque le degr de conformit  C99 est encore variable selon le compilateur utilis. 

Thierry

----------


## neow_

Je soutiens pour le K&R, par contre,  ce qu'on dit, il vaut prendre la version originelle en anglais, il risquerait d'y avoir quelques petites erreurs dans la / les versions franaises.  En tout cas, s'il y a une livre  possder (pour du c j'entends), c'est bien cette bible !  :;):

----------


## AnozerOne

> L'ouvrage de Braquelaire est sans doute le meilleurs des ouvrage que tu cites. Si tu n'est pas dbutant en programmation, K&R 2me dition me semble effectivement une proposition raisonnable, mais il ne traite que du standard C90 qui est actuellement le standard de fait en C, puisque le degr de conformit  C99 est encore variable selon le compilateur utilis. 
> 
> Thierry


Je n'avais pas pens  la compatibilit avec les compilateurs.
Est ce qu'il existe des compilateurs gratuits supportant la norme C99 pour les principales plateformes (linux,windows,mac) ?

----------


## AnozerOne

> Je soutiens pour le K&R, par contre,  ce qu'on dit, il vaut prendre la version originelle en anglais, il risquerait d'y avoir quelques petites erreurs dans la / les versions franaises.  En tout cas, s'il y a une livre  possder (pour du c j'entends), c'est bien cette bible !


Des erreurs de traduction ?

----------


## Melem

> Je n'avais pas pens  la compatibilit avec les compilateurs.
> Est ce qu'il existe des compilateurs gratuits supportant la norme C99 pour les principales plateformes (linux,windows,mac) ?


Tu peux trouver sur wikipedia une liste de compilateurs C supportant plus ou moins la norme C99. L'avantage de gcc c'est que tu peux en trouver une version pour chacune des principales plateformes de dveloppement.

----------


## AnozerOne

Merci pour le lien.

Ils semblent que trs peu d'auteurs de compilateurs ont fait l'effort de se mettre  la nouvelle norme et/ou ne sont pas clairs dans ce qui a t rellement implant de la norme C99 et ce qui ne l'est pas.

Y'a un truc que je ne comprends pas, c'est pourquoi amd renvoie directement sur le lien de gcc pour le dtail des implmentations de le norme C99 http://developer.amd.com/cpu/open64/....htm#Standards.

GCC a l'air d'avoir ajout les choses les plus importantes et est parfaitement clair sur la compatibilit avec la norme C99  ::ccool:: 

Pour la norme C99 en elle mme, y'a un truc qui me marque vraiment c'est l'allocation dynamique de la taille d'une variable

Est ce que ce n'est pas dnaturer compltement l'esprit du C ?
Je veux dire la gestion complte de la mmoire par l'utilisateur tait pour moi une des caractristiques essentielles du C.
Forcment je sais bien que l'on n'est pas oblig de l'utiliser.

J'aimerais bien avoir l'avis du/des crateur(s) du C  ce sujet (si vous avez le lien).

----------


## Obsidian

> Pour la norme C99 en elle mme, y'a un truc qui me marque vraiment c'est l'allocation dynamique de la taille d'une variable


Ce n'est pas l'allocation dynamique de la taille d'une variable, mais de la longueur d'un tableau.

En fait, c'est quelque chose qui vient naturellement  l'esprit au bout d'un moment lorsque l'on code en C, mais qui n'est pas sans poser quelques menus problmes techniques pour le compilo, facilement rsolus mais qui doivent tre inscrits dans la norme quand mme. L'ide est qu'un tableau, dclar comme une variable locale, prend place dans la pile comme une variable locale ordinaire.

a veut dire qu'en entrant dans le bloc ou la fonction concerne, le pointeur de pile est dcrment d'autant pour rserver cette place et que, donc, cette rservation est dynamique puisqu'elle a lieu  l'excution (et dpend de l'tat de la pile  ce moment). Sachant cela, il n'y a rien qui s'oppose  la possibilit que la taille _n_  rserver se trouve dans une variable _x_ de niveau suprieur :



```

```


Note bien que la taille du tableau ainsi dclar n'est pas modifie _a posteriori_. Le seul  ennui technique  dont je parlais est qu'en principe, le compilo calcule une fois pour toutes l'_offset_ de chaque variable par rapport au pointeur de pile tel qu'il est en entrant dans la fonction (et que, pour cela, il sauve dans ESP dans EBP, sur PC), puis gnre le code en consquence. Si la longueur des tableaux en question n'est pas connu  la compilation, il lui faut ajouter un niveau d'indirection supplmentaire.

----------


## AnozerOne

Je voulais bien entendu parler des tableaux et non pas de l'espace mmoire en octet qu'occupe une variable, pour moi employer le mot tableau tait redondant, mais il est vrai que je ne suis pas encore au point au niveau du jargon.

Par contre j'ai peut tre mal interprt un point, j'ai bien compris que la taille du tableau tait dfinie au moment de lexcution du code et non pas de la compilation, mais est ce que cela est dynamique ?
C'est  dire qu'il soit redimensionn automatiquement en fonction de l'index max du tableau utilis.

----------


## Obsidian

> C'est  dire qu'il soit redimensionn automatiquement en fonction de l'index max du tableau utilis.


Non, en aucune faon :-)

Il n'y a donc pas de _realloc()_ d'un VLA. Une fois dclar, sa taille reste fixe. Par ailleurs, un VLA fonctionne comme un tableau ordinaire, dans le sens o c'est juste un espace rserv  une suite de _n_ lments contigus. Si tu dpasses cette zone, tu crases ce qu'il y a  ct.

Si l'on se demande comment le compilo va se dbrouiller pour implmenter ces VLA, on peut imaginer qu'il stocke leurs tailles, mais le plus probable est qu'il stocke directement une adresse relative calcule  l'entre dans la fonction et qu'il n'a plus, ensuite, qu' additionner  EBP pour obtenir directement le bon pointeur.

----------


## AnozerOne

Ok, merci.

J'ai dcid d'acheter le K&R francophone, la norme C99 n'tant pas si radicalement diffrente et donc les fondements de la C90 restent valables, et celui avec les algo parlant aussi de la C99.

Je le met en rsolu.

----------


## Thierry Chappuis

> Je n'avais pas pens  la compatibilit avec les compilateurs.
> Est ce qu'il existe des compilateurs gratuits supportant la norme C99 pour les principales plateformes (linux,windows,mac) ?


Le support de C99 par gcc est pas mal depuis les dernires versions. Tu peux avoir un aperu du statut de l'implantation de C99 dans gcc ici. Sinon, cela fait longtemps que je n'ai pas regard du ct des compilateurs de Intel ou Comeau pour voir o ils en sont. Du ct de Microsoft, malg la sortie rcente de Visual C++ 2010, il n'y a toujours semble-t-il aucun plan pour supporter la nouvelle norme du langage.

Thierry

----------


## AnozerOne

J'ai achet ces 2 livres sur amazon.fr (avec le lien de developpez tant qu' faire)

Le langage C - Norme ANSI, 2me dition

Mthodologie de la programmation en C - Norme C 99 - API POSIX

Je ne suis qu'au tout dbut du premier, et y'a un gros point d'une norme dception pour moi :

*On n'a pas accs aux rponses des exercices de quelque manire que ce soit*

Et si je l'ai pris c'tait en partie pour voir les solutions proposs par le crateur du C ...

Je sais qu'il existe un livre avec les solutions (que vous proposez d'ailleurs), mais la pilule est quand mme amre.
Quand  la qualit du livre en lui mme je ne crois pas que j'aurais quelque chose  dire aprs tant de commentaires logieux  son sujet, de toute faon il est trop tt pour en juger.

Sinon, j'ai trouv ce wiki pour les solutions :

http://clc-wiki.net/wiki/K&R2_solutions

----------


## Thierry Chappuis

> J'ai achet ces 2 livres sur amazon.fr (avec le lien de developpez tant qu' faire)
> 
> Le langage C - Norme ANSI, 2me dition
> 
> Mthodologie de la programmation en C - Norme C 99 - API POSIX
> 
> Je ne suis qu'au tout dbut du premier, et y'a un gros point d'une norme dception pour moi :
> 
> *On n'a pas accs aux rponses des exercices de quelque manire que ce soit*
> ...


Oui, le wiki de comp.lang.c est une bonne rfrence pour ces solutions. 

En ce qui concerne la qualit didactique du K&R2, c'est essentiellement une rfrence plus qu'un ouvrage centr sur l'apprentissage. Il a le gros avantage d'tre complet et prcis.

Thierry

----------

