DEV Community

Cover image for Aprendendo Rust: 00 - O Inicio
Richard de Jesus
Richard de Jesus

Posted on

Aprendendo Rust: 00 - O Inicio

E aee jovens, tudo bem com vocês?

Meu primeiro post será sobre o inicio de uma linguagem que está tomando um lugar especial na minha vida.

Enquanto estiver estudando vou ir postando sobre o que estou aprendendo. Então se tiverem qualquer critica construtiva, por favor poste nos comentários.

Vamos entender sobre porque a Rust foi desenvolvida, porque utilizar, e uma pequena história sobre o inicio de tudo neste post.

Com o tempo, iremos ir aprofundando nessa linguagem.

Então, lets'go!!!

Por que Rust foi criado?

A linguagem surgiu para corrigir problemas, para o que a gente chama de "nível de sistema", que lida com detalhes de baixo nível como gerenciamento de memória, representação de dados e simultaneidade.

A Mozilla estava passando por problemas muito sérios no desenvolvimento do Browser Firefox, nas Engines por trás do Firefox para ser mais preciso.

Alguns problemas que são bastante conhecidos para quem desenvolve sistemas no "nível de sistema".

E esses erros realmente custam muito caro. A Mozilla começou a estudar de criar uma linguagem de programação pra resolver tudo isso. Eles são conhecidos como "Erros Billion Dollar Mistake", pois realmente davam um prejuízo muito grande.

Abaixo seguem alguns exemplos dos erros mais conhecidos:

  • Dangling Pointers
    • Null Pointer Exception - Acesso a um elemento com o valor nulo.
    • Double Free - Tentar limpar um elemento que já foi limpo anteriormente.
    • Use After Free - Tentar utilizar um elemento que já foi limpo.
  • Buffer Overflow
    • Index Out Of Bounds - Acesso ao index inexistente de um vetor.
  • Iterator Invalidation
  • Data Races - Threads paralelas acessando o mesmo recurso

Erros que podem apresentar Undefined Behaviour (Comportamento Inesperado).

Por que utilizar Rust?

Para corrigir todos esses problemas, a Rust utiliza uma liberação de memória Heap sem Garabage Collector e sem necessidade do programador ter que controlar essa liberação.

Essa liberação é feita quando a variável sai do escopo, utilizando Ownership e Borrowing (posse e empréstimo). Veremos como é o funcionamento disso em outro post mais pra frente.

Rust não permite criar uma variável sem ser inicializada, não existe o tipo undefined (indefinido) e não existe null (nulo).

Não tem custo de abstração.

Rust é multi-paradigma.

  • Imperativa
  • Funcional
  • Orientada a objetos

Não existe um Runtime, o programa final é compilado - Sendo gerado um .exe para o Windows e o .sh para sistemas Unix.

A partir das versões de 2018 e posteriores virou uma linguagem multi-propósito, é amplamente utilizada para criar serviços web, API's, web sites, Frameworks, games, ferramentas desktop, ferramentas mobile, sistemas operacionais, embarcados, machine learning, data science, etc.

Um pouco mais sobre a linguagem Rust

Rust foi lançada em 15 de Maio de 2015 na versão 1.0, nesta versão ela havia sido projetada para sistemas de mais "nível de sistema". Em 2018 foi feita uma mudança radical na linguagem, onde parou de ser apenas uma linguagem de sistemas "baixo nível", e virou uma linguagem multi-proposito. Rust facilmente se integra com outras linguagens e está pelo quinto ano consecutivo agora em 2020 como a linguagem mais amada pelo publico de acordo com pesquisas realizadas pelo Stackoverflow.

A linguagem Rust não é uma propriedade da Mozilla, dentro da Mozilla research labs existia uma pessoa (Graydon Hoare), que começou a criar este projeto.

A Amazon é uma sponsor, e está sendo utilizada por diversas empresas, por exemplo pela Apple, Atlassian, Cloudflare, Facebook, Dropbox e Discord.

O melhor método para começar a aprender Rust hoje é pelo livro, pois foi criado e é mantido pelo time core do Rust. Segue o link nas referencias.

Temos também o canal na Twitch do CodeShow que eu tenho acompanhado e está apresentando um curso de Rust toda quinta-feira. Segue link nas referencias.

Se você se interessou assim como eu por essa linguagem fantástica, deixe um comentário, e continue acompanhando os próximos posts, onde começaremos a realmente utilizar essa poderosa linguagem.

Referencias

Site Oficial

Ecossistema

Machine Learning e afins

O livro de Rust

CodeShow

Top comments (1)

Collapse
 
hamiltonjr profile image
Hamilton Gonçalves Junior

Interesting content. The amount of articles about Rust in Portuguese is minimal. This series of articles can help a lot of beginners to learn Rust! Thank you!