- Dada est une expérience de pensée visant à créer un langage comme Rust, mais avec une sensation proche de Java ou JavaScript, et moins complexe que C++
- À quoi ressemblerait un langage qui ne vise ni les kernels ni les petits appareils embarqués, mais qui exige tout de même un runtime minimal ?
- Dada est un langage fondé sur la propriété, avec plusieurs similarités avec Rust :
- Comme Rust, Dada n’a pas besoin de garbage collector.
- Comme Rust, Dada garantit la sûreté mémoire et l’absence de data races.
- Comme Rust, les structures de données de Dada sont allouées sur la pile et utilisent une disposition mémoire plate.
- Mais Dada s’en distingue aussi sur de nombreux points :
- Comme TypeScript, Dada est un langage à typage progressif :
- Il est possible d’utiliser Dada dans un interpréteur sans annotations de type pour comprendre le fonctionnement du langage.
- Une fois familiarisé, on peut ajouter des annotations de type et utiliser un compilateur offrant des performances proches de Rust.
- Dada cible principalement WebAssembly :
- Il est possible de compiler Dada vers des cibles natives, mais son système FFI repose sur les types d’interface WebAssembly.
- Dada est orienté objet, mais pas de manière pure :
- Dada combine l’OO avec de bonnes fonctionnalités comme le pattern matching, en s’inspirant de langages comme Scala.
- Par rapport à Rust, Dada a aussi certaines limitations :
- Dada impose un runtime obligatoire et ne cible ni les « bare metal systems » ni les kernels.
- Dada ne prend pas en charge l’assembleur inline ni le code unsafe arbitraire.
Quel est l’état actuel de Dada ?
- À l’heure actuelle, Dada n’existe pas réellement, mais il existe quelques prototypes expérimentaux :
- Une sémantique opérationnelle expérimentale implémentée dans PLT Redex est disponible dans dada-lang/dada-model.
- Un interpréteur écrit en Rust peut être trouvé dans le dépôt dada-lang/dada, et il est possible d’essayer une build basée sur WebAssembly dans le playground Dada.
L’avis de GN⁺
- Dada reflète les tendances des langages de programmation modernes : il cherche à conserver les fonctions clés de Rust, comme la sûreté mémoire et la prévention des data races, tout en visant un langage plus accueillant pour les développeurs grâce au typage progressif et à une approche orientée objet.
- Le fait de cibler principalement WebAssembly montre le potentiel de Dada pour le développement d’applications web, en phase avec les tendances actuelles qui privilégient la compatibilité navigateur et l’indépendance vis-à-vis des plateformes.
- Si Dada était réellement développé et largement adopté, il pourrait offrir aux développeurs Rust un niveau d’abstraction et de confort plus élevé, tout en facilitant pour les développeurs Java ou JavaScript la transition vers un langage de programmation système.
- Cependant, Dada en est encore à un stade précoce, et ses performances comme sa stabilité en environnement de production n’ont pas été validées ; entreprises et développeurs devront donc faire preuve de prudence avant de l’adopter.
- Parmi les autres langages poursuivant des objectifs similaires, on peut citer Kotlin ou Swift, déjà largement utilisés et pouvant constituer de bonnes alternatives pour les développeurs.
1 commentaires
Avis Hacker News
Attachement à l’idée d’un « langage d’expérience de pensée »
Interrogations sur l’exemple « Hello, Dada! »
awaitquand l’objectif est simplement d’afficher quelque chose dans la console.Souhait pour un langage à l’opposé
Avis opposé sur
async/awaitRemarque sur la sensation Java vs JavaScript
L’absence de GC rend Rust agréable en systèmes embarqués
Sentiment mitigé sur l’expérience avec Rust
Intérêt pour l’affirmation selon laquelle l’ajout d’annotations de type pourrait offrir des performances proches de Rust
Confusion autour de la méthode
print_pointdu tutorielasyncetawait.async/awaitjouent un rôle semblable à des valeurs évaluées paresseusement, et si diverses combinaisons provoquent des erreurs de type.Frustration à propos des exemples de syntaxe des nouveaux langages de programmation