Pour être honnête, j'ai vécu cela trop souvent en passant d'un langage de programmation à un autre. Je me souviens de la première fois que je suis passé de JavaScript à Python, il m'a fallu trois mois pour m'y habituer, et je pourrais écrire un livre sur les nids-de-poule dans lesquels j'ai marché. Plus tard, j'ai lentement compris certaines des portes, et j'ai découvert que la conversion de langage est en fait une règle à suivre, la clé étant de trouver l'"interrupteur de pensée". Par exemple, la dérivation de liste de Python est essentiellement une combinaison de map et de filter en JavaScript ! Après avoir trouvé ce type de correspondance, l'efficacité de l'apprentissage est directement doublée.

Comprendre la philosophie de la conception avant de grignoter les détails syntaxiques
De nombreuses personnes apprennent un nouveau langage en mémorisant la syntaxe, ce qui n'est pas une approche très intelligente. J'ai un ami qui est passé de Java à Go, et qui a eu du mal à écrire Go comme Java, le résultat est que le code est écrit de quatre manières différentes. En fait, la philosophie de conception de Go est "la simplicité est la beauté", il n'a pas le système d'héritage complexe de Java, mais met l'accent sur le fait que la combinaison est meilleure que l'héritage. En comprenant le concept de base, vous comprendrez pourquoi l'interface de Go est implicitement implémentée, ce qui reflète une conception complètement différente.
Autre exemple intéressant, lorsque je suis passé de Python à Rust, j'ai d'abord trouvé le système de propriété de Rust complètement abrutissant. Mais lorsque j'ai réalisé que ce mécanisme résout essentiellement les problèmes de sécurité de la mémoire au moment de la compilation, plutôt que de s'appuyer sur la collecte des déchets au moment de l'exécution comme le fait Python, tout est devenu clair. Ce changement dans la pensée sous-jacente est plus important que la mémorisation d'une centaine de règles de syntaxe.
Ce conseil sur la création d'un "tableau de correspondance des concepts" est très utile !
Je dessine maintenant un tableau de comparaison dans mon carnet pour chaque nouveau langage que j'apprends. Par exemple, si vous écrivez les concepts JavaScript à gauche et les implémentations Python à droite, Promise correspond à async/await, et arrow function correspond à lambda, ce type de comparaison intuitive peut vous aider à établir rapidement des liens entre les connaissances. Certaines données montrent que les apprenants qui utilisent la cartographie conceptuelle peuvent augmenter la vitesse de maîtrise d'une nouvelle langue d'environ 40%.
Il convient toutefois de noter que cette correspondance n'est pas absolue. Par exemple, bien que la goroutine de Go et l'async/await de JavaScript gèrent tous deux la concurrence, les mécanismes sous-jacents sont complètement différents. C'est là qu'une compréhension plus profonde de leurs différences est nécessaire, plutôt qu'un simple remplacement réciproque.
Commencez par de vrais projets, pas Hello World !
J'ai vu trop de gens se retrouver coincés dans le code d'exemple d'un tutoriel et ne pas pouvoir en sortir. La meilleure chose à faire est de trouver un projet qui vous est familier et de le réécrire dans un nouveau langage. Par exemple, réécrivez en Rust l'outil de ligne de commande que vous avez précédemment écrit en JavaScript. Au cours du processus, vous découvrirez que le pattern matching de Rust peut gérer les arguments de la ligne de commande de manière très élégante, alors que JavaScript nécessite beaucoup de if-else pour y parvenir.
Récemment, j'ai été impressionné par le cas d'un développeur front-end qui a réécrit ses microservices en Go, et la version Node.js de l'interface, qui prenait 200 ms, n'en prenait plus que 50 dans la version Go. ce type d'amélioration réelle des performances est plus motivant que n'importe quel didacticiel pour continuer à apprendre.
En fin de compte, le changement de langue exige de la patience et une approche adéquate. Trouvez le moment de la "révélation" et le reste se mettra en place. Quelle nouvelle langue apprenez-vous ? Rencontrez-vous des problèmes particuliers ?
评论列表 (15条):
加载更多评论 Chargement...