- Dada é um experimento conceitual (thought experiment) que busca criar uma linguagem como Rust, mas com a sensação de Java ou JavaScript e menos complexa que C++
- Como seria uma linguagem que exige um runtime mínimo, sem ter como objetivo ser usada em kernels ou pequenos dispositivos embarcados?
- Dada é uma linguagem baseada em ownership e tem algumas semelhanças com Rust:
- Assim como Rust, Dada não precisa de coletor de lixo.
- Assim como Rust, Dada garante segurança de memória e ausência de data races.
- Assim como Rust, as estruturas de dados de Dada são alocadas na stack e usam um layout de memória plano.
- Mas Dada também tem muitas diferenças:
- Assim como TypeScript, Dada é uma linguagem gradualmente tipada:
- É possível usar Dada no interpretador sem anotações de tipo para entender como a linguagem funciona.
- Quando você se acostuma, pode adicionar anotações de tipo e usar um compilador com desempenho semelhante ao de Rust.
- Dada tem WebAssembly como alvo principal:
- É possível compilar Dada para alvos nativos, mas o sistema de FFI é baseado nos tipos de interface do WebAssembly.
- Dada é orientada a objetos, mas não de forma pura:
- Dada combina OO com bons recursos como pattern matching, inspirando-se em linguagens como Scala.
- Em comparação com Rust, Dada tem algumas limitações:
- Dada tem um runtime obrigatório e não tem como alvo "sistemas bare metal" ou kernels.
- Dada não oferece suporte a assembly inline nem a código inseguro arbitrário.
Qual é o estado atual de Dada?
- No momento, Dada não existe de fato, mas há alguns protótipos experimentais:
- Uma semântica operacional experimental implementada em PLT Redex pode ser encontrada em dada-lang/dada-model.
- Um interpretador escrito em Rust pode ser encontrado no repositório dada-lang/dada, e é possível testar uma build baseada em WebAssembly no playground do Dada.
Opinião do GN⁺
- Dada reflete as tendências das linguagens de programação modernas ao manter recursos centrais do Rust, como segurança de memória e prevenção de data races, enquanto busca ser mais amigável para desenvolvedores por meio de tipagem gradual e de uma abordagem orientada a objetos.
- Ter o WebAssembly como alvo principal mostra o potencial do Dada no desenvolvimento de aplicações web, alinhando-se às tendências modernas de desenvolvimento web que valorizam compatibilidade com navegadores e independência de plataforma.
- Se Dada realmente for desenvolvido e amplamente adotado, poderá oferecer um nível mais alto de abstração e conveniência para desenvolvedores Rust já existentes, além de facilitar a transição de desenvolvedores Java ou JavaScript para linguagens de programação de sistemas.
- No entanto, como Dada ainda está em estágio inicial e seu desempenho e estabilidade em ambientes reais de produção ainda não foram validados, empresas e desenvolvedores precisam adotar uma postura cautelosa antes de escolhê-lo.
- Outras linguagens com objetivos semelhantes ao Dada incluem Kotlin e Swift, que já são amplamente usadas e podem ser boas alternativas para desenvolvedores.
1 comentários
Comentários no Hacker News
Apreço pela ideia de uma "linguagem de experimento mental"
Dúvidas sobre o exemplo "Hello, Dada!"
awaitquando o objetivo é imprimir algo no console.Desejo por uma linguagem oposta
Opinião contrária sobre
async/awaitOpinião sobre a sensação de Java e JavaScript
A ausência de GC torna Rust uma experiência agradável em sistemas embarcados
Sentimentos mistos sobre a experiência de usar Rust
Interesse na afirmação de que adicionar anotações de tipo pode produzir desempenho semelhante ao de Rust
Confusão sobre o método
print_pointno tutorialasynceawait.async/awaitexerce um papel semelhante ao de valores avaliados de forma preguiçosa, e se várias combinações diferentes causam erros de tipo.Insatisfação com a busca por exemplos de sintaxe de novas linguagens de programação