Un type de question qui revient constamment sur Programmers.SE est de savoir comment apprendre une langue spécifique, étant donné que vous en connaissez plusieurs autres (généralement grâce à beaucoup d'expérience ou d'éducation).
Dans certains cas, cependant, il peut être nécessaire de se mettre rapidement à jour pour un travail, un développement personnel, ou même pour découvrir une nouvelle plate-forme.
D'après votre expérience, quelles stratégies générales avez-vous utilisées pour choisir rapidement une nouvelle langue? Y a-t-il des aspects spécifiques d'une langue sur lesquels vous essayez de vous concentrer lorsque vous commencez froid? Quels types de ressources trouvez-vous utiles dans ce processus?
Réponses:
J'ai trouvé la meilleure façon d'apprendre une nouvelle langue en faisant, pas seulement en lisant. Et donc, quand je veux (ou que j'ai besoin) d'apprendre une nouvelle langue, je lis généralement quelques chapitres d'un livre de référence sur la syntaxe, mais je plonge directement et crée quelque chose, plutôt que de lire et de lire livre après livre.
J'ai constaté que lorsque des problèmes et des questions se posent, des réponses sont trouvées (souvent sur Internet). Je pense également que c'est pourquoi la formation en cours d'emploi est si précieuse, car vous produisez un produit de travail la plupart du temps, même s'il s'agit d'une version préliminaire - et donc vous apprenez en faisant.
J'encourage les gens à penser à ce qui les intéresse et à plonger directement dans l'écriture de code ou la création de formulaires, etc.
Plus tard, après avoir créé projet après projet, un bon livre de référence vous apprendra les détails fins que vous saisirez plus facilement à ce stade.
En outre, les projets commencent généralement plus petits et deviennent plus complexes - de la simple application "Hello World" à un petit projet peu utile, en passant par une application complète. En ce qui concerne les aspects du langage sur lesquels je me concentre, cela dépend de l'utilisation appliquée du langage - je n'apprends jamais chaque API ou framework pour commencer (comme avec .NET par exemple). Cela prendrait beaucoup trop de temps. J'apprends la syntaxe principale, puis je m'éloigne de là, recherchant chaque extension au besoin. Avec un langage moins modulaire, comme CSS ou XSLT, j'apprends simplement les constructions les plus populaires en premier et j'en ajoute d'autres au besoin.
la source
Cela fonctionne pour moi:
Pour l' étape de lecture, j'essaie de choisir "la" référence pour la langue. Par exemple, "Le langage de programmation C". Il doit être condensé, au point, et développer progressivement vos connaissances. Ensuite, je l'ai lu de bout en bout. Je suis un lecteur rapide et je ne m'attarde pas sur cette première lecture. Ensuite, je vais revenir en arrière et faire référence à des points spécifiques lorsque j'essaie d'utiliser le langage. Je vais probablement passer plus de temps sur des exemples de code dans le livre.
La première chose dont vous avez besoin est la syntaxe. Sans savoir si c'est BEGIN ou {ou indentation de bloc, ou comment vous déclarez des variables, vous ne pouvez rien écrire. L'auteur présentera généralement les parties les plus importantes en premier ou aura un tutoriel qui couvre l'utilisation de base de la langue. Il est difficile de donner des directives plus générales car certaines langues sont très différentes des autres. La prochaine chose est d'avoir une idée générale de la langue, quelle est la philosophie globale, comment vous abordez la résolution de problèmes dans le contexte de la langue.
Une autre chose à garder à l'esprit est le concept "utiliser ou perdre". Si vous n'avez pas utilisé une langue depuis un certain temps, il vous faudra un certain temps pour revenir à la vitesse (bien que ce temps devienne plus court avec l'expérience). Une fois que vous aurez obtenu la syntaxe du langage, vous devrez vous renseigner sur les bibliothèques, etc.
C'est donc un processus itératif. Approfondir à chaque itération. Sans fin. Même après avoir utilisé une langue pendant 20 ans, il y a encore quelque chose à apprendre.
la source
Prenez un projet du monde réel
De la façon dont je le vois, il est plus facile d'apprendre quelque chose lorsque vous avez réellement besoin de l'apprendre. Pour moi, c'était avec javascript, où je l'ai risqué en acceptant un gros projet avec un délai de deux mois. J'étais là tous les jours et tous les soirs pour essayer d'obtenir des résultats pour ce projet indépendant, et au bout d'un mois et demi, le projet était terminé.
J'ai aussi accidentellement appris du SQL là-bas, puis j'ai fini de l'apprendre au collège, et devinez quoi, j'ai aussi eu plus de facilité.
Si vous ne voulez pas le risquer ...
La clé réelle du point précédent est de résoudre des problèmes du monde réel ... mais je travaille mieux sous stress (j'aime le stress, je pense que c'est amusant et je pourrais être endommagé, alors ...). Si vous ne le faites pas, poursuivez simplement un projet open source qui vous intéresse et utilise la langue que vous voulez apprendre et essayez de contribuer. Si votre code est nul, vous pouvez obtenir des commentaires en fonction de la communauté.
Il y a de fortes chances que vous progressiez simplement en étudiant le code.
Obtenez toutes les références que vous pouvez
Cela comprend plusieurs livres, une documentation officielle et toutes les références que vous pouvez obtenir. Les chances sont que, de cette façon, vous saurez faire la même chose de différentes manières.
D'autres communautés - comme les forums, les listes de diffusion, et ici - comptent également comme référence.
la source
Il existe de nombreuses façons d'apprendre une nouvelle langue, mais elles ne sont pas toutes aussi efficaces. J'ai trouvé que ces trois lignes directrices me convenaient le mieux:
Faites une carte de ce que vous ne savez pas
Déterminez à l'avance ce que vous devrez apprendre. Trouvez une vue d'ensemble ou une source de documentation générale qui décrit le langage en termes abstraits. À partir de cela, vous pouvez généralement obtenir un aperçu assez complet de la langue. Utilisez cet aperçu pour mettre en évidence des domaines que vous ne connaissez pas, mais qui sont considérés comme essentiels à la langue. La récursivité de la queue est-elle un concept que vous devez apprendre pour vraiment maîtriser la langue? Peut-être aurez-vous besoin de mieux connaître votre expression régulière, car le langage est spécialisé dans la manipulation de chaînes. Ou, vous devrez peut-être vraiment mettre votre algèbre en marche, car la plupart des concepts de la carte des langues proviennent directement des concepts algébriques.
Obtenez de bonnes ressources pour vous aider à apprendre ce que vous ne savez pas
Vous voudrez peut-être obtenir une bonne référence sur les formules algébriques, ou peut-être voudrez-vous simplement acheter " Javascript, les bonnes pièces ". Pour certaines courbes d'apprentissage, ce travail a déjà été partiellement effectué. Si vous essayez d'apprendre le C # à partir d'un arrière-plan Java (et vice-versa), il existe une litanie de blogs et de sites Web qui répertorient les différences et contiennent des références / ressources pour vous aider à apprendre.
Assurez-vous que les ressources ne sont pas seulement des références - assurez-vous qu'elles incluent des tests ou des exercices pour vous aider à évaluer si vous avez appris un concept correctement. Lire sur la récursivité de la queue est une chose, comprendre comment elle est implémentée dans la langue de votre choix en est une autre.
Construisez quelque chose de réel
Il est presque impossible de faire une sorte d'apprentissage réel sans un objectif tangible à l'esprit. Cela est particulièrement vrai pour les arts appliqués - c'est ce qu'est l'utilisation du langage de programmation. Assurez-vous d'avoir un véritable objectif à atteindre - la construction de quelque chose est généralement le meilleur choix.
la source
Identifier le ou les paradigmes de programmation
J'identifie généralement quels sont les principaux paradigmes de la langue. Je pense aux problèmes différemment selon le paradigme.
Identifier les idiomes
Toutes les langues ont des idiomes. La taille et la portée des idiomes varient selon la façon dont vous structurez le code, jusqu'à des fragments de code particuliers. Vous devriez toujours essayer d'utiliser des idiomes de langues.
Écrire du code
J'écris habituellement du code fonctionnel. Tout, d'un tamis primaire aux applications Web jouets. Les problèmes que je choisis sont généralement spécifiques à ce pour quoi j'ai l'intention d'utiliser la langue.
la source
Plongez juste dedans !!
Étant donné que vous savez déjà programmer et connaître plusieurs langues, sauf si cette langue introduit un changement de paradigme très profond, je dirais (simultanément):
Apprendre, pratiquer, appliquer (jusqu'à satisfaction)
Les 99 Puzzles classiques de Prolog (ici, les 99 Puzzles de Scala ) ou le Project Euler sont généralement de bons endroits pour chercher de petits puzzlers à réimplémenter. Ou rôdez autour de StackOverflow et réécrivez de belles réponses dans votre langue cible, en essayant de ne pas faire une réécriture ligne par ligne mais quelque chose qui capture l'essence de votre nouvelle langue.
Apprenez avec les énigmes, lisez des blogs et des essais sur le côté pour obtenir une compréhension plus profonde de la langue et avoir une idée de l'outillage et des guerres saintes de votre nouvelle communauté, et rédigez votre projet de test pour appliquer vos nouvelles connaissances et compétences et voyez les bosses que vous rencontrez.
En parlant de communauté ...
Partagez et exposez-vous. (Pas trop, cependant.)
Peut-être que vous souhaitez également visiter un groupe d'utilisateurs local, trouver des amis avec lesquels coder (pour obtenir des critiques constructives et ne pas vous enfermer dans un état d'esprit spécifique), et vous abonner à ce canal IRC effrayant ou à cette liste de diffusion où ils déposent des mots étranges sur AST des arbres et écrivez des tirades philosophiques sur la façon dont les monades ne sont pas des monades et comment une fois que vous avez rencontré une fille étrange, vous ne pouvez pas revenir en arrière .
la source
Je sais que cela semble boiteux, mais commencez à coder quelque chose, même si c'est idiot, et utilisez beaucoup de Google pour les choses suivant ce modèle:
comment faire [quelque chose d'une langue] dans [une autre langue]
Si les mots sont communs, utilisez les littéraux cités.
C'est une question assez courante que les seules fois où je ne trouve plus de réponse, c'est quand je trouve une page qui explique pourquoi cela ne peut pas être fait.
la source
Comme suggestion spécifique pour utiliser simplement la langue:
Corriger les bugs
Ce processus a tendance à être plus satisfaisant que d'écrire un autre programme de jouets, mais beaucoup plus facile que de démarrer votre propre projet complet à partir de zéro. Vous êtes exposé à certains des idiomes du langage dans leur contexte naturel, et (avec un peu de chance) à l'idée de quelqu'un à quoi ressemble un bon code.
D'un autre côté, cela peut également être extrêmement frustrant, en particulier si vous choisissez un bug méchant, ou si les développeurs rejettent votre correctif sans expliquer correctement pourquoi.
la source