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 !

Langage de programmation Go : combien de professionnels l'utilisent ? Où sont-ils ? Quelles sont les perspectives d'avenir du langage ?
JetBrains fait un état des lieux de son écosystème

Le , par Stéphane le calme

153PARTAGES

9  0 
JetBrains propose GoLand à l'intention des développeurs Go, un langage de programmation compilé et concurrent inspiré de C et Pascal. Développé par Google, Go veut faciliter et accélérer la programmation à grande échelle : en raison de sa simplicité il est donc concevable de l'utiliser aussi bien pour écrire des applications, des scripts ou de grands systèmes. Cette simplicité est nécessaire aussi pour assurer la maintenance et l'évolution des programmes sur plusieurs générations de développeurs.

S'il vise aussi la rapidité d'exécution, indispensable à la programmation système, il considère le multithreading comme le moyen le plus robuste d'assurer sur les processeurs actuels cette rapidité9 tout en rendant la maintenance facile par séparation de tâches simples exécutées indépendamment afin d'éviter de créer des « usines à gaz ». Cette conception permet également le fonctionnement sans réécriture sur des architectures multicœurs en exploitant immédiatement l'augmentation de puissance correspondante.

Le langage Go figure en bonne place dans la liste des langages de programmation populaires utilisés actuellement. Si sa communauté l'apprécie entre autres pour sa rapidité et son efficacité, JetBrains a voulu creuser un peu plus. C'est dans ce contexte que Florin Pățan, Developer Advocate pour GoLand, a partagé son point de vue sur les résultats que l'éditeur a obtenus sur la situation actuelle de Go.

Où sont les développeurs Go ?

Environ 1,1 million de développeurs Go

Environ 1,1 million de développeurs professionnels utilisent Go comme langage principal. Mais ce chiffre est probablement plus proche des 2,7 millions si l’on inclut les développeurs professionnels qui utilisent principalement d’autres langages de programmation, mais qui font aussi un peu de Go en parallèle.

En terme de distribution au niveau mondial, c’est en Asie que l’on trouve le plus grand nombre de développeurs Go et 570 000 d’entre eux utilisent Go comme langage principal.

Analyse de l’expert

Je ne suis pas surpris des résultats concernant les régions qui développent le plus en Go. L’Asie compte un grand nombre d’utilisateurs de Go et je pense qu’une grande partie de ces développeurs proviennent de grandes entreprises qui emploient beaucoup de développeurs, comme Tencent, Alibaba et Huawei. Ces entreprises ont en général un grand nombre de développeurs.


Le graphique ci-dessous montre la répartition des développeurs de chaque pays utilisant Go comme principal langage (les répondants pouvaient choisir jusqu’à 3 langages principaux) interrogés dans le cadre de l’Enquête sur l’Écosystème des Développeurs 2020. La Chine présente la plus forte concentration, avec 16 % de ses développeurs écrivant en Go.

Analyse de l’expert

Je m’attendais à voir la Chine en tête de liste. En revanche, je pensais voir la Russie en deuxième position et les États-Unis un peu plus haut, dans le top 5.

La place de la Chine en tête de liste est probablement simplement liée au grand nombre de développeurs qui y vivent. Et beaucoup des entreprises que je connais, comme PingCAP, Tencent et Huawei, emploient un grand nombre de développeurs pour construire des outils internes, des infrastructures et des services de backend, qui sont combinés avec des microservices. C’est un élément d’explication clé.

Je sais qu’en Russie, les communautés Go sont vraiment géniales, il n’est donc pas étonnant que Go soit aussi un langage populaire là-bas. Je suis intrigué par les résultats pour le Japon et l’Ukraine, car je ne m’attendais pas à ce qu’ils se trouvent aussi haut dans le classement des utilisateurs de Go, alors que je pensais au contraire que l’Allemagne et l’Inde seraient mieux placées. Je me souviens qu’il y a quatre ou cinq ans, lorsque j’étais à Berlin, Go était utilisé dans presque toutes les startups que je connaissais.


Utilisation de Go par les développeurs professionnels

Perspectives d’avenir du langage

Go reste le 10e langage utilisé à titre principal par les développeurs professionnels, avec une part d’environ 9 % selon l’Enquête sur l’Écosystème des Développeurs 2020.

Analyse de l’expert

Je pense que Go est toujours en croissance. J’ai pu constater que généralement, les gens ne commencent pas dans la programmation avec Go comme premier langage, mais vont plutôt migrer vers Go après avoir commencé avec d’autres langages comme PHP ou Ruby, mais surtout C++ et C#.

L’avantage de Go par rapport à PHP serait la sécurité des types, Go étant un langage à typage statique, alors que PHP est dynamique. Cela se traduit par le fait que le compilateur effectue la majeure partie du travail pour s’assurer que le code que vous avez écrit pourra être compilé et fonctionner sans problème au moment de l’exécution. L’avantage de Go par rapport à C++ est la simplicité. Avec Go, tout est assez simple.

L’une des particularités de Go est la vitesse qu’il intègre, tant pour l’écriture du code que pour son exécution. En général, avec Go, vous avez une performance de 5 à 10 fois plus élevée sans avoir à effectuer d’optimisations particulières, ce qui constitue un avantage important en terme de productivité pour les entreprises. C’est aussi un langage simple, facile à comprendre, et il est facile de remplacer les microservices dans les projets existants.

Une grande partie des outils d’infrastructure informatique comme Kubernetes, Docker et Vault, pour ne citer que les plus importants, sont conçus à l’aide de Go. Ainsi, bien que Java soit largement utilisé dans de nombreuses entreprises, elles ont aussi souvent une équipe Go, en particulier pour la maintenance et les correctifs de tels projets. C’est probablement l’une des autres raisons pour lesquelles l’adoption de Go continue à augmenter. Plus la technologie est utilisée dans des infrastructures et des déploiements courants, plus Go se développera. Je pense donc que de plus en plus de gens vont commencer à utiliser Go dans les prochaines années et que nous verrons Go atteindre une part d’utilisation de 15 à 20 % ; surtout si l’on considère la question de l’enquête sur l’écosystème des développeurs « Prévoyez-vous d’adopter/migrer vers d’autres langages au cours des 12 prochains mois ? Si oui, vers lesquels ? » où 13 % des personnes interrogées ont répondu Go.


Types de logiciels développés avec Go

Les services Web sont le domaine dans lequel Go est le utilisé, avec une part de 36 % selon les résultats de l’Enquête sur l’Écosystème des Développeurs 2020.

Analyse de l’expert

Pour les services Web, je pense que la tâche principale est de créer des serveurs d’API relativement rapides. Ils n’ont pas nécessairement besoin d’un framework, donc vous pouvez être rapidement opérationnel avec Go.

Je ne crois pas que ce graphique changera beaucoup à l’avenir. Je pense que les services Web vont gagner en popularité tout simplement, car il est facile de les mettre en place avec Go.

Pour les utilitaires, je vois une histoire similaire, car il est assez facile d’écrire une application rapide qui vous permet de traiter un grand volume de données et d’écrire de petites applications utilitaires ou des tâches ponctuelles qui nécessitent beaucoup de puissance. Il est également logique que l’on retrouve les infrastructures informatiques. Plus les gens adoptent Docker et Kubernetes, plus ils viendront à Go, simplement parce qu’ils sont tous deux écrits en Go. Tout type de travail de DevOps peut particulièrement bénéficier de Go, car il offre sécurité de type et rapidité. Il est assez facile d’interagir avec le côté Cloud de l’infrastructure (Google, Amazon et Azure, entre autres), car ils disposent tous de bons SDK. Je pense que nous pouvons également nous attendre à un petit boost au niveau des bibliothèques/frameworks dans les deux prochaines années, lorsque les génériques arriveront.

Logiciels système – Je pense que les résultats de Go vont commencer à décliner, car de plus en plus de gens commencent à utiliser des langages comme Rust pour les logiciels système. Il en va de même pour les bases de données. Il s’agira donc probablement d’un domaine de niche à l’avenir, autour des 6 %. Outils de programmation – Je suis surpris que cela figure en tête de liste, je suis curieux de savoir quels outils de programmation sont réalisés en Go.


Principaux secteurs utilisant Go

Selon l’Enquête sur l’Écosystème des Développeurs 2020, les programmeurs Go travaillent principalement dans le secteur des services informatiques, suivis par la finance et les FinTech, le Cloud Computing ou les plateformes Cloud,.

Analyse de l’expert

Finance et FinTech. C’est quelque chose que je m’attendais à voir, car je sais que de nombreuses banques ont été lancées avec Go ou utilisent largement Go pour leur infrastructure. Par exemple, Monzo, au Royaume-Uni, a créé l’ensemble de sa banque avec Go. Le Cloud computing et les plateformes font également sens, car cela est naturel avec les types d’applications qui sont écrites en Go.

Le place du secteur du développement mobile est plus inattendue. Go n’a pas vraiment un bon historique en matière de développement mobile. En fait, je m’attendrais à ce que les gens fassent leurs services Web ou leurs backends pour applications mobiles avec Go, mais c’est à peu près tout.

Il y a quelques secteurs dans lesquels je ne pense pas que l’utilisation de Go augmentera dans un avenir proche. Par exemple, tout ce qui est basé sur le machine learning, car ce domaine reste largement dominé par Python. Il y a bien des tentatives pour rendre le machine learning en Go populaire et pour l’améliorer, mais je pense que l’on n’obtiendra pas de résultats avant plusieurs années au moins.


Outils Go

Gestionnaires de paquets

Go Modules est le gestionnaire de paquets le plus populaire parmi les développeurs Go. Son adoption est passée de 41 % en 2019 à 82 % en 2020 selon l’Enquête sur l’Écosystème des Développeurs 2020.

Analyse de l’expert

Je pense qu’à un moment donné, nous devrons arrêter de poser cette question, tout simplement parce que Go Modules est appelé à devenir le modèle standard par défaut et que l’équipe Go veut également abandonner GOPATH. Tout le reste sera probablement bientôt devenu obsolète.


Routeurs Go

Gorilla / Mux et la bibliothèque standard restent les routeurs Go les plus utilisés depuis 2018 selon les Enquêtes sur l’Écosystème des Développeurs réalisées en 2020 et 2018.

Analyse de l’expert

La bibliothèque standard est aussi populaire, car lorsque vous allez sur Reddit, Slack ou autre, les gens vous recommandent généralement de vous en tenir à la bibliothèque standard et de n’utiliser autre chose que si vous le souhaitez vraiment. J’utilise gorilla/mux, simplement parce qu’il y a un peu plus d’abstraction en plus de la bibliothèque standard sans trop de perte de performance. C’est aussi probablement parce que c’est l’une des bibliothèques les plus proches de la bibliothèque standard et qu’elle facilite l’écriture des serveurs. Dans l’ensemble, cette répartition est assez prévisible.


Top 5 des Frameworks Web

L’utilisation de Gin a presque doublé depuis 2018, tandis que le reste des frameworks Web est resté largement stable, selon les Enquêtes sur l’Écosystème des Développeurs de 2020 et 2018.

Analyse de l’expert

Gin est certainement aussi populaire pour le Web parce que c’est l’un des frameworks les plus rapides et qu’il reçoit également de bonnes recommandations. C’est aussi l’un des plus anciens frameworks. Il y a donc beaucoup de ressources disponibles et de nombreux utilisateurs expérimentés qui le recommandent.


Frameworks de tests

La proportion de développeurs utilisant les tests intégrés est passée de 64 % en 2018 à 44 % en 2020, tandis que l’utilisation d’autres frameworks de tests a légèrement augmenté.

Analyse de l’expert

L’utilisation des tests intégrés est assez élevée, car la bibliothèque standard de Go dispose d’une très bonne bibliothèque de tests prêts à l’emploi.

Pour autant, elle a diminué, car de plus en plus de gens adoptent Go après avoir utilisé d’autres langages, comme PHP par exemple, et cherchent à reproduire les habitudes de tests qu’ils ont déjà.


Source : JetBrains

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

Avatar de emilie77
Membre éclairé https://www.developpez.com
Le 08/02/2021 à 11:20
Pour moi, je fait des app desktop avec Go e Fyne.io
1  0 
Avatar de psancho
Membre à l'essai https://www.developpez.com
Le 09/02/2021 à 9:36
Go est le candidat parfait pour remplacer nodeJs:
* compilé, donc faible emprunte mémoire et CPU
* multithread
* des promesses sans les Promise
* courbe d'apprentissage très rapide
La compilation reste un avantage face aux langages à VM (Java, C#) ou JIT (JS, PHP, Python)
Bref, un langage pour du service web comme pour des appli standalone.
Par contre, il n'a pas la prétention de remplacer C ou Rust, bien plus rapides.

C'est aussi je crois le langage de base pour le dev de Docker.
1  0 
Avatar de abriotde
Membre chevronné https://www.developpez.com
Le 08/02/2021 à 14:21
Go est un langage récent, et je me suis toujours demandé quel langage il remplace au final (Je veux dire par là, quel langage souffre de ce développement de Go). De mon impression, je dirais Java principalement (C++ ou Python dans une moindre mesure).
0  0 
Avatar de coder_changer_vie
Membre régulier https://www.developpez.com
Le 08/02/2021 à 18:21
je n'ai pas encore regardé Go, mais il semble que les génériques ne soient pas présent, et l'article fait l'éloge du remplacement de C# et Java par Go... oui pour rapidité et pas besoin d'emmener un environnement d'exécution lourd (corrigez-moi si besoin) mais bon, quand on lit entre les lignes : Go est une bonne idée pour des traitement lourds dans les mircoservices qui manquent de performance, faut-il maintenant écrire toute la logique métier d'un applicatif (DDD) en Go... je m'interroge...
0  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 08/02/2021 à 20:50
@abriotde, il pourrait remplacer Java, C#, Python, mais pas C, C++, Rust (langages sans GC). Pour ce qui est de la "rapidité" de Go, c'est dans l'ordre de Java et C#, tu gagnes surtout en réduction de la consommation mémoire.

@coder_changer_vie, les generics sont toujours prévus, et oui pas de VM à installer contrairement à Java et C#. Tu n'as peut-être pas d'héritage à plusieurs niveau, mais ce n'est pas si dérangeant. Ce qui m'a le plus dérangé c'est le fait de ne pas préciser explicitement l'interface que l'on implémente pour la lecture du code.
0  0 
Avatar de Renaud21
Membre à l'essai https://www.developpez.com
Le 09/02/2021 à 10:38
Bonjour,

J'ai fait beaucoup de JAVA pendant un dizaine d'année et actuellement je suis dans une boîte où l'on fait du Go entre autres.
Et je dois dire que Go et son écosystème apporte une légèreté de mise en oeuvre très appréciable par rapport au JAVA.

Je ne parlerai pas des différences de ces deux langages (générique ou pas, composition vs héritage, routine vs thread, annotation ou pas, gestion des erreurs, ...).
Je pense ces deux langages permettent de créer des traitements serveurs complexes (réseau, base de données, traitements de données, parrallélisme, ...)

Par contre, je vois des avantages à utiliser Go :

- facilité de création/déploiement d'exécutable multi-plateforme : `go build` et roule ma poule (un exécutable qui embarque ses dépéndances)
- pas de machine virtuelle
- bonne performance
- pas de gestion (lourde) de serveur d'application, de paramétrage de JVM, de gestion des classpath, de packaging complexe, ...

Donc en gros pour moi, sa simplicité et sa légèrete, pour la création d'applicatif, permettent d'être globalement plus productif tout en s'appuyant sur des performances solides et une base de code simple.
Je dirais qu'avec Go, ton temps est utilisé pour coder et apporter de la valeur métier et moins à paramétrer, configurer, installer, administrer.
0  0 
Avatar de Madmac
Membre expérimenté https://www.developpez.com
Le 10/02/2021 à 21:50
Sans grand intérêt quand on programme déjà en Julia, qui en général est plus rapide. Et plus rapide à programmer.

https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/julia.html
0  0 
Avatar de Madmac
Membre expérimenté https://www.developpez.com
Le 10/02/2021 à 22:05
Citation Envoyé par Gugelhupf Voir le message
@abriotde, il pourrait remplacer Java, C#, Python, mais pas C, C++, Rust (langages sans GC). Pour ce qui est de la "rapidité" de Go, c'est dans l'ordre de Java et C#, tu gagnes surtout en réduction de la consommation mémoire.

@coder_changer_vie, les generics sont toujours prévus, et oui pas de VM à installer contrairement à Java et C#. Tu n'as peut-être pas d'héritage à plusieurs niveau, mais ce n'est pas si dérangeant. Ce qui m'a le plus dérangé c'est le fait de ne pas préciser explicitement l'interface que l'on implémente pour la lecture du code.
À moyen terme, les VM vont être avantagé. Car maintenant quand tu compile,tu dois te demander "Pour un CPU à combien de coeurs?"
0  0 
Avatar de redcurve
Membre extrêmement actif https://www.developpez.com
Le 11/02/2021 à 0:21
Citation Envoyé par coder_changer_vie Voir le message
je n'ai pas encore regardé Go, mais il semble que les génériques ne soient pas présent, et l'article fait l'éloge du remplacement de C# et Java par Go... oui pour rapidité et pas besoin d'emmener un environnement d'exécution lourd (corrigez-moi si besoin) mais bon, quand on lit entre les lignes : Go est une bonne idée pour des traitement lourds dans les mircoservices qui manquent de performance, faut-il maintenant écrire toute la logique métier d'un applicatif (DDD) en Go... je m'interroge...
Go n'est même pas plus rapide que dotnet core et le manque de générique ou plus basiquement de métadata amène à devoir écrire des horreurs.
0  0 
Avatar de redcurve
Membre extrêmement actif https://www.developpez.com
Le 11/02/2021 à 0:23
Citation Envoyé par Renaud21 Voir le message
Bonjour,

J'ai fait beaucoup de JAVA pendant un dizaine d'année et actuellement je suis dans une boîte où l'on fait du Go entre autres.
Et je dois dire que Go et son écosystème apporte une légèreté de mise en oeuvre très appréciable par rapport au JAVA.

Je ne parlerai pas des différences de ces deux langages (générique ou pas, composition vs héritage, routine vs thread, annotation ou pas, gestion des erreurs, ...).
Je pense ces deux langages permettent de créer des traitements serveurs complexes (réseau, base de données, traitements de données, parrallélisme, ...)

Par contre, je vois des avantages à utiliser Go :

- facilité de création/déploiement d'exécutable multi-plateforme : `go build` et roule ma poule (un exécutable qui embarque ses dépéndances)
- pas de machine virtuelle
- bonne performance
- pas de gestion (lourde) de serveur d'application, de paramétrage de JVM, de gestion des classpath, de packaging complexe, ...

Donc en gros pour moi, sa simplicité et sa légèrete, pour la création d'applicatif, permettent d'être globalement plus productif tout en s'appuyant sur des performances solides et une base de code simple.
Je dirais qu'avec Go, ton temps est utilisé pour coder et apporter de la valeur métier et moins à paramétrer, configurer, installer, administrer.
pas de gestion (lourde) de serveur d'application, de paramétrage de JVM, de gestion des classpath, de packaging complexe, ...
Non mais ce bordel dans Java sans déconner quoi.
0  0