Dada, an experimental new programming language
An experimental language called Dada aims to blend Rust-like memory safety and ownership ideas with a higher-level, Java/JavaScript-style feel, including gradual typing and a required runtime. Commenters debate whether its async‑only I/O model (e.g., needing `.await` even for `print`) and lack of garbage collection are ergonomic wins or unnecessary complexity, especially compared to alternatives like Swift, Go, OCaml/Scala-style languages, or simply using Rust with reference counting. Many see value in Dada as a “thought experiment” to explore new combinations of linear/affine types, ownership, and async models, even if it never matures into a production-ready ecosystem.
Project intent and status
- Dada is framed as a “thought-experiment language” inspired by Rust but aiming to feel more like Java/JavaScript, with a required runtime and gradual types.
- It currently “doesn’t really exist” beyond experimental prototypes; much of the site is speculative documentation used to explore design.
- Some find this docs‑first, imaginary‑language approach insightful; others question who the eventual audience is if it overlaps heavily with existing languages.
Ownership, leases, and memory management
- Core idea: leases as a potentially simpler alternative to Rust’s borrow checker and lifetimes.
- Several commenters doubt leases are conceptually easier; they see similar complexity under a different name.
- Debate on avoiding GC: some argue GC can be faster than malloc, is appropriate for high‑level languages, and that GC pauses are manageable; others value deterministic performance, embedded suitability, and Rust‑style stack allocation.
- Reference counting is discussed as a middle ground; some view it as the de facto “easy path” in Rust, others note its performance costs.
Async/await design and print().await
- The mandatory async/await model, including
print("...").await, triggers extensive discussion:- Supporters: IO is inherently async; making blocking explicit surfaces real behavior and avoids hidden buffering issues.
- Critics: it adds cognitive load for trivial tasks, complicates debugging/logging, and tightly couples starting vs awaiting tasks.
- Questions arise about how to do synchronous IO, concurrent waits (e.g.,
Promise.all‑style patterns), and whether async should be explicit at call sites or defaulted. - Broader dispute over async/await vs green threads and coroutines: some prefer Go‑/Erlang‑style lightweight threads; others like explicit suspension points.
Typing and inference
- Dada is gradually typed: no required upfront types, with a path to Rust‑like performance via annotations.
- Opinions split:
- Some like optional types for tiny scripts and gradual hardening.
- Others want fully static types from day one, citing Dart’s move away from optional types.
- Global type inference and strong effect systems are discussed as alternatives; concerns include “spooky action at a distance” and confusing error messages in large codebases.
Comparisons to existing languages
- Dada’s niche is debated against a long list: Rust, Swift, Go, Kotlin, Scala, OCaml/F#, Haskell, Gleam, Crystal, Mojo, ReasonML/ReScript, Dyon, Jakt, etc.
- Multiple people say they “want the opposite” of Dada: Rust’s expressive type system plus a GC and runtime.
- Others feel if you can handle ownership you might as well use Rust; if you can’t, more mature high‑level languages (Swift, JVM languages, BEAM languages) already exist.
Ergonomics, syntax, and learning curve
- Mixed reactions to Rust‑style syntax: some love matches, ownership, and postfix
.await; others findfn, implicit returns, and symbolic features harder to read. - The Hello World needing
.awaitis seen by some as poor pedagogy; others dismiss “zero‑complexity print” as a trivial concern. - There is debate over significant whitespace, verbosity vs compactness, and whether Dada’s OO classes are a step backward.
Ecosystem, adoption, and meta‑issues
- Several note that, even if Dada (or similar languages) were ideal, lack of ecosystem and adoption would block real‑world use.
- Some praise the explicit artistic/thematic Dada references; others are lukewarm on the name and logo.
- A side‑thread discusses a pronoun‑updated manifesto quote: some appreciate the change; others see it as unnecessary ideological signaling, but this does not affect the technical design.