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.
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
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
- 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.
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