{"id":331594,"date":"2023-03-14T15:30:48","date_gmt":"2023-03-14T14:30:48","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=rust&#038;p=331594"},"modified":"2023-09-04T17:32:21","modified_gmt":"2023-09-04T16:32:21","slug":"apprenez-rust-avec-les-ide-de-jetbrains","status":"publish","type":"rust","link":"https:\/\/blog.jetbrains.com\/fr\/rust\/2023\/03\/14\/apprenez-rust-avec-les-ide-de-jetbrains\/","title":{"rendered":"Apprenez Rust avec les IDE de JetBrains"},"content":{"rendered":"<p>Il n&#8217;y a pas d&#8217;approche id\u00e9ale pour apprendre un langage de programmation, chacun peut choisir celle qui lui convient le mieux, que cela soit en consultant des contenus (livres, blogs, tutoriels, documentation, discussions Reddit, r\u00e9ponses donn\u00e9es dans StackOverflow, etc.), en posant des questions \u00e0 la communaut\u00e9, en regardant des exemples, en r\u00e9alisant des projets personnels, ou en essayant de r\u00e9soudre des probl\u00e8mes de code. Certains font m\u00eame tout cela. On commence g\u00e9n\u00e9ralement par se familiariser avec les fonctionnalit\u00e9s du langage et les fa\u00e7ons de les combiner dans des programmes. Puis, on d\u00e9couvre diff\u00e9rentes approches de r\u00e9solution des probl\u00e8mes. Enfin, on passe de l&#8217;utilisation de composants de biblioth\u00e8ques standards \u00e0 celle de composants de biblioth\u00e8ques externes, et on apprend comment tester, d\u00e9boguer, \u00e9crire des journaux, profiler des applications, etc.<\/p>\n<p>Rust ne fait pas exception : aucune ressource p\u00e9dagogique n&#8217;est suffisante \u00e0 elle-seule pour permettre de le ma\u00eetriser compl\u00e8tement. Toutefois, afin de faciliter l&#8217;apprentissage de ce langage, nous avons \u00e9labor\u00e9 <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16631-learn-rust\/about\" target=\"_blank\" rel=\"noreferrer noopener\">Learn Rust<\/a>, un nouveau cours JetBrains gratuit qui couvre une grande partie des besoins des apprenants.<\/p>\n<p>Ce cours est notamment bas\u00e9 sur le contenu du livre <a href=\"https:\/\/doc.rust-lang.org\/book\/\" target=\"_blank\" rel=\"noreferrer noopener\">The Rust Programming Language<\/a><em>,<\/em> de Steve Klabnik et Carol Nichols, avec des contributions de la communaut\u00e9 Rust, et reprend la plupart des exercices du c\u00e9l\u00e8bre ensemble <a href=\"https:\/\/github.com\/rust-lang\/rustlings\" target=\"_blank\" rel=\"noreferrer noopener\">rustlings<\/a>. Notre \u00e9quipe a par ailleurs con\u00e7u environ un quart des exercices sp\u00e9cifiquement pour ce cours. Il propose une nouvelle fa\u00e7on d&#8217;apprendre Rust, en fournissant une combinaison de textes et d&#8217;exercices judicieuse, disponible dans plusieurs de nos IDE.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-332691 size-medium\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/03\/Learn-Rust_DSGN-15717_Blog_Featured_image_2560-1200_FRA-1200x563.png\" alt=\"\" width=\"1200\" height=\"563\" \/><\/figure>\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/plugins.jetbrains.com\/plugin\/16631-learn-rust\/about\" target=\"_blank\" rel=\"noopener\">Apprenez Rust<\/a><\/div>\n<p>\u00a0<\/p>\n<\/div>\n<h2>Pourquoi choisir Rust<\/h2>\n<p>Il ressort des r\u00e9sultats de l&#8217;enqu\u00eate <a href=\"https:\/\/survey.stackoverflow.co\/2022\/#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages\" target=\"_blank\" rel=\"noreferrer noopener\">StackOverflow developer survey<\/a> que Rust est cit\u00e9 comme langage de programmation le plus appr\u00e9ci\u00e9 des d\u00e9veloppeurs depuis 7 ans, et qu&#8217;il est aussi celui qui suscite le plus d&#8217;int\u00e9r\u00eat (\u00e0 \u00e9galit\u00e9 avec Python).<\/p>\n<p>Rust a r\u00e9cemment <a href=\"https:\/\/www.zdnet.com\/article\/linus-torvalds-rust-will-go-into-linux-6-1\/\" target=\"_blank\" rel=\"noreferrer noopener\">fait<\/a> son entr\u00e9e dans la liste des langages pris en charge pour l&#8217;\u00e9criture des composants du noyau Linux, et se classe en deuxi\u00e8me position de cette liste, juste apr\u00e8s C ! Libcurl, l&#8217;une des biblioth\u00e8ques les plus utilis\u00e9es pour r\u00e9cup\u00e9rer les donn\u00e9es des r\u00e9seaux <a href=\"https:\/\/daniel.haxx.se\/blog\/2022\/02\/01\/curl-with-rust\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u00e9volue progressivement<\/a> vers Rust. Google <a href=\"https:\/\/security.googleblog.com\/2022\/12\/memory-safe-languages-in-android-13.html\" target=\"_blank\" rel=\"noreferrer noopener\">indique<\/a> que l&#8217;utilisation de code Rust dans l&#8217;impl\u00e9mentation d&#8217;Android augmente de version en version, ce qui l&#8217;aide \u00e0 r\u00e9duire le risque de vuln\u00e9rabilit\u00e9 et \u00e0 am\u00e9liorer la s\u00e9curit\u00e9. Microsoft <a href=\"https:\/\/www.theregister.com\/2022\/09\/20\/rust_microsoft_c\/\" target=\"_blank\" rel=\"noreferrer noopener\">utilise<\/a> Rust pour s\u00e9curiser la m\u00e9moire dans ses produits et Amazon pour <a href=\"https:\/\/aws.amazon.com\/blogs\/opensource\/sustainability-with-rust\/\" target=\"_blank\" rel=\"noreferrer noopener\">assurer<\/a> la durabilit\u00e9 de son infrastructure.<\/p>\n<p>Les d\u00e9veloppeurs utilisant d&#8217;autres langages de programmation, tels que JavaScript ou Python, optent souvent pour Rust lorsqu&#8217;ils cherchent \u00e0 obtenir de meilleures performances avec les <a href=\"https:\/\/leerob.io\/blog\/rust\" target=\"_blank\" rel=\"noreferrer noopener\">outils<\/a> et les <a href=\"https:\/\/developers.redhat.com\/blog\/2017\/11\/16\/speed-python-using-rust\" target=\"_blank\" rel=\"noreferrer noopener\">biblioth\u00e8ques<\/a>.<\/p>\n<p>Enfin, la communaut\u00e9 Rust est particuli\u00e8rement <a href=\"https:\/\/www.rust-lang.org\/community\" target=\"_blank\" rel=\"noreferrer noopener\">accueillante<\/a>, toujours pr\u00eate \u00e0 aider et \u00e0 encourager les utilisateurs d\u00e9butants.<\/p>\n<p>Cela dit, la courbe d&#8217;apprentissage de Rust \u00e9tant difficile, il est recommand\u00e9 d&#8217;\u00eatre assidu et de suivre une m\u00e9thode d\u00e9finie. C&#8217;est pr\u00e9cis\u00e9ment ce que nous souhaitons offrir avec le cours Learn Rust.<\/p>\n<h2>Apprendre Rust dans un IDE<\/h2>\n<p>Notre cours Learn Rust est construit sur la plateforme \u00e9ducative fournie par le plugin <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/10081-edutools\" target=\"_blank\" rel=\"noopener\">JetBrains Academy<\/a>. Ce plugin est disponible dans de nombreux IDE de JetBrains, parmi lesquels CLion, GoLand et IntelliJ IDEA Community Edition, et donne acc\u00e8s \u00e0 des cours gratuits pour plusieurs langages de programmation.<\/p>\n<p>Nos cours bas\u00e9s sur des IDE incluent la mise \u00e0 disposition de mat\u00e9riel p\u00e9dagogique, l&#8217;exploration d&#8217;exemples de code et la r\u00e9solution de probl\u00e8mes. Chaque le\u00e7on comprend une s\u00e9quence d&#8217;\u00e9tapes, compos\u00e9es de <em>contenus th\u00e9oriques<\/em> avec des exemples et des <em>probl\u00e8mes<\/em> \u00e0 r\u00e9soudre. Les \u00e9tapes du probl\u00e8me constituent un moyen facile de v\u00e9rifier vos solutions.<\/p>\n<p>Lorsque vous \u00e9tudiez un cours dans un IDE, vous disposez d&#8217;une fen\u00eatre d\u00e9di\u00e9e avec 3 panneaux : une vue du cours, un \u00e9diteur de code et une description, comme dans la capture d&#8217;\u00e9cran ci-dessous.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-326140\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-69.png\" alt=\"\" width=\"1600\" height=\"998\" \/><\/figure>\n<p>Apprendre un langage via un IDE vous permet par ailleurs d&#8217;acqu\u00e9rir une exp\u00e9rience pratique du d\u00e9veloppement logiciel. En effectuant les exercices, vous \u00e9crivez, v\u00e9rifiez, corrigez, ex\u00e9cutez, d\u00e9boguez et testez le code, comme un d\u00e9veloppeur le fait dans le cadre de ses activit\u00e9s quotidiennes. \u00c0 l&#8217;issue du cours, vous aurez une solide connaissance d&#8217;un langage de programmation et saurez utiliser un outil de d\u00e9veloppement professionnel.<\/p>\n<p>Consultez la page <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/idea-edu\/\" target=\"_blank\" rel=\"noopener\">IntelliJ IDEA for Education<\/a> pour en savoir plus sur les avantages des cours de programmation dans un IDE.<\/p>\n<h2>Sp\u00e9cificit\u00e9s du cours<\/h2>\n<p>Tout comme le livre sur lequel il est bas\u00e9, le cours Learn Rust part du principe que vous avez d\u00e9j\u00e0 une connaissance pratique d&#8217;un langage de programmation. Aussi, il apprend \u00e0 programmer sp\u00e9cifiquement <em>en Rust<\/em> mais ne propose pas d&#8217;introduction \u00e0 la programmation traitant des sujets de base.<\/p>\n<p>Le cours suit la structure de <a href=\"https:\/\/doc.rust-lang.org\/book\/\" target=\"_blank\" rel=\"noopener\">The Rust Programming Language<\/a><em>,<\/em> et contient les sections suivantes :<\/p>\n<ul>\n<li>Introduction<\/li>\n<li>Concepts de programmation courants<\/li>\n<li>Comprendre le concept de propri\u00e9t\u00e9<\/li>\n<li>Structs, Methods, Enums et filtrage par motif<\/li>\n<li>Modules<\/li>\n<li>Collections standards<\/li>\n<li>Gestion des erreurs<\/li>\n<li>Types g\u00e9n\u00e9riques, traits et dur\u00e9es de vie<\/li>\n<li>\u00c9crire des tests automatis\u00e9s<\/li>\n<li>Types de biblioth\u00e8que standards<\/li>\n<li>Fearless Concurrency<\/li>\n<li>Macros<\/li>\n<\/ul>\n<p>Il comprend 331 \u00e9tapes au total, dont 210 \u00e9tapes th\u00e9oriques et 121 \u00e9tapes de r\u00e9solution de probl\u00e8mes. Chaque \u00e9tape se pr\u00e9sente sous la forme d&#8217;un paquet Cargo, ce qui permet de pr\u00e9senter et d&#8217;apprendre non seulement les fonctionnalit\u00e9s de base du langage mais aussi les modules, les crates, les macros, les tests au niveau du paquet, les d\u00e9pendances externes, etc.<\/p>\n<p>Outre la lecture de contenus, chacune d&#8217;elle implique de travailler avec du code. Si le code de l&#8217;\u00e9tape contient la fonction principale, il peut \u00eatre ex\u00e9cut\u00e9\u00a0:<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-326151\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-70.png\" alt=\"\" width=\"1600\" height=\"998\" \/><\/figure>\n<p>Dans la plupart des \u00e9tapes de r\u00e9solution de probl\u00e8me, vous n&#8217;avez acc\u00e8s qu&#8217;\u00e0 un seul fichier de code (comme dans la capture d&#8217;\u00e9cran ci-dessus), mais la structure de l&#8217;ensemble du paquet est parfois disponible pour vous permettre d&#8217;examiner des composants importants, comme les fichiers de description du projet\u00a0:<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-326162\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-71.png\" alt=\"\" width=\"1600\" height=\"998\" \/><\/figure>\n<p>\u00c0 partir de l\u00e0, vous pouvez acc\u00e9der \u00e0 la documentation d&#8217;une crate ou conna\u00eetre les versions disponibles.<\/p>\n<p>Naturellement, lorsque nous parlons de tester les paquets Rust, nous exposons les fichiers de tests\u00a0:<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-326173\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-72.png\" alt=\"\" width=\"1600\" height=\"998\" \/><\/figure>\n<p>Avant d&#8217;essayer de v\u00e9rifier votre solution en cliquant sur le bouton <em>Check<\/em>, vous pouvez ex\u00e9cuter des tests individuels ou les ex\u00e9cuter tous en m\u00eame temps .<\/p>\n<p>Ces fonctionnalit\u00e9s du cours ont pour but de vous pr\u00e9senter d\u00e8s le d\u00e9part les bonnes pratiques du d\u00e9veloppement logiciel dans un IDE. Nous sommes convaincus qu&#8217;avoir l&#8217;opportunit\u00e9 d&#8217;utiliser des outils de d\u00e9veloppement professionnels d\u00e8s le d\u00e9but de votre parcours d&#8217;apprentissage constitue un avantage majeur. La prise en charge de premier ordre de Rust qu&#8217;offrent les IDE de JetBrains vous permet de vous familiariser avec de tels outils tout en apprenant le langage.<\/p>\n<h2>Apprenez Rust et dites-nous ce que vous en pensez\u00a0!<\/h2>\n<p>Si ce cours ne suffit pas pour acqu\u00e9rir une ma\u00eetrise compl\u00e8te de Rust, nous pensons qu&#8217;il constitue un bon point de d\u00e9part, et nous esp\u00e9rons que vous appr\u00e9cierez d&#8217;\u00e9tudier Rust avec nous ! N&#8217;h\u00e9sitez pas \u00e0 partager vos retours dans la section des commentaires ci-dessous ou en nous contactant \u00e0 <a href=\"mailto:education@jetbrains.com\">academy@jetbrains.com<\/a>.<\/p>\n<p><em>Article original en anglais de<\/em> :<\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":332691,"comment_status":"closed","ping_status":"closed","template":"","categories":[5040,283,89,4440],"tags":[530],"cross-post-tag":[6631],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/rust\/331594"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/rust"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/rust"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=331594"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/rust\/331594\/revisions"}],"predecessor-version":[{"id":332916,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/rust\/331594\/revisions\/332916"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/332691"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=331594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=331594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=331594"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=331594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}