ANNÉES 2010

Go

En 2007, chez Google, des ingénieurs se trouvaient face à un problème devenu courant dans l'entreprise. Les langages existants ne répondaient plus aux besoins des applications modernes : réseautage intensif, processeurs multicœurs, environnements distribués. Rob Pike, l'un des concepteurs du futur langage Go, résumait cette impasse technique avec une certaine frustration. L'industrie disposait de nombreux outils, certes, mais aucun ne convenait vraiment.

Le cloud computing sortait tout juste de l'enfance, l'architecture orientée services trouvait ses marques dans les grandes organisations, et l'intégration continue commençait à transformer les pratiques de développement. Le paysage informatique ressemblait déjà à celui d'aujourd'hui. Go n'est pas né dans un laboratoire coupé du monde réel ; il a émergé au cœur des contraintes que rencontraient les équipes de développement.

Un détail frappe dans cette histoire : parmi les créateurs de Go se trouve Ken Thompson, celui qui avait conçu UNIX et le langage C des décennies plus tôt. Cette filiation n'a rien d'anecdotique. Elle trace une ligne directe entre deux époques de l'informatique, Go incarnant une réinterprétation contemporaine des principes qui guidaient la création du C.

Java, apparu en 1991, s'était imposé grâce à sa portabilité. Mais son statut propriétaire jusqu'en 2006 créait des complications : le procès Oracle contre Google en 2012 en témoigne. Quant au C, né en 1972 pour réécrire UNIX, il s'était répandu faute d'alternative ; il était l'un des rares langages rapides et multiplateformes accessibles aux premiers programmeurs. Go, lui, a été pensé dès l'origine pour les besoins actuels.

Le langage se distingue par sa conception réfléchie. Les temps de compilation restent courts, le code machine se génère directement, le typage fort impose une discipline qui rend les programmes lisibles et fiables. La documentation, exhaustive et libre, accompagne le tout. Dans une équipe de développement, souvent nombreuse et aux compétences variées, ces caractéristiques prennent une autre dimension : la collaboration rendue plus fluide, les délais de construction se réduisent, le code existant se déchiffre plus aisément.

Avec la gestion automatique de la mémoire, les développeurs n'ont plus à programmer explicitement l'allocation et la libération mémoire, contrairement au C ou au C++. Cette automatisation améliore la productivité, certes, mais surtout elle renforce la sécurité en diminuant les vulnérabilités liées aux erreurs de manipulation mémoire.

L'intégration native de la concurrence représente sans doute l'innovation la plus significative. Les applications peuvent exécuter plusieurs tâches simultanément plutôt que séquentiellement, exploitant ainsi les processeurs multicœurs. Pour les applications distribuées sur de multiples serveurs ou les architectures en microservices, cette fonctionnalité se révèle précieuse.

Le déploiement des applications Go reste simple. Contrairement à Java qui nécessite des interpréteurs locaux ou des machines virtuelles, les programmes Go se compilent en binaires autonomes. L'outil Get télécharge et installe une application via une commande unique. Cette approche correspond parfaitement aux pratiques DevOps qui privilégient la cohérence des chaînes de développement et la simplicité des mises à jour.

Dans le domaine de la science des données, Go démontre sa polyvalence. Il intègre aisément des algorithmes écrits en Python dans des applications en microservices. Les performances obtenues évitent souvent le recours à l'optimisation en C ou C++, langages bas niveau réputés plus complexes.

La communauté de développeurs autour de Go n'a cessé de croître. En 2016, plus de 700 programmeurs contribuaient à son développement. Le classement TIOBE des langages de programmation illustre cette ascension : Go passe de la 55e à la 10e place entre 2016 et 2017.

De nombreuses plateformes open source ont adopté Go. Cloud Foundry l'a choisi pour des composants comme gorouter, qui gère la connectivité des applications en microservices. Docker, qui a transformé le déploiement applicatif, est entièrement écrit dans ce langage. Les développeurs Docker ont opté pour Go en 2013, séduits par sa facilité d'installation, de test et d'adoption. InfluxDB, système de stockage haute performance, tire parti de l'efficacité et de la fiabilité du langage.

Des entreprises technologiques de premier plan ont intégré Go dans leurs infrastructures. Dropbox a migré une partie importante de son infrastructure de Python vers Go pour améliorer son extensibilité. Netflix utilise Go pour créer des microservices nécessitant performance et scalabilité. Uber a développé en Go son service de géolocalisation en temps réel, qui affiche les meilleures performances parmi tous ses services.

Le succès de Go s'explique par son adéquation avec les besoins du développement logiciel moderne. Sa conception prend en compte les environnements cloud, le traitement distribué et les architectures en microservices. La simplicité d'utilisation, associée à des performances élevées et une maintenance facilitée, en fait un choix pertinent pour les entreprises qui modernisent leurs applications.

L'émergence de Go marque l'évolution des langages de programmation vers des solutions adaptées au cloud computing et aux architectures distribuées. Les besoins contemporains en matière de développement logiciel ont conduit à repenser les outils de programmation, créant un langage qui répond aux exigences de l'informatique actuelle tout en conservant une approche élégante et pragmatique.