Partage
  • Partager sur Facebook
  • Partager sur Twitter

Le cours sur le langage C est-il encore obsolète ?

21 juin 2019 à 14:58:44

Bonjour ou Bonsoir à vous qui lisez ce message, j'aimerai poser une question.

En 2019, le cours de Mathieu Nebra sur le langage C est-il encore obsolète ?

Aujourd'hui en visitant curieusement ce forum, je suis tomber sur denombreux (anciens) sujets qui disent que le cours est mauvais et meme obsolète...

Je suis encore nouveau ici et donc je ne suis pas au courant des aléas du site mais si quelqu'un passe par ici et pourrait m'éclaircir sur ces points cela serait très gentil de votre part :

Tout d'abord pourquoi est-il considéré comme mauvais ou obsolète ?

Quels sont (spécifiquement) les chapitres obsolètes ?

Aussi j'ai vu que le cours a été mise à jour il y'a deux jours de cela. Est ce que ca veut dire que le problème est réglé ?

Enfin, quels sont vos recommandations de site qui pourraient m'initier au langage C, moi étant tout à fait débutant ?

Encore merci pour le temps que vous prendrez pour me répondre :)

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2019 à 22:32:33

Moi-même débutant je me suis initié au C à la piscine de l'école 42 et ensuite sur le cours de Mathieu Nebra.

Pour moi, le cours de Mathieu Nebra n'est pas obsolète et comprend toutes les basses principales pour commencer le c.

Je connais des personnes ayant commencé sur ce cours il y a de nombreuses années, ils ont bien réussi.



Test, tu verras bien

  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2019 à 23:15:28

Salut,

Je n'ai jamais suivi ce cours car je connaissais le langage avant Mathieu Nebra. Mais il n'y a pas eu de changement majeur du langage depuis très longtemps, donc je dirais que même un vieux cours de C peut être enrichissant. 

C'est en C++ qu'il y a eu des changements majeurs. Et le cours de Mathieu Nebra traite du C++ "à l'ancienne" (et il parait qu'il y a des coquilles aussi), mais il est préférable de ne plus apprendre le C++ "à l'ancienne". 

Le C je pense que tu peux y aller . (apres je ne sais pas s'il y a des coquilles, mais au niveau osbolescence, je crois qu'il n'y a pas de soucis)

  • Partager sur Facebook
  • Partager sur Twitter

Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

21 juin 2019 à 23:47:33

Salut,

Ça te permettra de mettre le pied à l'étrier. Je te conseille de compléter avec le tutoriel de Zeste de Savoir, peut-être en suivant les deux en parallèle (voire de suivre le tutoriel de Zeste de Savoir à la place).

  • Partager sur Facebook
  • Partager sur Twitter
Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
21 juin 2019 à 23:57:47

Merci beaucoup pous vos retours :)

Comme tu me l'as recommander yo@an c'est effectivement ce que je comptais faire :) J'avais juste peur de m'habituer à de mauvaises bases mais vous avez levez mes craintes ! Merci à vous :D

yo@n97one a écrit:

Salut,

Ça te permettra de mettre le pied à l'étrier. Je te conseille de compléter avec le tutoriel de Zeste de Savoir, peut-être en suivant les deux en parallèle (voire de suivre le tutoriel de Zeste de Savoir à la place).



  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2019 à 1:26:08

Je tiens à préciser que le tutoriel du site n'est pas celui qu'il y avait sur le site du zéro, il a été modifié.. Et notamment en le parcourant j'ai l'impression que beaucoup d'exercices ont été retirés.

Si tu suis le tuto de ce site, fais donc bien attention à bien faire tes petites expériences dans ton coin avant de passer au chapitre suivant. Sinon tu vas ingurgiter des connaissances sans les pratiquer, et arriver à la pratique tu vas t'en mordre les doigts.

En général un tuto de programmation en général on essaie en même temps le code qu'il y a écrit, voir on le modifie en étant curieux pour voir ce qu'il se passe si on met ça ou ça à la place, etc..

Moi je dirais plutôt de suivre celui de Zeste De Savoir qui a l'air d'être tout aussi bien, si ce n'est mieux

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2019 à 10:12:40

Bonjour,

J'ai personnellement suivi ce cours en 2008 (avec de bonnes bases en programmation en général) et y avais déjà relevé quelques coquilles ou codes un peu trop naïfs. Sauf que plus de 10 après, ce n'est plus tellement d'actualité, notamment la partie SDL qui fait, il me semble, encore référence à la SDL1.x, plus d'autres liens un peu "morts" comme fmod 3.x

Si la méthode est discutable et discutée, le tuto me semble être valable pour la partie d'approche du langage. Qui est d'ailleurs la même que pour n'importe quelle autre langage (types des variables, déclarations, fonctions...).

Donc toute la partie qui ne fait pas appel à une lib extérieure reste valable selon moi. Pour plus, il faut aller voir ailleurs.

Bonne continuation.

  • Partager sur Facebook
  • Partager sur Twitter

Bonhomme !! | Jeu de plateforme : Prototype.

23 juin 2019 à 13:19:44

Merci pour ta réponse :) Oui effectivement c'est cette partie sur la SDL qui a été beaucoup critiquer quand j'ai fait mes recherches. Fort heureusement, j'en suis encore sur la partie sur les pointeurs donc je suppose que je n'aurai pas de problèmes de ce coté la :D

drx a écrit:

Bonjour,

J'ai personnellement suivi ce cours en 2008 (avec de bonnes bases en programmation en général) et y avais déjà relevé quelques coquilles ou codes un peu trop naïfs. Sauf que plus de 10 après, ce n'est plus tellement d'actualité, notamment la partie SDL qui fait, il me semble, encore référence à la SDL1.x, plus d'autres liens un peu "morts" comme fmod 3.x

Si la méthode est discutable et discutée, le tuto me semble être valable pour la partie d'approche du langage. Qui est d'ailleurs la même que pour n'importe quelle autre langage (types des variables, déclarations, fonctions...).

Donc toute la partie qui ne fait pas appel à une lib extérieure reste valable selon moi. Pour plus, il faut aller voir ailleurs.

Bonne continuation.



-
Edité par Neto:Re 23 juin 2019 à 13:30:44

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2019 à 14:21:17

Il ignore les booléens, raconte que les int sont sur 16 bits, etc.
  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2019 à 14:47:53

Le cours a peut-être été modifié depuis, car je ne me souviens pas avoir vu que les int étaient prétendument sur 16 bits (et c'est tout frais dans ma tête, vu que je suis grande débutante ^^). Quant aux booléens, il en parle bien. Peu, mais il en parle : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/14612-les-conditions (voir la partie : les ooléens le coeur des conditions).
  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2019 à 16:12:43

Non il en parle bien ici : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/14118-un-monde-de-variables

Il ne dit pas que c'est 16 bits, mais il dit qu'un int va de -32767 à 32767, ce qui correspond exactement à ce que tu peux stocker sur 16 bits. De nos jours c'est faux sur 99% des systèmes. En fait, la norme C ne spécifie pas la taille qu'est sensée avoir le int.

Aussi, le -1 x 1037 n'a absolument aucun sens quand il parle de float/double. Je parie sur une mauvaise adaptation de l'ancien tuto. ça devrait être -1 x 10^1037, le 10 est passé à la trappe.

A voir des aberrations comme ça sur un tutoriel phare d'un site professionnel ça fait un peu peur..

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2019 à 17:10:11

Hello,

Oui, il parle de booléens, mais il ne parle pas du type  bool (et donc de stdbool.h) qui existe depuis.... le c99, soit depuis 20 ans !

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

23 juin 2019 à 17:21:42

C'est sûr que si une mise à jour de 20 ans et qui n'est pas si longue/difficile à faire n'estpas faite, alors la mise à jour d'une partie entière (la SDL) ne sera pas faite avant au moins 50 ans...

  • Partager sur Facebook
  • Partager sur Twitter
Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
23 juin 2019 à 18:09:08

Re,

Je ne crois pas que ce tuto ait vocation à faire émerger de grands programmeurs. N'oublions pas qu'il s'agît initialement d'un tuto pour des "Zéros".

Si je devais faire une analogie avec le vélo, le but n'est pas de faire des maillots jaunes mais bien de faire "sentir la bête" et d'accompagner un peu jusqu'à ce qu'on enlève les petites roues quitte à ce qu'on ne roule pas encore bien droit.

Je me rappelle très bien du jour où mon grand-père a démonté ces petites roues et que j'ai enfin réussi à faire 50 mètres : Le monde t'appartient, tu peux aller où tu veux, tu es enfin libre !

C'est la même chose ici, tu as quelques bases, à toi d'explorer le monde qui s'offre à toi, tu peux aller te balader tranquille ou devenir un champion en apprenantde vraies techniques et en corrigeant ce qui t'a servi de base et qui n'était pas vraiment très "optimisé".

  • Partager sur Facebook
  • Partager sur Twitter

Bonhomme !! | Jeu de plateforme : Prototype.

23 juin 2019 à 19:00:59

Au delà du contenu technique qui n'est pas à jour (et ne le sera jamais, parce que ça coûte du temps de le faire  - c'est un métier - et donc des sous), il y a aussi des erreurs de conception pédagoqique.

Ces erreurs sont faciles à repérer, les débutants buttent systématiquement sur les mêmes difficultés, et ça se voit dans les forums.

Exemples, rien que pour l'aspect "programmation procédurale", qui est justement l'aspect fondamental (*) de la programmation à montrer d'urgence aux débutants

  • demander de développer ad nauseam le programme de jeu de plus ou moins avant d'avoir abordé les fonctions. La version de base du jeu est assez longue comme ça
  • ne pas proposer de code qui appelle plusieurs fois, sur des données distinctes, une fonction qu'on est en train de développer (avec des tableaux de tailles différentes par exemple)
  • ne pas insister sur la séparation des rôles (=> fonctions qui calculent et affichent en même temps)
  • ne pas insister sur la réutilisation au lieu du copier coller (calcul de la moyenne à partir de la somme)

(*) La programmation,  ça consiste bien à inventer une solution à un problème pour que la tâche soit éxécutable par une machine, ok ? Et pour ça on ramène cette tâche à des instructions simples (les instructions de base du langage, dans ce cas).  Et dès il s'agit de plus d'une dizaine d'instructions, on passe par une décomposition en tâches intermédiaires, sinon on a un merdier (genre jeu de plus ou moins) dans lequel on ne se retrouve pas, ce qui désespère les débutants (lamentations genre "faut que je mette quoi pour que ça revienne au début").  Maitriser un problème complexe en le décomposant en problèmes plus simples, c'est VRAIMENT la base, et les fonctions sont LE moyen d'y arriver.

-
Edité par michelbillaud 23 juin 2019 à 19:35:40

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2019 à 19:46:46

Salut,


Je me permet de revenir tel un esprit errant dans l'unique but apparent de faire un peu de pub pour le tutoriel de Zeste de Savoir. :-°

Neto:Re a écrit:

En 2019, le cours de Mathieu Nebra sur le langage C est-il encore obsolète ?

Comme cela a été dit précédemment, le langage C n'a pas beaucoup changé depuis ses débuts. Cela tient à une volonté de conserver un langage simple (conceptuelement), n'ayant pas une syntaxe trop complexe (afin de facilité la conception de compilateurs) et assurrant une forte rétro-compaiabilité (voire une totale rétro-compatabilité quand on voit que même de la syntaxe pré-ANSI est toujours autorisée par les compilateurs ^^").

Aussi, dire qu'un tuto C est obsolète est globalement difficile. :p

Neto:Re a écrit:

Aujourd'hui en visitant curieusement ce forum, je suis tomber sur denombreux (anciens) sujets qui disent que le cours est mauvais et meme obsolète...

Le problème du cours de M@theo21 est qu'il manque de rigueur et qu'il n'explique pas ou mal certains points du langage. Par exemple, la gestion d'erreur n'est globalement pas expliquée, la manipulation des entrées et sorties est mal expliquée (que ce soit les entrées depuis le terminal ou la manipulation de fichiers) et des points importants sont absents : dépassement de capacités des types, représentations des types, internationalisation et localisation, etc.

Bref, le tuto peut-être une base pour l'apprentissage du C, mais de mon point de vue il n'est pas satisafaisant car imprécis, incomplet et, surtout, il n'inculque pas de bonnes pratiques aux débutants.

Accessoirement, le tuto de M@theo21 se base toujours sur la norme C89. En soit, ce n'est pas un soucis (rétro-compatibilité, tout ça), mais certains ajouts des normes suivantes (C99 et C11) peuvent être intéressants à découvrir. De ce côté, le tuto C de Zeste de Savoir est à jour par rapport à la norme C11 depuis quelques jours. :p

-
Edité par Taurre 23 juin 2019 à 20:05:23

  • Partager sur Facebook
  • Partager sur Twitter
24 juin 2019 à 0:49:57

Oui je l'avoue, meme après avoir recommencer le tuto 3 fois du a un manque de temps, j'ai toujours tiquer sur la taille du double...

potterman28wxcv a écrit:

Non il en parle bien ici : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/14118-un-monde-de-variables

Il ne dit pas que c'est 16 bits, mais il dit qu'un int va de -32767 à 32767, ce qui correspond exactement à ce que tu peux stocker sur 16 bits. De nos jours c'est faux sur 99% des systèmes. En fait, la norme C ne spécifie pas la taille qu'est sensée avoir le int.

Aussi, le -1 x 1037 n'a absolument aucun sens quand il parle de float/double. Je parie sur une mauvaise adaptation de l'ancien tuto. ça devrait être -1 x 10^1037, le 10 est passé à la trappe.

A voir des aberrations comme ça sur un tutoriel phare d'un site professionnel ça fait un peu peur..



  • Partager sur Facebook
  • Partager sur Twitter
24 juin 2019 à 11:40:40

Juste pour ta gouverne : un double ou un float (bref, un flottant), c'est une mantisse et un exposant : de la forme m x (10 puissance exp)

Pour un float, la mantisse est sur 23 bits, l'exposant sur 8 bits, et le dernier bit qui reste c'est le bit de signe, donc un total de 32 bits.

Pour un double, la mantisse est sur 52 bits (donc beaucoup plus précis que le float), l'exposant est sur 11 bits, et il y a toujours le bit de signe : total de 64 bits.

Le plus grand nombre fini représentable par un float c'est quelque chose de l'ordre de 10 puissance 256

Quand au double, c'est du 10 puissance 2048 (si je ne dis pas de bêtises)

(par ailleurs, si tu t'amuses à faire un printf("%u\n", f) avec f un flottant, tu verras alors l'entier représentant le flottant, c'est à dire la concaténation du bit de signe, de l'exposant, et de la mantisse)

-
Edité par potterman28wxcv 24 juin 2019 à 11:41:21

  • Partager sur Facebook
  • Partager sur Twitter
24 juin 2019 à 12:19:13

potterman28wxcv a écrit:

Pour un float, la mantisse est sur 23 bits, l'exposant sur 8 bits, et le dernier bit qui reste c'est le bit de signe, donc un total de 32 bits.

Le plus souvent, la représentation des float c'est la norme IEEE 754 single-precision binary floating-point format (sur 32 bits effectivement), mais ce n'est pas spécifié par la norme du langage C.



  • Partager sur Facebook
  • Partager sur Twitter
25 juin 2019 à 6:20:10

J'ai suivi le cours de Mathieu Nebra et j'ai trouvé qu'il est à la fois basique et très orienté SDL (applications écran).

J'ai programmé en C pendant 10 ans sur Unix mais je suis resté 20 ans sans l'utiliser.

La revision de 1999 a apporté quelques changements (ou améliorations) mineurs, mais sans effet sur notre façon de programmer dans ce langage.

Le cours de M. Nebra à été un bon aide mémoire mais il manque beaucoup de choses comme on l'a mentionné plus haut.

Je le crois tout de même assez pédagogique, mais c'est vrai qu'il y a peu d'exercices, surtout simples pour les débutants.

Existe-t-il un cours qui traite vraiment des erreurs: conception, compilation, debugging, etc.?

Si on me demande ce qu'on peut faire avec un programme ou un langage de programmation, vous connaissez la réponse: tout et n'importe quoi!

C'est donc à chacun de chercher les outils de ce langage (ou d'autres) qui conviendront à nos besoins.

J'ai trouvé deux autres sites qui sont assez bien, je n'ai pas vérifié jusqu'où ils étaient complets:

Introduction à la programmation en ANSI-C - Index
https://www.ltam.lu/cours-c/prg-c.htm
Le langage C, Public IUT en ligne
http://public.iutenligne.net/informatique/algorithme-et-programmation/priou/LangageC/introduction.html


J'espère que les liens vont résister au copier/coller.

  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.