L’internet est rempli de grands codes. Ils forment le socle sur lequel diverses infrastructures sont construites. Même la plateforme sur laquelle vous lisez ceci est construite avec un dévouement à la création de grands codes. Si l’utilisateur moyen ne va pas en prendre note, les bons développeurs, eux, cherchent toujours à améliorer leurs applications (et donc, leur codage).
La fondation sur laquelle un grand code est écrit repose sur la compétence du développeur et son langage de choix. Cela conduit inévitablement à quelques affrontements épiques entre les développeurs non seulement sur le niveau de compétence, mais surtout sur leur langage préféré. C’est le résultat que vous êtes le plus susceptible d’obtenir lorsque vous placez deux grands langages de programmation tels que Golang(Go) et Python côte à côte.
Pourtant, prenons un peu de recul et évaluons les deux langages du point de vue de leur mérite et de leur fonctionnalité. Éliminons les préjugés et les préférences personnelles. Puis nivelons le terrain de jeu, en termes de compétences. Maintenant, il ne nous reste que deux grands choix : Go et Python. La question qui se pose maintenant est la suivante : lequel vous convient le mieux ?
- Un conte de Python
- Parlant de Golang(Go)
- Golang vs Python performance
- Recherche binaire
- Tri à bulles
- Lecture de fichier
- HTTP Traitement des requêtes
- Python vs Golang frameworks web
- Gin
- Echo
- Go kit
- Entreprises utilisant Golang
- PayPal s’empare de Golang pour se moderniser et passer à l’échelle
- American Express utilise Golang pour les paiements &Récompenses
- Salesforce a abandonné Python pour Golang dans Einstein Analytics
- Stream – Pourquoi nous sommes passés de Python à Go
- Pydio a réécrit le partage de fichiers prêt pour l’entreprise en Golang
- Repustate a migré l’API de Python (d’abord Django puis Falcon) vers Go
- Quel choisir ?
- Golang est rapide à apprendre, à développer et à exécuter
Un conte de Python
Demandez à certains développeurs et vous entendrez qu’il n’y avait rien avant Python et qu’il n’y aura rien après. Au fil des années, il est parvenu à faire l’objet d’un véritable culte car c’est un très bon langage de programmation. L’internet est rempli de merveilles créées à l’aide de Python.
Python est vieux, en termes d’années de programmation. Il a été conceptualisé pour la première fois en 1991. Et avec l’âge viennent certains avantages. Il a un large public, ce qui signifie qu’il est stable et bien documenté. Dans la plupart des cas, vous trouverez des bibliothèques pour presque tout et des exemples de code pour à peu près tout ce à quoi vous pouvez penser. Ce que cela signifie pour les devs et les entreprises, c’est que le choix d’utiliser Python s’accompagne d’une richesse d’expérience et de codage qui n’attend que d’être accessible.
Il existe de nombreux projets open-source qui utilisent Python comme base, donc dans la plupart des cas, vous ne partez pas de zéro. Il est bien intégré dans les applications d’entreprise et peut être utilisé dans les applications de langage machine et d’IA. Mais il a ses inconvénients. Pour l’un, il n’est pas idéal pour les tâches gourmandes en mémoire, un peu du côté lent pour les exécutions et inadapté au développement d’applications mobiles.
Parlant de Golang(Go)
Développé chez Google en 2009. Go était une solution à un problème. Son objectif était de créer un langage qui se débarrasse de tous les bagages et excès que l’on trouve dans des langages tels que le C++. Cela lui confère des performances et une vitesse accrues qui font de son utilisation un véritable plaisir. De plus, la plupart des développeurs qui choisissent Go pour la première fois ne seront pas laissés à la dérive car les éléments familiers et la facilité d’utilisation seront une agréable surprise.
Cela ne veut pas dire que le langage est parfait dans tous les cas. S’il porte la vitesse et l’élégance à un niveau supérieur, il laisse cependant derrière lui quelques éléments à désirer. Tout d’abord, il ne dispose pas d’une bibliothèque étendue, ni d’un support pour l’héritage. En outre, il n’y a pas de bibliothèque d’interface graphique ni de support de la programmation orientée objet. Ce qu’il a pour lui, c’est un thread léger (Goroutines), une bibliothèque standard intelligente, une forte sécurité intégrée et il est facile à coder avec une syntaxe minimale.
Golang vs Python performance
Nous pouvons parler sans fin des avantages et des inconvénients de Golang ou de Python, mais quand il est à l’œuvre, ce que nous cherchons tous, c’est comment ils se comportent. Nous avons donc effectué quelques tests sur notre banc d’essai équipé d’un processeur Intel® Core™ i7-9700K @ 3,60GHz × 8 cœurs. Et le code utilisé est disponible ici.
Recherche binaire
Nous avons créé des listes d’ints (de 1 à 100000) et ensuite utilisé la recherche binaire pour trouver toujours le même nombre 729. Les résultats sont :
Langue | Vitesse |
---|---|
Go | 20,8 ns/op |
Python | 2442.13377 ns/op |
Tri à bulles
De nouveau, nous avons généré une liste d’entiers (cette fois-ci aléatoires, de 10000 éléments) et nous les avons triés en utilisant des algorithmes de tri à bulles.
Langage | Vitesse |
---|---|
Go | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Lecture de fichier
Un test simple de lecture de fichier texte « lorem ipsum ».
Langue | Vitesse |
---|---|
Go | 5305 ns/op |
Python | 58359 ns/op |
HTTP Traitement des requêtes
Faire un serveur HTTP est vraiment facile, mais nous avons fait un effort et fait l’analogue en Python. Nous avons vérifié combien de temps il faudrait pour répondre à un simple message « hello world ! ».
Language | Vitesse |
---|---|
Go | 0,070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs Golang frameworks web
L’un des plus grands avantages de l’utilisation de Python est la vaste collection de bibliothèques et de frameworks qui sont disponibles. Django et Flask sont deux des frameworks web Python les plus populaires qui vous permettent de construire une application web ou une API dans les plus brefs délais.
Golang n’a pas un seul framework dominant comme Django pour Python ou Laravel pour PHP et la communauté Go a en quelque sorte une aversion pour les frameworks. Les résultats de l’enquête Go 2018 montrent que le développement web Golang est le plus répandu à 65 %, et qu’il a augmenté sa domination en tant que principal domaine dans lequel travaillent les répondants à l’enquête (contre 61 % l’année dernière) : le développement web est le domaine le plus courant pour le développement Go depuis 2016.
Voici les frameworks web Golang les plus populaires :
Gin
Gin est un framework web Golang qui est connu pour développer des API performantes. C’est également l’un des frameworks les plus simples à apprendre. Il faut environ 10 minutes pour s’y habituer. Si vous avez besoin de performances et d’une bonne productivité, vous allez adorer Gin.
Caractéristiques
- Performances plus rapides : Routage basé sur l’arbre Radix, petite empreinte mémoire
- Prise en charge du middleware : Une requête HTTP entrante peut être traitée par une chaîne de middlewares et l’action finale
- Groupement de routes : Organisez mieux vos routes
- Gestion des erreurs : Gin fournit un moyen pratique de collecter toutes les erreurs survenues lors d’une requête HTTP
- Rendu intégré : Gin fournit une API facile à utiliser pour le rendu JSON, XML et HTML
- Extendable : Créer un nouvel intergiciel est si facile, il suffit de consulter les exemples de codes
Echo
Echo est un framework web Go haute performance, extensible et minimaliste fournissant un routeur HTTP optimisé, des API de groupe, la liaison de données pour JSON et XML, le support HTTP/2, et bien plus encore.
Bien que Gin soit un peu plus populaire (36k étoiles GitHub), de nombreux développeurs choisissent l’Echo (16k étoiles GitHub) car il a une meilleure documentation et est un framework un peu plus rapide.
Caractéristiques
- Routeur HTTP optimisé qui priorise intelligemment les routes
- API RESTful robuste et évolutive, facilement organisée en groupes
- Cadre middleware extensible, nombreux middlewares intégrés, le middleware peut être défini au niveau de la racine, du groupe ou de la route
- Liaison de données pour JSON, XML et charge utile de formulaire
- Fonctions pratiques pour envoyer une variété de réponses HTTP, y compris JSON, XML, HTML, fichier, pièce jointe, Inline, Stream ou Blob
- Gestion centrale personnalisée des erreurs HTTP et API facilement extensible
Go kit
Go kit est une boîte à outils de programmation pour construire des microservices (ou des monolithes élégants). Go Kit est un cadre d’opinion. Il résout les problèmes courants des systèmes distribués et de l’architecture des applications afin que vous puissiez vous concentrer sur la fourniture de valeur commerciale.
Caractéristiques
- Opérer dans une SOA hétérogène – s’attendre à interagir avec la plupart des services non Go.kit
- RPC comme principal modèle de messagerie
- Sérialisation et transport connectables – pas seulement JSON sur HTTP
- Opération dans des infrastructures existantes – pas de mandats pour des outils ou des technologies spécifiques
Entreprises utilisant Golang
Golang est largement adopté par les plus grandes entreprises. Il y a plus d’un million de développeurs utilisant Go dans le monde – couvrant les secteurs de la banque et du commerce, des jeux et des médias, de la technologie et d’autres industries, dans des entreprises aussi diverses que PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox et, bien sûr, Google.
Voici quelques exemples d’études de cas :
PayPal s’empare de Golang pour se moderniser et passer à l’échelle
La valeur deGo dans la production d’un code propre et efficace qui évolue facilement au fur et à mesure du déploiement du logiciel a fait de ce langage un ajustement solide pour soutenir les objectifs de PayPal.
Voir étude de cas →
American Express utilise Golang pour les paiements &Récompenses
Go fournit à American Express la vitesse et l’évolutivité dont elle a besoin pour ses réseaux de paiement et de récompenses.
Voir étude de cas →
Salesforce a abandonné Python pour Golang dans Einstein Analytics
Salesforce explique pourquoi le langage de programmation Go de Google est plus adapté que Python et C pour Einstein Analytics.
Voir étude de cas →
Stream – Pourquoi nous sommes passés de Python à Go
Nous avons une petite équipe de développement chez Stream alimentant des flux et des chats pour plus de 500 millions d’utilisateurs finaux. La combinaison de Go d’un grand écosystème, d’un embarquement facile pour les nouveaux développeurs, de performances rapides, d’un support solide pour la concurrence et d’un environnement de programmation productif en font un excellent choix.
Voir l’étude de cas →
Pydio a réécrit le partage de fichiers prêt pour l’entreprise en Golang
Pydio, solution de stockage en nuage d’avant Dropbox, s’est transformé en une plateforme de Sync-and-Share à part entière et l’application est restée fidèle à sa pile technique initiale : LAMP, comme dans Linux/Apache/MySQL/PHP. Lisez un article sur les motivations de la réécriture entièrement en Golang, la nouvelle architecture et les choix qui la sous-tendent.
Voir l’étude de cas →
Repustate a migré l’API de Python (d’abord Django puis Falcon) vers Go
La migration a réduit le nombre d’instances EC2 nécessaires de 85% et le temps de réponse moyen d’un appel API de 100ms à 10ms. En raison de la similitude entre Python et Go, ils ont été en mesure de réorienter rapidement nos tests unitaires écrits en nose pour les adapter à la structure requise par Go avec quelques simples scripts sed.
Voir l’étude de cas →
Quel choisir ?
Alors que Python est resté le favori de la communauté conservant la place de n°2 au premier trimestre 2019 pour le langage de programmation le plus rapide sur GitHub en termes de pull requests (+17%), Golang n’est pas si loin derrière et le talonne au n°4 (+8%). Le choix entre Golang et Python devient encore plus flou. Quoi qu’il en soit, il y a quelques éléments à prendre en compte pour choisir lequel pourrait vous convenir.
-
Scalabilité : Golang a été créé avec l’évolutivité à l’esprit. Il est livré avec une concurrence intégrée pour gérer plusieurs tâches en même temps. Python utilise la concurrence mais elle n’est pas intégrée ; il met en œuvre le parallélisme à travers les threads. Cela signifie que si vous allez travailler avec de grands ensembles de données, alors Golang semblerait être un choix plus approprié.
-
Performance : Python n’est pas connu pour être favorable à la mémoire ou au CPU, mais avec son énorme nombre de bibliothèques, Python fonctionne efficacement pour les tâches de développement de base. Golang est livré avec des fonctionnalités intégrées et il est plus adapté aux architectures logicielles microservices.
-
Applications : Python brille lorsqu’il est utilisé pour écrire des codes pour l’intelligence artificielle, l’analyse de données, l’apprentissage profond et le développement Web. Alors que Golang a été utilisé pour la programmation système, il est aimé par les développeurs qui l’utilisent pour les applications de cloud computing et de cluster computing.
-
Bibliothèque communautaire & : Comme mentionné précédemment, l’âge de Python lui confère certains avantages. L’un d’eux est le nombre de bibliothèques qu’il possède et la grande communauté qui le soutient. Golang, d’autre part, est encore un langage en pleine croissance et n’a pas le nombre de bibliothèques et le soutien de la communauté que les commandes Python. Pourtant, nous ne devrions pas exclure Go pour l’instant. Son taux de croissance et d’adoption est incroyable et il s’étend chaque jour.
-
Exécution : Si la vitesse est le nom du jeu, alors Golang gagne d’un mile.
Après avoir pris tout cela en compte, votre cas d’utilisation sera le facteur déterminant dans le choix du langage à adopter. Compte tenu d’un scénario où vous mettez en place une équipe de développement pour créer des microservices, Golang serait le choix le plus raisonnable ici, car il est à la fois rapide, facile à coder et peut évoluer excellemment bien. Python, d’autre part, est plus orienté vers l’IA, le ML et l’analyse de données.
Donc, en allant tête à tête, Go arriverait en tête dans la plupart des cas et est considéré comme une alternative valide à l’utilisation de Python. Les développeurs doivent choisir un langage de programmation en tenant compte de leur nature et de la taille du projet de développement, ainsi que de l’ensemble des compétences des personnes impliquées.
La bonne nouvelle, cependant, est que, quel que soit le choix, les deux langages évoluent constamment. Si Golang peut sembler être un choix évident dans la plupart des cas, la communauté Python ne reste pas les bras croisés. Les deux langages sont en pleine expansion et en pleine croissance. Cela signifie que nous verrons plus de fonctionnalités et d’améliorations à l’avenir.
.