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

Affichage des résultats du sondage: Quel est selon vous le meilleur moyen d'apprendre le Langage C ?

Votants
59. Vous ne pouvez pas participer à ce sondage.
  • Livres papiers/électroniques

    25 42,37%
  • Des tutoriels

    26 44,07%
  • L'étudier à l'école

    22 37,29%
  • Demander à un(e) ami(e) qui le maîtrise

    9 15,25%
  • Sites d'apprentissage

    20 33,90%
  • Sites d'entraide

    9 15,25%
  • Faire des exercices, guidés par un livre (ex: K&R)

    21 35,59%
  • Faire des exercices, guidés par une personne

    18 30,51%
  • Faire des exercices, guidés par un site Web

    10 16,95%
  • Lire du code source

    12 20,34%
  • Participer à des projets de développement

    21 35,59%
  • Autres...

    3 5,08%
Sondage à choix multiple
C Discussion :

Quel est selon vous le meilleur moyen d'apprendre le Langage C ? Et si c'était à refaire ?


Sujet :

C

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut Quel est selon vous le meilleur moyen d'apprendre le Langage C ? Et si c'était à refaire ?
    Quel est selon vous le meilleur moyen d'apprendre le Langage C ? Et si c'était à refaire ?

    • Livres papiers/électroniques
    • Des tutoriels
    • L'étudier à l'école
    • Demander à un(e) ami(e) qui le maîtrise
    • Sites d'apprentissage
    • Sites d'entraide
    • Faire des exercices, guidés par un livre (ex. : K&R)
    • Faire des exercices, guidés par une personne
    • Faire des exercices, guidés par un site Web
    • Lire du code source
    • Participer à des projets de développement
    • Autres…


    Nombreuses sont les personnes, étudiant(e)s ou autodidactes, qui se sont lancées dans l'apprentissage du langage C. Souvent pénible et fastidieux pour certains, beaucoup d'entre-elles abandonnent quand surviennent les passages critiques mais clés du langage comme les pointeurs ou encore l'allocation dynamique de mémoire.

    Vous qui êtes arrivés au terme de cet apprentissage ou bien qui êtes en cours d'apprentissage, vous qui avez laissé tomber pour une raison ou une autre ou bien vous qui l'avez étudié dans le cadre d'un système éducatif mais qui regrettez les méthodes que vous avez déployées d'emblée :

    Quel est selon vous le meilleur moyen d'apprendre ce langage (expliquez votre choix) ?

    Si c'était à refaire, le feriez-vous toujours ? Et pourquoi ?

    Qu'est-ce que vous changeriez dans votre technique d'apprentissage ?

    Quels conseils donneriez-vous aux débutants ?


    À lire aussi :

    Quel est votre langage de programmation préféré en 2013 ?

    Quelle est la meilleure typo pour programmer ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Quel est selon vous le meilleur moyen d'apprendre ce langage (expliquez votre choix) ?
    Je ne sais pas si c'est le meilleur moyen mais c'est comme cela que je l'ai appris :
    • d'abord à l'école (l'AFPA en fait)
    • puis dans les livres pour parfaire certains points non maitrisés
    • et en même temps dans des projets (personnels dans un premier temps puis au boulot parce que j'ai eu la chance d'intégrer un projet en SSII avec du développement en C


    Si c'était à refaire, le feriez-vous toujours ? Et pourquoi ?
    Oui, je le referais comme cela

    Qu'est-ce que vous changeriez dans votre technique d'apprentissage ?
    rien

    Quels conseils donneriez-vous aux débutants ?
    les projets qui sortent des exercices bateau scolaires, c'est formateur. Cela peut être des projets personnels ou bien professionnels.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    Quel est selon vous le meilleur moyen d'apprendre ce langage (expliquez votre choix) ?
    Pour ma part j'ai appris de cette manière :
    J'ai appris avec des tutoriel , puis a école et après je suis passé par des projets perso , je me considère plus autodidactes sachant que je n'ai pas fini mon cursus scolaire et que j'ai appris principalement seul que avec les cours.

    Si c'était à refaire, le feriez-vous toujours ? Et pourquoi ?
    Peut être pas les tutoriels en premiers , sans quelqu'un derrière qui vous suis en fait souvent du mauvais code et on a de mauvaises bases.

    Qu'est-ce que vous changeriez dans votre technique d'apprentissage ?
    rien , mais en tous je déplore le niveau de enseignement a ma fac , beaucoup de mes collègues ont un mauvais niveau , fout des variables globales partout , ont du mal a créer des fonctions digne de nom ,et ceci peut importe le niveau de L1 a M2 ,est ce normal d'avoir encore des difficultés avec les pointeurs en L2 et L3 .

    Quels conseils donneriez-vous aux débutants ?
    De coder , coder et encore coder , c'est principalement le meilleur moyen pour s’améliorer , expérience est très importante dans la programmation.

  4. #4
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Quel est selon vous le meilleur moyen d'apprendre ce langage (expliquez votre choix) ?
    Tutos, Ecole, Exercices Guidés, Lire du Code
    Je rajouterai même : faire du PHP en parallèle des cours d'algorithmique impérative... et voir un peu d'architecture CPU + ASM.

    Pourquoi ?
    Les cours d'algos sont nécessaires.
    En lisant des vieux livres sur MS-DOS et le FAT, j'avais réussi à chopper le concept de pointeur (un grand tableau de fichiers qui a des références dans chaque case vers le fichier), du coup, je me souviendrai toute ma vie de ma réaction quand mon enseignante nous a montré cela : "OH ! C'est comme le FAT !"
    Il faut "juste" que les cours soient + efficaces et rentrent plus vite dans le sujet : un ami en IUT s'est vu entendre que les pointeurs seraient vus en 2e année, car en 1ère... c'est trop difficile pour les étudiants.
    Venant d'une école privée, où au bout de 6 mois on les aborde, c'est ardu de comprendre cette restriction.

    Pourquoi le PHP en parallèle des cours ?
    La syntaxe est TRES proche du C (et pour le moment c'est le langage qui s'en rapproche le + avec des magouilles de sh pour les variables), mais sans les pointeurs.
    Du coup, il est possible d'apprendre l'algorithmique et de pratiquer avec du PHP, tout en se préparant au C par la syntaxe.
    Les notions de tableau avec les char en C sont un peu tordues... du coup, tant qu'il n'y a pas de pointeur et de la "norme '\0'", on est très très perdu et on ne comprend rien.
    Après l'apprentissage des pointeurs, il faut passer le cap et FAIRE du C !

    Pourquoi l'assembleur et de l'architecture ?
    Je vais vraiment pomper le programme de mon école, mais le 68000 est en effet tellement... "complet", que quand on finit par comprendre que l'on peut accéder à la mémoire directement lors des instructions, on a quasiment compris comment fonctionnent les pointeurs en pratique.
    L'architecture permet de comprendre ce qu'il se passe en pratique, les "interruptions" permettent enfin d'identifier la différence man 2/man 3.


    Et le livre qui m'a permis de tout rassembler : Linux Programmation Système et Réseau.
    Explications efficaces de certaines parties système, exemples de codes qui fonctionnent et qui sont TRES commentés...

    Si c'était à refaire, le feriez-vous toujours ? Et pourquoi ?
    Oui !
    La partie "syntaxe" a fait tilt sur le PHP.
    La partie "internals" a fait tilt avec ASM + Exemples.
    ...j'ai juste eu du mal à comprendre et apprendre la syntaxe des pointeurs en C, alors que la notion était comprise, et là... je n'ai aucun conseil hormis la pratique et les exemples !

    Qu'est-ce que vous changeriez dans votre technique d'apprentissage ?
    Je suis sûr que ma méthode n'est pas la meilleure car elle est longue et lourde.
    Avec tous les conseils des autres, il doit être possible de tirer des bouts communs et suffisants !

    Quels conseils donneriez-vous aux débutants ?
    Suivez bien vos cours d'algos !
    Faites du PHP en parallèle.
    Lisez le livre (Linux Programmation Système et Réseau) en parallèle.
    Et une fois que vous abordez les pointeurs, commencez à taper du C !
    Et compilez TOUJOURS avec les flags de debug ! Avec gcc : gcc -Wall -Wextra -Werror
    Ensuite, apprenez à retirer vos leaks avec valgrind/dr.memory !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  5. #5
    Membre éprouvé Avatar de I_believe_in_code
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 219
    Points : 1 043
    Points
    1 043
    Par défaut
    Citation Envoyé par Metalman Voir le message
    un ami en IUT s'est vu entendre que les pointeurs seraient vus en 2e année, car en 1ère... c'est trop difficile pour les étudiants.
    Venant d'EPITA, où au bout de 6 mois on les aborde, c'est ardu de comprendre cette restriction.
    Dans les cours vidéo que je propose en ligne, j'introduis les pointeurs très tôt sans en avoir l'air, et puis j'aborde franchement le sujet au bout de seulement 9 vidéos. Z'êtes des petits joueurs à EPITA

    9ème vidéo : "les pointeurs, partie 1"


  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    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 360
    Points : 23 600
    Points
    23 600
    Par défaut
    En ce qui me concerne :

    1. Architecture des ordinateurs : pas la peine de tout couvrir de fond en comble, mais il me semble qu'exposer les bases du fonctionnement d'un micro-processeur à un apprenti programmeur, c'est comme expliquer comment fonctionne un moteur à explosion à un élève en mécanique ;
    2. Être guidé par une personne : on apprend plus en trois jours à une coding party que seul en deux ans. Malheureusement, il est souvent difficile de trouver la bonne personne, et il faut ensuite convaincre de jouer les parrains ;
    3. Pratique, pratique, pratique ! La programmation est une des rares activités qui, une fois le matériel acquis, ne coûte pour ainsi dire rien ;
    4. Voir si possible les langages dans l'ordre de leur apparition. C'est une affirmation très controversée d'une part parce que c'est un luxe et, d'autre part, parce qu'il faut bien définir un « horizon », sous peine de démarrer l'informatique avec les cartes perforées ;
    5. Garder la norme sous le coude. C'est le vademecum de ceux qui veulent pratiquer le C sérieusement, notamment en contexte professionnel.


    En ce qui concerne le C en particulier, j'insiste sur le fait que voir l'architecture des ordinateurs en début de formation est un énorme plus car le C est fait pour cela. Je suis personnellement de l'époque des huit bits et en ce temps, on commençait par le BASIC et on passait directement à l'assembleur, et ce n'était pas spécialement surhumain. Et surtout, on avait PEEK et POKE pour aller lire ou déposer un octet en mémoire. Et comme on avait directement accès à la mémoire vidéo, on voyait physiquement ce qu'il se passait quand on tapait dedans. Parallèlement, il y avait de nombreuses machines différentes, chaque fabriquant produisant sa propre gamme.

    Je suis toujours stupéfait de lire les témoignages de ceux qui sont nés dans les années 1990 et qui, aujourd'hui, finissent leur troisième cycle, et de les voir présenter les pointeurs comme un concept subtil et presque mystique qui s'appréhende sur la durée. Je le suis encore plus quand je constate que ceux qui ont fini par maîtriser le concept et avoir une idée claire de la manière dont fonctionne leur machine sont ceux qui, après avoir atteint le terme de ce long parcours, ont « approfondi » leurs connaissance en reprenant en fait le chemin à l'envers, comme un pèlerinage, jusqu'à atteindre le point de départ, par où leurs aînés ont en fait commencé.

    C'est pour cela que je reste réservé sur le fait d'apprendre le C uniquement par l'école. Pas sur le principe, bien sûr, mais à cause du fait qu'avec la meilleure volonté du monde, on n'a pas le temps de couvrir efficacement tous les aspects du langage avec les raisons sous-jacentes qui ont conduit à tel ou tel choix. Comme pour beaucoup de disciplines, ça ne peut être qu'une base solide permettant à l'élève d'entamer lui-même sa propre formation.

  7. #7
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Citation Envoyé par I_believe_in_code Voir le message
    Dans les cours vidéo que je propose en ligne, j'introduis les pointeurs très tôt sans en avoir l'air, et puis j'aborde franchement le sujet au bout de seulement 9 vidéos. Z'êtes des petits joueurs dans votre école
    Ca va partir en troll... mais juste pour clore très vite : 6 mois ça inclut la partie OCaml pour démarrer la prog avant le paradigme impératif.
    Petits joueurs ou pas... le but de la comparaison était de montrer que les IUT appliquant la règle du "pas de pointeur en 1ère année car trop difficile" ont un GROS problème, et tu es d'ailleurs d'accord avec moi !
    Un autre ami a fait la Fac, et selon lui aussi il y avait des choses à revoir.

    C'est ce que l'on peut reprocher à l'organisation des cours Fac/IUT : pas assez de pratique poussée.
    Les pointeurs, à la fin de la 1ère année ça doit être assimilé, au moins dans la notion !

    EDIT : je soutien vivement le post d'Obsidian, même si je suis issu d'un cru 1988, qui effectivement fait le pèlerinage dont il parle.
    Et c'est aujourd'hui, après mes études, que je m'intéresse (et peut pratiquer) aux Mainframes et au COBOL.
    Un topic récent sur le forum COBOL a même soulevé une grosse question : COBOL (1959 je crois) est-il haut ou bas niveau ?
    C'est un haut niveau selon la litterature, et en pratique, pendant des dizaines d'années on débuggait du COBOL avec un dump mémoire "brut", car ses instructions sont en fait TRES proches de l'assembleur.
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  8. #8
    Membre expérimenté

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 545
    Points : 1 424
    Points
    1 424
    Par défaut
    En ce qui me concerne :

    Architecture des ordinateurs : pas la peine de tout couvrir de fond en comble, mais il me semble qu'exposer les bases du fonctionnement d'un micro-processeur à un apprenti programmeur, c'est comme expliquer comment fonctionne un moteur à explosion à un élève en mécanique ;
    Être guidé par une personne : on apprend plus en trois jours à une coding party que seul en deux ans. Malheureusement, il est souvent difficile de trouver la bonne personne, et il faut ensuite convaincre de jouer les parrains ;
    Pratique, pratique, pratique ! La programmation est une des rares activités qui, une fois le matériel acquis, ne coûte pour ainsi dire rien ;
    Voir si possible les langages dans l'ordre de leur apparition. C'est une affirmation très controversée d'une part parce que c'est un luxe et, d'autre part, parce qu'il faut bien définir un « horizon », sous peine de démarrer l'informatique avec les cartes perforées ;
    Garder la norme sous le coude. C'est le vademecum de ceux qui veulent pratiquer le C sérieusement, notamment en contexte professionnel.
    Entièrement d'accord!
    Comprendre comment fonctionne un CPU c'est la base de la programmation!

    Mes études ont fait que j'ai commencé avec le JAVA, puis le C, puis le VHDL, et ça ne m'a pas posé de problème. Au contraire cela a été de + en + intéressant!!

  9. #9
    Membre confirmé Avatar de satenske
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 143
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par Metalman Voir le message
    Ca va partir en troll... mais juste pour clore très vite : 6 mois ça inclut la partie OCaml pour démarrer la prog avant le paradigme impératif.
    Petits joueurs ou pas... le but de la comparaison était de montrer que les IUT appliquant la règle du "pas de pointeur en 1ère année car trop difficile" ont un GROS problème, et tu es d'ailleurs d'accord avec moi !
    Un autre ami a fait la Fac, et selon lui aussi il y avait des choses à revoir.

    C'est ce que l'on peut reprocher à l'organisation des cours Fac/IUT : pas assez de pratique poussée.
    Les pointeurs, à la fin de la 1ère année ça doit être assimilé, au moins dans la notion !
    J'ai personnellement eu mon DUT après deux années, et je suis actuellement à la fac, donc je peux comparer.
    À mon iut, nous apprenons les pointeurs au début du second semestre, soit après 6mois de cours d'algorithmiques. Je trouve personnellement ça assez bien, une fois les bases apprises, on peut se pencher sur le cœur du C, les pointeurs et l'allocation dynamique.
    Et c'est donc au second semestre où on a appris tout ce qui était listes, arbres de recherche, tables de hashage tout ça, tout ça.
    Avant le second semestre, on est pas censé savoir ce qu'est un pointeur, on fait sans.

    À la fac, fonctionnement un peu différent, dès le troisième cours, on nous explique ce qu'est concrètement un pointeur, mais on ne voit l'utilité que pour faire des paramètres en mise-à-jours, et le fait qu'un tableau n'est rien d'autre qu'un pointeur.
    On nous donne des exercices, avec des pointeurs de pointeurs en paramètre, je cherche toujours l'intérêt d'essayer d'embrouiller les élèves de cette manière.
    Ensuite, semestre suivant, là on revoit le fonctionnement d'un pointeur (c'est pas plus mal), allocation dynamique, et ensuite on passe aux structures de données.


    Mon apprentissage à été assez chaotique je pense, j'ai appris en lisant des tutos à droite à gauche, après avoir appris le PHP, mais bon, je faisais des choses sales, il n'y avait personne pour me corriger, me dire de ne pas faire quelque chose, vraiment je ne pense pas que ça soit le meilleur moyen de devenir un bon développeur, à moins d'avoir déjà de l'expérience dans d'autres langages.
    Ensuite, je suis entré à l'iut, et c'est là ou j'ai appris des méthodes de développement et que ce n'est pas parce que ça marche que c'est forcément bien.

    Je pense que le meilleur moyen pour apprendre, c'est d'avoir quelqu'un de bon dans le domaine qui soit derrière nous pour nous dire ce qui est bien ou pas bien.
    Autrement dis, des projets personnels, c'est génial, mais s'il n'y a personne pour guider, ça peut nous faire prendre des mauvaises habitudes.
    Sinon, pour ma part, l'iut m'a bien formé, après il faut être investit, si on s'arrête à faire ce qu'on nous demande, on ne deviendra pas un bon développeur, par contre, si on s'amuse un peu chez sois, et qu'on demande à un prof ce qu'il pense de ce qu'on a fait pour s'amuser, alors là on progressera bien plus vite.
    « Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it. » – Linus Torvalds

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Metalman Voir le message
    Ca va partir en troll... mais juste pour clore très vite : 6 mois ça inclut la partie OCaml pour démarrer la prog avant le paradigme impératif.
    Petits joueurs ou pas... le but de la comparaison était de montrer que les IUT appliquant la règle du "pas de pointeur en 1ère année car trop difficile" ont un GROS problème, et tu es d'ailleurs d'accord avec moi !
    Un autre ami a fait la Fac, et selon lui aussi il y avait des choses à revoir.

    C'est ce que l'on peut reprocher à l'organisation des cours Fac/IUT : pas assez de pratique poussée.
    Les pointeurs, à la fin de la 1ère année ça doit être assimilé, au moins dans la notion !
    Tu as initié le troll tout seul

    Pour avoir fait un IUT informatique et avoir rencontré des étudiants de la même formation qui venaient de partout en France, il n'y a pas d'histoires de "les pointeurs c'est trop compliqué on le fera en 2ème année". C'est même le premier langage qu'on étudiait dans le mien : le C, et les pointeurs compris dedans.
    Il y a des choses à revoir dans l'enseignement c'est sûr, comme à la fac, et comme dans les écoles privées.

    Le problème avec l'enseignement du C est qu'on hésite à le conseiller aux débutants car il peut décourager, mais il introduit des aspects essentiels de la programmation (surtout quand on voit à côté l'architecture des ordinateurs) qui manquent à bon nombre de programmeurs qui n'ont touché qu'à du php ou du ruby par exemple. L'abstraction c'est bien mais le côté proche de la machine aussi, et personnellement je vois pas trop comment y sensibiliser les étudiants par exemple en recréant des structures de données type liste etc quand à côté on leur montre python.

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 506
    Points : 1 289
    Points
    1 289
    Par défaut K&R
    J'ai appris la programmation en programmant Pac-Man sur Amstrad PC1512 en 1986 en suivant le bouquin K&R et la doc de turbo C 1.5 (Turbo C que j'avais acheté au pif sans vraiment savoir ce que c'était).

    Le concept de pointeur je l'ai appris le premier jour comment peut-on faire sans en C ???

    Fun sur l'Amstrad1512: il fallait 3 ou 4 lignes assembleurs de copie dans la mémoire graphique pour aller au delà du CGA (640x200 16 couleurs il avait ;-) )

    Fred

    P.S. Le PC est dans le grenier chez mes parents et je crois qu'il s'allume encore! Bon faut être patient: d'abord la disquette MS-Dos, puis la disquette Turbo-C 1, puis mettre la disquette Turbo-C 2 qui contient aussi les sources...

  12. #12
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Points : 172
    Points
    172
    Par défaut
    le livre de la collection "le tout en poche" pour le C, un 10 euros très bien pour commencer

    j'ai trouvé ça très facile car j'ai commencé à apprendre la programmation en assembleur 68K, après le C je suis passé en PHP autant vous dire que cela à été très facile =)

  13. #13
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Citation Envoyé par Reyhn Voir le message
    Tu as initié le troll tout seul
    En effet, désolé, j'aurais du mettre "école privée" comme tu l'as fait.
    Mais c'est mon très mauvais réflexe.

    Citation Envoyé par Reyhn Voir le message
    Pour avoir fait un IUT informatique et avoir rencontré des étudiants de la même formation qui venaient de partout en France, il n'y a pas d'histoires de "les pointeurs c'est trop compliqué on le fera en 2ème année". C'est même le premier langage qu'on étudiait dans le mien : le C, et les pointeurs compris dedans.
    Bon, bah tant mieux si l'IUT de mon témoin est le seul à faire n'importe quoi !
    Il faisait en effet du C en cours comme 1er langage, mais quand il m'expliquait ce que son prof disait/faisait, j'avais peur pour lui (et finalement il est parti dans "une autre" école privée très proche de la mienne où il a pu réellement pratiquer en profondeur).
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

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

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 105
    Points
    105
    Par défaut
    Citation Envoyé par Metalman Voir le message
    Bon, bah tant mieux si l'IUT de mon témoin est le seul à faire n'importe quoi !
    Il faisait en effet du C en cours comme 1er langage, mais quand il m'expliquait ce que son prof disait/faisait, j'avais peur pour lui (et finalement il est parti dans "une autre" école privée très proche de la mienne où il a pu réellement pratiquer en profondeur).
    De mon côté, la grosse perte de temps absurde de mon IUT a été de faire un cours en doublon pendant le cursus :
    - 1 : apprendre le PASCAL (sous DOS) et toutes ses notions (variables, pointeurs, etc)
    - 2 : apprendre le C (SOUS DOS) et toutes ses notions (variables, pointeurs, etc)
    - 3 : apprendre le C++ (VC++1) et toutes les notions de C, puis un petit cours sur les objets.

    Voila, c'était le programme des 2 années dans leur intégralité en cours d'Algorithmique (c'est à dire en cours de programmation) !

    Forcément, tout le monde avait entre 15 et 20, ce qui signifiait qu'on était tous THE BOSS en championnat de LEVEL 1 !

    Dommage, j'étais obligé de me former moi même à des choses plus subtiles et innovantes pour l'époque comme le Delphi ou le Borland C++ Builder, la création d'objets VCL (equiv OCX). A l'époque en 98 on avait pas encore de .NET, qui n'est de toute façon qu'un héritage de la structure de Delphi, l'esprit était déjà là.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Points : 66
    Points
    66
    Par défaut
    Généralement, les formations au sein des écoles sont de très mauvaises qualité. En sortant de l'IUT, je ne connaissait pas l'instruction "return". J'utilisais des variables globales pour retourner mes valeurs. Alors les pointeurs

    Quel est selon vous le meilleur moyen d'apprendre ce langage (expliquez votre choix) ?
    Après le C est très proche de l'algorithmique, donc c'est un langage très facile à maitriser dans les bases. La grosse difficulté dans l’apprentissage est la réalisation et l'utilisation de bibliothèque. Qui de plus, ne sont pas facile à dénicher.

    Une autre difficulté pour un débutant, mais valable pour la plupart des langages : "Lire du code source de programme fonctionnel et bien écrit."
    Car il n'y a pas de norme d'écriture, autant prendre comme référence du code utilisant des bonnes pratiques.


    Si c'était à refaire, le feriez-vous toujours ? Et pourquoi ?
    Non, je pratiquais un petit peu, mais je approfondissait pas la matière.
    Qu'est-ce que vous changeriez dans votre technique d'apprentissage ?
    Maintenant, avec toutes les possibilités et les projets disponible en source lisible, je profiterai de l’expérience d'autre.

    Quels conseils donneriez-vous aux débutants ?
    D'être patient, car trouver des erreurs de programmation sans expérience, c'est une vrai galère.

  16. #16
    Membre extrêmement actif
    Avatar de benjani13
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Février 2010
    Messages
    615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Février 2010
    Messages : 615
    Points : 2 824
    Points
    2 824
    Par défaut
    Citation Envoyé par Metalman Voir le message
    un ami en IUT s'est vu entendre que les pointeurs seraient vus en 2e année, car en 1ère... c'est trop difficile pour les étudiants.
    Venant d'une école privée, où au bout de 6 mois on les aborde, c'est ardu de comprendre cette restriction.
    Je suis en IUT et nous avons vu les pointeurs au bout de deux ou trois mois seulement. Faut pas généraliser donc.
    Et pour les langages vues dans mon IUT, les voila dans l'ordre:
    C, C++ (introduction aux concepts objets), Java (très mal enseigné malheureusement), python (pour l'algorithmie en seconde année, j'ai adoré), langages web (très rapidement).
    Les IUT ne sont pas comparable entre eux, chacun ayant sa propre application du référentiel du diplôme. Et même au sein d'un même IUT, le cours différera en fonction du prof, mais sa c'est comme partout.

    Sinon, pour la question de l'apprentissage, personnellement j'ai appris le C en 3ème (et par la suite durant le lycée j'ai appris beaucoup de langages).

    Après je pense que dans tous les cas, que ce soit un tutoriel sur internet ou un prof, il faut que le cours mette en parallèle l'apprentissage du langage et l'apprentissage du fonctionnement de l'ordinateur. Car c'est seulement en comprenant le fonctionnement d'un processeur que l'on pourra programmer en C en sachant et en comprenant ce que l'on écrit.
    Et de plus, sa permettra d'aborder les pointeurs bien plus aisément.

    La deuxième chose sur laquelle mettre l'accent est de faire pratiquer chaque notion (condition, boucles, tableau, etc), une par une, et intensément, jusqu'à ce que la notion soit bien assimilé.

    Un deuxième point important et de proposer des petits TP pratiques, la réalisation de petits jeux consoles, afin de donner du sens à l'apprentissage du C. Il faut que la personne qui étudie le C voit qu'on apprend pas le langage pour le langage, mais par ce qu'on peut en faire de belle choses, et surtout des choses accessibles même pour un débutant. Je pense que ce point là est primordiale pour conserver l'a motivation de la personne.

    La seule chose qui manque aux tutoriels C est des cours d'algorithmique plus poussé. Mais c'est difficile de comprendre un raisonnement écrit sur papier, pour le coup je pense qu'un professeur sera beaucoup plus efficace car il pourra expliquer ce raisonnement.

  17. #17
    Membre émérite
    Avatar de VivienD
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur logiciel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 523
    Points : 2 278
    Points
    2 278
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Quel est selon vous le meilleur moyen d'apprendre ce langage (expliquez votre choix) ?
    Je vais vraisemblablement enfoncer des portes ouvertes mais je considère que la meilleure méthode pour apprendre ce langage doit, d'une part, stimuler aussi bien la mémoire auditive que la mémoire visuelle et, d'autre part, proposer une certaine interactivité (via des exercices, des explications, etc.).
    Le nec-plus-ultra pour moi reste les cours dispensés par un enseignant, et ce, à un groupe restreint (quinze personnes grand maximum). Toutefois certains cours écrits ou vidéo sont de qualité et font même figure de références. En sus, on peut avoir un support papier, qu'on peut consulter à loisir, pour résumer l'essentiel, approfondir ses connaissances et avoir quelques exercices supplémentaires.

    Citation Envoyé par Franck.H Voir le message
    Si c'était à refaire, le feriez-vous toujours ? Et pourquoi ?
    Qu'est-ce que vous changeriez dans votre technique d'apprentissage ?
    Je le referais sans hésitation car le C demande une certaine rigueur et permet d'être assez proche de la machine (pas autant que l'ASM, certes). En revanche, j'aurais aimé que les termes techniques fussent traduits en français (étant donné que j'ai assisté à ces cours en Allemagne, et donc en allemand) et en anglais; en effet, ça m'aurait permis d'approfondir plus facilement les thèmes abordés durant les cours.

    Citation Envoyé par Franck.H Voir le message
    Quels conseils donneriez-vous aux débutants ?
    Pratiquer, s'exercer, être curieux et, surtout! ne pas avoir peur des pointeurs (c'est bon, mangez-en!).
    De retour, plus sportif mais toujours aussi moche.
    _____________
    Pro: Programmation en C/C++ (embarqué ou non)
    Loisir: Programmation en C++11/14/17 avec la STL ou Qt 5

  18. #18
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par VivienD Voir le message
    Pratiquer, s'exercer, être curieux et, surtout! ne pas avoir peur des pointeurs (c'est bon, mangez-en!).
    Carrément c'est bon ouais, j'en utilise à toutes les sauces
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  19. #19
    Membre expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Points : 3 352
    Points
    3 352
    Par défaut
    Quel est selon vous le meilleur moyen d'apprendre ce langage (expliquez votre choix) ?

    Comme pour tout ce qu'on peut apprendre je ne pense pas qu'il existe un meilleur moyen, il y a juste quelques moyens qui fonctionnent suivant le caractère des apprenants. Il y a certainement aussi beaucoup de mauvaises méthodes à ne jamais appliquer.
    Je suis issu d'une génération de bidouilleur sur machine 8bits, ceux qu'on appelait les hobbyistes dans les années 80, je bidouillais en basic et en asm sur mon c64, mais aussi sur les machines de mes amis comme les oric, les armstrads ou des ti. Nous partagions nos découvertes à base de copiage de lignes et de lignes de codes piquées dans hebdogiciel, nous finissions même par comprendre l'allemand en achetant des magazines comme chip je crois.
    Bref j'étais un jeune homme bourré de mauvaises habitudes lorsqu'il a eu son premier contact avec la programmation structurée.
    Heureusement au lieu de voir ça comme une contrainte j'ai vite compris qu'en fait cela permettait d'exprimer une plus grande liberté dans ce qu'on pouvait faire. Scolairement j'ai appris pascal à mon lycée, continué en GFa Basic sur mon atari à la maison.
    Même si on ne nous a pas appris l'algorithmique au lycée à l'époque, le fait d'avoir manipulé plusieurs langages et de continuer à le faire m'en a vite fait apparaître le concept. Je pouvais écrire en Français ce que je voulais que la machine fasse puis ensuite je parlais basic à mon atari ou pascal au PC. Mais à l'époque ça m'apparaissait plus comme un brouillon qu'un véritable outil.
    Dans les années 90, arrivé à la fac on me permet enfin d'acquérir des bases solides en algorithmique, mais aussi en architecture des ordinateurs. Enfin on me donnait les mots pour les notions ce que j'avais entraperçues et effleurées.
    Du coup l'apprentissage du C a été relativement facile. Juste une question de s'adapter*à la syntaxe, la grammaire et (le pire) les idiomes et de passer par les erreurs classiques qui forment.
    La maturation de mon C c'est faite ensuite en l'utilisant.

    Si c'était à refaire, le feriez-vous toujours ? Et pourquoi ?
    Oui, parce qu'apparemment ça n'a pas trop mal fonctionné

    Qu'est-ce que vous changeriez dans votre technique d'apprentissage ?
    Rien pour les mêmes raisons

    Quels conseils donneriez-vous aux débutants ?
    Ne pas uniquement se focaliser sur le langage. Le langage n'est qu'un moyen pour réaliser quelque chose. Pour bien la réaliser il faut aussi d'autres capacités en plus de la motivation et de la rigueur : on n'apprend pas un langage pour apprendre un langage.

    D'ailleurs pour pinailler un peu ... un langage c'est pas grand chose. Tout le monde confond le langage et les outils. La base en C est simple, le langage et la libc (qui d'ailleurs peut être écrite en c). Pour rejoindre à nouveau Obsidian enfin un peu, la génération post90 n'arrive plus à faire cette distinction. Elle est d'ailleurs volontairement rendue floue à mon avis pour de mauvaises raisons. Il suffit de voir le nombre fonctionnalités proposées par les framework/sdk/toolbox/"bibliothèques standards" qui sont décrites comme faisant partie intégrante du langage ... Je ne dis pas qu'elles sont inutiles bien au contraire, mais je dis simplement que ça ne fait plus partie du langage à proprement parler mais des outils développés avec.

  20. #20
    Membre émérite
    Avatar de VivienD
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur logiciel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 523
    Points : 2 278
    Points
    2 278
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Carrément c'est bon ouais, j'en utilise à toutes les sauces
    Honnêtement, quand je dois programmer VB.NET ou en VB6, je dois avouer que leur absence de ce langage me perturbe grandement; déjà que les instructions de VB* ne se terminent pas avec un signe de ponctuation...
    De retour, plus sportif mais toujours aussi moche.
    _____________
    Pro: Programmation en C/C++ (embarqué ou non)
    Loisir: Programmation en C++11/14/17 avec la STL ou Qt 5

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/08/2010, 16h56
  2. Réponses: 12
    Dernier message: 18/08/2009, 19h12
  3. Quel est selon vous le meilleur AV du marché ?
    Par lavazavio dans le forum Sécurité
    Réponses: 6
    Dernier message: 10/10/2005, 09h30

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