{"id":336049,"date":"2023-03-29T21:02:31","date_gmt":"2023-03-29T20:02:31","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=rust&#038;p=336049"},"modified":"2023-09-04T17:32:38","modified_gmt":"2023-09-04T16:32:38","slug":"aprenda-rust-com-os-ides-da-jetbrains","status":"publish","type":"rust","link":"https:\/\/blog.jetbrains.com\/pt-br\/rust\/2023\/03\/29\/aprenda-rust-com-os-ides-da-jetbrains\/","title":{"rendered":"Aprenda Rust com os IDEs da JetBrains"},"content":{"rendered":"<p>N\u00e3o existe um caminho f\u00e1cil para aprender uma linguagem de programa\u00e7\u00e3o; cada um faz isso de um jeito. Alguns leem muito (livros, blogs, tutoriais, documenta\u00e7\u00e3o, discuss\u00f5es no Reddit, respostas do StackOverflow, etc.), alguns fazem perguntas e olham exemplos; alguns escrevem seu pr\u00f3prio c\u00f3digo e trabalham em projetos pessoais; outros resolvem problemas, outros exploram ecossistemas \u2014 o que funcionar melhor para cada um. Alguns at\u00e9 fazem tudo isso. As pessoas geralmente come\u00e7am aprendendo os recursos da linguagem e as maneiras de combin\u00e1-los em programas. Em algum momento, elas aprendem abordagens diferentes \u00e0 resolu\u00e7\u00e3o de problemas. Mais cedo ou mais tarde, elas passam a usar bibliotecas externas em vez de componentes de bibliotecas-padr\u00e3o e buscam explorar formas de testar, depurar, escrever logs, fazer profiling dos seus aplicativos, etc.<\/p>\n<p>O Rust n\u00e3o \u00e9 uma exce\u00e7\u00e3o. Nenhum recurso de aprendizado isoladamente \u00e9 suficiente para ajudar voc\u00ea a dominar a linguagem. Mesmo assim, aqui na JetBrains temos uma sugest\u00e3o \u2014 nosso curso gratuito <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16631-learn-rust\/about\" target=\"_blank\" rel=\"noreferrer noopener\">Learn Rust<\/a>, que cobre muitas das necessidades de quem est\u00e1 aprendendo, que acabamos de mencionar.<\/p>\n<p>O curso usa textos de <a href=\"https:\/\/doc.rust-lang.org\/book\/\" target=\"_blank\" rel=\"noreferrer noopener\">The Rust Programming Language<\/a><em>,<\/em> um livro de Steve Klabnik e Carol Nichols, com contribui\u00e7\u00f5es da comunidade do Rust. Embora o curso inclua a maioria dos exerc\u00edcios do conhecido conjunto <a href=\"https:\/\/github.com\/rust-lang\/rustlings\" target=\"_blank\" rel=\"noreferrer noopener\">rustlings<\/a>, n\u00f3s elaboramos cerca de um quarto dos exerc\u00edcios especificamente para este curso. Em vez de apenas reunir materiais j\u00e1 existentes, combinamos cuidadosamente os textos e exerc\u00edcios, e os colocamos em formato de IDE, para criarmos uma nova maneira de aprender Rust.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-338135 size-medium\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/03\/DSGN-15717_Blog_Featured_image_1280x600_BRPT-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\">Aprenda Rust<\/a><\/div>\n<p>\u00a0<\/p>\n<\/div>\n<h2>Por que o Rust?<\/h2>\n<p>O Rust foi listado por sete anos seguidos como a linguagem de programa\u00e7\u00e3o mais amada na <a href=\"https:\/\/survey.stackoverflow.co\/2022\/#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages\" target=\"_blank\" rel=\"noreferrer noopener\">pesquisa de desenvolvedores do StackOverflow<\/a>, al\u00e9m de ser a mais desejada (empatada com Python).<\/p>\n<p>Recentemente, o Rust <a href=\"https:\/\/www.zdnet.com\/article\/linus-torvalds-rust-will-go-into-linux-6-1\/\" target=\"_blank\" rel=\"noreferrer noopener\">entrou<\/a> para a lista das linguagens com suporte para escrever os componentes do kernel do Linux (e \u00e9 o segundo lugar nessa lista, logo depois do C!). Libcurl, uma das bibliotecas mais usadas para buscar dados atrav\u00e9s de redes, est\u00e1 <a href=\"https:\/\/daniel.haxx.se\/blog\/2022\/02\/01\/curl-with-rust\/\" target=\"_blank\" rel=\"noreferrer noopener\">mudando gradualmente<\/a> para o Rust. O Google <a href=\"https:\/\/security.googleblog.com\/2022\/12\/memory-safe-languages-in-android-13.html\" target=\"_blank\" rel=\"noreferrer noopener\">relata<\/a> que a parcela de c\u00f3digo em Rust na sua implementa\u00e7\u00e3o do Android est\u00e1 aumentando a cada nova vers\u00e3o e isso ajuda a diminuir o risco de vulnerabilidades e aumentar a seguran\u00e7a. A Microsoft <a href=\"https:\/\/www.theregister.com\/2022\/09\/20\/rust_microsoft_c\/\" target=\"_blank\" rel=\"noreferrer noopener\">depende<\/a> fortemente do Rust para implementar a seguran\u00e7a da mem\u00f3ria em seus produtos, enquanto a Amazon usa o Rust para <a href=\"https:\/\/aws.amazon.com\/blogs\/opensource\/sustainability-with-rust\/\" target=\"_blank\" rel=\"noreferrer noopener\">garantir<\/a> a sustentabilidade da sua infraestrutura.<\/p>\n<p>Desenvolvedores em outras linguagens de programa\u00e7\u00e3o, como JavaScript ou Python, costumam recorrer ao Rust quando precisam atingir um desempenho melhor em <a href=\"https:\/\/leerob.io\/blog\/rust\" target=\"_blank\" rel=\"noreferrer noopener\">ferramentas<\/a> e <a href=\"https:\/\/developers.redhat.com\/blog\/2017\/11\/16\/speed-python-using-rust\" target=\"_blank\" rel=\"noreferrer noopener\">bibliotecas<\/a>.<\/p>\n<p>Por \u00faltimo, mas n\u00e3o menos importante, o Rust tem uma <a href=\"https:\/\/www.rust-lang.org\/community\" target=\"_blank\" rel=\"noreferrer noopener\">comunidade muito receptiva<\/a>, sempre disposta a ajudar e encorajar os iniciantes.<\/p>\n<p>Dito tudo isso, os aprendizes em potencial devem ter consci\u00eancia de que o Rust tem uma curva dif\u00edcil de aprendizado e requer uma abordagem sistem\u00e1tica ao aprendizado. Oferecer essa abordagem \u00e9 exatamente o nosso objetivo com o nosso curso &#8220;Learn Rust&#8221;.<\/p>\n<h2>Aprendendo Rust em um IDE<\/h2>\n<p>Nosso curso &#8220;Learn Rust&#8221; \u00e9 baseado na plataforma de aprendizado fornecida pelo plug-in da <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/10081-edutools\" target=\"_blank\" rel=\"noopener\">JetBrains Academy<\/a>. Esse plug-in est\u00e1 dispon\u00edvel em v\u00e1rios IDEs da JetBrains, incluindo o CLion, o GoLand e o IntelliJ IDEA Community Edition, dentre outros, e permite que voc\u00ea aprenda gratuitamente n\u00e3o apenas Rust, mas tamb\u00e9m v\u00e1rias outras linguagens de programa\u00e7\u00e3o.<\/p>\n<p>Cursos baseados em IDEs envolvem ler materiais did\u00e1tico, explorar exemplos de c\u00f3digo e resolver problemas, tudo isso estruturado em li\u00e7\u00f5es e se\u00e7\u00f5es do curso. Cada li\u00e7\u00e3o inclui uma sequ\u00eancia de etapas curtas, sejam <em>etapas te\u00f3ricas<\/em>, com um exemplo para ilustr\u00e1-las, ou <em>etapas de problemas<\/em>, que t\u00eam um problema a resolver. As etapas de problemas s\u00e3o uma maneira simples de verificar as suas solu\u00e7\u00f5es.<\/p>\n<p>Ao trabalhar com qualquer curso baseado em IDE, voc\u00ea ter\u00e1 uma janela de IDE plenamente funcional, com 3 pain\u00e9is: uma visualiza\u00e7\u00e3o do curso, um editor de c\u00f3digo e uma descri\u00e7\u00e3o, como na captura de tela abaixo:<\/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>A vantagem adicional de fazer um curso em um IDE \u00e9 que voc\u00ea ganha experi\u00eancia em desenvolvimento de software ao mesmo tempo que aprende a linguagem. Enquanto faz os exerc\u00edcios de aprendizado, voc\u00ea tamb\u00e9m escreve, verifica, corrige, executa, depura e testa c\u00f3digo, da mesma forma que um programador real faria como parte da sua rotina di\u00e1ria de desenvolvimento de software. No final do curso, voc\u00ea n\u00e3o s\u00f3 ter\u00e1 conhecimentos s\u00f3lidos da linguagem de programa\u00e7\u00e3o, como tamb\u00e9m ter\u00e1 se familiarizado com uma ferramenta profissional de desenvolvimento e estar\u00e1 a caminho de se tornar um desenvolvedor de software.<\/p>\n<p>Confira a p\u00e1gina do <a href=\"https:\/\/jetbrains.com\/idea-edu\" target=\"_blank\" rel=\"noopener\">IntelliJ IDEA for Education<\/a> para saber mais sobre os benef\u00edcios de aprender programa\u00e7\u00e3o em um IDE.<\/p>\n<h2>Detalhes do curso<\/h2>\n<p>O curso &#8220;Learn Rust&#8221;, assim como o livro no qual ele se baseou, presume que voc\u00ea tenha conhecimentos funcionais de alguma linguagem de programa\u00e7\u00e3o. Em vez de oferecer uma introdu\u00e7\u00e3o \u00e0 programa\u00e7\u00e3o, o curso ensina voc\u00ea a programar especificamente <em>em Rust<\/em>. Assim, ele pula a maioria dos t\u00f3picos b\u00e1sicos comuns em cursos de programa\u00e7\u00e3o.<\/p>\n<p>O curso segue a estrutura do livro <a href=\"https:\/\/doc.rust-lang.org\/book\/\" target=\"_blank\" rel=\"noopener\">The Rust Programming Language<\/a> e cont\u00e9m as seguintes se\u00e7\u00f5es:<\/p>\n<ul>\n<li>Introdu\u00e7\u00e3o<\/li>\n<li>Conceitos comuns de programa\u00e7\u00e3o<\/li>\n<li>Compreendendo o conceito de posse<\/li>\n<li>Structs, m\u00e9todos, enums e correspond\u00eancia de padr\u00f5es<\/li>\n<li>M\u00f3dulos<\/li>\n<li>Cole\u00e7\u00f5es comuns<\/li>\n<li>Tratamento de erros<\/li>\n<li>Tipos gen\u00e9ricos, traits e tempo de vida<\/li>\n<li>Escrevendo testes automatizados<\/li>\n<li>Tipos de bibliotecas-padr\u00e3o<\/li>\n<li>Concorr\u00eancia sem medo<\/li>\n<li>Macros<\/li>\n<\/ul>\n<p>&#8220;Learn Rust&#8221; cont\u00e9m ao todo 331 etapas, sendo 210 etapas te\u00f3ricas e 121 etapas de problemas. Cada etapa do curso vem no formato de um pacote do Cargo, possibilitando demonstrar e ensinar n\u00e3o apenas os recursos b\u00e1sicos da linguagem Rust, como tamb\u00e9m m\u00f3dulos, crates, macros, testes em n\u00edvel de pacotes, depend\u00eancias externas, etc.<\/p>\n<p>O trabalho em cada etapa envolve tanto ler textos quanto o trabalho com c\u00f3digo. Se o c\u00f3digo de uma etapa tiver a fun\u00e7\u00e3o &#8220;main&#8221;, ele poder\u00e1 ser executado:<\/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>Na maioria das etapas de problemas, voc\u00ea \u00e9 exposto a um \u00fanico arquivo de c\u00f3digo (como na captura de tela acima), mas \u00e0s vezes, voc\u00ea tem acesso \u00e0 estrutura de todo o pacote, para que voc\u00ea possa explorar todos os componentes relevantes, tais como os arquivos de descri\u00e7\u00e3o do projeto:<\/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>A partir da\u00ed, voc\u00ea pode chegar \u00e0 documenta\u00e7\u00e3o de um crate ou ficar conhecendo as vers\u00f5es dispon\u00edveis.<\/p>\n<p>Naturalmente, ao discutirmos o teste de pacotes do Rust, expomos os arquivos de teste:<\/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>Antes de tentar verificar a sua solu\u00e7\u00e3o, clicando no bot\u00e3o <em>Check<\/em>, voc\u00ea pode executar testes isolados ou todos os testes de uma vez.<\/p>\n<p>Estes recursos t\u00eam o objetivo de apresentar as melhores pr\u00e1ticas de desenvolvimento de software em IDEs o mais cedo poss\u00edvel. Acreditamos que usar ferramentas profissionais desde o in\u00edcio do seu aprendizado pode trazer enormes benef\u00edcios. Com o suporte de primeira que os IDEs da JetBrains t\u00eam para o Rust, agora voc\u00ea tamb\u00e9m pode fazer isso enquanto aprende Rust.<\/p>\n<h2>Aprenda Rust e conte para n\u00f3s o que voc\u00ea acha!<\/h2>\n<p>Claramente, desenvolver conhecimentos s\u00f3lidos de Rust exige mais que simplesmente fazer este curso, mas acreditamos que para muitos futuros desenvolvedores, este curso pode servir como uma inicia\u00e7\u00e3o perfeita ao mundo empolgante da programa\u00e7\u00e3o em Rust. Esperamos que voc\u00ea goste de estudar Rust conosco! Fique \u00e0 vontade para deixar o seu feedback na se\u00e7\u00e3o de coment\u00e1rios abaixo ou nos contactar em <a href=\"mailto:education@jetbrains.com\">academy@jetbrains.com<\/a>.<\/p>\n<p><em>Artigo original em ingl\u00eas por:<\/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":1086,"featured_media":338157,"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\/pt-br\/wp-json\/wp\/v2\/rust\/336049"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/rust"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/types\/rust"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/users\/1086"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/comments?post=336049"}],"version-history":[{"count":6,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/rust\/336049\/revisions"}],"predecessor-version":[{"id":338172,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/rust\/336049\/revisions\/338172"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media\/338157"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media?parent=336049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/categories?post=336049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/tags?post=336049"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/cross-post-tag?post=336049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}