Il vaut la peine d'apprendre ces langages de programmation, même si vous ne les utilisez pas : 1/6 C C est à un pas de l'écriture en assembleur. Cela vous oblige à comprendre la différence entre "pile" et "tas". Vous devez également vous débattre avec les pointeurs — et entraîner votre cerveau à gérer l'indirection vous aidera à comprendre des problèmes plus difficiles plus tard, car presque chaque problème "difficile" doit être modélisé avec un certain niveau d'indirection.
2/6 Assemblage Apprendre comment fonctionne l'assemblage est un préalable à l'apprentissage du fonctionnement des compilateurs. Contrairement à C, vous êtes également contraint d'apprendre quand vous utilisez un "registre" et vous développerez un sens plus aigu de ce qui constitue un code performant et ce qui ne l'est pas. Je pense que savoir programmer en assembleur contribue probablement le plus à m'aider à pouvoir m'initier très rapidement à une nouvelle blockchain. Je les aborde avec un modèle mental de "toute machine virtuelle/architecture CPU fonctionnelle doit avoir les caractéristiques suivantes, alors où puis-je les trouver ?" Cela m'aide à aborder de nouveaux systèmes avec un ensemble de questions intelligentes à poser plutôt que de me demander ce qui se passe.
3/6 Rust Rust est très strict concernant les références multiples à la même valeur, quelque chose que d'autres langages ne vous obligent pas à considérer même si cela peut être une source de véritables bugs. De plus, le système de types de Rust est assez bien pensé, donc vous avez plus de choix sur la façon de modéliser le monde réel (c'est bien sûr une arme à double tranchant car vous pourriez finir par trop réfléchir à des problèmes simples, donc vous devez apprendre à contrôler le pouvoir qu'il vous donne). Quelqu'un qui apprend à écrire du Rust idiomatique ne sera également pas loin d'apprendre à écrire de la programmation fonctionnelle.
4/6 Lisp Si vous voulez apprendre la programmation fonctionnelle sans être puni par le compilateur, c'est la meilleure façon de le faire. De plus, vous aurez accès au système de macros le plus puissant qui existe et vous "verrez" la structure récursive dans des choses comme JSON, XML et le code source. La structure récursive ne signifie pas écrire du code récursif. Au contraire, cela vous oblige à réfléchir à la manière de décomposer un grand problème en problèmes plus petits et à penser d'abord aux cas particuliers plutôt qu'ensuite. Lisp a également été pionnier dans : la collecte des ordures, les instructions if, les macros, les fonctions de première classe et beaucoup d'autres choses. Pratiquement tous les langages modernes empruntent une idée que Lisp a inventée. Donc, si vous connaissez Lisp, vous pouvez demander intelligemment "ce langage a-t-il un moyen de faire X ? Si ce n'est pas le cas, comment puis-je y parvenir ?" Si vous êtes obsédé par le fait d'être "pratique", je recommande le dialecte Clojure, mais pour simplement apprendre, Racket est assez convivial (si vous en connaissez un, il est extrêmement facile d'apprendre l'autre).
5/6 Haskell Haskell a probablement le système de types le plus strict qui existe (du moins parmi les langages que je connais). Il est même plus strict que Rust et vous oblige à réfléchir à la manière de gérer les opérations qui pourraient échouer (comme un appel réseau). C'est comme travailler avec un programmeur senior extrêmement pointilleux qui repère chaque erreur que vous faites, même des choses qui ont très peu de chances de provoquer un bug. Oui, le compilateur est encore plus sévère que Rust, mais le retour constant sur "vous n'avez pas considéré la possibilité de ..." vous aidera à progresser plus rapidement. Si vous êtes un ingénieur junior et que vous souhaitez avoir un ingénieur senior à disposition, programmez en Haskell et la sagesse de nos ancêtres vous sera transmise.
6/6 Comment ils aident Un apprentissage efficace se produit lorsque vous essayez de résoudre un problème et que vous recevez instantanément des retours sur votre travail — quelque chose que chacune de ces langues fait bien à sa manière. Chacune de ces langues vous oblige à vous engager avec des problèmes que des langages comme JavaScript ou Python balayent sous le tapis et vous donne des retours directs et immédiats sur ce que vous avez mal fait. Rappelez-vous : tant les problèmes juniors que seniors peuvent écrire du code qui "résout" un problème — mais le code senior est beaucoup plus raffiné. Ce "raffinement" provient de l'entraînement — quelque chose que chacune de ces langues vous offre gratuitement.
7,49K