Présentation

Article interactif

1 - PROGRAMMATION MODULAIRE

  • 1.1 - Paquets et crates
  • 1.2 - Premiers éléments de syntaxe
  • 1.3 - Conventions typographiques et de nommage
  • 1.4 - Fonctions et macros
  • 1.5 - Modules et chemins
  • 1.6 - Premier exemple

2 - TYPES DE DONNÉES

3 - STRUCTURES DE CONTRÔLE

  • 3.1 - Alternative
  • 3.2 - Répétitives
  • 3.3 - Itérateurs

4 - MODÈLE DE MÉMOIRE : POSSESSION ET EMPRUNT

5 - STRUCTURES, MÉTHODES, TRAITS, GÉNÉRICITÉ

6 - FILTRAGE ET ÉNUMÉRATIONS

  • 6.1 - Filtrage avec match
  • 6.2 - Énumérations
  • 6.3 - Énumération Option

7 - PROGRAMMATION FONCTIONNELLE, FERMETURES

8 - S’AFFRANCHIR DE LA SÉCURITÉ : MODE UNSAFE

9 - PARALLÉLISME AVEC LES THREADS ET LES CANAUX

10 - CONCLUSION

Article de référence | Réf : H3098 v2

Programmation modulaire
Rust (langage de programmation)

Auteur(s) : Laurent BLOCH

Date de publication : 10 juin 2022

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Version en anglais En anglais

RÉSUMÉ

Le langage de programmation Rust permet l’écriture de logiciels de haute performance, par une conception proche du matériel et du système d’exploitation, comme le langage C. Il permet aussi la programmation parallèle, distribuée et en style fonctionnel. Rust procure une grande sûreté d’exécution grâce à un modèle de mémoire original et à l’imposition d’un typage fort. Le langage ne comporte pas d’environnement d'exécution(runtime), ce qui contribue à l’efficacité, en comparaison de langages comme Java. Le système de compilation Cargo facilite grandement la construction de logiciels complexes.

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

ABSTRACT

Rust Programming Language

The Rust programming language is intended to write high performance software, through a low-level, hardware-near, operating system-near design. From this perspective, Rust is quite similar to the C language. Rust may also enable parallel and distributed programming, as well as functional programming. In comparison with C, Rust provides heightened run-time security through an innovative memory management system and a mandatory strong typing system. Rust comes with no run-time environment, which contributes to higher efficiency, in comparison with languages like Java. Cargo, Rust's build system and package manager, is helpful to build large and complex software.

Auteur(s)

INTRODUCTION

Le langage de programmation Rust a été conçu en fonction de trois objectifs, qui sont la sécurité, la rapidité, et la programmation concurrente et parallèle :

  • la sécurité est obtenue par le typage des données, par le modèle de mémoire et par des règles précises de passage de paramètres entre fonctions (modèle par possession et emprunt de données) ;

  • la rapidité est obtenue par la proximité des objets du langage avec ceux de la machine, et par l’absence d’environnement d’exécution (runtime) à charger au démarrage ;

  • la programmation concurrente et parallèle est facilitée par des fonctions de traitement asynchrone, de partage de données entre tâches, de passage de messages et de rendez-vous qui permettent de programmer des tâches concurrentes ou parallèles sans utiliser directement les fonctions primitives du système d’exploitation.

La version préliminaire de Rust a été publiée en 2010 par la Fondation Mozilla, qui édite le navigateur Firefox ; initialement c’était un projet personnel (développé en OCaml) de Graydon Hoare, salarié de la fondation ; la première version stable est parue en 2015. C’est un logiciel libre développé avec la participation des utilisateurs. Le compilateur produit une représentation intermédiaire en code LLVM.

On peut présenter ce langage en disant qu’il combine les qualités de C et d’Ada. À C il emprunte l’essentiel de la syntaxe, avec ajout de formes proches de celle d’Ada, par exemple pour écrire (et compiler) séparément la spécification et l’implémentation d’une fonction. Comme C, Rust n’a pas d’environnement d’exécution (runtime), en particulier pas de glaneur de cellules (garbage collector, GC, ramasse-miettes, un système de gestion automatique de la mémoire) ; ses objets élémentaires restent proches de ceux de la machine, ce qui contribue à des performances prévisibles et qui peuvent approcher celles de l’assembleur. Rust procure également des constructions de plus haut niveau, comme des chaînes de caractères UTF-8.

Comme Ada, Rust met en œuvre un typage fort et contraignant, ce qui est parfois exigeant pour le programmeur, mais procure une grande sûreté de fonctionnement du programme une fois qu’il a été compilé avec succès. Comme Ada, Rust procure des fonctions qui permettent de programmer des tâches concurrentes ou parallèles de façon indépendante du système d’exploitation. Le langage procure également les tournures qui permettent l’écriture de code générique et le polymorphisme de données, toujours dans le respect du système de types. Les programmations en style fonctionnel et avec des objets sont aussi disponibles.

Ces caractéristiques de Rust en font un langage adapté à la programmation de fonctions du système d’exploitation et, à ce titre, il est maintenant accepté pour des contributions au noyau Linux. Mais il est aussi utilisé pour toutes sortes de projets de natures variées, comme les moteurs de rendu graphique et de parallélisme du navigateur Firefox, certaines parties du système de partage en ligne Discord, certaines parties des plateformes infonuagiques Azure de Microsoft et AWS d’Amazon.

Le langage Rust standard ne dispose pas de fonctions primitives pour les applications temps réel, mais il existe un grand nombre de contributions externes qui procurent les fonctions adéquates, ainsi que des adaptateurs pour embarquer du code Rust à bord des principaux microcontrôleurs du marché.

Le compilateur Rust est livré avec un système de compilation intégré, Cargo, qui facilite grandement la construction de logiciels complexes et de grande taille, et qui fournit une aide précieuse au programmeur par des messages d’erreur circonstanciés, qui suggèrent souvent la rectification qui corrigera l’erreur.

Cet article fait plusieurs références au livre (accessible librement en ligne) de Steve Klabnik et Carol Nichols , à sa traduction en français (officieuse et partielle) , ainsi qu’au manuel du site officiel du langage . Pour une comparaison fructueuse avec d’autres langages on pourra également consulter les articles de nos collègues consacrés à C [H 3 068] et à Ada [H 2 280]. Le site de l’auteur comporte quelques exemples de programmes complets. Pour la programmation concurrente et parallèle mentionnons ici un guide général et un autre plus spécialisé pour les systèmes embarqués .

Cet article est réservé aux abonnés.
Il vous reste 92% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

KEYWORDS

state of art   |   computer programming   |   system software   |   parallelism   |   modularity   |   ownership

VERSIONS

Il existe d'autres versions de cet article :

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v2-h3098


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Présentation
Version en anglais En anglais

1. Programmation modulaire

Rust est conçu d’emblée pour la construction de programmes modulaires. L’unité de programme la plus élémentaire du langage est la fonction, désignée par le mot-clé fn, qui correspond aussi bien à ce qui dans d’autres langages se nomme procédure ou fonction.

Les entités mises à la disposition du programmeur pour la modularité sont les paquets (packages), les crates (caisses, cageots) et les modules, organisés selon des chemins.

1.1 Paquets et crates

Les paquets et les crates font référence à l’organisation générale du logiciel (une arborescence), les modules à son organisation logique. Les crates sont de deux sortes : crates binaires, qui définissent des programmes exécutables, et crates bibliothèques (library) qui sont des collections de modules, eux-mêmes collections de fonctions. Un paquet est une arborescence de crates et de modules, décrite selon une syntaxe de chemins propre à Rust et indépendante du système d’exploitation, ce qui permet de s’abstraire du système de fichiers sous-jacent et d’écrire des programmes indépendants du système d’exploitation de la plateforme matérielle utilisée, voire qui peuvent être embarqués sur des appareils dépourvus de système d’exploitation.

Hormis le noyau du langage, Rust fournit de nombreuses fonctionnalités optionnelles, dont certaines sont des contributions d’auteurs extérieurs à l’équipe de développement, et chaque utilisateur a la possibilité de développer ainsi ses propres extensions : ces extensions sont distribuées sous forme de crates, qui constituent l’unité physique selon laquelle se présentent les composantes du langage. Une crate peut contenir plusieurs modules, afin de mieux structurer le code, de le rendre plus lisible et plus sûr par isolation des parties logiquement distinctes.

Un paquet (package) se compose d’une ou plusieurs crates qui fournissent les fonctionnalités nécessaires à un programme. Quand nous voulons créer un programme avec Cargo, nous créons en fait un paquet binaire, c’est-à-dire une arborescence dont nous verrons les éléments ci-dessous.

Un paquet peut contenir zéro, une ou plusieurs crates binaires, et zéro ou une seule crate bibliothèque.

Le système de compilation et de configuration Cargo est très utile pour construire des programmes conformes...

Cet article est réservé aux abonnés.
Il vous reste 95% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

TEST DE VALIDATION ET CERTIFICATION CerT.I. :

Cet article vous permet de préparer une certification CerT.I.

Le test de validation des connaissances pour obtenir cette certification de Techniques de l’Ingénieur est disponible dans le module CerT.I.

Obtenez CerT.I., la certification
de Techniques de l’Ingénieur !
Acheter le module

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Programmation modulaire
Sommaire
Sommaire

BIBLIOGRAPHIE

  • (1) -   Async/await on embedded Rust.  -  Consulté le 17 avril 2022. https://ferrous-systems.com/blog/async-on-embedded/.

  • (2) - LAURENT (B.) -   Premiers programmes en Rust.  -  Consulté le 17 avril 2022. https://laurentbloch.net/MySpip3/Premiers-programmes-en-Rust.

  • (3) - KLABNIK (S.), NICHOLS (C.) -   Le langage de programmation Rust.  -  Consulté le 4 avril 2022. https://jimskapt.github.io/rust-book-fr/title-page.html.

  • (4) -   The Rust Programming Language.  -  Consulté le 4 avril 2022. https://doc.rust-lang.org/book/title-page.html.

  • (5) -   Rust Concurrency (Multi-Threading) Tutorial | KoderHQ.  -  Consulté le 17 avril 2022. https://www.koderhq.com/tutorial/rust/concurrency/.

  • (6) - Rust Development Team -   Rust by Example.  -  Consulté...

DANS NOS BASES DOCUMENTAIRES

Cet article est réservé aux abonnés.
Il vous reste 94% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Sommaire

QUIZ ET TEST DE VALIDATION PRÉSENTS DANS CET ARTICLE

1/ Quiz d'entraînement

Entraînez vous autant que vous le voulez avec les quiz d'entraînement.

2/ Test de validation

Lorsque vous êtes prêt, vous passez le test de validation. Vous avez deux passages possibles dans un laps de temps de 30 jours.

Entre les deux essais, vous pouvez consulter l’article et réutiliser les quiz d'entraînement pour progresser. L’attestation vous est délivrée pour un score minimum de 70 %.


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS