Tous les Pythonistas devraient passer à Go… ou d’accord, peut-être juste la moitié

Votre ingénieur logiciel moyen est toujours amoureux de Python. Marié, même.
Mais pas ceux de Google, Uber, Dropbox, Soundcloud, Slack et Medium. Les programmeurs des grandes entreprises sont depuis longtemps tombés amoureux du langage avec la mascotte mignonne.
Cela ne veut pas dire que Python n’est pas bon. C’est bien!
Mais que ce soit pour les API, les services Web ou le traitement de données, alors que la plupart des développeurs utilisent encore Python, les plus performants adoptent de plus en plus Golang ou Go. Parce que ça déchire.
Go a été inventé par un trio d’étoiles chez Google : Robert Griesemer était l’un des responsables de la machine JavaScript V8 de Google et l’un des principaux développeurs de Sawzall, un autre langage inventé par Google. Rob Pike a co-développé l’environnement Unix et co-créé le langage de programmation Limbo. Avec Ken Thompson, l’équipe avait à son bord l’inventeur d’Unix et le créateur du langage B – le prédécesseur du C -.
Google était à l’origine écrit en Python – oui, Python est toujours cool – mais vers 2007, les ingénieurs cherchaient un meilleur langage pour effectuer des tâches typiques chez Google. Ils rencontraient des problèmes comme ceux-ci, selon un conférence de Rob Pike en 2012:
- Constructions lentes : Produire un nouveau code prenait une éternité. Cela me semble familier !
- Dépendances non contrôlées : Avez-vous déjà essayé d’installer un progiciel, pour découvrir que vous devez installer au moins cinq autres dépendances et d’innombrables sous-dépendances pour le faire fonctionner ? Il s’avère que même les Googleurs ont ce problème.
- Chaque programmeur utilisant un sous-ensemble différent du langage : En Python, un développeur peut utiliser le package NumPy, un autre préfère SciPy, etc. Lorsque les programmeurs veulent mélanger leur code dans un seul package, les choses deviennent compliquées.
- Mauvaise compréhension du programme : Les gens qui disent comprendre le code à la minute où ils le lisent mentent. Du moins s’il ne s’agit pas d’un programme “Hello World” très simple. Et la documentation du code n’aide souvent pas — dans la plupart des cas, elle n’existe même pas, ou elle est mal écrite.
- Dédoublement des efforts : Avez-vous déjà copié un morceau de code d’une partie du programme, juste pour le copier ailleurs ? Mauvaise pratique. Mais la plupart des langages de programmation le rendent facile à faire.
- Coût des mises à jour : Avec un tel gâchis tel que décrit ci-dessus, cela vous surprend-il vraiment que la mise à jour de votre logiciel va prendre beaucoup de temps et de matière grise ? Pas cool.
- Variation de version : Avec du code en double flottant partout, les ingénieurs peuvent ne mettre à jour qu’une seule version de l’extrait de code d’origine et oublier les autres. Vous vous retrouvez donc avec une version qui contient à la fois du nouveau et de l’ancien code. Cela semble chaotique ? Il est.
- Difficulté d’écriture des outils automatiques : Il est possible d’écrire des programmes qui écrivent eux-mêmes du code — en fait, la plupart des programmes le font à un moment donné. Mais avec les langages de programmation modernes, c’est encore difficile à réaliser.
- Versions multilingues : Vous connaissez le problème : Python est idéal pour les scripts de petite à moyenne taille, C++ est idéal pour les programmes élaborés, Java est idéal pour le développement Web, Haskell est idéal pour le code paresseux mais robuste. Le résultat est qu’un seul programme contient souvent des extraits de plusieurs langues différentes. Mais pour la compilation, le débogage et par souci de propreté, il est bien mieux d’écrire un programme dans un seul langage.
Le trio a donc entrepris de concevoir un langage clair, simple et lisible. Un langage qui éliminerait, ou au moins atténuerait, ces problèmes trop courants en génie logiciel.
La racine de bon nombre de ces problèmes communs est la complexité des langues modernes. Pensez à Python ou C — avez-vous déjà essayé de lire toute la documentation ? Bonne chance avec ça.
En revanche, la plus grande caractéristique de Go est sa simplicité. Cela ne signifie pas que vous ne pouvez pas créer de code compliqué avec. Mais Go est très délibéré pour ne pas avoir de fonctionnalités qui apportent plus de complexité sans résoudre le problème.
Par exemple, Go n’a pas de cours comme les autres langages orientés objet. Fonctionnalité très utilisée dans d’autres langages, les classes sont idéales pour faire en sorte qu’un objet hérite des propriétés d’un autre objet. Le problème est que si vous essayez de changer la structure d’un objet sans changer celle des autres, vous cassez le code. Go a une alternative, appelée struct, qui favorise la composition par rapport à l’héritage.
Les autres fonctionnalités clés de Go sont :
- Type de sécurité : En C, vous pouvez utiliser des pointeurs pour faire à peu près n’importe quoi, y compris faire planter le programme. Go ne te laisse pas déconner comme ça.
- Lisibilité: Comme Python, Go met la lisibilité au premier plan. Cela le rend plus convivial pour les débutants que la plupart des langages et facilite la maintenance du code.
- Documentation: En particulier, les développeurs juniors trouvent fastidieux d’écrire un texte de présentation sur votre code afin que d’autres puissent l’utiliser. Avec Godoc, ce processus est beaucoup plus automatisé que dans la plupart des langages — et les développeurs n’ont pas à perdre un temps précieux à écrire ce qu’ils ont fait.
- Orthogonalité : Cela signifie que si vous modifiez un objet dans votre code, aucun autre objet ne changera à cause de cela. En ce sens, un la radio est orthogonale car le volume ne change pas si vous changez de station. Contrairement à C, par exemple, si vous changez une chose, d’autres peuvent en dépendre et changer également. Go est orthogonal car cela simplifie les choses.
- Minimalité : En Go, il n’y a qu’une seule façon d’écrire un morceau de code. Comparez cela à Python, où vous avez des millions de façons d’écrire une chose !
- Praticité : Les choses importantes doivent être faciles à coder, même si cela signifie que d’autres choses sont impossibles à faire dans Go. La logique ici est que vous souhaitez augmenter la productivité d’un développeur en rendant les tâches récurrentes rapides et faciles. Et s’il y a un problème plus complexe – ce qui est rare de toute façon – ils peuvent toujours l’écrire dans une autre langue.
Tout cela peut sembler ennuyeux et peu créatif. Et dans un sens, c’est vrai – ce n’est pas un langage avec des fonctionnalités géniales que vous pourriez utiliser pour impressionner les autres, une pléthore de façons de résoudre un problème, pas de liberté sans limites. Le go n’est pas un langage qui est là pour explorer, faire des recherches avec.
Mais c’est incroyable quand vous essayez de construire quelque chose qui fonctionne. Lorsque vous faites partie d’une équipe avec de nombreuses personnes différentes d’horizons différents travaillant sur le même code. Quand vous êtes fatigué de tout le désordre que vous rencontrez avec d’autres langues.
…Avec une communauté florissante
En raison de sa simplicité, Go est l’un des langages les plus collaboratifs qui existent de nos jours. Le temps est révolu où les programmeurs s’asseyaient dans leurs petites cabines et ne rencontraient jamais les autres.
Maintenant, nous avons StackExchange pour résoudre tous nos problèmes de codage. Et nous avons Slack, Zoom, Google Meet et bien plus pour rester en contact avec notre équipe. Mais les langues modernes sont toujours adaptées au petit nerd dans la cabine.
Allez ça change ça. Bien qu’il ait vingt ans de moins que Python, il possède une communauté dynamique.
Il n’est donc pas surprenant qu’ils mettent le respect, l’ouverture et la convivialité au sommet de leur code de conduite. Alors que d’autres langages, comme Python ou C, ont également des déclarations de communauté comparables, l’accent est moins mis sur ces valeurs de base.
Il n’est donc pas surprenant que la communauté joue un rôle explicite dans les sondages annuels Go, contrairement à de nombreuses autres langues.
Les données parlent d’elles-mêmes
Selon le Sondage Go 2020, le langage de Google est principalement utilisé pour le développement Web, la programmation de réseaux et de systèmes. Le paysage pour Python est assez similaire :

La seule différence frappante est la quantité de Python utilisée pour l’analyse des données et l’apprentissage automatique. Et sur ces domaines, d’autres nouvelles langues chaudes émergent.
En dehors de cela, vous pouvez voir que de nombreuses utilisations de Python pourraient être remplacées par Go. Cela comprend 50 % en développement Web, 38 % en administration système et DevOps et 19 % en programmation réseau. Même si vous supposez que de nombreux développeurs effectuent ces trois tâches, vous pouvez supposer en toute sécurité que la moitié des Pythonistas font des choses qu’ils pourraient faire dans Go.
En effet, les développeurs sont conscients de l’énorme potentiel qu’offre Go. Selon Hackerrank, environ un tiers de tous les programmeurs voulaient apprendre le Go en 2020.
La tendance est réelle – et puisque Go est très facile à apprendre, nous devrions assister à un passage de Python à Go dans les prochaines années. Pour la plupart des entreprises, en particulier celles qui ne sont pas aussi grandes et bien financées que Dropbox ou Medium, réécrire tout leur code sur Go coûtera trop cher. Mais pour les nouveaux projets, vous devriez au moins l’essayer.
Dans les plus grandes entreprises, les développeurs construisent déjà leur succès avec Go. Quand allez-vous?
Cet article a été écrit par Rhéa Moutafis et a été initialement publié le Vers la science des données. Vous pouvez lis le ici.