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

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

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

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

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

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

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

Je m'inscris !

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

Le , par LittleWhite

238PARTAGES

4  0 
Quelle est la meilleure méthode pour apprendre la programmation ?
avec des tutoriels écrits
68 %
avec des livres
45 %
avec un langage de haut niveau (Python, Go, Rust)
45 %
avec un langage de bas niveau (C, assembleur...)
35 %
en école
35 %
avec des tutoriels vidéos
35 %
en formation
26 %
avec un langage de script
19 %
avec des jeux vidéos thématiques (7 Billion humans, TIS-100, Shenzen IO, Opus Magnum)
13 %
avec des sites interactifs dédiés (CodeCombat, Codingame, ...)
10 %
au travers d'un framework
10 %
avec la programmation Web
10 %
au travers d'un moteur de jeux vidéo
6 %
avec un système de noeuds (Scratch)
3 %
Voter
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.

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

Avatar de Zefling
Expert confirmé https://www.developpez.com
Le 11/05/2022 à 10:19
Avec des projets intéressants.

C'est toujours ce qui m'a poussé à apprendre, l'envie de réaliser quelque chose.
10  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 11/05/2022 à 10:09
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.
9  0 
Avatar de el_slapper
Expert éminent sénior https://www.developpez.com
Le 11/05/2022 à 10:38
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.
4  0 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 13/05/2022 à 18:04
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.
4  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 11/05/2022 à 11:30
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.
3  0 
Avatar de nhugodot
Membre habitué https://www.developpez.com
Le 14/05/2022 à 11:00
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.
3  0 
Avatar de Madmac
Membre extrêmement actif https://www.developpez.com
Le 11/05/2022 à 13:50
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.
2  0 
Avatar de MajorKurk
Candidat au Club https://www.developpez.com
Le 11/05/2022 à 11:06
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.
1  0 
Avatar de walfrat
Membre chevronné https://www.developpez.com
Le 11/05/2022 à 11:37
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.
1  0 
Avatar de Fagus
Membre expérimenté https://www.developpez.com
Le 14/05/2022 à 17:29
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://inforef.be/swi/python.htm . 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.
1  0