IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Livres C Discussion :

choix de livres sur le C


Sujet :

Livres C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Points : 99
    Points
    99
    Par défaut choix de livres sur le C
    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 "dépassé".

    J'ai des connaissance en langage script interprété 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 préciser que je n'étais pas complètement novice en programmation.

    Je programmerais en C sans but professionnel et à titre personnel (du moins pour l'instant), mais je désires quand même respecter les dernières normes en vigueur, et surtout la norme qui permet la portabilité du code sous différents OS (POSIX.1 ?)

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

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

    Méthodologie de la programmation en C - Norme C 99 - API POSIX

    Maîtrise des algorithmes en C

    C précis et concis

    Voir aussi ce livre :

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

    Mais peut être que c'est trop tôt pour ce dernier.

    Existe t'il une nome plus récente que la C99 , et la POSIX1 ?

  2. #2
    Malikemal
    Invité(e)
    Par défaut
    Bonjour,

    Il n'existe pas à ma connaissances de nouvelles normes depuis C99. Néanmoins 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 à posséder ! 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 précise que je ne possède pas, mais les algorithmes sont une notion présente dans tous les langages de programmation et paradigme !

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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je suis d'accord avec Malikermal, dans le sens ou, tu devrais acheter un livre le plus général 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.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Points : 99
    Points
    99
    Par défaut
    Merci pour vos suggestions, je surévalue peut être l'importance que "Le langage C Norme ANSI, 2ème édition" de Brian W. Kernighan et Dennis M. Ritchie présente la norme C90 comme nouvelle (plus à jour au niveau de la nouvelle norme).

    "Méthodologie de la programmation en C Norme C 99 - API POSIX" de Achille Braquelaire me semble un bon choix d'après le commentaire de la rédaction, mais peut être est t'il moins complet, et/ou moins généraliste que le livre cité plus haut.

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

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    L'ouvrage de Braquelaire est sans doute le meilleurs des ouvrage que tu cites. Si tu n'est pas débutant en programmation, K&R 2ème é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
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 16
    Points : 20
    Points
    20
    Par défaut
    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 françaises. En tout cas, s'il y a une livre à posséder (pour du c j'entends), c'est bien cette bible !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    L'ouvrage de Braquelaire est sans doute le meilleurs des ouvrage que tu cites. Si tu n'est pas débutant en programmation, K&R 2ème é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) ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par neow_ Voir le message
    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 françaises. En tout cas, s'il y a une livre à posséder (pour du c j'entends), c'est bien cette bible !
    Des erreurs de traduction ?

  9. #9
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par AnozerOne Voir le message
    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 développement.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Points : 99
    Points
    99
    Par défaut
    Merci pour le lien.

    Ils semblent que très 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é réellement 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 détail des implémentations 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

    Pour la norme C99 en elle même, 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 dénaturer complètement l'esprit du C ?
    Je veux dire la gestion complète de la mémoire par l'utilisateur était pour moi une des caractéristiques essentielles du C.
    Forcément je sais bien que l'on n'est pas obligé de l'utiliser.

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

  11. #11
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par AnozerOne Voir le message
    Pour la norme C99 en elle même, 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 problèmes techniques pour le compilo, facilement résolus mais qui doivent être inscrits dans la norme quand même. L'idée est qu'un tableau, déclaré 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 concernée, le pointeur de pile est décrémenté d'autant pour réserver cette place et que, donc, cette réservation est dynamique puisqu'elle a lieu à l'exécution (et dépend de l'état de la pile à ce moment). Sachant cela, il n'y a rien qui s'oppose à la possibilité que la taille n à réserver se trouve dans une variable x de niveau supérieur :

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        int x = 10;
     
        if (x>0)
        {
            char buffer [x];
            …
        }

    Note bien que la taille du tableau ainsi déclaré n'est pas modifiée 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 génère le code en conséquence. Si la longueur des tableaux en question n'est pas connu à la compilation, il lui faut ajouter un niveau d'indirection supplémentaire.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Points : 99
    Points
    99
    Par défaut
    Je voulais bien entendu parler des tableaux et non pas de l'espace mémoire 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 interprété un point, j'ai bien compris que la taille du tableau était définie au moment de l’exécution 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é.

  13. #13
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par AnozerOne Voir le message
    C'est à dire qu'il soit redimensionné automatiquement en fonction de l'index max du tableau utilisé.
    Non, en aucune façon :-)

    Il n'y a donc pas de realloc() d'un VLA. Une fois déclaré, sa taille reste fixe. Par ailleurs, un VLA fonctionne comme un tableau ordinaire, dans le sens où c'est juste un espace réservé à une suite de n éléments contigus. Si tu dépasses cette zone, tu écrases ce qu'il y a à côté.

    Si l'on se demande comment le compilo va se débrouiller pour implémenter ces VLA, on peut imaginer qu'il stocke leurs tailles, mais le plus probable est qu'il stocke directement une adresse relative calculée à l'entrée dans la fonction et qu'il n'a plus, ensuite, qu'à additionner à EBP pour obtenir directement le bon pointeur.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Points : 99
    Points
    99
    Par défaut
    Ok, merci.

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

    Je le met en résolu.

  15. #15
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par AnozerOne Voir le message
    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 dernières versions. Tu peux avoir un aperçu du statut de l'implantation de C99 dans gcc ici. Sinon, cela fait longtemps que je n'ai pas regardé du côté des compilateurs de Intel ou Comeau pour voir où ils en sont. Du côté de Microsoft, malgé la sortie récente de Visual C++ 2010, il n'y a toujours semble-t-il aucun plan pour supporter la nouvelle norme du langage.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Points : 99
    Points
    99
    Par défaut
    J'ai acheté ces 2 livres sur amazon.fr (avec le lien de developpez tant qu'à faire)

    Le langage C - Norme ANSI, 2ème édition

    Méthodologie de la programmation en C - Norme C 99 - API POSIX

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

    On n'a pas accès aux réponses des exercices de quelque manière que ce soit

    Et si je l'ai pris c'était en partie pour voir les solutions proposés par le créateur du C ...

    Je sais qu'il existe un livre avec les solutions (que vous proposez d'ailleurs), mais la pilule est quand même amère.
    Quand à la qualité du livre en lui même je ne crois pas que j'aurais quelque chose à dire après tant de commentaires élogieux à son sujet, de toute façon il est trop tôt pour en juger.

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

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

  17. #17
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par AnozerOne Voir le message
    J'ai acheté ces 2 livres sur amazon.fr (avec le lien de developpez tant qu'à faire)

    Le langage C - Norme ANSI, 2ème édition

    Méthodologie de la programmation en C - Norme C 99 - API POSIX

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

    On n'a pas accès aux réponses des exercices de quelque manière que ce soit

    Et si je l'ai pris c'était en partie pour voir les solutions proposés par le créateur du C ...

    Je sais qu'il existe un livre avec les solutions (que vous proposez d'ailleurs), mais la pilule est quand même amère.
    Quand à la qualité du livre en lui même je ne crois pas que j'aurais quelque chose à dire après tant de commentaires élogieux à son sujet, de toute façon il est trop tôt pour en juger.

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

    http://clc-wiki.net/wiki/K&R2_solutions
    Oui, le wiki de comp.lang.c est une bonne référence pour ces solutions.

    En ce qui concerne la qualité didactique du K&R2, c'est essentiellement une référence plus qu'un ouvrage centré sur l'apprentissage. Il a le gros avantage d'être complet et précis.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débat] Choix de livres sur Web 2.0?
    Par Cédric B. dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 09/07/2009, 16h37
  2. [AJAX] Choix de livre sur AJAX
    Par kanabzh29 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/10/2008, 10h37
  3. choix de livre sur VB6
    Par groffliers dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/04/2008, 22h19
  4. choix d'un livre sur les virus informatiques
    Par warubi dans le forum Sécurité
    Réponses: 2
    Dernier message: 14/06/2007, 11h44
  5. choix livre sur l'ergonomie
    Par gforce dans le forum Webdesign & Ergonomie
    Réponses: 10
    Dernier message: 24/05/2007, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo