Python >> Tutoriel Python >  >> Python

La programmation polyglotte et les avantages de maîtriser plusieurs langages

Pourquoi apprendre un langage de programmation alors que vous pouvez en maîtriser quelques-uns ?

Fasciné par le concept de programmation polyglotte, j'ai décidé de mettre à profit le fait que je connais plusieurs développeurs exceptionnellement expérimentés et d'approfondir le sujet.

Les personnes à qui j'ai parlé étaient des développeurs qui :

  • avoir entre 5 et 20 ans d'expérience ;
  • connaître en moyenne 7 langues ;
  • peuvent être appelés "programmeurs polyglottes", bien que tout le monde ne connaisse pas ce terme.

Leurs points de vue étaient tout simplement trop intéressants pour ne pas être partagés.

Pourquoi certains développeurs décident-ils de devenir polyglottes ? Quels sont les avantages de l'apprentissage continu dans le développement de logiciels ? Lisez la suite pour le savoir !

Qu'est-ce que la programmation polyglotte ?

"Saviez-vous qu'il existe un groupe de langues africaines où il n'y a pas de mots séparés pour le vert et le bleu ?" Michał Mela, fan des grammaires en langage naturel, me demande.

"En russe, par contre, il y a deux mots pour le bleu :l'un est bleu foncé et l'autre pour la couleur du ciel clair. Il a été prouvé expérimentalement que ces caractéristiques linguistiques se traduisent par la capacité pratique de reconnaître les couleurs. La langue influence la façon dont nous percevons le monde. Il en va de même pour les langages de programmation."

Michał n'est pas seulement un fan de neurolinguistique, mais aussi un programmeur polyglotte professionnel :il connaît Java, Groovy, Kotlin, Scala, JavaScript, un peu de Ruby, Python et Go, ainsi que des curiosités telles que Ceylan et Jolie.

D'où est venue l'idée d'un tel éventail de compétences ? Dans le monde des programmeurs professionnels, il existe une déclaration controversée que presque tous les développeurs chevronnés ont rencontrée :"un bon programmeur doit apprendre au moins une nouvelle langue par an".

Cette opinion a plus de 20 ans et a été formulée dans le livre Pragmatic Programmer, un classique qui inspire invariablement les générations successives d'informaticiens.

L'idée d'apprendre une nouvelle langue chaque année était controversée dès 1999, lorsqu'elle a été formulée, mais aujourd'hui la situation devient encore plus confuse. Plusieurs langues peuvent être utilisées de plusieurs façons. La programmation fonctionnelle et orientée objet, même dans le même langage, peut être une expérience moins familière que le simple apprentissage d'un nouveau langage de la même famille.

De plus, même au sein de l'écosystème monolingue, il existe des frameworks qui diffèrent tellement dans leur philosophie que passer de l'un à l'autre revient à changer de langue. Il suffit de comparer React, Angular et Svelte.js.

Malgré la controverse, tout programmeur expérimenté peut coder dans plus de deux langues, et certains d'entre eux codent dans plusieurs voire une douzaine de langues.

Pour certains d'entre eux, c'est un effet secondaire du fonctionnement dans le monde des technologies de l'information en développement dynamique ; pour d'autres, c'est un choix conscient. Les meilleurs ingénieurs avec qui j'ai travaillé répètent souvent le même mantra :« Je ne suis pas un programmeur Java/Python/JavaScript, juste un programmeur. Les langues sont mes outils."

Les programmeurs polyglottes ont-ils eu l'opportunité d'utiliser un si grand nombre de langues dans leur vie professionnelle ? Généralement oui, même si les plus grands passionnés apprennent aussi des langages expérimentaux et historiques, sans perspectives d'utilisation commerciale. Nous parlons de langages tels que OCaml, LISP, Haskell et Fortran.

Il convient d'ajouter que la moyenne ci-dessus n'inclut pas les langues ésotériques, c'est-à-dire celles appartenant à la catégorie "juste pour le plaisir" :Whitespace, LOLCODE ou Shakespeare.

Pourquoi certaines personnes décident-elles de devenir des programmeurs polyglottes ?

Qu'est-ce qui motive ces développeurs à apprendre de nouveaux langages ? La première réponse est loin d'être surprenante. "Je me souviens de la chute de Ruby", Marek Bryling, un programmeur avec plus de 20 ans d'expérience, dit moi. « Les personnes qui sont dans le logiciel depuis longtemps doivent apprendre de nombreuses langues au fil des années. C'est la réalité."

La jeune génération est également familière avec l'argument "memento Ruby". "La décision d'apprendre une nouvelle langue est une question de planification de carrière et de diversification des risques. Regardez Ruby, dit Michał.

Le plus souvent, cependant, ces développeurs apprennent de nouveaux langages ad hoc : en faisant face à de nouveaux défis technologiques ou de marché. « Le marché du travail était différent de ce qu'il est aujourd'hui. Il était souvent plus facile de trouver un emploi dans quelque chose de complètement nouveau », Kamil Kierzkowski, développeur senior full-stack chez STX Next, rappels.

Ainsi, l'apprentissage de nouvelles langues est-il simplement une adaptation opportuniste au marché du travail ? Absolument pas! Les nouveaux langages ont clairement le pouvoir de façonner les programmeurs, de réorienter leur réflexion et d'élargir leurs horizons, et ce n'est pas le seul avantage qu'ils apportent.

"Laissez-moi citer un classique", Michał se racle la gorge en citant Edsger Dijkstra, un pionnier de l'informatique. "Il est pratiquement impossible d'enseigner une bonne programmation à des étudiants qui ont déjà été exposés au BASIC :en tant que programmeurs potentiels, ils sont mentalement mutilés au-delà de tout espoir de régénération."

Comme vous pouvez le voir, les batailles des partisans des technologies individuelles remontent à l'ère pré-internet. Il s'avère que dans le monde des opinions polarisées, être polyglotte peut être très utile. "Je connais suffisamment de langages pour savoir ce qui me convient", Marcin Kurczewski, expert dans plus de 10 langages de programmation, dit moi. "Connaître de nombreuses écoles de programmation me donne du recul."

Avoir ce large horizon vous permet de vous forger votre propre opinion sur la technologie, mais cela vous donne également l'avantage d'être plus exposé aux nouveaux produits.

"Il est évident pour les programmeurs Python d'utiliser Prettier, Black et d'autres outils de formatage automatique du code", souligne Marcin. "Lorsque j'ai récemment commencé à contribuer à un projet C/C++ open source, j'ai été surpris de découvrir que le responsable technique du projet rejetait des outils similaires qui deviennent maintenant populaires dans le monde C/C++. Il a utilisé des arguments que les fanatiques de Python utilisaient il y a 10 ans. »

Michał lui fait écho :« Java8 a enfin introduit Lambdas. Beaucoup de puristes se sont plaints :« Qu'as-tu fait ? Vous avez détruit cette langue !’ », rit-il. "Je connaissais Lambdas dans un autre langage, j'avais déjà compris quels étaient leurs avantages et j'ai rapidement compris comment les utiliser en Java."

Quels sont les avantages de devenir programmeur polyglotte ?

Il est intéressant de noter qu'aujourd'hui, alors que de plus en plus de personnes commencent leur aventure avec la programmation à partir de langages de haut niveau, il s'avère inestimable d'acquérir de l'expérience en commençant par les bases.

Par exemple, travailler avec C++ aide. "Grâce à C++, j'ai compris le fonctionnement de mon ordinateur et de tout ce que j'exécute dessus", poursuit Marcin. "La connaissance de concepts tels que la pile, le tas, les registres, la gestion de la mémoire est utile pour travailler avec un ordinateur, quel que soit le langage que vous utilisez."

Marek partage cette opinion et donne un exemple spécifique dans son propre domaine d'intérêt :"Python a une fonctionnalité intéressante :des références faibles qui n'incrémentent pas le nombre de références du ramasse-miettes. C'est un mécanisme très utile, mais la plupart des gens ne comprennent pas comment cela fonctionne parce qu'ils ne connaissent pas la gestion de la mémoire dans d'autres langages."

Ce parcours nous amène à l'argument le plus fort pour apprendre de nouvelles langues :cette pratique développe les compétences en programmation que nous utilisons dans la langue principale dans laquelle nous nous spécialisons. Un développeur convaincu de cela est Maciej Michalec, auteur du blog polydev.pl.

"Les approches de résolution de problèmes dans différents paradigmes diffèrent considérablement", note-t-il. "Python est un bel exemple de langage dans lequel vous pouvez écrire de manière orientée objet et fonctionnelle, et il est utile de connaître les différents paradigmes d'autres langages afin de pouvoir les utiliser dans Python."

"Grâce au fait que je sais comment quelque chose est fait dans un langage, je peux mieux l'implémenter en Python", ajoute Marek. "C'est ainsi que async.io a été créé, mappé à partir du nœud. Ce flux d'inspiration est possible lorsque l'on connaît plusieurs langues et que cette connaissance va au-delà de la syntaxe elle-même. C'est comme voyager :plus vous visitez de pays, plus votre esprit s'ouvre", conclut-il.

Quel est l'avenir de la programmation polyglotte ?

Dans nos conversations, nous abordons également le sujet du futur. Quels nouveaux langages et frameworks seront créés et popularisés sur le marché ? Qui va les créer ? Est-il possible que les polyglottes jouent aussi leur rôle dans cette programmation d'avant-garde ?

"Certainement, et surtout ceux qui aiment l'histoire", dit Marek. "Après tout, ces dernières années, nous sommes revenus aux années 1960 et nous traitons ce qui a été inventé à l'époque :architecture d'événement, microservices, programmation fonctionnelle", dit-il.

« Le nuage ? C'est une extension des mainframes. Même les dockers résultent du traitement de nos concepts précédents, tels que les conteneurs JAIL ou LXC. Ce qui en est finalement ressorti, c'est Docker.

Alors, qu'est-ce qui nous attend ? Quelles autres langues gagneront en popularité? Y en aura-t-il plus ou moins ? Les avis sont partagés.

"Je peux voir une certaine tendance à la consolidation par rapport à quelques langages comme JavaScript et Python, mais de mon vivant, nous n'arriverons à aucune "lingua franca" de programmation," dit Marek. "Je crains cependant que dans un certain temps, 90 % des programmeurs ne soient capables de faire de la programmation de haut niveau. La même chose se produit déjà avec DevOps :peu de personnes peuvent encore travailler sur du métal nu, car tout le monde a migré vers le cloud."

"Nous ne sommes pas menacés par le monolinguisme", conclut Maciej. « PureScript et V sont de nouveaux acteurs passionnants. Il y aura de plus en plus de nouvelles langues, mais en même temps, il leur sera de plus en plus difficile de percer. Aujourd'hui, un écosystème riche et le soutien de développeurs communautaires sont d'une importance capitale pour n'importe quelle langue. Vous pouvez le voir à Scala », soupire-t-il.

"J'adore ce langage, mais la communauté est très hermétique et repousse ceux qui n'ont jamais eu affaire à la programmation fonctionnelle auparavant. Cela affecte de plus en plus la popularité de la langue.”

Les questions de communauté et d'écosystème sont également soulevées par Marcin, qui est sceptique quant à Crystal, un autre concurrent dans l'arène encombrée des langages de programmation. "Crystal est un Ruby compilé, et c'est une idée intéressante, mais même le langage de programmation le plus agréable et le plus propre n'est rien sans un écosystème solide, qui manque là."

Il semble que les communautés de programmation décideront de l'avenir des langages de programmation de manière très démocratique, en votant avec leurs pieds (ou plutôt avec leurs doigts sur le clavier). Lors de ce vote, les polyglottes ont également un avantage :ils obtiennent plus d'un vote.

Réflexions finales sur la programmation polyglotte

Pendant que j'écrivais cet article, plusieurs développeurs de logiciels chevronnés extraordinaires m'ont offert une aide inestimable :Michał Mela, Marek Bryling, Kamil Kierzkowski, Marcin Kurczewski et Maciej Michalec. Un grand merci à eux pour cela !

Si cet article vous a plu, vous aimerez peut-être également d'autres ressources disponibles sur notre site :

  • Qu'est-ce qui fait un excellent développeur Python ?
  • Python par rapport aux autres langages de programmation
  • Le guide ultime pour recruter des développeurs de logiciels :l'édition sur site et à distance

Chez STX Next, nous avons un certain nombre de développeurs très expérimentés qui sont passionnés par l'amélioration des compétences et le partage de leur expertise. Si votre projet a besoin d'une ou deux mains supplémentaires, j'aimerais vous dire comment mes collègues et moi pouvons vous aider.

N'hésitez pas à nous contacter et parlons-en !