Developpez.com

Le Club des Développeurs et IT Pro

Go souffle sur sa cinquième bougie

Le langage de Google peine à convaincre les développeurs

Le 2014-11-12 10:06:20, par Hinault Romaric, Responsable .NET
Novembre est décidément le mois des anniversaires. Après Firefox qui a soufflé sur sa dixième bougie le 9 novembre dernier, c’est au tour du langage de programmation Go de fêter ses 5 ans.

Le 10 novembre 2009, un nouveau langage de programmation venait s’immiscer dans la pléthore de langages déjà disponibles. Développé par Google, le langage a rapidement attiré l’attention de l’industrie et de bon nombre de développeurs.

Go est une alternative au langage de programmation C/C++. Il reprend ce qui a fait le succès de ces langages, tout en intégrant des nouveautés pour rendre le code plus concis, lisible et offrir plus de sécurité. C’est un langage compilé permettant de simplifier le développement d'applications concurrentes. Il est destiné notamment à la programmation système.

Selon Google, les langages de programmation majeurs datent de plus d’une décennie, et ne se sont pas adaptés à l’évolution du paysage informatique qui a énormément changé. Go a été conçu pour tirer parti des processeurs multicœurs, fournir des fonctionnalités modernes comme le typage dynamique, le ramasse-miettes (garbage collection), et abandonner des aspects pénibles comme l’inclusion des fichiers pour le langage C.

Après son lancement, Go a eu droit à un court moment de gloire. En quelques mois, le langage a enregistré la plus forte croissance sur l’indice Tiobe, faisant de celui-ci le langage de l’année 2009, d’après Tiobe.

Un succès du probablement à un effet de curiosité de la part des développeurs, parce que le langage est soutenu par un acteur majeur du Web. Cinq ans après la naissance de Go, il ne semble pas séduire beaucoup de développeurs, tandis que les langages C et C++ restent encore très populaires. Selon l’index de popularité Tiobe, Go n’apparaît qu’en 41e position, alors que C demeure le langage le plus populaire.

Actuellement Go est à sa version 1.4, avec son environnement d’exécution et ses outils de développement. La prochaine version du langage sera publiée le 1er décembre 2014, et un support des terminaux mobiles est prévu pour 2015.

Source : Blog Go

Et vous ?

Que pensez-vous de Go ? Avez-vous adopté le langage ?

Go a-t-il du potentiel pour concurrencer C/C++ ?
  Discussion forum
20 commentaires
  • Firwen
    Membre expérimenté
    Cinq ans après la naissance de Go, il ne semble pas séduire beaucoup de développeurs, tandis que les langages C et C++ restent encore très populaires. Selon l’index de popularité Tiobe, Go n’apparaît qu’en 41e position, alors que C demeure le langage le plus populaire.
    Rome ne s'est pas construite en un jour.
    Il faut généralement prés de 10 ans pour construire un écosystème solide pour un nouveau langage. Et puis sincèrement, depuis quand l'index Tiobe a une quelconque valeur ?

    J'aurai plutôt tendance à dire l'inverse: Golang est en progression, trés net progression, même si on reste loin de mastodontes comme C/C++ ou Java.

    Les googles trends parlent d'eux même je pense : http://www.google.com/trends/explore...ang&cmpt=q

    Go en moins de 5 ans a réussi à se faire une place dans les langages à considéré pour le développement d'apps Web (Revel), ou d'application système légère comme Docker... qui est en Go.
    Un petit passage sur github donne plus de 44 000 repos qui utilisent golang, soit bien plus que pour des languages comme Scala, Clojure or F# qui sont de la même génération.

    Même si je reste assez allergique à sa syntaxe, j'ai assez de respect pour ce nouveau venu pour être honnête.

    Un langage à surveiller.
  • marc.collin
    Membre émérite
    Envoyé par frasene
    Re-bonjour,

    Globalement, je ne trouve plus de langages de programmation avec UI (user interface en client lourd) qui permettent de faire des applications aussi facilement qu'on pouvait le faire avec Visual Basic 6.0...

    Si vous en connaissez des gratuits...

    A+

    • delphi
    • lazarus
    • java avec netbeans
  • Firwen
    Membre expérimenté
    OmicroN : ben si, Go me semble clairement un remplaçant du C...
    Absolument pas. C'est de nos jours grandement utilisé pour la programmation système ( librairies ) ou kernel. Golang n'est pas adapté à la création de libs systèmes ( pas d'ABI stable ) et encore moins à la programmation kernel.

    Go avec son asynchronisme quasi "naturel" en fait un très bon candidat face à PHP mais pas forcément Ruby et/ou Python qui sont à mon sens déjà bien équipé.
    Il fait aussi un trés bon candidat face à Ruby ou Python qui ne sont pas loin de PHP en terme de performances de toute manière.... (http://benchmarksgame.alioth.debian....&data=u64q)
    Et qui souffrent de quelques problèmes avec le threading ( Global interpreter lock).

    Golang offre un compromis entre la flexibilité des langages de haut niveau comme python/Ruby ( reflexbilité, typage dynamique, faible verbosité ) et la performance des langages systèmes (C++) ou managés (Java).

    Les go-routines sont une implémentation native des "green threads" qui permettent d'abstraire complètement la gestion asynchrones des I/O derrière de simple call "blocking". Python et Ruby ne peuvent faire ce genre de choses qu'en utilisant des runtimes spéciaux ( greenlets ) qui s'interface généralement trés mal avec leur modules natifs.

    A ma connaissance et à l'heure actuel, seul Go et Erlang peuvent faire ce genre de chose.
  • ZeldaRageux
    Candidat au Club
    Je ne sais pas comment on peut écrire ça.

    Go est au coeur de la révolution qui est en train de faire basculer tout l'hébergement et l'exploitation des applications et des services web dans la prochaine décennie.

    Tous les grands acteurs du cloud (Google, Microsoft, Paypal, Apple, Sengrid, etc...) ont adopté ce langage à part sans doute Facebook qui a choisi de recruter le concepteur de D.

    Docker qu'on ne présente plus (s'il y a des personnes qui lisent Developpez et qui ne connaissent pas Docker aujourd'hui alors je les encourage à changer de job) a pu voir le jour grâce à Go dixit ses concepteurs.

    Cet un langage qui est capable de "tout" (système et apps), il permet une exploitation simple de tous les coeurs fournis par nos CPUs (pour ceux qui suivent toujours, ça fait un moment que les fréquences de ces derniers n'évoluent plus), il compile beaucoup plus vite que tous les autres langages tout en produisant un code en moyenne inférieur en taille de 20%, il est simple à déployer car le binaire embarque les dépendances, etc...

    Go a été initié par Google pour réponse aux problématiques hors normes du géant conçu par Robert Griesemer, Rob Pike et Ken Thompson (je laisse à tout le monde le soin d'apprécier leur cv, c'est quand même plus impressionnant que pour certains autres langages plus populaires).

    Aujourd'hui c'est un langage qui peut être utilisé dans tous les projets, du simple site web jusqu'à Kubernetes capable de gérer des clusters de centaines de milliers de conteneurs Docker.

    Alors écrire "Le langage de Google peine à convaincre les développeurs" je ne comprends pas ? Mais quels développeurs ? Les développeurs qui s'enferment dans un langage comme PHP qui a 20 ans et qui reste un des langages les moins performant du web ? Et bien ces développeurs là on n'en a plus besoin, y en a plein les placards.
  • Jarodd
    Membre expérimenté
    Après Firefox qui a soufflé sur sa vingtième bougie le 9 novembre dernier
    C'est la dixième
  • polaroid62
    Membre habitué
    je pense qu'il a du potentiel dans le web , je n'ai pas approfondi plus que ça , j'ai regardé vite fait quelques framerworks web comme Beego , Martini , Revel mais je trouve la ressource trop pauvre sur ces sujets pour le moment . La doc des frameworks n'est pas forcément mauvaise , je regrette l'absence d'ouvrage comme on peut en trouver pour d'autres techno , il y a des ouvrages sur le Go lui même mais rien sur les framework comme c'est le cas en Ruby par exemple avec rails , sinatra..
  • frasene
    Membre régulier
    Bonjour,

    Je serais intéressé par ce language mais pas pour le WEB, pour développer des applications portables entre Windows, Linux et Macintosh. Le problème étant encore une fois de savoir quelle interface graphique (fenêtre, menu déroulant) utiliser pour la stabilité, la portabilité et les fonctionnalités...

    A+
  • frasene
    Membre régulier
    Re-bonjour,

    Globalement, je ne trouve plus de langages de programmation avec UI (user interface en client lourd) qui permettent de faire des applications aussi facilement qu'on pouvait le faire avec Visual Basic 6.0...

    Si vous en connaissez des gratuits...

    A+
  • OmicroN
    Membre à l'essai
    Je pense que positionner Go en concurrent de C/C++ n'est pas très heureux; ce serait plutôt Rust le concurrent de ces langages. Pour moi Go est mieux placé comme étant une alternative au Python/PHP/Ruby/... pour développer des applications web très performantes avec un langage compilé très productif, et tirant parti du hardware actuel. Et pour ce genre d'applications il n'est pas utile de rechercher des frameworks; la librairie standard comprend tout ce qu'il faut. A la limite, une "boite à outils" comme Gorilla peut s'avérer utile et simplifier la vie.
  • mothsART
    Membre régulier
    OmicroN : ben si, Go me semble clairement un remplaçant du C... mais pas du C++ (pas de notion d'objet ni d'exceptions) : C#, Rust remplissent bien mieux cet objectif.

    Je ne sais pas si tu es dev web mais la vitesse d’exécution est rarement un problème : c'est les IO le nerf du problème.
    Go avec son asynchronisme quasi "naturel" en fait un très bon candidat face à PHP mais pas forcément Ruby et/ou Python qui sont à mon sens déjà bien équipé.

    Ces 2 derniers langages me semble bien plus appropriés pour du web sans compter la panoplie de frameworks/librairies qui les accompagne.

    Perso, je dev en python et après des benchs, j'identifie les parties critiques si besoins et les remplace en C... je louche progressivement sur Go pour raccourcir mon temps passé sur du bas-niveau.

    En plus, si celui-ci venait à être dispo sur de l'Android, je le privilégierais à du Java par exemple...