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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Sandra Coret

10PARTAGES

15  0 
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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Sve@r
Expert éminent sénior https://www.developpez.com
Le 09/09/2022 à 13:16
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...
3  0 
Avatar de Sve@r
Expert éminent sénior https://www.developpez.com
Le 11/09/2022 à 10:08
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.
2  0 
Avatar de Guesset
Membre émérite https://www.developpez.com
Le 11/09/2022 à 9:55
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
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
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
1  0 
Avatar de Guesset
Membre émérite https://www.developpez.com
Le 11/09/2022 à 10:58
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
1  0 
Avatar de JPLAROCHE
Membre éprouvé https://www.developpez.com
Le 11/09/2022 à 11:50
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.
1  0 
Avatar de Guesset
Membre émérite https://www.developpez.com
Le 12/09/2022 à 16:30
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
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
1  0