- Dada es un experimento conceptual (thought experiment) que busca crear un lenguaje como Rust, pero que se sienta como Java o JavaScript y sea menos complejo que C++
- No está pensado para usarse en kernels ni en dispositivos embebidos pequeños; ¿cómo se vería un lenguaje que requiere un runtime mínimo?
- Dada es un lenguaje basado en propiedad (ownership) y tiene varias similitudes con Rust:
- Al igual que Rust, Dada no requiere recolector de basura.
- Al igual que Rust, Dada garantiza seguridad de memoria y ausencia de data races.
- Al igual que Rust, las estructuras de datos de Dada se asignan en el stack y usan un diseño de memoria plano.
- Pero Dada también tiene muchas diferencias:
- Como TypeScript, Dada es un lenguaje gradualmente tipado:
- Se puede usar Dada en el intérprete sin anotaciones de tipo para entender cómo funciona el lenguaje.
- Una vez que te familiarizas, puedes agregar anotaciones de tipo y usar un compilador con un rendimiento similar al de Rust.
- Dada apunta principalmente a WebAssembly:
- Se pueden compilar targets nativos con Dada, pero el sistema FFI está basado en los tipos de interfaz de WebAssembly.
- Dada es orientado a objetos, pero no de forma pura:
- Dada combina buenas capacidades de OO con funciones como pattern matching, inspirándose en lenguajes como Scala.
- Dada tiene algunas limitaciones en comparación con Rust:
- Dada requiere un runtime obligatorio y no apunta a sistemas bare metal ni a kernels.
- Dada no soporta ensamblador en línea ni código inseguro arbitrario.
¿Cuál es el estado actual de Dada?
- Actualmente, Dada no existe realmente; hay algunos prototipos experimentales:
- Una semántica operacional experimental implementada en PLT Redex puede encontrarse en dada-lang/dada-model.
- Un intérprete escrito en Rust puede encontrarse en el repositorio dada-lang/dada, y se puede probar un build basado en WebAssembly en el playground de Dada.
Opinión de GN⁺
- Dada refleja las tendencias de los lenguajes de programación modernos: mantiene funciones clave de Rust, como la seguridad de memoria y la prevención de data races, mientras busca ser un lenguaje más amigable para desarrolladores mediante el tipado gradual y un enfoque orientado a objetos.
- Apuntar a WebAssembly como target principal muestra el potencial de Dada para el desarrollo de aplicaciones web, en línea con las tendencias modernas que priorizan la compatibilidad con navegadores y la independencia de plataforma.
- Si Dada realmente se desarrolla y llega a usarse ampliamente, podría ofrecer a los desarrolladores de Rust un mayor nivel de abstracción y comodidad, y facilitar a los desarrolladores de Java o JavaScript la transición hacia un lenguaje de programación de sistemas.
- Sin embargo, como Dada todavía está en una etapa temprana y su rendimiento y estabilidad en entornos reales de producción no han sido validados, empresas y desarrolladores deberán actuar con cautela antes de adoptarlo.
- Otros lenguajes con objetivos similares a los de Dada incluyen Kotlin y Swift, que ya son ampliamente usados y pueden ser buenas alternativas para los desarrolladores.
1 comentarios
Opiniones de Hacker News
Aprecio por la idea de un "lenguaje de experimento mental"
Dudas sobre el ejemplo de "Hello, Dada!"
awaitcuando el objetivo es imprimir en la consola.Deseo por un lenguaje opuesto
Opinión en contra de
async/awaitComentario sobre la sensación de Java y JavaScript
La ausencia de GC hace que Rust sea una experiencia agradable en sistemas embebidos
Sentimientos encontrados sobre la experiencia de usar Rust
Interés en la afirmación de que agregar anotaciones de tipo puede lograr un rendimiento similar al de Rust
Confusión sobre el método
print_pointdel tutorialasyncyawait.async/awaitcumple un papel similar al de valores evaluados de forma perezosa, y si distintas combinaciones provocarían errores de tipo.Molestia por tener que buscar ejemplos de sintaxis de nuevos lenguajes de programación