Il y a 15 ans, en novembre 2009, Google lançait le langage de programmation Go, également appelé Golang, avec une ambition claire : simplifier le développement logiciel tout en répondant aux besoins des infrastructures modernes. Quinze ans plus tard, Go a su s’imposer comme un acteur incontournable dans l’univers des langages de programmation.
Créé par Robert Griesemer, Rob Pike et Ken Thompson, Go est né au sein de Google pour répondre à des défis internes. Les développeurs de l’époque faisaient face à des temps de compilation lents et des systèmes complexes, tout en cherchant une alternative qui pourrait équilibrer simplicité et performance.
Go repose sur une philosophie claire : privilégier une syntaxe simple, lisible et facile à maintenir, sans compromettre les performances. Ce choix a permis au langage de séduire rapidement les développeurs fatigués par la complexité croissante des environnements de programmation modernes.
Un langage taillé pour l’infrastructure
Dès ses débuts, Go s’est distingué par des fonctionnalités particulièrement adaptées au développement d’infrastructures. Parmi celles-ci :
- Les goroutines : des primitives de concurrence légères, idéales pour écrire des applications capables de gérer des milliers de connexions simultanément.
- La gestion mémoire automatique (garbage collection) : facilitant la programmation tout en garantissant de bonnes performances.
- Une bibliothèque standard riche : offrant des outils puissants pour les tâches courantes (réseau, formatage, compression, etc.).
Ces caractéristiques ont fait de Go un choix naturel pour les systèmes distribués et les architectures basées sur les microservices. Kubernetes, l’orchestrateur de conteneurs dominant, écrit en Go, illustre parfaitement la puissance et la pertinence de ce langage dans l’univers DevOps.
Parmi les applications libres notables écrites en Go, nous pouvons aussi parler de :
- Docker, pour la création, déploiement et exécution d'application dans des conteneurs.
- Go Ethereum : une des trois implémentations originales (avec C ++ et Python) du protocole Ethereum.
- Gogs, une forge multiplateforme fondée sur Git.
- Grafana, un outil de monitoring, d'analyse de métriques et de création de tableaux de bord.
Une montée en popularité constante
Depuis ses débuts, Go a su capter l’attention grâce à ses caractéristiques uniques : simplicité, performances et capacité à gérer des projets d’envergure. Ces qualités ont fait de lui un outil de choix pour les systèmes distribués, les microservices et le cloud computing. Selon plusieurs enquêtes récentes, le langage Go figure parmi les technologies les plus prisées par les développeurs, souvent cité pour sa facilité d’apprentissage et son efficacité.
Go a su se différencier dans un paysage déjà saturé de langages, en proposant une approche minimaliste mais puissante. À une époque où les développeurs jonglent avec des outils de plus en plus complexes, la philosophie « do more with less » de Go résonne particulièrement.
Une adoption renforcée par l’évolution technologique
Le succès de Go n’est pas seulement dû à ses mérites techniques, mais aussi à son alignement avec les tendances de l’industrie. Avec l’explosion des conteneurs et des orchestrateurs comme Kubernetes – écrit lui-même en Go – le langage est devenu un standard dans les environnements DevOps.
Son écosystème a également bénéficié d’un soutien constant de la communauté open source et de grandes entreprises comme Google, Amazon ou encore HashiCorp, qui l’utilisent dans leurs solutions phares.
Les défis et les perspectives
Malgré sa popularité croissante, Go n’est pas exempt de critiques. Au fil des années, plusieurs lacunes ont été soulignées par la communauté :
- L’absence de génériques : pendant plus de 10 ans, Go a manqué d’un mécanisme natif pour les types paramétrés, une fonctionnalité standard dans de nombreux langages modernes. Ce manque a été corrigé en 2021 avec Go 1.18, marquant un tournant important.
- Un modèle d’erreurs répétitif : la gestion des erreurs dans Go repose sur des vérifications explicites (if err != nil), ce qui, bien que clair, peut rendre le code verbeux.
- Une approche minimaliste parfois limitante : en refusant d’intégrer certaines fonctionnalités avancées comme l’héritage ou des macros, Go vise la simplicité, mais cela peut frustrer certains développeurs habitués à des langages plus riches.
Cependant, la communauté Go a toujours mis un point d’honneur à faire évoluer le langage sans sacrifier ses principes fondamentaux.
Le petit mot de Google pour l'anniversaire de son langage
Beaucoup de choses ont changé depuis le 10ème anniversaire de Go, à la fois dans Go et dans le monde. D'un autre côté, beaucoup de choses sont restées inchangées : Go reste attaché à la stabilité, à la sécurité et au soutien de l'ingénierie logicielle et de la production à grande échelle.
Et Go se porte bien ! Le nombre d'utilisateurs de Go a plus que triplé au cours des cinq dernières années, ce qui en fait l'un des langages dont la croissance est la plus rapide. Depuis ses débuts il y a seulement quinze ans, Go est devenu l'un des dix premiers langages et le langage de l'informatique dématérialisée moderne.
Avec la sortie de Go 1.22 en février et de Go 1.23 en août, l'année a été celle des boucles for. Go 1.22 a fait en sorte que les variables introduites par les boucles for soient délimitées par itération, plutôt que par boucle, remédiant ainsi à un problème de langage de longue date. Il y a plus de dix ans, avant la sortie de Go 1, l'équipe Go a pris des décisions sur plusieurs détails du langage, notamment sur la question de savoir si les boucles for devaient créer une nouvelle variable de boucle à chaque itération. Il est amusant de constater que la discussion a été assez brève et qu'elle n'a fait l'objet d'aucune opinion. Rob Pike l'a clôturée à la manière de Rob Pike avec un seul mot : « stet » (laissez faire). Et c'est ce qui s'est passé. Bien qu'elles aient semblé insignifiantes à l'époque, des années d'expérience en matière de production ont mis en lumière les implications de cette décision. Mais pendant ce temps, nous avons également mis au point des outils robustes pour comprendre les effets des changements apportés à Go - notamment des analyses et des tests à l'échelle de l'écosystème dans l'ensemble de la base de code de Google - et établi des processus pour travailler avec la communauté et obtenir un retour d'information. À la suite de tests, d'analyses et de discussions approfondies au sein de la communauté, nous avons mis en œuvre le changement, accompagné d'un outil de bissection de hachage pour aider les développeurs à repérer le code affecté par le changement à grande échelle.
Le passage aux boucles for faisait partie d'une trajectoire de cinq ans de changements mesurés. Il n'aurait pas été possible sans la compatibilité ascendante du langage introduite dans Go 1.21. Celle-ci, à son tour, s'est appuyée sur les fondations posées par les modules Go, qui ont été introduits dans Go 1.14 il y a quatre ans et demi.
Go 1.23 s'est appuyé sur ce changement pour introduire les itérateurs et les boucles for-range définies par l'utilisateur. Combiné aux génériques - introduits dans Go 1.18, il y a tout juste deux ans et demi - cela crée une base puissante et ergonomique pour les collections personnalisées et de nombreux autres modèles de programmation.
Ces versions ont également apporté de nombreuses améliorations dans la préparation à la production, y compris des améliorations très attendues du routeur HTTP de la bibliothèque standard, une refonte totale des traces d'exécution et un caractère aléatoire plus fort pour toutes les applications Go. De plus, l'introduction de notre premier paquetage de bibliothèque standard v2 établit un modèle pour l'évolution et la modernisation futures de la bibliothèque.
Au cours de l'année écoulée, nous avons également déployé avec prudence un système de télémétrie opt-in pour les outils Go. Ce système fournira aux développeurs de Go des données leur permettant de prendre de meilleures décisions, tout en restant complètement ouvert et anonyme. La télémétrie Go est apparue pour la première fois dans gopls, le serveur de langage Go, où elle a déjà conduit à une litanie d'améliorations. Cet effort ouvre la voie pour faire de la programmation en Go une expérience encore meilleure pour tout le monde.
Go se positionne bien sur l'indice Tiobe mais reste de niche en France
Sur TIOBE, Go s'offre la septième place parmi les langages les plus populaires. En 2023 à la même période, le langage était à la 13ème place.
L'indice TIOBE Programming Community est un indicateur de la popularité des langages de programmation. L'index est mis à jour une fois par mois. Les notes sont basées sur le nombre d'ingénieurs qualifiés dans le monde, les cours et les fournisseurs tiers. Les moteurs de recherche populaires tels que Google, Bing, Yahoo!, Wikipédia, Amazon, YouTube et Baidu sont utilisés pour calculer les notes. Il est important de noter que l'index TIOBE ne concerne pas le meilleur langage de programmation ou le langage dans lequel la plupart des lignes de code ont été écrites. L'index peut être utilisé pour vérifier si vos compétences en programmation sont toujours à jour ou pour prendre une décision stratégique sur le langage de programmation à adopter lors du démarrage de la construction d'un nouveau système logiciel.
Emploi informatique 2023 : les langages les plus demandés et les mieux payés
Portail Emploi de Developpez.com
Source : Go
Et vous ?
Avez-vous déjà essayé Go ? Si oui, qu'en pensez-vous ? Si non, êtes-vous tenté de le faire ?
Go est souvent loué pour sa simplicité, mais est-ce toujours un avantage dans des projets de plus en plus complexes ?
Les génériques, introduits récemment, suffisent-ils à combler les lacunes pointées par les développeurs ?
Quelles sont les limites actuelles de Go face à des langages concurrents comme Rust ou Python ?
La gestion des erreurs dans Go est-elle adaptée aux besoins des développeurs modernes, ou devrait-elle évoluer ?