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: Quelle est la meilleure méthode pour apprendre la programmation ?

Votants
46. Vous ne pouvez pas participer à ce sondage.
  • avec un langage de bas niveau (C, assembleur...)

    15 32,61%
  • avec un langage de script

    8 17,39%
  • avec la programmation Web

    4 8,70%
  • avec un langage de haut niveau (Python, Go, Rust)

    15 32,61%
  • avec des livres

    21 45,65%
  • avec des tutoriels écrits

    32 69,57%
  • avec des tutoriels vidéos

    16 34,78%
  • avec un système de noeuds (Scratch)

    1 2,17%
  • au travers d'un framework

    3 6,52%
  • au travers d'un moteur de jeux vidéo

    2 4,35%
  • avec des sites interactifs dédiés (CodeCombat, Codingame, ...)

    4 8,70%
  • avec des jeux vidéos thématiques (7 Billion humans, TIS-100, Shenzen IO, Opus Magnum)

    4 8,70%
  • en école

    17 36,96%
  • en formation

    14 30,43%
Sondage à choix multiple
Débats sur le développement - Le Best Of Discussion :

Quelle est la meilleure méthode pour apprendre la programmation ?


Sujet :

Débats sur le développement - Le Best Of

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut Quelle est la meilleure méthode pour apprendre la programmation ?
    Quelle est la meilleure méthode pour apprendre la programmation ?

    L'apprentissage de la programmation est un sujet de plus en plus mis en avant. D'ailleurs, certains pensent que cela devrait être une obligation. Toutefois, la programmation n'est pas, pour tout le monde, chose aisée à appréhender (comme de nombreuses autres choses). Heureusement, une multitude de méthodes et de ressources sont disponibles, dont certaines gratuitement. Alors qu'il y a vingt ans, l'apprentissage de la programmation était une chose qu'on commençait souvent seul : avec un livre, voire, le manuel de son ordinateur et qui se complétait en université.

    Aujourd'hui, le sujet est amené aux plus jeunes, chose rendue possible avec des langages et concepts plus accessibles : langage de haut niveau, programmation à l'aide de nœuds... au point même qu'aujourd'hui, il est possible de trouver des jeux vidéo qui, sous couvert d'un enrobage plus ou moins discret, permettent aux gens de comprendre la logique qu'un développeur utilise tous les jours dans son travail.


    Mais, avec toutes ses possibilités, le choix n'en devient que plus compliqué. Quelle est la meilleure méthode pour apprendre la programmation ? Ici, on parle bien de programmation (ou autrement dit, la logique) et non de l'apprentissage d'un langage en particulier.


    Quel est votre point de vue sur la question. N'hésitez pas à partager votre expérience d'apprentissage, ou encore, de dire comment vous, vous auriez aimé apprendre la programmation.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    La question est mauvaise. Il n'y a pas de vraiment une "bonne" méthode pour apprendre la programmation. Tout ce qui est cité dans le sondage permet tout a fait d'apprendre la programmation, même si certaines nécessiteront d'approfondir avec d'autre outils par la suite.

    La clé est de cerner les exercices qui feront le plus envie a l'étudiant pour se motiver, après c'est gagné, l'outil est vraiment annexe. Et malheureusement il n'y a pas de réponse facile a ce point, chacun est différent.

  3. #3
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 174
    Points : 4 690
    Points
    4 690
    Par défaut
    Avec des projets intéressants.

    C'est toujours ce qui m'a poussé à apprendre, l'envie de réaliser quelque chose.

  4. #4
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par Zefling Voir le message
    Avec des projets intéressants.
    Tu m'as grillé, mais ça me fait plaisir de constater que je ne suis pas le seul à penser comme ça.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2022
    Messages : 6
    Points : 19
    Points
    19
    Par défaut Parler d'expérience.
    J'avais essayé les langages de bas niveau (C++), et j'ai abandonné le développement. J'ai ensuite essayé Java, même constat.
    Finalement, c'est dans les langages web et python que j'ai trouvé ma rédemption.

    Après, je rejoins au dessus, pour le web, j'avais un projet concret en PHP / Javascript. Ca a dû aider, il y a également des tutos bien plus compréhensible et abordable dans le web qu'en C++ ou en Java je trouve.
    Ensuite j'ai fait une formation, qui n'a aidé qu'à parfaire mes connaissances et me donner un diplôme.

    Du coup, dans mon ordre, pour moi, c'est déjà la qualité de l'information, ensuite l'entourage (mon père est développeur expert PHP / MySQL), avoir quelqu'un du milieu de pédagogue aide énormément, et ensuite les projets. Un projet concret permet de ne pas se perdre dans l'apprentissage, d'avoir une ligne directrice, un chemin à suivre et des cas concrets sous les yeux.

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Citation Envoyé par MajorKurk Voir le message
    J'avais essayé les langages de bas niveau (C++), et j'ai abandonné le développement. J'ai ensuite essayé Java, même constat.
    Finalement, c'est dans les langages web et python que j'ai trouvé ma rédemption..
    C++ et Java ne sont pas des langages de bas niveau

    La méthode d'apprentissage dépend selon moi de l'objectif.
    * Si on veux réaliser une idée rapidement et puis c'est tout : suivre des tutos avec un framework facile d'approche est idéal. Ca ira vite , plein de petites choses sont gérés pour nous. La contrepartie c'est qu'on ne comprend pas forcément tout ce qu'on fait mais ce n'est pas le but.
    * Si on veux en faire un métier et durer dans le temps :
    - La première des choses est de construire une culture informatique , savoir comment marche un ordinateur. (vous imaginez pas le nombre de candidat qui me disent qu'une variable s'écrie sur le disque dur )
    - Travailler un minimum la logique et l'algorithmie. Des outils à base de bloc sont plutôt pas mal pour ceux qui n'ont pas la formation mathématique qui apporte normalement cette réflexion.
    - Eviter les framework
    - Eviter les langages trop particuliers
    - Faire un projet from scratch. Pour construire une base. Une fois cette base solide on peut empiler dessus : essayer un framework , changer de langage, etc ...

    Pour moi le C est un super outil pour l'apprentissage. Il est suffisamment simple pour pas être trop effrayant , permet d'aborder les problématique de gestion de mémoire et à une syntaxe proche de la majorité des langages sur lesquels on à envie de transitionner ensuite pour moins galérer.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    909
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 909
    Points : 2 818
    Points
    2 818
    Par défaut
    Personnellement j'avais bidouillé gentiment PHP en autodidacte et même fais un peu de C, je m'étais arrêté au pointeur.

    Mon niveau de programmation ne volait pas donc haut. Il a pourtant été d'une grande aide une fois en BTS info & réseau puis INSA.

    Pourquoi ? Je m'étais déjà suffisamment payé de boucles, de petit test de logique, d'erreurs du débutant, que quand j'ai commencé l'info en BTS j'étais "fluent" en écriture de code. Tout ce que javais fait c'était un site web pour une guile dans un jeu ou l'on pouvait s'authentifier et saisir un formulaire pour remplir des tableaux.

    En bref, avant même de faire une full solution Angular + Java/Spring/Hibernate, taper du code de base pour un petit truc perso permet de se rôder aux opérations les plus simples du code et permet d'acquérir des réflexes essentiels que ce soit dans le réflexion ou l'écriture de code.

  8. #8
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Zefling Voir le message
    Avec des projets intéressants.

    C'est toujours ce qui m'a poussé à apprendre, l'envie de réaliser quelque chose.
    J'ai également commencé de cette façon, en adaptant des jeux pour y mettre mes propres idées. Un bon tutoriel peut-êtrela bonne approche, du genre de Learn **** the hard way. Mais dans mon cas, je préfère par la pratique, avec un langage qui contrairement à Python ne demande une expertise préàlable pour faire fonctionner l'exemple. Je ne blague pas, Python est un des langages qui a les programme les plus difficile à faire fonctionner que je connaisse. À l'exception de vieux programme en Pascal, j'arrive toujours à les faire fonctionner. Et pour cette raison, je suis toujours étonné de le voir dans les langages suggérés aux débutants.

    Citation Envoyé par grunk Voir le message
    Pour moi le C est un super outil pour l'apprentissage. Il est suffisamment simple pour pas être trop effrayant , permet d'aborder les problématique de gestion de mémoire et à une syntaxe proche de la majorité des langages sur lesquels on à envie de transitionner ensuite pour moins galérer.
    La gestion de mémoire est justement ce qui le disqualifie comme langage pour débutant. La gestion de mémoire est importante pour un programmeur. Mais pas pour l'ingénieur qui veut faire des utilitaires pour simplifier sa vie. S'il y a un aspect de la programmation qui devrait disparaître dans le futur, c'est bien celui de la gestion de mémoire.

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 272
    Points : 4 091
    Points
    4 091
    Par défaut
    1) Commencer par choisir le langage de programmation
    1 bis) Prendre un livre (j'aime bien avoir un support papier ça me permet de lire les concepts sans faire autre chose en même temps sur mon écran)
    2) Choisir un framework populaire du langage (si applicable)
    3) Se développer un projet assez simple et intéressant (logiciel de gestion de quelque chose, bibliothèque s'il n'y a pas d'alternative dans le langage), pour les jeux on veut souvent créer de trop grosses choses donc je ne commencerais pas par ça

  10. #10
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 765
    Points : 960
    Points
    960
    Par défaut
    Pour moi, c’est se donner un objectif à atteindre !
    cela t’oblige à creuser des fonctions/méthodes qui te sortent de ta zone de confort…

  11. #11
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 655
    Points : 3 781
    Points
    3 781
    Par défaut L'algorithmique d'abord, les langages ensuite
    Chose la plus importante : ne jamais négliger l'algorithmique, qui est le solfège du développeur.

    L'une des choses les plus importantes est de savoir différencier les concepts et leurs implémentations. Un langage c'est d'abord l'implémentation de ces concepts là. Des concepts fondamentaux tels que la boucle if ne sont pas totalement réinventés à chaque fois que tu passes d'un langage à un autre. Si tu sais faire la différence tu seras déjà dans tes petits souliers à chaque fois que tu découvres un nouveau langages. Tu n'as alors plus qu'à te concentrer sur les spécificités liées à ce langage et sur son paradigme s'il t'est étranger. C'est pareil dans les langues vivantes. Que tu dises "wagen" en allemand, "car" en anglais, "voiture" en français ou "coche" en espagnol, ça reste de même tas de ferailles avec 4 roues et un volant. C'est pareil pour les langages de programmation.

    Niveau langages, j'ai envie de conseiller le C :
    • Sa syntaxe est très standard. Enormément de langages s'en inspirent, donc là aussi ça facilitera l'apprentissage de ces nombreux langages qui s'en inspirent.
    • Typage fort
    • Langage bas niveau, parce qu'il en faut bien un dans son arsenal.
    • Langage compilé, parce qu'il en faut bien un.
    • On voit beaucoup de concepts de programmation avec le C.
    • On peut tout faire avec le C, même simuler des choses qui sont simplifiées avec du sucre syntaxique ailleurs. J'avais eu un cours dans ce genre en école d'ingé et j'avais adoré.
    • Il force à mettre les mains dans le cambouis pour bien simplifier les choses.


    Je complète ça avec du Python :
    • Force à acquérir des bonnes habitudes.
    • Langage haut niveau, parce qu'il en faut bien un.
    • Langage de script, parce qu'il en faut bien un.


    Pour de l'objet, je conseille fortement le C++, pour la simple et bonne raison que ce n'est pas un langage de Sainte Nitouche. Le C++ est un langage franc, il ne ment pas. Il ne va pas passer par je ne sais quel concept alambiqué pour faire des choses sans les dire, notamment pour l'héritage multiple. Si C++ veut faire de l'héritage multiple alors il en fait. Il ne s'embarrasse pas de concepts comme les interfaces et les traits pour ça. Idem avec les pointeurs.

    J'ai envie de dire "non dans un premier temps" quant aux frameworks. Qt n'est pas C++. Boost non plus. Symfony n'est pas PHP. Django n'est pas Python. Node.js n'est pas JavaScript. Unity n'est pas C#. On n'y vient que lorsqu'on est déjà solide sur ses bases. C'est même sans doute la première chose à faire une fois que c'est le cas, mais après.

    Quant à la méthode ça dépend de chacun, de sa manière de fonctionner. Perso je suis très rat de bibliothèque sur ce point et rien ne vaudra mieux pour MOI que le nez dans un bon bouquin et des tutos écrits. Mais ça reste mon cas personnel et qui n'est sans doute pas une généralité.

    Par contre je conseille d'éviter les "apprenez tartampion en 5 minutes". Je parle de ces daubes du type "Crac, Boum, Hue ! Ça marche !". Le genre de choses simples au possible avec N choses déjà préparées auparavant et finies à l'arrache pour le show, sans trop les expliquer. Si jamais tu veux faire quelque chose un poil plus complexe, ce genre de daube ne te donnera pas la solution à ton problème et il faudra aller fouiller profondément dans ces choses déjà préparées dont le tuto simple "apprenez en 5 minutes" ne te parlera jamais. Qu'est-ce que j'ai pu rager contre la documentation de Qt qui en est pleine.

    Un projet personnel (ou pas) peut aussi être une bonne source de motivation à ne pas négliger. C'est l'idéal pour voir ce que t'as retenu de ton apprentissage et pour te faire gagner de l'expérience sur la pratique d'un langage et devenir autonome là dessus.

    Dernière chose : si vous voulez vivre de la programmation, apprenez des langages qui en font vivre. Apprenez aussi les frameworks qui font vivre de la programmation dans le langage dont on veut vivre. Beaucoup trollent le Cobol, mais on peut se faire des couil*es en or avec, contrairement au langage D. De même que PHP c'est bien, mais Symfony c'est mieux.

    Citation Envoyé par grunk Voir le message
    Des outils à base de bloc sont plutôt pas mal pour ceux qui n'ont pas la formation mathématique qui apporte normalement cette réflexion.
    Logique plus que mathématique. Les maths requises dans le développement ne sont pas très élaborées ni nombreuses :
    • Les cinq opérations de base : +, -, *, / et %.
    • Les comparaisons : <, >, == et !=, ainsi que <= et >= par extension.
    • Les bases de nombres pour leur écriture.
    • Les décalages de bits.
    • La notion de fonction.


    Si t'as besoin de davantage de maths de base alors t'as toujours un bout de bibliothèque standard spécialisée pour ça. Et si t'as besoin d'encore davantage de maths c'est très probablement parce que le projet demande des savoir-faire mathématiques qui n'ont pas de liens directs avec la programmation en elle-même.

    Je pense que t'as fais ce lapsus parce qu'on confond la logique et les mathématiques dans l'apprentissage français des maths.

    Citation Envoyé par grunk Voir le message
    - La première des choses est de construire une culture informatique , savoir comment marche un ordinateur. (vous imaginez pas le nombre de candidat qui me disent qu'une variable s'écrie sur le disque dur )
    Mais tellement. Savoir ce qu'est un ordinateur et comment s'en servir est plus encore plus important que la programmation elle-même. C'est pour ça que perso j'ai du mal avec la programmation qui serait enseignée trop tôt à l'école, qui relèvent clairement de politiques voulant se la jouer "modernes" avec "on apprend l'ordinateur à nos enfants dès le plus jeune âge". Que nos enfants sachent d'abord ce qu'est un ordinateur et s'en servir avant d'aller gratter là dedans.
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

  12. #12
    Membre habitué
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2015
    Messages : 83
    Points : 155
    Points
    155
    Par défaut
    J'étais doué en maths, ai fait math sup et spé w une école d'ingénieur mécanique puis informatique, mais si j'adorais la programmation au début avec Pascal ou Basic, j'en ai été écoeuré ensuite avec Unix Bash et surtout C. Pourquoi? Parce que attiré par les maths, propres et carrées, j'ai trouvé C et Unix degueulassesw des bricolages vite fait mal fait pas penses du tout, un gâchis terrible. (Lisez ''the Unix haters book' des anciens qui utilisaient des Lisp Machines, autrement mieux pensées.. Unix est un bricolage vite fait après l'échec de Multics qui, lui, était mieux pensé.). Et toute notre informatique est une pétoire similaire (PHP JS etc.) qui a écoeuré les plus ''carrés'', même Brendan Eich créateur de JS (qui voulait lui aussi un Lisp, Scheme)...

    Donc la première des choses est de trouver la motivation de l'élève dans sa personnalité, ce qu'il aime et déteste, comment il appréhende le monde et sa manipulation mentale.

    Je comprend qu'on puisse aimer le C voire l'assembleur pour bidouiller (''hacker'') l'ordinateur avec ses registres mémoires, maîtriser la bête depuis ses entrailles, puis monter petit a petit avec C++, Java, JS. Ou l'inverse comme moi, penser plutôt abstrait, non pas ''bottom-up'' mais ''top-down'' comme un architecte et non pas un maçon ou menuisier, avec des langages abstraits tels que Lisp ou Python.

    J'ai repris la programmation avec Visual Basic/VBA: là, manipuler des tableaux Excel par exemple est fort gratifiant, puissant, efficace, utile directement au travail de tous les jours. Démarrer même l'apprentissage avec juste des macros Excel qui, rappelons le, est de très très loin l'outil ''de développement '' le plus utilisé au monde pour faire n'importe quoi, d'un agenda a une base de données clients ou projets, visuellement (on voit d'abord le résultat, on entre ensuite dans la manipulation par code ou no code ), est l'inverse des outils que vous manipulez. Pas aussi ''puissant'' mais aussi utiles.

    Python, Smalltalk, Pharo, Ruby, LiveCode surtout (un HyperCard en live coding comme Smalltalk d'ailleurs ce dernier a été inventé par Alan Kay qui ne pensait que pour enseigner justement la programmation aux enfants, Scratch etc.) sont des outils beaucoup plus clairs intuitifs faciles intégrés et cohérents donc moins rébarbatifs que C, Vi/emacs, Unix, etc.! Si on ne veut pas écœurer dès le début un débutant...

    Bref, jeune garçons bricolo ''hackeur'' bidouilleur qui aime voir sous le capot, ou femme qui aime ce qui est beau simple clair élégant, entre les deux il y a un monde, et a chacun son outil, ''les mains dans le cambouis'' (C) ou ''assemblage de beaux éléments'' (LiveCode, RoR)...

    Même Alan Kay dit dans ses conférences TedX qu'on attend toujours la révolution software qu'on a eu en hardware.. plus de 40 ans après son Smalltalk, on code toujours plus mal qu'avant , de quoi en écœurer plus d'un, moi le premier... Quel gâchis.

  13. #13
    Membre expert
    Profil pro
    programmeur du dimanche
    Inscrit en
    Novembre 2003
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : programmeur du dimanche
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 783
    Points : 3 372
    Points
    3 372
    Par défaut
    En tant qu'amateur, je peux déjà commencer par une généralité et ce qu'il ne faut pas faire à mon avis (parce que je l'ai fait) puis quelques conseils à 6 sous sur ce que je peux conseiller à un débutant amateur.

    1) Il faut juste aimer les machines, le code, la programmation et avoir beaucoup de curiosité, car c'est un travail très personnel. J'ai croisé un ingé reconverti à l'informatique par nécessité alimentaire sans grand intérêt, qui a eu une courte formation en java, mais en vrai, il n'avait aucune culture informatique (jamais entendu parler de C, basic, c++, de comment marche la machine en bas niveau). Ensuite, j'ai entendu qu'en entreprise une boîte avait des soucis parce que leur programme est mono-thread avec une activité fondamentalement parallélisable traitée par file d'attente, et que bizarrement ça ne va pas plus vite sur leur serveur de luxe avec une flopée de coeurs...

    2) Ce que j'ai fait et qu'il ne faut pas faire. J'ai appris tout seul, et on m'avait conseillé le C++ à l'époque où c'était un mélange de c++ et de c et où il n'y avait pas vraiment de cours gratuits en ligne, et où les RAD étaient tous payants. J'ai commencé par un petit livre poche de 350 pages, mais avec ça je ne pouvais rien faire en dehors d'un programme en console basique et très décevant, et les codes en ligne à cause du C mélangé n'étaient pas clairs.
    J'ai avalé un livre énorme (1-2kg) de C/C++, d’algorithmie, de notions de machine bas niveau. Gros coup de coeur avec le C. J'ai beaucoup appris, mais à la fin, pour faire des GUI, il m'envoyait vers les MFC à la main ou des outils payants. C'était vraiment une expérience punitive et programmer en C n'est pas très productif pour un débutant à réinventer l'eau tiède et à boucher les fuites de mémoire.
    Ce sont les langages de script à la basic qui m'ont sauvé. J'en ai appris un en un week-end avec cette base et avec un environnement intégré et un accès pré-mâché aux API windows tout était si simple et la productivité énorme, mais ça devenait galère sans programmation objet ni multi-thread bien fichu pour quelque chose de plus qu'un script.
    Python m'a sauvé une 3e fois avec sa polyvalence et haute productivité avec la documentation et les lib énormes, d'autant plus que j'ai pu beaucoup bénéficier du c/c++ conceptuellement (typage optionnel du python, POO, culture etc.)

    3) Conseils pour un débutant amateur.
    - Ne pas commencer par C++, c'est un langage délicat d'expert très complexe avec des générations de sédimentation technologique.
    - Commencer par un langage d'abord facile et un peu d'algo, avec un environnement de développement simple à faire marcher, et des bibliothèques graphiques natives simples et très bien documentées. Je conseille python (avec idle ou thonny au début, et tkinter) par le livre de Swinnen https://python.developpez.com/cours/apprendre-python3/ . Puis de maîtriser le langage en passant des cours plus avancés tout en se faisant ses projets. Les cours de l'Inria en python sur fun mooc sont bien.
    - Plus tard, apprendre le C et savoir vaguement comment marche un PC, juste pour savoir écrire du code plus sensé pour la machine, et parce que c'est un peu le langage historique incontournable.

    Par rapport aux conseils supra sur smalltalk, je pense que Pharo est le futur, mais le cours de l'Inria est clairement accessible uniquement à des gens qui savent déjà programmer.

  14. #14
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2015
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 450
    Points : 1 970
    Points
    1 970
    Par défaut
    On mélange tout. On peut apprendre un langage de bas niveau dans les livres ou un langage de haut niveau en Ecole et vice-versa.
    D'après mon expérience (depuis 1985 environ, et je respire encore), pour commencer il faut surtout de la curiosité, de l'ingénuité (ne pas savoir que c'est impossible), un ordinateur et un coach vers qui on puisse se tourner en cas de gros blocage.
    Pour consolider et s'améliorer, il est indispensable de passer par une phase structurée, si possible en groupe. Donc une Ecole, et l'Universite n'est vraiment pas indispensable. Préférer un institut polytechnique.
    Puis pour approfondir, faire de la maintenance d'applications anciennes, sur une grosse plateforme, aide beaucoup, mais il faut savoir s'en détacher pour voler de ses propres ailes.
    Je parle pour moi, en tant qu'informaticien tout-terrain blanchi sous le harnois comptant une quarantaine d'années d'expérience avec des trucs programmables.
    On se rend compte a posteriori combien les querelles d'école à propos des langages, des plateformes, des librairies et des OS sont futiles. Il y a ce qui marche, qui résout le problème et qui doit être utilisé, le reste on s'en fout. Et si ce qui résout ce problème n'est pas efficace dans cet autre cas et qu'il existe une alternative, on prend l'alternative, on se forme et on y va. Point barre. Sinon, on adapte l'outil, ce qui est quand même le but ultime d'une bonne formation.

  15. #15
    Expert éminent
    Avatar de Matthieu Vergne
    Homme Profil pro
    Consultant IT, chercheur IA indépendant
    Inscrit en
    Novembre 2011
    Messages
    2 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant IT, chercheur IA indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2 264
    Points : 7 760
    Points
    7 760
    Billets dans le blog
    3
    Par défaut
    Pas 1 meilleure méthode. Si on parle d'apprendre la logique, il y a 2 aspects à prendre en compte :
    - la théorie, pour comprendre les intentions et le fonctionnement
    - la pratique, pour illustrer et confirmer ce que dit la théorie

    Dans le cas de la programmation, la pratique se fait difficilement sans langage. Apprendre la programmation nécessite donc au minimum de pratiquer sur un langage donné (on n'exécute pas grand chose avec du pseudo code). De préférence plusieurs pour éviter de biaiser le raisonnement théorique sur les spécificités d'un seul langage.

    Les tutos se focalisent en général sur la partie pratique, donc plutôt orienté sur un langage, mais il est possible d'en avoir qui donnent une partie théorique. C'est ces derniers qu'il faut privilégier. Les cours à l'inverse (école, MOOC, etc.) sont en général plutôt théoriques, il vaut donc mieux viser ceux qui sont reconnus comme ayant de bons exercices pratiques. Si on ne trouve rien qui fournisse cet équilibre, alors il faut utiliser des sources complémentaires.

    Enfin, comme mentionner par d'autre, apprendre est une chose, mais encore faut-il avoir la motivation de le faire et l'intérêt (apprendre pour ne pas appliquer diminue grandement l'intérêt). Mais là ce sont des éléments subjectifs qu'il faudra adapter à la personne, et qui peuvent influencer le type de source à privilégier.

    Pour résumer :
    - trouver du fond théorique et pratique
    - trouver une forme adaptée à la personne
    Site perso
    Recommandations pour débattre sainement

    Références récurrentes :
    The Cambridge Handbook of Expertise and Expert Performance
    L’Art d’avoir toujours raison (ou ce qu'il faut éviter pour pas que je vous saute à la gorge {^_^})

  16. #16
    Membre confirmé Avatar de pierre.E
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Janvier 2016
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2016
    Messages : 241
    Points : 573
    Points
    573
    Par défaut
    pour la theorie c'est comme pour les math la physique du travail et de la mémorisation
    après pour la pratique pour moi c 'est le jeux vidéo car c est plus motivant que le tri de la taille des carottes dans une base de données hébergée dans le cloud mais bon c'est personnelle
    au niveau formation maintenant il y en pléthore la difficulté c'est de faire le tri et ca c est plus facile quand on a des années de formation derrière soit

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 11
    Points
    11
    Par défaut Apprenez les principes et ce qui est derrrière!
    Peu importe le langage mais il faut toujours apprendre les concepts.
    Il faut toujours se poser la question pourquoi et comment.
    Creuser toujours plus ce que vous utilisez et comme on dit "How doest it wotk under the hood" ?
    Quand vous utilisez à une nouvelle chose:
    - Bien apprendre sa concept
    - Lire le doc
    - Voir les alternatifs

  18. #18
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 655
    Points : 3 781
    Points
    3 781
    Par défaut
    Citation Envoyé par nhugodot Voir le message
    Même Alan Kay dit dans ses conférences TedX qu'on attend toujours la révolution software qu'on a eu en hardware.. plus de 40 ans après son Smalltalk, on code toujours plus mal qu'avant , de quoi en écœurer plus d'un, moi le premier... Quel gâchis.
    Dans ce cas là quid de Rust ? Qu'en penses-tu ? C'est un langage assez particulier à coder, qui peut être très pointilleux sur certaines choses, et qui force donc à bien coder autant que faire se peut.

    Citation Envoyé par Matthieu Vergne Voir le message
    Pas 1 meilleure méthode. Si on parle d'apprendre la logique, il y a 2 aspects à prendre en compte :
    - la théorie, pour comprendre les intentions et le fonctionnement
    - la pratique, pour illustrer et confirmer ce que dit la théorie

    Dans le cas de la programmation, la pratique se fait difficilement sans langage. Apprendre la programmation nécessite donc au minimum de pratiquer sur un langage donné (on n'exécute pas grand chose avec du pseudo code). De préférence plusieurs pour éviter de biaiser le raisonnement théorique sur les spécificités d'un seul langage.
    +1000 pour le langage qui vient en exemple de l'algorithmique.

    Citation Envoyé par pierre.E Voir le message
    pour la theorie c'est comme pour les math la physique du travail et de la mémorisation
    après pour la pratique pour moi c 'est le jeux vidéo car c est plus motivant que le tri de la taille des carottes dans une base de données hébergée dans le cloud mais bon c'est personnelle
    au niveau formation maintenant il y en pléthore la difficulté c'est de faire le tri et ca c est plus facile quand on a des années de formation derrière soit
    Le hic avec les jeux vidéo c'est qu'ils vont te demander en plus nombres de savoirs métier qui à la base n'ont pas grand chose à voir avec la programmation. Si tu les as déjà, alors tant mieux fais-toi plaisir. Mais tout le monde ne les aura pas et c'est là la limite des JV pour apprendre à programmer.
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 82
    Points : 178
    Points
    178
    Par défaut
    Citation Envoyé par air-dex Voir le message

    Niveau langages, j'ai envie de conseiller le C :
    • Typage fort

    Non C n'est pas un langage à typage fort puisqu'il autorise des conversions de type implicites.

    "Le Langage C est très (trop) tolérant en ce qui concerne les mélanges de types dans une expression. C'est au programmeur de vérifier que les conversions implicites réalisées par le compilateur ont le sens désiré... Cet allègre mélange des types est un des plus gros pièges pour le débutant, à qui un langage fortement typé convient mieux. En l’absence de cadre rigoureux, il est facile de réaliser sans s’en douter des opérations hasardeuses… et fausses."
    (référence : https://public.iutenligne.net/inform...ites_cast.html).

    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    /* An example of implicit conversion */
    #include<stdio.h>
    int main()
    {
        int x = 10;    // integer x
        char y = 'a';  // character y
    
        // y implicitly converted to int. ASCII 
        // value of 'a' is 97
        x = x + y;
    
        // x is implicitly converted to float
        float z = x + 1.0;
    
        printf("x = %d, z = %f", x, z);
        return 0;
    }

    Référence : https://fr.acervolima.com/conversion-de-type-en-c-1/

  20. #20
    Membre expert
    Profil pro
    programmeur du dimanche
    Inscrit en
    Novembre 2003
    Messages
    783
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : programmeur du dimanche
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 783
    Points : 3 372
    Points
    3 372
    Par défaut
    Citation Envoyé par Jacti Voir le message
    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    /* An example of implicit conversion */
    #include<stdio.h>
    int main()
    {
        int x = 10;    // integer x
        char y = 'a';  // character y
    
        // y implicitly converted to int. ASCII 
        // value of 'a' is 97
        x = x + y;
    
        // x is implicitly converted to float
        float z = x + 1.0;
    
        printf("x = %d, z = %f", x, z);
        return 0;
    }
    La conversion implicite pour additionner un float et un int, c'est assez courant, non ? Saut en Rust ou en Ada ?

    C'est vrai que c'est assez tolérant d'additionner des caractères et des entiers... même si c'est assez pratique pour faire des opérations sur des caractères de manière très économe...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    unsigned char a=97;
    printf("a comme entier:%d\na comme char:%c",a,a);
    -->
    a comme entier:97
    a comme char:a
    Mais c'est une particularité étrange du c bien expliquée dans les cours.

    Par contre, les pointeurs de pointeurs, leur arithmétique, le pointeur void... c'est pas très débutant, mais d'un autre côté, on n'est pas obligé d'en mettre dans le 1er cours...

    Ce que je trouve dommage en c, c'est qu'ils n'aient pas normalisé les types modernes, comme les tables de hash, divers containers, listes etc., qui du coup se retrouvent implémentées de nombreuses fois de manière différente, ou enrichi les lib standard.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/01/2009, 22h47
  2. Réponses: 2
    Dernier message: 10/07/2008, 12h29
  3. [HTML] quelle est la meilleure méthode pour changer la langue d'un site?
    Par poupouille dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/02/2008, 12h17
  4. Réponses: 3
    Dernier message: 09/11/2007, 15h38
  5. Réponses: 20
    Dernier message: 27/06/2006, 17h42

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