Projeto da linguagem ‐ 1 - leandrolucas7/projeto-lp-2025-1 GitHub Wiki

Paradigma de Rust

Rust é uma linguagem multi-paradigma, integrando diferentes estilos de programação para garantir segurança, performance e flexibilidade. Os principais paradigmas suportados são:

Imperativo (Procedural)

  • 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);

Funcional

  • 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);

Orientação a Objetos

  • 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();

Concorrência

  • 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
    

Como o Paradigma de Rust Contribui para o Crabby

  • 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.

⚠️ **GitHub.com Fallback** ⚠️