Le langage Rust fête ses cinq ans
Le 18 mai 2020 à 09h17
2 min
Logiciel
Logiciel
La version 1.0 du langage, soutenu par Mozilla, est sortie en mai 2015. Il a parcouru depuis beaucoup de chemin. Open source, il est conçu avant tout pour le développement système, avec les performances du C et des caractériques de langages de plus haut niveau, comme Java ou C#.
Rust attire clairement l’attention depuis sa création. Mozilla l’utilise pour ses propres besoins. Dans Firefox, tous les nouveaux développement se font ainsi avec le langage. Par exemple, toute la modernisation du code intervenue depuis Quantum.
Microsoft s’y intéresse également de près. L’éditeur y a consacré une série de billets de blogs pour en expliquer les nombreux bienfaits, notant qu’avec son niveau de performances, il serait à même de convenir pour le développement de Windows, une partie des risques inhérents au C/C++étant éliminés avec Rust.
L’éditeur notait toutefois que le facteur temps était encore une barrière, entre autres soucis potentiels relevés. Rust est en route vers la maturité, et Microsoft (qui l’utilise quand même dans d’autres projets) semble surtout attendre que le temps fasse son œuvre. La firme a d’ailleurs publié il y a trois semaines son Rust/WinRT en préversion sur GitHub.
Mozilla fait de son côté le récapitulatif des principales améliorations portées au langage depuis cinq ans, et elles sont nombreuses. Le Rust semble promis à un brillant avenir, et le père de Firefox ne se prive pas pour rappeler qu’il a été élu « langage de développement le plus apprécié » ces quatre dernières années au classement Stack Overflow.
Le 18 mai 2020 à 09h17
Commentaires (24)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 18/05/2020 à 08h06
“les attributs de langages de plus haut niveau, comme le typage fort. ”
Au mieux, ça ne veut strictement rien dire. Au pire c’est une belle connerie.
Le 18/05/2020 à 08h12
s/de prêt/de près/g
Le 18/05/2020 à 08h23
Effectivement^^
La raison pour laquelle le Rust attire autant c’est qu’il allie performances du C avec sureté et sécurité by design. Avec le Rust va falloir y aller très fort pour arriver à avoir un leak de mémoire, le compilateur vous empêchera de faire de la merde pour que tout se passe comme prévu à l’exécution, et ça, c’est vraiment cool!
Le 18/05/2020 à 09h03
Le 18/05/2020 à 09h09
Le 18/05/2020 à 09h16
Il faut comprendre « attributs » littéralement, sans référence au sens qu’on lui donne dans les langages de programmation. Le choix du terme n’est du coup pas le plus heureux, mais ça a du sens (caractéristiques aurait peut-être été moins ambigü).
Le 18/05/2020 à 10h49
Mea culpa
Le 18/05/2020 à 11h02
Rust est pour l instant loin de tout remplacer. Les objets n existent pas. Il faut passer par des traits, struct qui alourdit le code et sa lisibilité.
J attend que le langage murisse en incorporant la notion d objet.
Le 18/05/2020 à 11h08
De ma petite expérience, le plus dur au début c’est d’arriver à faire quelque chose qui compile. Le temps d’acquérir les bon réflexes sur les messages d’erreur qui sont au final assez bien foutus (contrairement à ce que je pensais en les lisant la première fois) et cela va mieux après.
Le 18/05/2020 à 11h11
Vive le COBOL " />
====>[]
Oui dur le confinement " />" />
Le 18/05/2020 à 11h13
Je ne touche même plus une ligne de cobol ces temps-ci, je fais qu’avec sort et icetool. " />
edith : des utilitaires de tri et d’appariement de fichiers pour ceux qui ne connaissent pas. :-)
Le 18/05/2020 à 11h41
Tu vas attendre très très longtemps à mon avis. Il n’y justement pas d’object, ou pas d’héritage pour être plus précis, parce que justement ce n’est pas la joie. Les objects sont les structs et tu les définies avec les traits que tu peux composer comme tu le souhaites. Il y a tout un chapitre sur ce sujet dans le livre officiel:https://doc.rust-lang.org/stable/book/ch17-00-oop.html
Le 18/05/2020 à 11h52
Ce language est promis a un bel avenir par le simple fait que:
Le 18/05/2020 à 12h13
Je me suis remis un peu au COBOL. C’est vrai que c’était verbeux, ce truc. Rien que pour faire un Hello World, je vous raconte pas.
" />
Après, j’ai jamais bien compris l’intérêt d’un langage objet, car l’héritage d’interface suffit largement à faire le bonheur d’un développeur moyen. Et Rust le permet, donc moi ça me suffit.
Le 18/05/2020 à 12h50
Le 18/05/2020 à 14h49
ça tombe bien les objets sont la à la fois la solution à tous les problèmes en programmation et aussi la source de la plupart des problèmes aujourd’hui.
Rust pâlie au manque d’objet par une algèbre de types très poussée qui rappelle beaucoup F# (qui n’a pas de notion “d’objet” en tant que tel non plus, même si dans la réalité ils existent pour la compatibilité avec C#).
En échange de ça, tu as une visibilité incroyable sur la mutabilité de tes valeurs, il est quasiment impossible de ne pas trouver “mais qui donc a modifié cette put*n de propriété”.
Il faut bien aussi comprendre que le concept de “traits” et d’“impl” offre une bien plus grande souplesse que les “interfaces” avec qui on les compare souvent et que d’une part ils permettent d’appliquer beaucoup de patterns de la POO (avec un peu d’adaptation par ci par là) mais aussi des patterns de programmation nouveaux ou qui restent à découvrir.
Après Rust n’est pas parfait et mériterai probablement un peu de sucre syntaxique par ci par là mais pour un langage qui ne te cache rien (pas de GC, pas de runtime, la seule chose qui s’exécute c’est ce que tu as écrit) je le trouve incroyablement mature pour un langage de 5 ans seulement. Et je ne parle même pas de l’écosystème, de Cargo qui est une merveille de simplicité, de la documentation florissante …
Pour moi c’est vraiment l’espoir d’une “programmation raisonnable” dans le sens où c’est le seul langage à ce jour qui allie performance et simplicité (mais pas simplicité d’apprentissage, j’en convient, tellement il est difficile d’arrêter de raisonner en patterns objet).
Le 18/05/2020 à 15h24
Le 18/05/2020 à 15h45
Le 18/05/2020 à 16h02
Le 18/05/2020 à 16h35
Ah je ne savais pas pour le C concernant le noyau Linux. C’est dommage, bien que compréhensible. Bon ben redox OS alors ;)
Après le language n’a que 5 ans, voire moins si on considère seulement la version 2018. Je trouve juste qu’il y a du mouvement de vraiment bcp d’horizon, ce qui est plutôt cool.
Le 18/05/2020 à 19h42
Le 18/05/2020 à 22h22
J’ai commencé à lire le rust book fin de l’année dernière à mon rythme.
C’est de loin le langage que j’ai eu le plus de mal à apprendre, pas mal de retour parle d’une courbe d’apprentissage lente et je ne peux que confirmer.
Mais une fois qu’on commence à comprendre, c’est génial. J’adore l’opérateur match, très puissant. Les enum de rust sont aussi de loin les plus complets que j’ai rencontré, ils sont incroyables flexibles.
Le chainage des erreurs avec ? permet d’écrire du code de façon super efficace et tout traiter au même endroit, sans avoir de système d’exception.
Le choix de ne pas avoir mis de null mais uniquement des optionnels avec Some et None permet également d’éviter énormément d’erreur et force à traiter correctement les cas d’erreur.
Cargo, est un excellent outil, on retrouve sur un langage bas niveau la même facilité que dans les langages plus au niveau pour la gestion des dépendances : il suffit d’indiquer la dépendance dans le fichier cargo.toml et c’est partie !
Le système de propriété, d’emprunt et de durée de vie est complexe à comprendre en main, mais on comprend leur intérêt pour protéger la mémoire.
On retrouve déjà pas mal de bibliothèque pour les éléments de base.
Ah et il y a aussi le compilateur très strict, mais qui dans la plupart des cas donne un message d’erreur claire avec des exemples de résolution. Même s’il reste des cas à améliorer.
Bref, pleins de choses cool, j’en oublie encore surement. J’encourage les gens à l’essayer.
Encore quelques années pour que la maturité du langage augmente, j’espère qu’on verra des gros frameworks d’ici là, car il y a clairement le potentiel :)
Le 19/05/2020 à 10h21
La plupart de ces points (le “?”, pattern matching, “Some”) se retrouvent aussi dans les évolutions récentes d’autres languages, dans des variantes plus ou moins élaborées et efficaces (typescript, kotlin … même un peu java à son rythme), il y a une sorte de convergence générale vers plus de programmation fonctionnelle dans la dernière décennie. Sauf Go bien sûr qui repart de la préhistoire " />.
Le 19/05/2020 à 11h51