Projeto da linguagem ‐ 1 - leandrolucas7/projeto-lp-2025-1 GitHub Wiki
Rust é uma linguagem multi-paradigma, integrando diferentes estilos de programação para garantir segurança, performance e flexibilidade. Os principais paradigmas suportados são:
-
Definição: O programa é descrito como uma sequência de instruções que alteram o estado do sistema.
-
Como Rust usa: A programação imperativa é baseada em funções, variáveis mutáveis e loops.
Exemplo:
let mut soma = 0; for i in 1..=10 { soma += i; } println!("A soma é: {}", soma);
-
Definição: Foca em funções puras, imutabilidade e funções de ordem superior.
-
Como Rust usa: Rust permite o uso de funções anônimas, closures e recursos como map, filter e fold para trabalhar com coleções de maneira funcional.
Exemplo:
let numeros = vec![1, 2, 3, 4, 5]; let quadrados: Vec<i32> = numeros.iter().map(|&x| x * x).collect(); println!("{:?}", quadrados);
-
Definição: A programação orientada a objetos (OO) é baseada no uso de objetos (instâncias de classes) e métodos que operam sobre esses objetos. O foco principal é a encapsulação (dados e comportamentos agrupados em entidades) e a abstração.
-
Como Rust usa: Rust não é uma linguagem puramente orientada a objetos, mas oferece um sistema poderoso com traits (semelhantes a interfaces) e structs. As traits permitem definir comportamento compartilhado entre diferentes tipos, e as structs armazenam dados relacionados.
Exemplo:
trait Desenhavel { fn desenhar(&self); } struct Circulo { raio: f64, } impl Desenhavel for Circulo { fn desenhar(&self) { println!("Desenhando um círculo de raio {}", self.raio); } } let circulo = Circulo { raio: 5.0 }; circulo.desenhar();
-
Definição: A programação concorrente lida com a execução simultânea de múltiplas tarefas, com a preocupação de compartilhar recursos de maneira segura entre threads ou processos.
-
Como Rust usa: Rust oferece um modelo de concorrência único, sem a necessidade de garbage collector. A linguagem usa ownership e empréstimo para garantir que não haja condições de corrida ou problemas de memória quando múltiplas threads acessam dados simultaneamente.
Exemplo:
use std::thread; let handle = thread::spawn(|| { println!("Este código está rodando em uma thread separada"); }); handle.join().unwrap(); // Aguarda a thread terminar
-
Segurança e Performance: O sistema de ownership e empréstimo em Rust garante segurança de memória sem sacrificar performance, o que é fundamental para o Crabby.
-
Flexibilidade: Rust permite que o Crabby seja acessível para iniciantes (no modo imperativo) e também desafiante para programadores mais experientes (usando recursos funcionais e orientação a objetos).
-
Acessibilidade: A combinação de paradigmas oferece flexibilidade e poder para usuários de diferentes níveis de experiência, tornando o Crabby uma ferramenta eficaz de ensino.