Pourquoi je crois en Golang


En 2009, Google dévoile un langage de programmation dont le début de la conception remonte à 2007. À la tête de ce projet, Robert Griesemer, Rob Pike, et Ken Thompson, qui continue d’innover sans relâche à 73 ans, après nous avoir déjà tant offert. Malheureusement, si la nouvelle fait grand bruit, peu de projets adoptent ce nouveau venu, nommé Go mais plus souvent désigné par Golang, pour éviter toute confusion. Sept ans après ses débuts officiels, je crois plus que jamais que Golang apporte des solutions aux problématiques actuelles. Voici pourquoi.

Golang était-il trop en avance sur son temps ? C’est bien possible. Conçu pour gérer des datacenters, consommer peu de ressources, exploiter au mieux les CPU modernes à coeurs multiples ou encore faciliter la lecture du code, il répondait à des problématiques qui n’était pas forcément encore au coeur de nos préoccupations il n’y a pas si longtemps.

Quand on analyse la situation, on réalise que l’heure est venue de réévaluer les atouts de Golang, trop longtemps ignoré par beaucoup. Car chaque ère technologique a catalysé le développement d’un ou plusieurs langages : les gros systèmes ont vu naitre le Cobol. Unix, le C. Windows, les L4G. Sans parler du Web qui aura fait exploser PHP, Java, Python, Ruby, JavaScript… Les mutations engendrées par le cloud vont forcément provoquer l’apparition sur le devant de la scène d’un ou plusieurs langages. J’attends depuis des années l’arrivée de ces derniers, capables de nous permettre de développer efficacement sur les nouvelles infrastructures. Et quand on regarde les spécificités du Go, on se dit qu’on a peut-être déjà la solution à portée de la main :

  • il est à la base de tous les outils de l’ère du Cloud : Docker, Kubernetes, etc.
  • il est simple, mais offre nativement tout ce qu’il faut pour développer une plateforme de services.
  • il intègre nativement la concurrence d’accès.
  • il permet de déployer des conteneurs légers… vraiment légers ! À quoi ça sert d’avoir des conteneurs légers s’il faut booter des machines virtuelles (JVM, CLR, V8) énormes en occupation mémoire dedans ?
  • il est idéal pour construire des microservices.
  • il supporte nativement JSON et HTTP (client et serveur).
  • il est poussé par une communauté bienveillante.
  • il va être largement adopté par les universités pour enseigner la programmation concurrente. Dans quelques années, tous les étudiants auront dans leur bibliothèque le nouveau Kernighan, qui après avoir écrit le bestseller « The C Programming Language », vient de sortir « The Go Programming Language ».

Cette liste de points cruciaux démontre que Golang est totalement en adéquation avec nos préoccupations de 2016. Il est capable de résoudre un nombre de problématiques incroyable, des problématiques dont nous n’avions pas forcément conscience en 2009. Est-il la solution parfaite ? Je ne suis pas loin de le penser. Mais une chose est certaine : il est impossible d’imaginer que les langages créés avec les contraintes technologiques d’il y a 20 ans soient capables de répondre aux défis d’aujourd’hui. Il est plus que temps de donner sa chance au Go !

 

Illustration d’intro : Gopher par Renee French (via).

Vous aimerez aussi...

  • Jerome

    Et sinon, le versionning …
    Je trolle, il est tres bien ce langage. À connaître

    Sauf peut être le constructeur de slices à trois paramètres qui a du être inventé par un psychopathe

  • Anonymous Coward

    Tous les langages que je connais inventés pendant la dernière décennie (et même certains dans les années 90) sont plus modernes que Go. L’absence d’innovation est une « feature » du langage.

    Ceci dit un coup de balais sur les erreurs historiques des vieux langages systèmes, un coup de peinture fraîche, un bon tooling, une communauté sympa, un logo rigolo… ce sont des qualités indéniables du langage et certainement la recette d’un succès populaire.

    Comment écrire des applications robustes, maintenables, correctes, sûres… voilà par contre des préoccupations bien actuelles (mais pas très fun ni trendy) auxquelles Go n’apporte pas de réponse. Ces préoccupations sont pourtant essentielles, surtout pour un langage système.

    En tant que professionnels (et pour certains experts avec pignon sur rue), nos choix techniques ont des répercutions économiques et surtout humaines majeures. Il est de notre responsabilité de ne pas céder aux sirènes aguicheuses de la facilité or ici, au contraire, vous nous y invitez à coups d’hyperboles délirantes.

    Parce que les applications que nous créons régissent (et parfois pourrissent) la vie de millions de personnes, nous devons prendre le recul nécessaire pour maximiser non pas notre confort immédiat en tant que développeurs fainéants ni la satisfaction de faire le cowboy avec des microservices déployés dans des conteneurs légers qui pulsent du JSON dans le Cloud Digital, mais plutôt la robustesses de nos solutions.

  • Louis

    Je comprend le soucis de google de s’affranchir de licences coûteuses à travers la promotion d’un langage développé en interne .

    Néanmoins pour ce qui est de Golang , peut on réellement parler de nouveauté pour un langage qui utilise des pointeurs … des structures …. ;) ? As t-on oublier pourquoi nous avions tous massivement migré vers java ?

    Je plains les pauvres ingés qui aura à maintenir une base de code dans ce language ….

    Pour ma part j’ai l’impression de revenir 20 ans en arrière … Finalement je vais me remettre au c …

    • Olivier

      Les structures sont des classes, en plus simple (et surtout plus flexible pour ce qui est du Go).
      La différence pointeur/valeur existe en C# par exemple (les struct en C# sont passées par copie) sauf qu’elle est implicite.
      Nous avons massivement migré vers Java pour l’aspect multiplateforme et gestion automatique de la mémoire. La disparition de la notion de pointeur est secondaire à mon avis (et pas toujours un avantage).

      Et pour ce qui est de maintenir une application, je dirais que j’en ai vu un paquet qui étaient inmaintenables et pourtant développées en Java :) Cela dépend plus de la qualité du code que du langage lui-même.

      Je ne dis pas qu’un langage est mieux qu’un autre, car je pense qu’il faut les avoir utilisés sur des projets importants pour pouvoir vraiment se faire une idée.

  • Olivier

    Tout à fait d’accord avec cet article. J’ai développé un petit service REST en Go pour essayer ce langage, et force est de constater que c’est vraiment très adapté, très efficace et agréable à utiliser. C’est vraiment à l’usage qu’on peut le constater (ie. ne nous croyez pas sur parole, essayez vous-même !).

  • Laurent Simon

    Go fait partie des très rares langages qui m’ont étonné par leur pertinence et leur efficacité. Rien de révolutionnaire en apparence mais une efficacité et une robustesse redoutable à l’usage. J »y vois beaucoup d’avantages par rapport à des langages comme Java ou C# que je pratique de puis très/trop longtemps.

  • Mathieu

    D’accord avec cette article. Pour avoir développer des API lourde et des architectures microServices avec Go, il est d’une incroyable efficacité. Oui il na rien de révolutionnaire en apparence et au contraire c’est bien, il ne faut pas a chaque fois réinventer la roue. Prenons ce qui fonctionne et faisons un bon langage. Go mérite sa chance.

    En tout cas une chose est sur pour moi je ne reviendrais pas sur Java.