Selon un sondage réalisé en 2019 par Stack Overflow, le langage Rust est le préféré des développeurs, et le classement semestriel de Redmonk l’a classé parmi les 20 meilleurs langages de programmation (à la 21e place exactement). Pourtant, les utilisateurs de Rust « trouvent le langage difficile à maîtriser et ne parviennent pas toujours à tirer parti de la qualité reconnue de ses fonctions de sécurité et de correction de mémoire ». Alors, pourquoi un langage, qui a la réputation d’être un peu difficile à apprendre, a-t-il autant de succès ? Comme l’explique Sam Scott, CTO d'Oso, il semble que, d’après les conversations qu’il a pu avoir avec les développeurs, la réponse à cette question se résume à l'idée que « l’environnement de programmation système de Rust comporte des garde-fous, dont l’un d’eux est sa communauté particulièrement accueillante ».

Une programmation système bien encadrée

Tous les développeurs ne s’aventurent pas dans la programmation système. C’est le cas par exemple des développeurs d'applications qui évitent de s’approcher trop près du hardware sous-jacent. Ils n'ont probablement pas non plus besoin de construire des plates-formes sur lesquelles d'autres logiciels fonctionneront, un élément central de la programmation système. Pour les développeurs qui travaillent avec des langages de programmation de niveau inférieur comme C ou C++, Rust a été une révélation. Et depuis la première version stable de Rust livrée en 2015, le langage s’est de plus en plus amélioré. Selon le développeur David Barsky, Rust présente plusieurs avantages qui expliquent son succès. D’abord, c’est un langage performant. « Rust peut remplacer le C/C++ dans les domaines où il prospère habituellement. Par exemple, dans les services réseau sensibles au temps de latence, Rust n’ayant besoin ni de runtime, ni de ramasse-miettes, les temps de latence sont quasi inexistants ».

Ensuite, c’est un langage fiable. Son système de typage et de modèle d’ownership - un ramasse-miettes statique et un compilateur - permet d’éliminer des variétés complètes de bogues, acceptés comme « normaux » en Python, Java, et C++. Enfin, il permet aux développeurs d’être très productifs. « Cargo, l'outil de compilation et le gestionnaire de paquets, est l'un des meilleurs systèmes de compilation et gestionnaires de paquets que j'ai utilisés », a déclaré David Barsky. Rust est également livré avec une excellente documentation intégrée et des tests d'intégration, de documentation et d'unité de grande qualité.

L'expérience de David Barsky semble assez similaire à celle de Sam Scott. Familier des langages de programmation de plus haut niveau (Java, Ruby on Rails), ce dernier raconte que son expérience avec le langage C, était loin d'être agréable : « C’était horrible car je me heurtais constamment à des problèmes de mémoire, à des défauts de segmentation, etc. Et j'avais plus ou moins l'impression de me battre avec le code tout le temps ». Comparativement, la programmation système avec Rust était bien encadrée. Dès que la version 1.0 a été livré, Sam Scott a testé Rust : « J'ai eu l'impression d’entrer dans une programmation système avec des garde-fous. Rust offrait tout ce dont j'avais besoin pour programmer des systèmes de bas niveau, mais avec beaucoup de fonctions pour déboguer et sécuriser le code - comme le modèle d’ownership et le compilateur, et plus tard, l’arrivée de Clippy (un outil d’analyse statique de code source, également appelé linter) ». Selon le CTO, Rust ressemblait aussi beaucoup à la programmation fonctionnelle et orientée objet. « J’avais vraiment l’impression que Rust cadrait avec mon modèle mental de construction de systèmes », a-t-il ajouté.

Co-fondateur d'Oso avec Graham Neray, un ancien de MongoDB, Sam Scott ne pouvait éviter de plonger dans la programmation de niveau inférieur. La startup qui affiche pour objectif de « rendre la sécurité de l'infrastructure back-end invisible pour les développeurs et simple pour les opérationnels », a besoin de la performance d’un langage de programmation système. « Nous ne pouvons pas utiliser un langage qui a besoin d’un ramasse-miettes, comme Go, parce que la performance ne serait pas assez cohérente pour ce que nous faisons, puisque nous intervenons sur le chemin critique du trafic client », a déclaré le CTO.

Mais tout cela serait formidable s’il n’y avait la difficulté à trouver des développeurs talentueux capables de maîtriser ce langage relativement nouveau. Heureusement, une autre caractéristique de Rust, c’est que l’apprentissage du langage est soutenu et encouragé par une communauté très accueillante.

Programmeurs Rust « wanted »

Pour apprendre quelque chose de nouveau, il est essentiel d'avoir autour de soi des gens prêts à vous aider. Et, c’est là que Rust rayonne. Comme le dit David Barsky, « la communauté Rust regorge de gens passionnés, gentils et intelligents, et son code de conduite est très strict, ce qui signifie qu'elle ne tolère pas les comportements grossiers ou le harcèlement ». Le développeur signale que la communauté Rust compte l'une des plus fortes concentrations de personnes LGBTQA, jamais rencontré dans une communauté technologique. Et selon Sam Scott, la qualité de cette communauté peut permettre à des développeurs d’apprendre Rust en quelques mois. Rust « demande un certain changement d'état d'esprit », a-t-il ajouté. « Il faut faire plus d'efforts pour raisonner sur les types et les durées de vie. Mais, après ça, le travail devient très gratifiant ». Pas étonnant, donc, qu’autant de développeurs adorent Rust. Le langage présente beaucoup d’avantages et l’accompagnement bienveillant de la communauté aide à en surmonter les inconvénients.