Aula 14 - Sistemas Modernos: Rust e Go 🦀🐹
Agenda 📅
- O Problema do C/C++
- Rust: Segurança de Memória
- Go: Concorrência Simples
- Comparativo
- Quando usar?
1. O Problema do C/C++ 💥
- C/C++ são rápidos, mas perigosos.
- 70% das vulnerabilidades de segurança são erros de memória (Microsoft).
- Buffer Overflow, Use-After-Free.
2. Rust 🦀
- Criada pela Mozilla.
- Promessa: Performance de C++ com Segurança de Memória.
- Sem Garbage Collector (GC).
- Sem Tela Azul.
O Segredo: Ownership (Posse) 🔑
- Cada dado tem um único dono.
- Quando o dono muda, o antigo perde o acesso.
- O compilador verifica isso antes de rodar.
Visualizando Ownership
graph LR;
A["Variável A\n(Dona do Dado)"] -- "Move" --> B["Variável B\n(Nova Dona)"];
style A fill:#f9f;
style B fill:#bbf;
NoteA["A morre.\nNão pode mais acessar!"] --- A
Código Rust
fn main() {
let a = String::from("Olá");
let b = a; // MOVEU para b
// println!("{}", a); // ERRO DE COMPILAÇÃO!
// O compilador te salva de usar memória inválida.
}
3. Go (Golang) 🐹
- Criada pelo Google (Rob Pike, Ken Thompson).
- Foco: Simplicidade e Google Scale.
- Compila ultra-rápido.
Concorrência Fácil (Goroutines) 🧵
- Threads são pesadas.
- Goroutines são leves (milhares em poucos MBs).
- Channels: Forma segura de conversar entre processos.
Visualizando Channels
graph LR;
T1[Goroutine A] -->|Envia 'Ping'| Canal((Channel));
Canal -->|Recebe 'Ping'| T2[Goroutine B];
style Canal fill:#ff9;
Código Go
package main
import "fmt"
func main() {
mensagens := make(chan string)
go func() { mensagens <- "Ping" }()
msg := <-mensagens
fmt.Println(msg)
}
4. Comparativo ⚖️
| Feature | Rust 🦀 | Go 🐹 |
|---|---|---|
| Foco | Controle, Segurança Absoluta | Simplicidade, Web Services |
| Aprendizado | Curva Íngreme (Dificil) | Muito Fácil |
| Performance | Extrema (Zero-Cost) | Muito Boa (Com GC) |
| Uso | Drivers, Engines, Crypto | Microservices, Cloud, APIs |
Termynal: Execução 🖥️
cargo run
Compiling...
Hello Rust! (Safe)
go run main.go
Hello Go! (Fast Build)
Resumo ✅
- Rust: Substitui C++ onde segurança é crítica.
- Go: Substitui Java/Node onde concorrência é crítica.
- Ambas são o futuro da Infraestrutura (Docker, Kubernetes).
Próxima Aula 🚀
- Sair do Servidor.
- Ir para o dispositivo que está na sua mão.
- Desenvolvimento Mobile: Flutter (Dart) e Nativo.
👉 Tarefa: Instalar o Go e rodar um "Olá Mundo"!