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

C Discussion :

Richard Stallman annonce le manuel de référence du langage GNU C


Sujet :

C

  1. #1
    Communiqués de presse

    Femme Profil pro
    Rédacteur technique
    Inscrit en
    Mai 2018
    Messages
    2 135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2018
    Messages : 2 135
    Points : 158 434
    Points
    158 434
    Par défaut Richard Stallman annonce le manuel de référence du langage GNU C
    Richard Stallman annonce le manuel de référence du langage GNU C

    Voici le message d'annonce de Richard Stallman :

    Citation Envoyé par Richard Stallman Voir le message
    Ceci est pour annoncer la sortie du manuel d'introduction et de référence du langage GNU C.

    Ce manuel est destiné à l'apprentissage du langage C, si vous savez programmer dans un autre langage. Il s'agit également d'un manuel de référence pour le langage C de GNU.

    Dr Richard Stallman
    Chief GNUisance of the GNU Project
    Founder, Free Software Foundation
    Voici des versions directement consultables : Manuel d'introduction et de référence du langage GNU C ( pdf ) , Dépot Github Markdown et PDF.


    Source : Richard Stallman

    Et vous ?

    Qu'en pensez-vous ?


    Lire aussi en Français :

    Cours et tutoriels C
    La FAQ C
    Le forum d'entraide C
    Publication de communiqués de presse en informatique. Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Sandra Coret Voir le message
    Et vous ?

    Qu'en pensez-vous ?
    Premier exemple: fonction Fibonacci écrite sous sa forme récursive. Voilà, tu veux apprendre le C, hé bien mange !!!
    Après ok l'exemple est expliqué en détail et la mayonnaise peut prendre. Donc bon ben un tuto de plus, écrit peut-être de façon peu orthodoxe mais ça reste un tuto donc ça ne peut pas faire de mal et peut-être en complément d'un cours plus classique ça peut faire une bonne combinaison...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut Récure : CIF !
    Bonjour Sve,

    Citation Envoyé par Sve@r Voir le message
    ...Premier exemple: fonction Fibonacci écrite sous sa forme récursive...
    Je ne suis pas sûr que d'utiliser une forme récursive qui génère une séquence profonde et linéaire d'appels (comme n!) soit l'emploi du siècle. Une simple boucle fera largement mieux le boulot. Et ce qui est pire ici est d'utiliser une forme arborescente qui doit générer de l'ordre de 2n-2 appels. En travaillant avec la mémoire du fn-1 on relinéarise la chaîne d'appels soit de l'ordre de n (et une occupation en 2*n). Proposition de code non testé :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int fib (int n, int *f1) {
      if (n <= 2)  return 1;
      int * f2;
      *f1 = fib(n-1, f2)
      return *f1 + *f2;
    }
    A comparer avec :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int fib(int n) {
       int u = 1, v = 1
       for(;n > 2; --n) {
          u += v;
          v = u - v;
       }
       return u;
    }
    Les usages qui entraînent naturellement un arbre (binaire ou plus si affinité ) d'appels sont plus intéressants et sollicitent moins la pile (les tours de Hanoï par exemple).

    L'excuse pédagogique ne devrait pas inciter à mésuser des possibilités d'un langage. Enfin, c'est mon avis et je le partage

    Salut
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour Sve,
    Hey

    Citation Envoyé par Guesset Voir le message
    Je ne suis pas sûr que d'utiliser une forme récursive qui génère une séquence profonde et linéaire d'appels (comme n!) soit l'emploi du siècle. Une simple boucle fera largement mieux le boulot.
    Déjà ce n'est pas moi qui l'ai écrite et surtout ma remarque préalable était ironique. On ne balance pas une fonction récursive comme tout premier exemple d'un langage qu'on désire enseigner (en plus de la syntaxe il faut aussi appréhender la notion de récursivité). Surtout une fonction aussi mal foutue que Fibonacci (pour calculer f(10) elle calculera f(9), deux fois f(8), trois fois f(7), cinq fois f(6) et etc etc). D'ailleurs on ne balance pas non plus comme premier exemple un code non fonctionnel parce que sans main. Le K&R commence par afficher "Hello World".
    Après le reste ce sont de vrais avis. Ok ça reste un tuto de plus donc ok dans le pire des cas ça ne peut pas faire de mal et oui si on le complète par d'autres enseignements il peut apporter des choses.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut Oups !
    Rebonjour Sve,

    Citation Envoyé par Sve@r Voir le message
    ...Déjà ce n'est pas moi qui l'ai écrite et surtout ma remarque préalable était ironique...
    Je l'avais bien compris mais je craignais que ton coté pince-sans-rire puisse être interprété comme "il commence fort !" alors que c'est plutôt "Regardez tous, je fais ce qu'il ne faut pas faire et j'en suis fier !"

    Salut
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  6. #6
    Membre expérimenté

    Homme Profil pro
    Retraite
    Inscrit en
    Octobre 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 478
    Points : 1 338
    Points
    1 338
    Billets dans le blog
    1
    Par défaut
    Je le trouve facile à lire, simple.
    Quant au premier exemple, c'est juste une présentation, l'exemple complet là uniquement pour le bon fonctionnement et l'inclusion du main() ....

    Il y a des bonnes choses, cela a le mérite d'être gratuit et à la portée de tous.

    Un PDF que je garderai.

  7. #7
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut Quand ça veut pas...
    Bonjour,

    Il n'a pas de chance avec cet exemple, même les explications sont fausses. Dans le §2.3, il écrit :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    if(n <= 2)					// If n is 1 or 2
    Or n est un entier signé qui peut donc être négatif ou nul. Le retour sera à 1 dans tous ces cas, pas seulement pour 1 et 2. Et même si n avait été un unsigned cela aurait dû inclure 0.

    Par ailleurs, on pourrait discuter sur la définition de récurrence qui peut prolonger les valeurs en positif comme en négatif (-13,8,-,5,-3,2,-1,1,0,1,1,2,3,5,8,13...), avec n >= 0, fib(-n) = fib(n) si n pair et -fib(n) si n impair.

    Sinon, le document n'est pas mal, même sil la multiplication des tables de matières partielles est un peu fatigante.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  8. #8
    Membre averti
    Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 122
    Points : 425
    Points
    425
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour Sve,



    Je ne suis pas sûr que d'utiliser une forme récursive qui génère une séquence profonde et linéaire d'appels (comme n!) soit l'emploi du siècle. Une simple boucle fera largement mieux le boulot. Et ce qui est pire ici est d'utiliser une forme arborescente qui doit générer de l'ordre de 2n-2 appels. En travaillant avec la mémoire du fn-1 on relinéarise la chaîne d'appels soit de l'ordre de n (et une occupation en 2*n). Proposition de code non testé :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int fib (int n, int *f1) {
      if (n <= 2)  return 1;
      int * f2;
      *f1 = fib(n-1, f2)
      return *f1 + *f2;
    }
    A comparer avec :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int fib(int n) {
       int u = 1, v = 1
       for(;n > 2; --n) {
          u += v;
          v = u - v;
       }
       return u;
    }
    Les usages qui entraînent naturellement un arbre (binaire ou plus si affinité ) d'appels sont plus intéressants et sollicitent moins la pile (les tours de Hanoï par exemple).

    L'excuse pédagogique ne devrait pas inciter à mésuser des possibilités d'un langage. Enfin, c'est mon avis et je le partage

    Salut
    Ça permet de poser la limitation de la pile je crois, juste après il en cause et présente la version itérative de l'algo. Je trouve que c'est pas si mal, parce que après l'implementation recursive, tu peux passer a l’implémentation non récursive pour aborder la boucle for, me semble qu'en terme de complexité ça se tient, c'est progressif et ça permet de construire du narratif par dessus ça et garder tous les élements liés entre eux, peut être pratique pour mémoriser. Ah je pensais aussi au visite d'arbre, plus amusant pour des exercices ou tu dois éviter la récursivité.

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 186
    Points : 474
    Points
    474
    Par défaut
    Voilà 44 ans après le "Kernighan et Ritchie" le bouquin de mes années d'étudiant on sort un nième manuel sur le C ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/06/2009, 08h45
  2. Livre : XML en concentré - Manuel de référence rapide
    Par freegreg dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 25/01/2006, 23h18

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