8 poin oleh GN⁺ 2024-03-07 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2024-03-07
Komentar Hacker News
  • Menyukai gagasan "bahasa eksperimen pemikiran"

    • Membuat bahasa sungguhan adalah beban besar, dan membayangkan seperti apa bahasa ideal itu terasa menyenangkan.
    • Ada berbagai imajinasi tentang "Rust tingkat tinggi", dan secara pribadi lebih menyukai runtime dinamis dan tipe yang sederhana, tetapi orang lain memiliki kebutuhan yang berbeda.
    • Fitur tambahan seperti sistem tipe bertahap cocok untuk beberapa bahasa, tetapi lebih menyukai jaminan basis kode bertipe statis sepenuhnya sejak awal.
  • Pertanyaan tentang contoh "Hello, Dada!"

    • Sebagai pengguna Python, bertanya-tanya mengapa harus peduli dengan await ketika tujuannya hanya mencetak ke konsol.
    • Sudah terlihat bahwa kompleksitas dan beban kognitif mulai muncul.
  • Keinginan akan bahasa yang berlawanan arah

    • Menginginkan bahasa yang memiliki sistem tipe dan sintaks Rust yang ekspresif, tetapi memperkenalkan garbage collector dan runtime.
    • Tidak ingin membayar biaya performa, dan lebih menyukai bahasa seperti Go dengan sistem tipe Rust.
  • Pendapat yang menentang async/await

    • Berpendapat bahwa di bahasa tingkat tinggi, green thread ala Go lebih cocok.
    • Pengetikan bertahap memang menarik, tetapi tidak wajib. Pengetikan statis tidak terasa memberatkan dan pengetikan bertahap bisa membuat penalaran tentang performa lebih sulit.
    • Menganggap inferensi tipe akan lebih baik daripada pengetikan bertahap.
  • Pendapat tentang nuansa seperti Java dan JavaScript

    • Menunjukkan bahwa Java dan JavaScript memiliki nuansa yang sangat berbeda.
  • Ketiadaan GC membuat Rust menjadi pengalaman yang menyenangkan di sistem embedded

    • Mudah dihubungkan dengan program lain, dan waktu start program yang cepat adalah salah satu keunggulan utama Rust.
    • Rust dengan garbage collection bisa berarti melepaskan keunggulan ini.
  • Perasaan campur aduk tentang pengalaman menggunakan Rust

    • Menyukai pola keamanan memori, tetapi merasa sintaksnya lebih sulit dibandingkan C++.
    • Merasa sulit membaca kode secara mental.
    • Jika lebih sedikit "sihir" decorator dan sintaks berbasis simbol, pemula akan lebih mudah memahaminya.
  • Tertarik pada klaim bahwa menambahkan anotasi tipe dapat menghasilkan performa yang mirip Rust

    • Bahasa yang bisa ditulis semudah JavaScript, dan ketika pekerjaan tambahan itu layak dilakukan, bisa secepat Rust.
  • Kebingungan tentang metode print_point dalam tutorial

    • Membutuhkan penjelasan yang lebih rinci tentang arti async dan await.
    • Bertanya apakah async/await berperan seperti nilai yang dihitung secara malas, dan apakah berbagai kombinasinya menyebabkan type error.
  • Keluhan tentang mencari contoh sintaks bahasa pemrograman baru

    • Saat membuat bahasa pemrograman baru, meminta agar contoh sintaks "Hello World" langsung ditampilkan di landing page.