Comment choisir rapidement une nouvelle langue, étant donné que j'en connais plusieurs autres? [fermé]


14

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?


6
Je dirais juste le faire. La documentation officielle et Google sont les seules ressources dont vous aurez besoin.
Fosco

@Rein Certaines des réponses se chevauchent, mais le but de cette question est de construire une réponse canonique à l'apprentissage d'une langue (n'importe quelle langue) aussi rapidement et efficacement que possible. L'autre question est un mélange de recommandations de livres, de réponses similaires à celles données ici, et de conseils généraux sur l'apprentissage non précipité (lire juste avant de se coucher, lire les spécifications linguistiques, prendre des semaines pour se familiariser au niveau de base avec quelques différents langues).

Je ne sais pas à quel point la question posée est utile. Si je connais plusieurs langages de programmation, j'ai probablement appris à choisir un nouveau langage, et probablement efficacement. Si je ne le fais pas, comment vais-je bénéficier de cette question?
David Thornley

1
@David Je connais une demi-douzaine de langues, mais je les ai apprises généralement après avoir suivi des cours ou après plusieurs mois de travail. Mais si je dois prendre une langue rapidement pour un nouvel emploi par contre, cela ne m'aide pas. Je ne doute pas que les personnes qui ont appris plusieurs langues ont trouvé des moyens de les apprendre rapidement: c'est ce que j'espère que les réponses contiennent.

@Mark Trapp: Merci, cela clarifie les choses pour moi.
David Thornley

Réponses:


18

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.


Lorsque vous dites "faites-le", y a-t-il des aspects spécifiques de la langue sur laquelle vous vous concentrez lorsque vous plongez pour vous assurer de la capter le plus efficacement possible? Ou continuez-vous simplement à faire des exemples de projets aléatoires jusqu'à ce qu'il "clique"?

Eh bien, 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.
jqueryrocks

2
pouvez-vous ajouter cela à votre réponse? Ce sont d'excellentes informations.

5

Cela fonctionne pour moi:

  1. Lisez à ce sujet.
  2. Utilise le.
  3. GOTO 1.

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.


Pouvez-vous élaborer davantage sur ce que vous entendez par «lire à ce sujet»? Sur quoi, en particulier, vous concentrez-vous lorsque vous commencez à lire sur une nouvelle langue que vous souhaitez apprendre?

@Mark - voir mes modifications ... Est-ce ce que vous cherchez?
Guy Sirton

5

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.


J'ajouterais "saisir un problème dur du monde réel". Choisissez quelque chose qui vous oblige à vous enfoncer profondément le premier jour. Mon premier jour avec C #, je trouvais comment charger dynamiquement des DLL, utiliser la réflexion pour obtenir les classes, et à partir de là une liste de méthodes. J'ai appris une tonne ce jour-là, n'ayant jamais utilisé de technologie .net auparavant.
Bryan Oakley

2

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.


1

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.


1

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):

  • trouver un projet pour vous conduire,
  • et sur le côté programme quelques puzzles

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 .


0

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.


0

Comme suggestion spécifique pour utiliser simplement la langue:

Corriger les bugs

  1. Trouvez un projet open-source intéressant dans la langue cible, de préférence un avec un suiveur de bogues public, un développement modérément actif et une suite de tests décente.
  2. Choisissez un bogue à corriger, de préférence un qui vous ennuie lorsque vous utilisez réellement le programme.
  3. Découvrez pourquoi le programme présente le comportement de buggy.
  4. Écrivez des tests et du code pour résoudre le problème.
  5. Soumettez un patch en amont.
  6. Révisez votre correctif jusqu'à ce que les développeurs en amont soient satisfaits.
  7. Revenez à l'étape 1 ou 2.

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.