Rust vs. Ada
(reddit.com)Este é um comentário comparando Rust e Ada encontrado no r/ada do Reddit.
-
As duas linguagens têm vantagens por não serem C: as
foot gunssintáticas de C, comportamento indefinido etc. -
As duas linguagens oferecem segurança de memória. Os limites de arrays são verificados em tempo de execução, há regras para garantir ponteiros válidos etc. Em Ada, as verificações são mais simples, e existe
Unchecked_Access, que contorna tudo isso. O borrow checker do Rust é mais sofisticado, mas também é difícil de contornar mesmo quando seria necessário. -
Rust abraçou a alocação dinâmica. Em Ada isso também é possível, mas é estranho e desconfortável. Fica claro que a linguagem Ada não quer isso. Ada vem de uma época em que a alocação no heap era vista como um problema de segurança, havia preocupação com fragmentação de memória e era preciso provar que não haveria esgotamento de memória. Rust incentiva o uso livre do heap e, se alocação dinâmica for necessária, Rust com certeza é mais seguro. Em Ada, desalocar memória é uma operação insegura porque pode deixar dangling pointers.
-
Rust tem vantagem em segurança de threads. O borrow checker previne race conditions desde o início.
-
Ada tem vantagem em segurança de valores. Constrained subtype é uma boa ferramenta para escrever código correto e serve de base para outros recursos do Ada, como verificação de arrays.
-
Ada tem vantagem na área de provas formais com o uso de SPARK. Não encontrei algo assim em Rust. Se segurança de alto nível for essencial, SPARK é a ferramenta mais adequada.
2 comentários
Como escrevi pelo celular, tem alguns erros de digitação T_T
memory sadety -> o correto é memory safety.
burrow checker -> borrow checker
thread safery -> thread safety
:D