Même s’il existe déjà de très nombreux langages de pro­gram­ma­tion – tels que C++, Pascal et Java –, les pro­gram­meurs n’ont de cesse d’en dé­ve­lop­per. Ils re­cherchent tous davantage de sim­pli­cité, de sécurité ou de rapidité. Le langage de pro­gram­ma­tion Rust poursuit ces trois objectifs et rencontre donc un franc succès. Selon un sondage auprès des uti­li­sa­teurs de la pla­ter­forme de dé­ve­lop­peurs Stack Overflow, en 2019, Rust était le langage de pro­gram­ma­tion le plus apprécié.

Qu’est-ce que Rust ?

Le langage de pro­gram­ma­tion Rust a été créé en 2010 dans l’en­tre­prise Mozilla. Dans un premier temps, ce langage fut développé à titre de passe-temps par l’un des dé­ve­lop­peurs de l’en­tre­prise avant d’être utilisé pour dé­ve­lop­per un nouveau moteur de na­vi­ga­teur pour Firefox. Le projet est aujourd’hui en open source et est porté par une com­mu­nauté active même s’il est toujours financé par Mozilla.

Ce langage de pro­gram­ma­tion se situe entre des langages de bas niveau comme C et des langages très abstraits comme Java. Dans les faits, Rust est un langage destiné à la pro­gram­ma­tion de systèmes. Les langages de ce type per­met­tent de réaliser des systèmes d’ex­ploi­ta­tion ou des ap­pli­ca­tions étroi­te­ment liés à Windows, Linux ou macOS. Cependant, on utilise également Rust à un niveau nettement plus restreint pour pro­gram­mer des ap­pli­ca­tions Web.

Par­ti­cu­la­ri­tés de Rust

Par rapport à d’autres langages de pro­gram­ma­tion, le principal avantage de Rust réside dans sa sécurité qui est notamment obtenue grâce un trai­te­ment par­ti­cu­lier des erreurs. Si une erreur survient lors de la com­pi­la­tion et ne peut être corrigée, la célèbre macro « panic! » se déclenche. Elle permet d’arrêter le programme et fournit un message d’erreur, afin d’éviter tout dommage.

Par ailleurs, la gestion de la mémoire est con­si­dé­rée comme par­ti­cu­liè­re­ment sûre. En effet, Rust présente l’avantage de réussir à obtenir une « memory safety » sans « garbage collector ». Dans de nombreux langages de pro­gram­ma­tion, la mémoire a pendant des années été une faille appréciée par les hackers. Une mémoire pleine entraîne une erreur dans le système qui peut être exploitée par les hackers. Pour éviter cela, un « garbage collector » permet de supprimer les objets non utilisés dans la mémoire. Toutefois, celui-ci ralentit également l’exécution du code. Le com­pi­la­teur de Rust rend obsolète un tel « garbage collector ». Il vérifie dès la com­pi­la­tion si une erreur est sus­cep­tible de survenir dans la mémoire sans pour autant impacter la per­for­mance. Rust est un langage destiné à la pro­gram­ma­tion de systèmes à l’instar de C/C++ et fournit la même rapidité lors de l’exécution. Cette dernière est d’une part liée à l’absence de « garbage collector ». D’autre part, les « zero cost abs­trac­tions » per­met­tent une vitesse élevée pendant les temps de fonc­tion­ne­ment. Ce terme signifie que l’on peut pro­gram­mer de façon abstraite sans avoir à com­pro­mettre la per­for­mance pour obtenir ce confort.

De ce fait, Rust est un mélange entre des langages de pro­gram­ma­tion haut niveau et bas niveau. De façon similaire à C/C++, Rust est très proche du matériel – offrant ainsi une vitesse élevée –, mais permet une pro­gram­ma­tion re­la­ti­ve­ment facile à l’instar des langages haut niveau.

Enfin, novices comme pro­gram­meurs ex­pé­ri­men­tés pourront ra­pi­de­ment prendre leurs marques dans Rust. Dans son uti­li­sa­tion, ce langage se démarque peu de ses al­ter­na­tives les plus connues. Toutefois, la qualité de con­cep­tion des messages d’erreur constitue un avantage con­si­dé­rable. Alors que d’autres langages de pro­gram­ma­tion ne renvoient que des erreurs cryp­tiques, Rust fournit des in­for­ma­tions utiles et per­ti­nentes sur la façon de corriger l’erreur.

Conseil

Rust est l’un des langages de pro­gram­ma­tion très largement supportés par We­bAs­sem­bly. Par con­sé­quent, Rust est également utilisé pour dé­ve­lop­per des ap­pli­ca­tions rapides pour le Web.

La syntaxe de Rust à travers un exemple

De prime abord, la syntaxe de Rust ressemble fortement à celle de C ou C++, qui sont d’autres langages de pro­gram­ma­tion de système. Comme c’est souvent le cas pour de tels langages, Rust a également recours à des fonctions, des boucles, des requêtes, des cons­tantes et des variables. À l’instar de langages plus anciens, l’uti­li­sa­tion des pa­ren­thèses peut différer d’un cas à l’autre, mais le principe reste identique. Na­tu­rel­le­ment, Rust a également des par­ti­cu­la­ri­tés :

  • Les nouvelles fonctions sont définies avec la commande « fn ».
  • Ce langage fonc­tionne avec des macros ca­rac­té­ri­sées par un point d’ex­cla­ma­tion à la fin du terme.
  • Les variables peuvent être définies avec « let » ; pour pouvoir modifier les in­di­ca­tions, il convient d’autoriser ces chan­ge­ments de façon explicite avec « mut ».
  • Par ailleurs, Rust a une vision par­ti­cu­lière de l’ownership.

Dans la syntaxe Rust, on entend par « ownership » le lien entre une variable et sa valeur. Sa par­ti­cu­la­rité réside dans le fait qu’une valeur donnée peut uni­que­ment ap­par­te­nir à une seule variable. Une fois la valeur transmise, la variable n’est plus adres­sable :

fn main() {
    let hello = String::from("Hello, world!");
    let hello1 = hello;
    println!("{}", hello);
}

Ce code ne peut pas fonc­tion­ner tel quel : le contenu de « hello » a été transmis à « hello1 » et ne peut donc pas être appelé dans la macro. À la place, il est né­ces­saire d’intégrer la nouvelle variable dans la dernière commande ce qui permet d’obtenir le résultat recherché.

fn main() {
    let hello = String::from("Hello, world!");
    let hello1 = hello;
    println!("{}", hello1);
}
En résumé

Rust offre davantage de sécurité et de per­for­mance ainsi qu’une uti­li­sa­tion sim­pli­fiée. Ce langage de pro­gram­ma­tion ne sort pas com­plè­te­ment des sentiers battus et s’appuie sur ce que l’on connaît par exemple du C/C++ tout en offrant également de nouvelles fonc­tion­na­li­tés in­té­res­santes. En effet, apprendre ce langage n’a rien de complexe, en par­ti­cu­lier lorsque l’on connaît déjà d’autres langages de pro­gram­ma­tion.

Si vous souhaitez l’essayer, vous trouverez les bases dans notre tutoriel sur Rust.

Aller au menu principal