36 pontos por GN⁺ 2025-08-23 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Rust é uma linguagem em que vários conceitos estão profundamente entrelaçados, e mesmo para entender programas básicos é preciso aprender muitos elementos ao mesmo tempo
  • Funções, genéricos, enums, pattern matching, traits, referências, ownership, Send/Sync, Iterator etc. são todos elementos centrais projetados para interagir entre si
  • Em comparação com JavaScript, no JS é possível escrever código conhecendo apenas alguns conceitos, mas no Rust só é possível escrever código realmente significativo ao entender o contexto da linguagem como um todo
  • Essa complexidade do Rust aumenta a barreira de aprendizado, mas ao mesmo tempo oferece segurança e consistência, além de influenciar fortemente a forma de projetar código
  • Essa composição linguística é o que torna Rust especial, e a visão de um “Rust menor” nos faz revisitar uma filosofia de linguagem cuidadosamente integrada

A dificuldade de aprender Rust

  • Apesar da alta barreira de entrada, muitas pessoas têm contribuído para melhorar documentação, APIs e diagnósticos
  • Entre os conceitos básicos estão funções como objetos de primeira classe, enums, pattern matching, genéricos, traits, referências, borrow checker, segurança de concorrência e iteradores
  • Esses conceitos dependem uns dos outros e estão entrelaçados, o que dificulta aprendê-los separadamente, e a biblioteca padrão também faz amplo uso desses recursos
  • Para entender até mesmo cerca de 20 linhas de código Rust, é preciso compreender ao mesmo tempo vários elementos, como paradigma funcional, Result e tratamento de erros, tipos genéricos, enums e iteradores

Comparação entre Rust e JavaScript

  • Ao escrever o mesmo programa de detecção de mudanças em arquivos em Rust e JS, no Rust diversos conceitos da linguagem ficam entrelaçados
  • No JS, basicamente basta entender funções e tratamento de null para escrever código funcional
  • Isso não significa simplesmente que Rust é mais difícil, mas mostra que Rust foi projetado para exigir uma compreensão estrutural da linguagem como um todo

O design interconectado do Rust

  • O núcleo do Rust é a combinação de recursos projetados de forma orgânica
    • Enums são incômodos sem pattern matching, e pattern matching também é limitado sem enums
    • Result e Iterator não podem ser implementados sem genéricos
    • Os conceitos de Send/Sync e as restrições de println só podem ser expressos com segurança graças às traits
    • O borrow checker garante a segurança de Send/Sync por meio da análise de captura de closures
  • Essa interconexão faz de Rust não apenas um conjunto de recursos, mas um sistema de linguagem integrado

A visão de um Rust menor

  • Em 2019, without.boats mencionou “Smaller Rust” ao discutir a possibilidade de um Rust menor e mais refinado
  • Hoje Rust cresceu muito mais, mas a ideia de um Rust menor nos relembra a essência de um design de linguagem cuidadosamente encaixado
  • O charme do Rust está no fato de que seus elementos linguísticos são independentes entre si e, ao mesmo tempo, quando combinados, oferecem forte expressividade e segurança

Conclusão

  • Rust é difícil de aprender, mas a consistência e integração dos conceitos entrelaçados funcionam como uma grande força
  • Graças a essa estrutura, Rust leva o desenvolvedor não apenas a escrever código, mas a adotar uma forma de pensar que considera segurança e desempenho ao mesmo tempo
  • A essência do Rust está em um “núcleo de linguagem pequeno e sofisticado”, e essa continua sendo uma filosofia importante mesmo no Rust expandido de hoje

Ainda não há comentários.

Ainda não há comentários.