Aula 14 - Sistemas Modernos: Rust e Go 🦀🐹
Objetivo
Objetivo: Conhecer as linguagens que estão substituindo o C/C++ na infraestrutura da computação moderna.
1. Rust: Segurança Sem Custo 🦀
Rust garante que você não cometa erros de memória (sem telas azuis!), mas roda tão rápido quanto C. O segredo? Ownership (Propriedade).
Visualizando Ownership (Mermaid)
graph LR;
A["Variável A\n(Dona do Dado)"] -- "Mover (Move)" --> B["Variável B\n(Nova Dona)"];
style A fill:#f9f,stroke:#333;
style B fill:#bbf,stroke:#333;
NoteA["A não pode mais\nusar o dado!"] --- A
let a = String::from("Olá");
let b = a; // 'a' moveu para 'b'
// println!("{}", a); // ERRO! 'a' não existe mais.
2. Go: Simplicidade e Concorrência 🐹
Criada pelo Google para ser simples. Famosa pelas Goroutines (tarefas leves).
Visualizando Channels (Canais)
Em Go, threads não brigam por memória. Elas conversam por canais.
graph LR;
T1[Goroutine A] -->|Envia Mensagem| Canal((Channel));
Canal -->|Recebe Mensagem| T2[Goroutine B];
style Canal fill:#ff9,stroke:#333;
mensagens := make(chan string)
go func() { mensagens <- "Ping" }() // Envia
msg := <-mensagens // Recebe
fmt.Println(msg)
3. Simulando Execução (Termynal)
4. Mini-Projeto: O Mensageiro Concorrente (Go) 🚀
Go é a linguagem ideal para sistemas que precisam lidar com muitas tarefas ao mesmo tempo.
Desafio do Projeto
Crie um pequeno programa em Go que use uma Goroutine para enviar 3 mensagens diferentes para um Canal (ex: "Processando...", "Validando...", "Concluído!"). No programa principal, use um loop para receber essas 3 mensagens do canal e mostrá-las na tela.
5. Exercícios de Fixação 📝
- Fácil (Go): Faça um "Olá Mundo" em Go.
- Médio (Rust): Crie uma função que receba uma String, calcule o tamanho e retorne os dois (tupla). (Entenda como Rust lida com retorno).
- Desafio (Go): Crie duas Goroutines. Uma imprime "Tick", a outra "Tack". Tente fazê-las rodar juntas.
Próxima Aula: Do servidor para o bolso. Desenvolvimento Mobile com Dart e Kotlin.