Jarrod Overson est un développeur Web qui a abandonné JavaScript pour se consacrer à Rust, un langage de programmation moderne et puissant qui permet de créer des applications WebAssembly. Dans un billet de blog, Overson fait part de son expérience de trois ans en utilisant Rust, en soulignant les différences entre les deux langages.
JavaScript est un langage interprété, dynamique et flexible, qui s’exécute dans le navigateur. Il est facile à apprendre et à utiliser, mais il peut aussi être source d’erreurs, de bugs et de problèmes de performance. JavaScript n’a pas de système de types ni de vérification d’emprunts, ce qui peut conduire à des comportements imprévisibles ou dangereux.
Les développeurs décrivent JavaScript comme un « langage léger, interprété, orienté objet avec des fonctions de première classe ». JavaScript est surtout connu comme le langage de script pour les pages web, mais il est également utilisé dans de nombreux environnements autres que les navigateurs, tels que node.js ou Apache CouchDB. Il s'agit d'un langage de script multiparadigme basé sur des prototypes, qui est dynamique et prend en charge les styles de programmation orientés objet, impératifs et fonctionnels.
D'autre part, Rust est décrit comme « un langage sûr, concurrent et pratique’. Rust est un langage de programmation de systèmes qui combine de solides garanties de correction à la compilation et des performances rapides. Il améliore les idées d'autres langages de systèmes comme le C++ en garantissant la sécurité de la mémoire (pas de plantage, pas de course aux données) et un contrôle complet du cycle de vie de la mémoire.
Rust est un langage compilé, statique et rigoureux, qui se compile en WebAssembly, un format binaire qui vise à rendre le web plus rapide et plus sûr. Il est difficile à apprendre et à maîtriser, mais il offre une grande sécurité, des performances élevées et une productivité accrue. Rust a un système de types riche et un vérificateur d’emprunts strict, ce qui garantit que le code est sans erreur et sans fuite de mémoire.
Overson montre comment Rust lui a permis de réaliser son projet principal, Wick, un framework d’application et un moteur d’exécution qui utilise WebAssembly comme système de modules de base. Il nous explique comment Rust lui a apporté plus d’expressivité, plus de contrôle et plus d’outils que JavaScript. Il nous dit aussi comment Rust l’a rendu plus attentif et plus rigoureux dans son code, même dans d’autres langages.
« Je suis un fervent partisan du développement piloté par les tests. Je me suis habitué aux tests dans des langages comme Java et JavaScript. J'ai commencé à écrire des tests en Rust comme je le ferais dans n'importe quel autre langage, mais je me suis rendu compte que j'écrivais des tests qui ne pouvaient pas échouer », déclare Overson. Selon lui, une fois que vous arrivez au point où vos tests peuvent s'exécuter - c'est-à-dire lorsque votre code Rust se compile – « Rust a pris en compte tellement d'erreurs que de nombreux cas de test courants deviennent inutiles. »
Rust, un langage puissant mais complexe
Le système de types de Rust a ses avantages et ses inconvénients. Gérer les types de Rust peut être un « cauchemar ». Les données et signatures de fonctions peuvent avoir des types génériques et des durées de vie génériques. Les contraintes peuvent avoir leurs propres types génériques et durées de vie. Parfois, le développeur aura plus de contraintes de type que de code réel.
Selon Overson, il est difficile de faire des progrès rapides lorsque vous devez modifier 14 définitions différentes avant de pouvoir faire un seul pas en avant. Modification pour tenir compte des commentaires externes : « Le problème n'est pas l'expressivité, mais l'absence de langage ou d'outil permettant de réduire la duplication. Il y a souvent des raisons d'avoir les mêmes contraintes ou de se référer aux mêmes listes génériques, mais il n'y a aucun moyen de se référer à une définition centrale. Je ne suis pas sûr qu'il devrait y en avoir un, mais cela ne change rien au fardeau de la duplication », dit-il.
L'ingénieur et développeur estime que Rust est un langage difficile à adopter, à apprendre et à utiliser. « Rust n’est pas parfait, loin de là. C’est un casse-tête pour gérer la mémoire et la performance, surtout avec le code asynchrone. Il y a des bibliothèques qui ne sont pas très fiables, et des outils de développement qui ne sont pas très pratiques. On part avec un handicap et on doit affronter beaucoup de défis. Si on arrive à les surmonter, on peut devancer tout le monde. »
Overson conclut en recommandant Rust à ceux qui sont prêts à relever le défi et à sortir de leur zone de confort. Il pense que Rust est un langage d’avenir, qui va révolutionner le développement web.
Source : Jarrod Overson's blog post
Quels sont les types de projets web pour lesquels vous recommanderiez Rust ou JavaScript ?
Quelles sont les bibliothèques ou les outils de développement que vous utilisez pour Rust et JavaScript ?
Comment évaluez-vous la performance, la sécurité et la productivité de vos applications web en Rust et en JavaScript ?
Voir aussi :
C++ vs Rust : une comparaison pratique de la vitesse de compilation et de test des deux langages de programmation, par Matthew Glazar, ingénieur en génie logiciel
La controverse autour de la politique de marque déposée de Rust a donné naissance au fork communautaire Crab Language, qui promet « toutes les fonctionnalités de mémoire sécurisée que vous aimez »
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é
De JavaScript à Rust : le retour d'expérience du développeur Web, Jarrod Overson,
Trois ans après
De JavaScript à Rust : le retour d'expérience du développeur Web, Jarrod Overson,
Trois ans après
Le , par Bruno
Une erreur dans cette actualité ? Signalez-nous-la !