- Dada ist ein Gedankenexperiment mit dem Ziel, eine Sprache wie Rust zu schaffen, die sich jedoch eher wie Java oder JavaScript anfühlt und weniger komplex ist als C++.
- Wenn man sich eine Sprache vorstellt, die nicht für den Einsatz in Kerneln oder kleinen eingebetteten Geräten gedacht ist, sondern nur eine minimale Runtime benötigt – wie würde sie aussehen?
- Dada ist eine eigentumsbasierte Sprache und hat einige Ähnlichkeiten mit Rust:
- Wie Rust benötigt Dada keinen Garbage Collector.
- Wie Rust garantiert Dada Speichersicherheit und Freiheit von Data Races.
- Wie Rust werden Dada-Datenstrukturen auf dem Stack allokiert und verwenden ein flaches Speicherlayout.
- Allerdings unterscheidet sich Dada auch in vielerlei Hinsicht:
- Wie TypeScript ist Dada eine schrittweise typisierte Sprache:
- Ohne Typannotationen kann man Dada im Interpreter verwenden, um zu verstehen, wie die Sprache funktioniert.
- Wenn man sich daran gewöhnt hat, kann man Typannotationen hinzufügen und einen Compiler verwenden, der eine Rust-ähnliche Performance liefert.
- Dada zielt primär auf WebAssembly ab:
- Man kann mit Dada native Targets bauen, aber das FFI-System basiert auf WebAssembly Interface Types.
- Dada ist objektorientiert, aber nicht auf reine Weise:
- Dada kombiniert gute Eigenschaften von OO mit Funktionen wie Pattern Matching und ist von Sprachen wie Scala inspiriert.
- Im Vergleich zu Rust hat Dada einige Einschränkungen:
- Dada hat eine verpflichtende Runtime und zielt nicht auf „Bare-Metal-Systeme“ oder Kernel ab.
- Dada unterstützt weder Inline-Assembly noch beliebigen unsicheren Code.
Wie ist der aktuelle Stand von Dada?
- Derzeit existiert Dada noch nicht wirklich, es gibt aber einige experimentelle Prototypen:
- Eine experimentelle operationale Semantik, implementiert in PLT Redex, findet sich in dada-lang/dada-model.
- Ein in Rust geschriebener Interpreter ist im Repository dada-lang/dada zu finden, und im Dada Playground kann man einen WebAssembly-basierten Build ausprobieren.
Meinung von GN⁺
- Dada spiegelt Trends moderner Programmiersprachen wider, indem es die Kernfunktionen von Rust wie Speichersicherheit und die Vermeidung von Data Races beibehält und zugleich über schrittweise Typisierung und einen objektorientierten Ansatz eine entwicklerfreundliche Sprache anstrebt.
- Die Ausrichtung auf WebAssembly als Hauptziel zeigt Dadas Potenzial für die Entwicklung webbasierter Anwendungen und entspricht modernen Webentwicklungstrends, bei denen Browser-Kompatibilität und Plattformunabhängigkeit wichtig sind.
- Falls Dada tatsächlich entwickelt und breit genutzt wird, könnte es bestehenden Rust-Entwicklern ein höheres Abstraktionsniveau und mehr Komfort bieten und Java- oder JavaScript-Entwicklern den Wechsel zu einer Systemprogrammiersprache erleichtern.
- Da sich Dada jedoch noch in einem frühen Stadium befindet und Performance sowie Stabilität in realen Produktionsumgebungen nicht validiert sind, ist vor einer Einführung in Unternehmen oder Projekten Vorsicht geboten.
- Andere Sprachen mit ähnlichen Zielen wie Dada sind Kotlin oder Swift; sie sind bereits weit verbreitet und können für Entwickler gute Alternativen sein.
1 Kommentare
Hacker-News-Kommentare
Sympathie für die Idee einer „Gedankenexperiment-Sprache“
Fragen zum Beispiel „Hello, Dada!“
awaitkümmern muss, wenn das Ziel nur die Ausgabe auf der Konsole ist.Wunsch nach einer gegensätzlichen Sprache
Gegenmeinung zu „async/await“
Kommentar zum Gefühl von Java und JavaScript
Das Fehlen von GC macht Rust in eingebetteten Systemen zu einer angenehmen Erfahrung
Gemischte Gefühle zur Erfahrung mit Rust
Interesse an der Behauptung, dass sich mit zusätzlichen Typannotationen eine Rust-ähnliche Performance erzielen lässt
Verwirrung über die Methode „print_point“ im Tutorial
asyncundawaitgewünscht.async/awaiteine ähnliche Rolle wie lazy ausgewertete Werte spielt und ob verschiedene Kombinationen Typfehler verursachen.Unzufriedenheit darüber, Syntaxbeispiele für neue Programmiersprachen finden zu müssen