4 poin oleh GN⁺ 2024-05-01 | 1 komentar | Bagikan ke WhatsApp

Pengenalan bahasa pemrograman Borgo

  • Menginginkan bahasa untuk menulis aplikasi yang lebih ekspresif daripada Go, tetapi tidak serumit Rust
    • Go sederhana dan intuitif, tetapi terkadang diharapkan bisa memberikan keamanan tipe yang lebih baik
    • Rust enak digunakan (setidaknya untuk kode single-thread), tetapi terlalu luas dan kompleks, dan kadang terasa menyakitkan
  • Borgo adalah bahasa baru yang ditranspilasi ke Go, dan sepenuhnya kompatibel dengan paket Go yang sudah ada
  • Sintaks Borgo mirip Rust, dengan titik koma yang bersifat opsional

Fitur utama

  • Tipe data aljabar dan pattern matching
  • Menggunakan Option alih-alih nil
  • Menggunakan Result alih-alih multiple return values
  • Penanganan error menggunakan operator ?

Menjalankannya secara lokal

  • Borgo ditulis dalam Rust, jadi membutuhkan cargo
  • Untuk mengompilasi semua file .brg di folder saat ini:
    • $ cargo run -- build
  • Kompilernya akan menghasilkan file .go, dan file tersebut bisa dijalankan seperti biasa

Pendapat GN⁺

  • Rust adalah bahasa yang kuat, tetapi learning curve-nya curam dan hambatan adopsinya cukup tinggi; Borgo tampak seperti upaya menarik untuk memanfaatkan kelebihan Rust di dalam ekosistem Go. Namun, karena masih pada tahap awal, ekosistemnya kemungkinan masih minim
  • Perbaikan penanganan nil dan error melalui Option dan Result, serta penyederhanaan error handling dengan operator ?, tampaknya bisa mengatasi bagian-bagian yang sering dirasa kurang nyaman oleh para developer Go
  • Kemampuan untuk tetap menggunakan library Go yang sudah ada apa adanya adalah keunggulan besar. Namun, karena mengadopsi sintaks Rust, developer Go mungkin memerlukan waktu untuk beradaptasi
  • Karena menggunakan pendekatan transpile, ada kemungkinan kurang unggul dibanding kode Go native dalam hal debugging atau performa runtime. Rasanya masih terlalu dini untuk diterapkan pada kode produksi berskala besar
  • Seperti Kotlin yang terus meningkatkan pangsa di ekosistem JVM, agar Borgo bisa menjadi solusi di dunia Go, tampaknya masih diperlukan perbaikan berkelanjutan di berbagai aspek seperti kualitas kode, produktivitas pengembangan, dan learning curve. Jika terus berkembang, ini berpotensi menjadi alternatif yang menarik di ekosistem Go

1 komentar

 
GN⁺ 2024-05-01
Pendapat Hacker News

Ringkasan:

  • Tanggapan positif terhadap bahasa Borgo yang melengkapi kekurangan bahasa Go
    • Fitur yang terasa kurang di Go seperti Enum dan tipe Optional ditambahkan
    • Sebagian besar fitur yang diinginkan para developer Go ikut disertakan
  • Beberapa keputusan desain Borgo terasa lebih mirip Rust daripada karakteristik Go
    • Definisi metode menggunakan impl, sintaks channel dan goroutine, serta fungsi bawaan zeroValue()
    • Meski begitu, tampaknya mereka tetap akan lebih memilih mengembangkan dengan Borgo daripada Go
  • Pengenalan proyek-proyek lain yang pernah mencoba hal serupa
    • Ada upaya untuk membuat bahasa yang ditranspilasi ke Go, seperti braid, have, dan oden
  • Kecuali Borrow Checker, tampaknya keunggulan Rust seperti sistem tipe dan penanganan error ikut diambil
  • Ada pendapat bahwa akan bagus jika ada bahasa yang memiliki kelebihan dynamic typing dan static typing sekaligus
    • Pada tahap awal pengembangan, bisa memanfaatkan kelebihan dynamic typing seperti Python, lalu kemudian beralih secara bertahap ke static typing
  • Terasa seperti keunggulan runtime dan ekosistem tooling Go dipadukan dengan keamanan tipe seperti Enum di Rust
  • Poin positif lainnya adalah diperkenalkannya keyword pub/private sebagai pengganti cara Go membedakan visibilitas field struct berdasarkan huruf besar dan kecil
  • Terasa seperti menemukan titik kompromi antara type safety dan kompleksitas yang mirip bahasa Gleam, tetapi karena dikompilasi ke Go, bukan Erlang atau JS, ada keuntungan dari sisi performa
    • Namun, masih diragukan apakah pesan error saat kompilasi akan seramah Rust atau Gleam