14e anniversaire du lancement du projet open source du langage Go
- L’un des cofondateurs du langage Go a donné sa dernière conférence lors de la GopherConAU, organisée à Sydney le 10 novembre 2023.
- Cette intervention célébrait les 14 ans du lancement de Go en tant que projet open source et revenait sur ses réussites ainsi que sur les points à remettre en question.
- L’orateur a précisé qu’il ne parlait ni au nom de l’équipe Go ni de Google, mais exprimait un point de vue personnel, tout en remerciant la communauté pour sa contribution au succès du langage.
Facteurs de réussite du langage Go et points à améliorer
- L’objectif initial de Go n’était pas de créer un nouveau langage de programmation, mais d’améliorer la manière d’écrire des logiciels.
- Go visait à répondre à la complexité de la construction de logiciels serveurs modernes : gestion des dépendances, collaboration avec de grandes équipes, facilité de maintenance, tests efficaces, et utilisation performante des CPU multicœurs ainsi que du réseau.
- Go n’est pas seulement un langage de programmation, mais un projet visant à rendre la création de logiciels de production plus simple et plus productive.
Le mascotte de Go, le gopher
- Le gopher, mascotte du langage Go, a joué un rôle important dans son succès.
- Il est devenu le symbole des programmeurs Go et l’étendard de la communauté, ce qui a été essentiel à la croissance du projet.
- Le fait d’avoir publié son design sous licence Creative Commons Attribution a favorisé l’esprit communautaire, tout en entraînant aussi des difficultés liées au droit d’auteur.
Facteurs techniques du succès de Go
- La rédaction d’une spécification officielle, l’existence de plusieurs implémentations, la portabilité, les garanties de compatibilité, une riche bibliothèque, la facilité de développement d’outils, ainsi que l’outil de formatage automatique
gofmt, ont contribué au succès de Go.
gofmt a influencé l’ensemble de la communauté du développement, en ouvrant la voie au fait que la plupart des langages disposent désormais d’un formateur standard.
Concurrence et interfaces
- Go a fait de la concurrence un élément central du langage, ce qui a contribué à simplifier l’architecture des logiciels serveurs.
- Les interfaces sont une idée emblématique de Go, sa réponse à la conception orientée objet, et elles jouent un rôle important dans la bibliothèque standard comme dans la gestion des dépendances.
Génériques et compilateur
- La présence des interfaces est l’une des raisons pour lesquelles l’ajout des génériques à Go a pris autant de temps.
- Le fait que le premier compilateur Go ait été écrit en C a suscité des controverses dans la communauté des langages de programmation, mais ce choix était adapté au développement de Go.
Gestion du projet et des paquets
- Bien que Go soit un projet open source, son développement initial s’est déroulé en privé, puis les contributions de la communauté ont explosé après l’ouverture du projet.
- Le développement de la gestion des paquets ne s’est pas déroulé sans heurts, notamment par manque de compréhension de la manière de collaborer avec la communauté.
Documentation et exemples
- La documentation initiale de Go n’a pas répondu aux attentes de la communauté, mais elle s’est améliorée, notamment grâce à la mise à disposition d’exemples exécutables sur le Web.
L’avis de GN⁺
- Le succès de Go tient à des éléments comme une bibliothèque standard solide, la prise en charge de la concurrence, une conception fondée sur les interfaces, une gestion claire des paquets, des outils rapides de build et de test, un formatage de code cohérent, l’accent mis sur la lisibilité et les garanties de compatibilité.
- Go a apporté une innovation non seulement comme langage de programmation, mais aussi dans la manière de développer des logiciels, grâce à la diversité et au soutien de sa communauté.
- Le processus de développement de Go et la réflexion critique menée à son sujet offrent d’importantes leçons pour la gestion des projets open source.
1 commentaires
Réactions sur Hacker News
Reconnaissance envers les figures clés qui ont consacré du temps à la rétrospective du projet
Affection pour le langage Go et sa communauté
Partage d’une expérience critique concernant le système de gestion de paquets de Go
Regard critique sur le langage Go
Point intéressant sur la décision de Ken Thompson d’utiliser un compilateur C
Mise en avant de l’adoption réussie de gofmt
En tant qu’organisateur de GopherConAU, partage de la playlist complète
Avantages de Go pour créer facilement un monorepo et construire rapidement des applications
Peu de mentions du choix de Go en matière d’interopérabilité et de C FFI
Avis sur le fait d’écrire un compilateur dans son propre langage