Atteignant la version 1.0 en 2015, Rust est un langage relativement nouveau qui a beaucoup à offrir. Les développeurs qui s'intéressent aux garanties de performance et de sécurité offertes par Rust se demandent s'il est possible d'utiliser Rust à la place de ce qu'ils utilisaient jusqu'à présent. Que se passerait-il si les grandes entreprises essayaient de l'utiliser dans leur environnement actuel ? Combien de temps faudrait-il aux développeurs pour apprendre le langage ? Une fois qu'ils l'auront appris, seront-ils productifs ?
Dans cet article, nous analyserons quelques données couvrant des années d'adoption précoce de Rust chez Google. Chez Google, nous avons constaté une augmentation de l'adoption de Rust, en particulier dans nos applications et plateformes grand public. En nous appuyant sur les plus de 1 000 développeurs de Google qui ont écrit et livré du code Rust dans le cadre de leur travail en 2022, nous allons nous attaquer de front à certaines rumeurs, en confirmant certains problèmes qui pourraient être améliorés et en partageant certaines découvertes éclairantes que nous avons faites en cours de route.
Nous tenons à remercier tout particulièrement l'un de nos principaux fournisseurs de formation, Ferrous Systems, qui nous a permis de commencer à adopter Rust chez Google. Nous souhaitons également mettre en avant de nouveaux supports de formation en libre-service appelés Comprehensive Rust 🦀 sur lesquels la communauté et nous-mêmes avons travaillé au cours des derniers trimestres.
Rumeur 1 : Rust prend plus de 6 mois à apprendre - Démenti !
Tous les participants à l'enquête sont des développeurs de logiciels professionnels (ou dans un domaine connexe), employés par Google. Bien que certains d'entre eux aient une expérience préalable de Rust (environ 13%), la plupart d'entre eux viennent de C/C++, Python, Java, Go, ou Dart.
D'après nos études, plus de 2/3 des répondants sont confiants dans leur capacité à contribuer à une base de code Rust en deux mois ou moins lorsqu'ils apprennent Rust. De plus, un tiers des personnes interrogées deviennent aussi productives en utilisant Rust que d'autres langages en deux mois ou moins. En quatre mois, ce chiffre est passé à plus de 50 %. De manière anecdotique, ces chiffres correspondent au temps nécessaire aux développeurs pour adopter d'autres langages, à l'intérieur comme à l'extérieur de Google.
Dans l'ensemble, nous n'avons vu aucune donnée indiquant qu'il y a une pénalité de productivité pour Rust par rapport à n'importe quel autre langage que ces développeurs ont utilisé précédemment chez Google. Les étudiants qui suivent le cours Comprehensive Rust 🦀 le confirment : les questions posées le deuxième et le troisième jour montrent que les développeurs de logiciels expérimentés peuvent se familiariser avec Rust en très peu de temps.
Rumeur 2 : Le compilateur Rust n'est pas aussi rapide que les gens le souhaiteraient - Confirmé !
La lenteur du compilateur est de loin la première difficulté rencontrée par les développeurs lors de l'utilisation de Rust, avec seulement un peu plus de 40% des personnes interrogées qui trouvent la vitesse acceptable.
Il y a déjà un effort fantastique de la part de la communauté pour améliorer et suivre les performances de Rustc. Cet effort est soutenu par des bénévoles et plusieurs entreprises (dont Google), et nous sommes ravis de voir que des développeurs clés travaillent dans ce domaine, mais il est clair qu'un soutien supplémentaire continu et potentiellement croissant serait bénéfique.
Rumeur 3 : Le code non sécurisé et l'interopérabilité sont toujours les plus grands défis - Démenti !
Les trois domaines les plus difficiles de Rust pour les développeurs actuels de Google sont les suivants :
- Macros
- Propriété et emprunt
- Programmation asynchrone
L'écriture de code non sécurisé et la gestion de l'interopérabilité C/C++ ont été citées comme des choses que les développeurs de Google ont rencontrées, mais ne sont pas des défis majeurs. Ces trois autres domaines sont des endroits où l'équipe de conception du langage Rust a investi dans l'aplanissement de la courbe d'apprentissage en général ainsi que dans l'évolution continue. Les résultats de notre enquête interne sont tout à fait d'accord avec ces domaines d'investissement.
Rumeur 4 : Rust a des messages d'erreur de compilateur étonnants - Confirmé !
Rust est généralement considéré comme ayant certains des messages d'erreur les plus utiles dans l'espace compilateur, et cela s'est confirmé dans cette enquête également. Seuls 9 % des répondants ne sont pas satisfaits de la qualité des informations de diagnostic et de débogage en Rust. Les commentaires des participants à Comprehensive Rust 🦀 vont dans le même sens : les gens sont étonnés par les messages du compilateur. Au début, c'est une surprise - les gens sont habitués à ignorer les grosses erreurs du compilateur, mais après s'être habitués, les gens l'adorent.
Voici des extraits d'un exercice que certains Googlers internes ont fait pour pratiquer Rust. (résoudre Advent of Code 2021 en Rust)
Au cinquième jour de l'exercice, nous devons effectuer une recherche d'entrées dans un tableau. L'erreur ci-dessous ne détecte pas seulement que notre filtrage sur le résultat manquait un cas, mais suggère également une solution.
Le jour 11, nous devons vérifier si un élément se trouve à l'intérieur des limites d'une grille. L'avertissement Rust ci-dessous détecte que nous avons une comparaison redondante due au fait que les types sont non signés, et suggère du code qui pourrait être supprimé.
Rumeur 5 : Le code Rust est de haute qualité - Confirmé !
Les personnes interrogées ont déclaré que la qualité du code Rust était élevée - 77 % des développeurs étaient satisfaits de la qualité du code Rust. En fait, lorsqu'on leur a demandé de comparer s'ils pensaient que le code Rust était plus correct que le code qu'ils écrivent dans d'autres langages, une écrasante majorité de 85% des répondants sont convaincus que leur code Rust est correct.
Et il n'est pas seulement correct, il est aussi facile à réviser. Plus de la moitié des personnes interrogées affirment que le code Rust est incroyablement facile à réviser. En tant que responsable de l'ingénierie, ce résultat est, à bien des égards, au moins aussi intéressant pour moi que les résultats relatifs à la création de code, car la révision de code représente une part au moins aussi importante du rôle d'un ingénieur logiciel professionnel que la création de code.
Comme Google et d'autres l'ont noté, la satisfaction et la productivité des développeurs sont corrélées à la fois à la qualité du code et au temps nécessaire pour obtenir une révision du code. Si Rust n'est pas seulement meilleur pour écrire du code de qualité, mais aussi meilleur pour obtenir ce code, c'est un ensemble de raisons convaincantes, au-delà même de la performance et de la sécurité de la mémoire, pour que les entreprises l'évaluent et envisagent de l'adopter.
Regarder vers l'avenir
Bien que plus de mille développeurs constituent un bon échantillon d'ingénieurs, nous espérons que l'adoption se poursuivra et qu'une future enquête inclura beaucoup plus de cas d'utilisation. En outre, bien que de nombreux développeurs interrogés aient rejoint des équipes sans expérience Rust, cette population compte plus d'utilisateurs précoces enthousiastes que nous ne l'aurions souhaité dans le cadre d'une enquête plus large. Restez à l'écoute l'année prochaine pour une nouvelle mise à jour !
Source : Article de Lars Bergstrom et Kathy Brennan sur Google Open Source
Et vous ?
Selon vous, cette recherche est-elle crédible ou pertinente ?
Quel est votre avis sur le sujet ?
Voir aussi :
Zig, le langage de programmation compilé, inspiré de Rust et conçu pour concurrencer le C, serait plus sûr et plus rapide que Rust,
Un avis de Zack Radisic, de l'université de Toronto
C-rusted : les avantages de Rust, en C sans les inconvénients,
Une analyse des trois chercheurs de l'Université de Parme en Italie
Le langage de programmation Rust gagne en popularité parmi les développeurs et fait son entrée dans le top 20, selon Tiobe.
Python, Java, C et C++ s'accaparent à eux seuls de 55% de parts de marché