- Dada adalah sebuah eksperimen pemikiran (thought experiment) yang bertujuan membuat bahasa seperti Rust, tetapi terasa seperti Java atau JavaScript dan kurang kompleks dibanding C++
- Alih-alih menargetkan penggunaan pada kernel atau perangkat embedded kecil, bagaimana wujud sebuah bahasa yang hanya membutuhkan runtime minimal?
- Dada adalah bahasa berbasis ownership dan memiliki beberapa kemiripan dengan Rust:
- Seperti Rust, Dada tidak memerlukan garbage collector.
- Seperti Rust, Dada menjamin keamanan memori dan bebas dari data race.
- Seperti Rust, struktur data Dada dialokasikan di stack dan menggunakan tata letak memori datar.
- Namun, Dada juga memiliki banyak perbedaan:
- Seperti TypeScript, Dada adalah bahasa yang ditipekan secara bertahap:
- Anda dapat memakai Dada di interpreter tanpa anotasi tipe untuk memahami cara kerja bahasanya.
- Setelah terbiasa, Anda dapat menambahkan anotasi tipe dan menggunakan compiler yang menghasilkan performa mirip Rust.
- Dada terutama menargetkan WebAssembly:
- Dada dapat membangun target native, tetapi sistem FFI-nya berbasis tipe antarmuka WebAssembly.
- Dada berorientasi objek, tetapi tidak secara murni:
- Dada menggabungkan OO dengan fitur-fitur bagus seperti pattern matching, dan mengambil inspirasi dari bahasa seperti Scala.
- Dibandingkan Rust, Dada memiliki beberapa keterbatasan:
- Dada memiliki runtime wajib dan tidak menargetkan "sistem bare metal" atau kernel.
- Dada tidak mendukung inline assembly maupun kode unsafe arbitrer.
Bagaimana status Dada saat ini?
- Saat ini Dada sebenarnya belum benar-benar ada, dan baru memiliki beberapa prototipe eksperimental:
- Semantik operasional eksperimental yang diimplementasikan di PLT Redex dapat ditemukan di dada-lang/dada-model.
- Interpreter yang ditulis dalam Rust dapat ditemukan di repositori dada-lang/dada, dan Anda dapat mencoba build berbasis WebAssembly di Dada playground.
Opini GN⁺
- Dada mencerminkan tren bahasa pemrograman modern dengan mempertahankan fitur inti Rust seperti keamanan memori dan pencegahan data race, sekaligus mengarah pada bahasa yang ramah pengembang melalui pengetikan bertahap dan pendekatan berorientasi objek.
- Menjadikan WebAssembly sebagai target utama menunjukkan potensi Dada dalam pengembangan aplikasi berbasis web, dan hal ini selaras dengan tren pengembangan web modern yang menekankan kompatibilitas browser serta independensi platform.
- Jika Dada benar-benar dikembangkan dan digunakan secara luas, bahasa ini dapat memberi abstraksi tingkat lebih tinggi dan kemudahan bagi pengembang Rust yang ada, sekaligus mempermudah pengembang Java atau JavaScript untuk beralih ke bahasa pemrograman sistem.
- Namun, karena Dada masih berada pada tahap awal dan performa serta stabilitasnya di lingkungan produksi nyata belum tervalidasi, perusahaan maupun pengembang perlu berhati-hati sebelum mengadopsinya.
- Bahasa lain dengan tujuan serupa Dada antara lain Kotlin dan Swift, yang sudah digunakan secara luas dan dapat menjadi alternatif yang baik bagi pengembang.
1 komentar
Komentar Hacker News
Menyukai gagasan "bahasa eksperimen pemikiran"
Pertanyaan tentang contoh "Hello, Dada!"
awaitketika tujuannya hanya mencetak ke konsol.Keinginan akan bahasa yang berlawanan arah
Pendapat yang menentang
async/awaitPendapat tentang nuansa seperti Java dan JavaScript
Ketiadaan GC membuat Rust menjadi pengalaman yang menyenangkan di sistem embedded
Perasaan campur aduk tentang pengalaman menggunakan Rust
Tertarik pada klaim bahwa menambahkan anotasi tipe dapat menghasilkan performa yang mirip Rust
Kebingungan tentang metode
print_pointdalam tutorialasyncdanawait.async/awaitberperan seperti nilai yang dihitung secara malas, dan apakah berbagai kombinasinya menyebabkan type error.Keluhan tentang mencari contoh sintaks bahasa pemrograman baru