Visuel d'interview avec la photo de Thomas Barusseau, Lead Developer chez theTribe
Expertise

Go / Rust, quelles sont les nouveautés ?

Publié le : 23 février 2021
Temps de lecture : 3 minutes

Go (également connu sous le nom de Golang) et Rust sont deux langages qui sont souvent comparés l’un à l’autre. Relativement jeunes, ces langages ne cessent d’évoluer et de gagner en popularité auprès des développeurs et des entreprises. Explications avec Thomas Barusseau, Lead Developer chez theTribe.

Go et Rust ont respectivement été créés par Google et Mozilla il y a une dizaine d’années. Où en sont-ils aujourd’hui ?

Effectivement, Go et Rust ont à peu près le même âge. Go a pu bénéficier d’une traction évidente, étant un projet créé par des ingénieurs de Google et dont l’un des objectifs est la productivité du développeur. Rust a commencé comme un projet perso qui fut éventuellement sponsorisé puis abandonné par Mozilla. Ils partagent beaucoup de similarités (runtime safety, performance, modern paradigms) et les deux sont utilisés en production par de nombreuses entreprises.

Ces langages sont plébiscités dans les sondages par les développeurs qui apprécient leur simplicité et leur sécurité. Qu’en est-il des entreprises ? Les ont-elles adoptées dans leurs projets ?

La simplicité est vraie pour Go, et c’est d’ailleurs une de ses forces : la syntaxe est similaire au C (que tout le monde connaît), l’exécution de code concurrent est très simple (goroutines). On ne peut pas forcément en dire autant pour Rust, qui a une courbe d’apprentissage assez sévère.

Du côté des entreprises, on retrouve Google (surprise !), Uber, Twitch, Dailymotion qui utilisent Go. En ce qui concerne Rust, on peut trouver Microsoft, Dropbox, Discord, Yelp. Les deux langages ont clairement percé.

Pour quels types de projets ces langages sont-ils adaptés et avec quel écosystème de développement ?

C’est là la force de ces deux langages : ils peuvent être utilisés pour développer n’importe quel type de programme (même si je doute que Go puisse être utilisé sérieusement dans un contexte embarqué). En plus d’être « general purpose languages », ils ont tous deux des outils qui permettent d’éliminer les erreurs de runtime ou au moins de les déplacer à la compilation. 

Pour la gestion mémoire, Go se base sur un ramasse-miettes (garbage collector). Rust, lui, se démarque des autres langages en utilisant un modèle de « durée de vie » des ressources (lifetimes). Le compilateur traque la durée de vie de l’ensemble des ressources d’un programme, et sait exactement à quel moment dans un programme de la mémoire peut être libérée automatiquement. Donc pour répondre simplement : ces langages gagnent aussi en traction, car il n’y a pas de désavantage à les utiliser (à part peut-être un écosystème parfois décevant comparé à celui du JavaScript ou du Python).

Selon toi, quelle va être la tendance pour ces deux langages de programmation pour les 2-3 ans à venir ?

Je n’utilise malheureusement pas assez Go pour répondre à cette question ! En ce qui concerne Rust, je sais qu’il y a beaucoup de nouvelles features en cours de stabilisation, dont beaucoup qui gravitent autour des const generics. Rust offrant des outils qui diffèrent complètement de ce qu’on peut trouver dans la plupart des autres langages, la communauté travaille à se mettre d’accord sur la meilleure manière de gérer les GUI, ou bien la gestion d’erreur. Mais il faut dire que depuis la stabilisation d’async/await en novembre 2019, les développements du langage se sont calmés : on a à peu près tout ce qu’il faut pour faire tout et n’importe quoi, confortablement.

L’annonce par Google d’un Go 2 pour 2021 avec plus de stabilité risque-t-elle de changer la tendance ?

Je sais que les type parameters (generics) sont prévus en février 2022. Je n’utilise pas assez Go pour comprendre à quel point c’est important : le langage a été désigné volontairement sans génériques, pour des raisons de performance et de simplicité. Un programme ne peut jamais être trop stable : s’ils arrivent à tenir leurs promesses, ça ne pourra qu’être bénéfique pour l’écosystème et le langage.

Quel est l’intérêt pour une entreprise d’utiliser ces langages ?

Les entreprises ont tout intérêt à utiliser ces langages : on l’a vu avec l’adoption timide de Kotlin ou Scala, qui ont su s’imposer face au Java dans des entreprises qui l’utilisaient littéralement depuis des dizaines d’années.

Les développeurs (et les entreprises) veulent des outils modernes qui leur permettent d’être productifs et de s’exprimer librement. Les développeurs veulent des langages qui leur offrent des garanties fortes avant même l’exécution du programme. Les développeurs veulent des langages complets, qui leur permettent de facilement gérer les dépendances, le build, les tests. Si vous travaillez dans un domaine tel que le web pour lequel ces langages disposent d’un écosystème déjà vibrant : foncez !

Florent Lucas
Responsable Commercial & Marketing @thetribe