IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le langage Go souffle ses 15 bougies et atteint sa position la plus haute sur l'indice Tiobe
Google annonce que le nombre d'utilisateurs de Go a plus que triplé au cours des cinq dernières années

Le , par Stéphane le calme

11PARTAGES

14  0 
En novembre 2009, Google dévoilait au monde un tout nouveau langage de programmation : Go, également appelé Golang. Son objectif ? Répondre aux défis croissants des infrastructures modernes avec un outil à la fois performant, simple et efficace. Aujourd’hui, alors qu’il célèbre ses 15 ans, Go s’est imposé comme une référence dans le développement logiciel, particulièrement dans les domaines liés au cloud, aux microservices et à l’ingénierie logicielle à grande échelle. Retour sur le parcours d’un langage qui a su se faire une place dans un environnement hautement compétitif.

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 ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de denisys
Membre chevronné https://www.developpez.com
Le 20/11/2024 à 16:20
Dans ce que je constate .
Le point fort du langage Go , comparé au langage Rust.
Go langage est portable sur bien plus d'images processeur , que Rust.
Bien plus que de systèmes d'exploitations que Rust.

C'est peut être cela qui rapproche le langage Go ,
dans son utilisation avec des langages de programmation ,
tel que C,C++, Java , Python , etc..
0  0 
Avatar de Metal3d
Membre habitué https://www.developpez.com
Le 21/11/2024 à 8:42
Souvent comparé à tort avec Rust (et évidemment décrié par les fans de Rust, qui, de toutes manières, ne jurent que par Rust), j'ai commencé à toucher à Go l'année de sa sortie. J'ai d'abord trouvé ça "bof" parce que je n'avais pas compris la portée de ce qu'il proposait.

Aujourd'hui c'est l'un des langages que j'utilise le plus. Avec Python, typescript, C...

Go est clairement plus adapté à du dev applicatif que beaucoup d'autres langages. Il ne faut pas l'utiliser pour tout, et je dirai pareil pour n'importe quel autre langage.

Mais je conseille à beaucoup de tenter l'expérience.
0  0 
Avatar de grunt2000
Membre éclairé https://www.developpez.com
Le 28/11/2024 à 5:28
Go remplace avantageusement le C, je pense, mais C++ et Java le surclassent largement. Python, je n'en ai pas fait assez pour le savoir.

- Sa gestion des erreurs ne vaut pas celle par exceptions, c'est ça qui m'est le plus marquant.

- L'absence de collections natives, autres que l'array et la map, pose problème. Pas de set, pas de treeSet, pas de linked map... Il faut aller télécharger un package chez sur un dépôt Git d'un contributeur. Quand il y en a un

- Pareil ailleurs. Veux-je télécharger l'API en bêta ou alpha ? Il y en a plein, des petits bouts de trucs qui marchent à peu près, mais on ne sait pas s'il vaut mieux mettre dans son .mod ce que propose René sur son Gitlab ou Hélène sur son GitHub. On est comme à l'époque Maven, vers 2010, à pas savoir vraiment à quoi se fier. Si ce qu'on choisit va tenir deux ans... Exemple, le package gorm postgresql qu'on ne peut plus utiliser après la version 1.4.4 (et il est à sa version 1.5.x) parce que son mainteneur, un particulier, a décidé qu'il ne soutiendrait plus les champs timestamp. Ben Ouais, ça l'ennuie...

- l'opérateur ternaire non utilisable. Il est pratique pourtant. Quand on a des séries de propositions à écrire, c'est pas facile les if à plusieurs niveaux imbriqués, à la place.
Mais ils ont décidé que c'était mieux pour nous, parce que sinon "On ferait des erreurs parce que c'est des mauvaises pratiques de programmation". Parce qu'on est des incompétents, vous savez.

- On ne peut pas lister plus de dix erreurs de compilation. C'est plus possible.
Donc quand on reçoit d'un prestataire, par Git, un code de lui qui s'intègre mal à nos chaînes, on lui dit : voici les dix premiers messages d'erreurs que ce vous nous avez donné cause.
Puis il corrige, nous renvoie, et on lui donne les dix autres suivantes. Puis il corrige, nous renvoie, et on lui donne les dix autres, Puis il corrige, nous renvoie, et on lui donne les dix autres [...] Oh comme on aurait aimé lui les donner toutes, tout de suite !
Mais c'est pas possible, parce que sinon "Ce serait une mauvaise pratique de programmation". Encore. Brouillons qu'on est, on aurait pas su s'en sortir, c'est sûr !

- Pourquoi n'y a t-il pas de documentation possible à la Javadoc, avec des descriptions individuelles de paramètres et de valeurs de retour, "Ce serait une mauvaise pratique de programmation". Les programmeurs des autres langages de programmation sont idiots à le faire, il faut le savoir !
Qu'importe que beaucoup les désirent. Du coup, les docs de fonctions Go sont rébarbatives.

- son système de .mod où lorsqu'on veut prendre un code d'une branche de git qui n'est pas master c'est quasiment impossible, ou pour se partager des modules en développement local, c'est aussi complexe, montre qu'il est peu au point, et quand il ne fonctionne pas, on est cuits.

- Les concepteurs de Go prennent les programmeurs pour des cons et sont d'une morgue incroyable.

- Quant à sa communauté, c'est largement la pire. La moins accueillante et insupportablement fan-club, justifiant n'importe quel manque ou erreur de conception du langage, aussi évident qu'il soit.

Il est beaucoup plus long de terminer une application de bonne importance (plus de 100 000 instructions) avec Go, qu'avec pas mal d'autres langages.
Moi, je ne le recommande pas.
0  0