Que peut apporter le langage Go dans un contexte ESN/client ?

Les atouts du Go sont nombreux, même si son influence reste encore relativement faible dans le monde de la programmation en France. Pour les ESN qui s'y intéressent, il représente un véritable levier d'innovation.

Beaucoup disent que le but du langage Go est de “remplacer le C”. Le débat est permanent depuis une petite dizaine d’années dans la communauté des développeurs et a aussi été présent lors de l’édition 2019 de la dotGo qui s’est tenue à Paris en mars dernier. En effet à chaque nouveau projet, la même question revient : quelle stack technologique sera la plus adaptée à la problématique rencontrée ? 

Des atouts techniques et de performance indéniables

Le Go repose en effet sur quelques principes de base qui lui permettrait de se substituer au C : c’est un langage fortement typé, compilé et bas niveau. Ces dernières caractéristiques permettent un gain de performances non négligeable comparé aux langages de scripting haut niveau. De nombreux benchmarks à ce sujet ont été réalisés : pour le calcul d’une fractale par exemple, Go se révèle être 50 fois plus rapide que Python.

Sa simplicité naturelle et son élégance font de Go un langage très attirant comparé aux « monstres » que sont Java ou C# (même si de nets progrès ont été constatés ces dernières années). C’est un avantage certain : rentrer sur des projets existants en Go est d’une facilité déconcertante. Les bonnes pratiques entraînent une façon de faire presque universelle, et il est facile de s’y retrouver, même quand le nombre de lignes de code est gigantesque.

Il existe également de nombreux outils de développement très poussés afin d'améliorer la qualité et les performances des programmes écrits en Go. C’est par exemple le cas de benchstat, un outil qui permet de comparer des benchmarks de vos programmes et d’en obtenir des statistiques précises.

Au-delà des avantages purement techniques du langage, de nombreux autres aspects méritent d'être soulignés. Tout d’abord, Go est de plus en plus populaire, notamment en Chine où la communauté y est très active. Ensuite, ses domaines d’application sont de plus en plus larges. Il est par exemple déjà acquis que l’on peut faire du web en Go avec WebAssembly. Les applications IoT sont également possibles grâce à tinyGo, un compilateur spécialement dédié à ce domaine. Enfin, ses performances font qu’il est aussi de plus en plus utilisé en sécurité (par exemple avec bettercap).

Mais une diffusion encore modérée

Cependant, il faut garder à l’esprit que l’influence du Go est pour l’instant faible dans le monde de la programmation, en comparaison à d’autres langages comme Java ou PHP. En France, on compte toujours assez peu d’adeptes, même si leur nombre grandit très vite et si des meetups permettent de fédérer les développeurs au niveau local (notamment à Paris). Si le langage manque de maturité par certains aspects, cela est donc compensé par les retours de la communauté, et la réactivité de l'équipe en charge de son évolution. Marcel van Lohuizen, membre de la team Go chez Google, a notamment clos la journée dotGo de mars dernier, en dévoilant quelles nouveautés allaient être mises en place pour la gestion des erreurs dans les prochaines versions.

Pour les ESN, un levier d’innovation et d’efficacité

Et du côté des ESN, quel serait l’intérêt de travailler en Go ? Il apporte beaucoup de choses ! Utiliser une technologie jeune et émergente est, par principe, une excellente manière de rester innovants. De plus, cette technologie bénéficie d’une communauté active et d’une équipe officielle de maintenance chez Google, ce qui assure sa pérennité et sa stabilité, choses qui manquent souvent aux jeunes technologies.

Le Go permet aussi d’ajouter une corde à son arc, d’élargir son offre. À ce jour, la demande et l’offre sont plutôt stables en termes de projets véritablement écrits en Go, mais la popularité en forte croissance du langage va certainement faire augmenter l’un et l’autre ; d’où la nécessité de s’intéresser à cette technologie et ses évolutions.

L’ESN va aussi pouvoir s’imposer dans de nouveaux domaines « coeur de métier ». Certains sont très appropriés à l’utilisation du Go, comme par exemple le traitement de gros volumes de données, où les contraintes de performance et de concurrence sont réelles. A ce titre, n’oublions pas qu’une bonne relation ESN/client tient à la capacité de proscrire les bugs en production. En utilisant un langage compilé de manière non permissive et fortement typé, la qualité et la stabilité du code s’améliorent naturellement. On réduit donc par conséquent la probabilité qu’une mauvaise surprise n’arrive en production.

Bien évidemment, tout cela n’est vrai qu’à condition de suivre les bonnes pratiques du langage : car comme tout langage, le Go, ce n’est pas de la magie !